tools: Begin adding the CTS command line tool
This CL introduces the Config structure, and config file. Used by all the sub-commands. Bug: dawn:1342 Change-Id: Iaad5a02bc2ceba2c63265cf0d1086dc7901e7ed7 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/88317 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
parent
e822f5e016
commit
846e3149b7
1
go.mod
1
go.mod
|
@ -11,6 +11,7 @@ require (
|
||||||
github.com/mattn/go-isatty v0.0.14
|
github.com/mattn/go-isatty v0.0.14
|
||||||
github.com/sergi/go-diff v1.2.0
|
github.com/sergi/go-diff v1.2.0
|
||||||
github.com/shirou/gopsutil v3.21.11+incompatible
|
github.com/shirou/gopsutil v3.21.11+incompatible
|
||||||
|
github.com/tidwall/jsonc v0.3.2
|
||||||
go.chromium.org/luci v0.0.0-20220412023008-ab2409fe739a
|
go.chromium.org/luci v0.0.0-20220412023008-ab2409fe739a
|
||||||
golang.org/x/net v0.0.0-20220403103023-749bd193bc2b
|
golang.org/x/net v0.0.0-20220403103023-749bd193bc2b
|
||||||
google.golang.org/protobuf v1.28.0
|
google.golang.org/protobuf v1.28.0
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -456,6 +456,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
|
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
|
||||||
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
|
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
|
||||||
|
github.com/tidwall/jsonc v0.3.2 h1:ZTKrmejRlAJYdn0kcaFqRAKlxxFIC21pYq8vLa4p2Wc=
|
||||||
|
github.com/tidwall/jsonc v0.3.2/go.mod h1:dw+3CIxqHi+t8eFSpzzMlcVYxKp08UP5CD8/uSFCyJE=
|
||||||
github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw=
|
github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw=
|
||||||
github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
|
github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
|
||||||
github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o=
|
github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o=
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
// Copyright 2022 The Dawn Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package common
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"dawn.googlesource.com/dawn/tools/src/buildbucket"
|
||||||
|
"github.com/tidwall/jsonc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Config holds the configuration data for the 'cts' command.
|
||||||
|
// Config is loaded from a JSON file stored next to the
|
||||||
|
// tools/src/cmd/cts/config.json.
|
||||||
|
type Config struct {
|
||||||
|
// Test holds configuration data for test results.
|
||||||
|
Test struct {
|
||||||
|
// The ResultDB string prefix for CTS tests.
|
||||||
|
Prefix string
|
||||||
|
// The time threshold used to classify tests as slow.
|
||||||
|
SlowThreshold time.Duration
|
||||||
|
}
|
||||||
|
// Gerrit holds configuration for Dawn's Gerrit server.
|
||||||
|
Gerrit struct {
|
||||||
|
// The host URL
|
||||||
|
Host string
|
||||||
|
// The project name
|
||||||
|
Project string
|
||||||
|
}
|
||||||
|
// Git holds configuration data for the various Git repositories.
|
||||||
|
Git struct {
|
||||||
|
// The CTS git repository.
|
||||||
|
CTS GitProject
|
||||||
|
// The Dawn git repository.
|
||||||
|
Dawn GitProject
|
||||||
|
}
|
||||||
|
// Builders is a map of builder name (as displayed in the UI) to buildbucket
|
||||||
|
// builder information.
|
||||||
|
Builders map[string]buildbucket.Builder
|
||||||
|
// TagAliases is a list of tags which are treated as equivalent.
|
||||||
|
// For example, some GPUs are similar enough to be considered equivalent.
|
||||||
|
// See crbug.com/dawn/1387 for more information.
|
||||||
|
TagAliases [][]string
|
||||||
|
// Sheets holds information about the Google Sheets document used for
|
||||||
|
// tracking CTS statistics.
|
||||||
|
Sheets struct {
|
||||||
|
ID string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GitProject holds a git host URL and project.
|
||||||
|
type GitProject struct {
|
||||||
|
Host string
|
||||||
|
Project string
|
||||||
|
}
|
||||||
|
|
||||||
|
// HttpsURL returns the https URL of the project
|
||||||
|
func (g GitProject) HttpsURL() string {
|
||||||
|
return fmt.Sprintf("https://%v/%v", g.Host, g.Project)
|
||||||
|
}
|
||||||
|
|
||||||
|
// LoadConfig loads the JSON config file at the given path
|
||||||
|
func LoadConfig(path string) (*Config, error) {
|
||||||
|
data, err := ioutil.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to open '%v': %w", path, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove comments, trailing commas.
|
||||||
|
data = jsonc.ToJSONInPlace(data)
|
||||||
|
|
||||||
|
cfg := Config{}
|
||||||
|
if err := json.NewDecoder(bytes.NewReader(data)).Decode(&cfg); err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to load config: %w", err)
|
||||||
|
}
|
||||||
|
return &cfg, nil
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"Test": {
|
||||||
|
"Prefix": "ninja://chrome/test:telemetry_gpu_integration_test/gpu_tests.webgpu_cts_integration_test.WebGpuCtsIntegrationTest.",
|
||||||
|
"SlowThreshold": 15000000000 // 15 seconds
|
||||||
|
},
|
||||||
|
"Gerrit": {
|
||||||
|
"Host": "https://dawn-review.googlesource.com",
|
||||||
|
"Project": "dawn"
|
||||||
|
},
|
||||||
|
"Git": {
|
||||||
|
"CTS": {
|
||||||
|
"Host": "chromium.googlesource.com",
|
||||||
|
"Project": "external/github.com/gpuweb/cts"
|
||||||
|
},
|
||||||
|
"Dawn": {
|
||||||
|
"Host": "dawn.googlesource.com",
|
||||||
|
"Project": "dawn"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Builders": {
|
||||||
|
"Win": {
|
||||||
|
"Project": "chromium",
|
||||||
|
"Bucket": "try",
|
||||||
|
"Builder": "win-dawn-rel"
|
||||||
|
},
|
||||||
|
"Win10-x86": {
|
||||||
|
"Project": "chromium",
|
||||||
|
"Bucket": "try",
|
||||||
|
"Builder": "dawn-try-win10-x86-rel"
|
||||||
|
},
|
||||||
|
"Mac": {
|
||||||
|
"Project": "chromium",
|
||||||
|
"Bucket": "try",
|
||||||
|
"Builder": "mac-dawn-rel"
|
||||||
|
},
|
||||||
|
"Linux": {
|
||||||
|
"Project": "chromium",
|
||||||
|
"Bucket": "try",
|
||||||
|
"Builder": "linux-dawn-rel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TagAliases": [
|
||||||
|
[
|
||||||
|
// crbug.com/dawn/1387
|
||||||
|
"intel-0x5912",
|
||||||
|
"intel-0x3e92"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"Sheets": {
|
||||||
|
// Spreadsheet to export results data to
|
||||||
|
// https://docs.google.com/spreadsheets/d/1OFsh-r_njG5pKDwjL1HOvLJKDRC4FgO-LE9Kw7WPQcc
|
||||||
|
"ID": "1OFsh-r_njG5pKDwjL1HOvLJKDRC4FgO-LE9Kw7WPQcc"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue