test: Capitalize MUST and SHOULD directives
These directives in the API documentation have specific meanings.
Capitalizing makes this more apperant.
BUG=chromium:1063474
TEST=./generate.sh
Change-Id: Ie7577565a1600cf66fb2d52ec5f183ea4378a09b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2121573
Commit-Queue: Prathmesh Prabhu <pprabhu@chromium.org>
Tested-by: Prathmesh Prabhu <pprabhu@chromium.org>
Reviewed-by: Alex Zamorzaev <zamorzaev@chromium.org>
Reviewed-by: Jacob Kopczynski <jkop@chromium.org>
diff --git a/go/test/metadata/v1/metadata.pb.go b/go/test/metadata/v1/metadata.pb.go
index 4e33429..f8fd2a0 100644
--- a/go/test/metadata/v1/metadata.pb.go
+++ b/go/test/metadata/v1/metadata.pb.go
@@ -7,8 +7,8 @@
// This metadata is used for test execution requests, scheduling decisions and
// results analytics in various Test Lab Environments.
//
-// Metadata must be generated for all tests in supported Remote Test Drivers and
-// must be respected in all Test Lab Environments.
+// Metadata MUST be generated for all tests in supported Remote Test Drivers and
+// MUST be respected in all Test Lab Environments.
package metadata
@@ -34,7 +34,7 @@
// The test metadata specification.
//
-// Test metadata must be generated for each Remote Test Driver as one of the
+// Test metadata MUST be generated for each Remote Test Driver as one of the
// test artifacts generated from Chrome OS build system.
type Specification struct {
// A set of Remote Test Driver packages.
@@ -45,7 +45,7 @@
//
// Unlike tests, a RemoteTestDriver (identified by its name) may be specified
// multiple times, in a single Specification or across different Specification
- // instances. In that case, all fields except the list of tests must be
+ // instances. In that case, all fields except the list of tests MUST be
// identical across these RemoteTestDriver instances. The list of tests across
// these instances will be concatenated together.
RemoteTestDrivers []*RemoteTestDriver `protobuf:"bytes,1,rep,name=remote_test_drivers,json=remoteTestDrivers,proto3" json:"remote_test_drivers,omitempty"`
@@ -93,7 +93,7 @@
// Globally unique name for a Remote Test Driver package.
//
//
- // Must be a valid resource per https://aip.dev/122.
+ // MUST be a valid resource per https://aip.dev/122.
//
// Pattern: remoteTestDrivers/{remoteTestDriver}
//
@@ -106,16 +106,16 @@
// A container image containing all the required dependencies and other build
// artifacts required for test invocations.
//
- // Test Lab Environments should fail with an error indicating that the request
+ // Test Lab Environments SHOULD fail with an error indicating that the request
// was invalid if the image fails to be found for a test invocation.
Image *BuildArtifact `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
// Command to invoke the Remote Test Driver inside `image`.
//
- // Remote Test Servers must run `command` as
+ // Remote Test Servers MUST run `command` as
// $ ${command} -input_json ${input_json}
// where ${command} and ${input_json} are absolute paths inside the container.
//
- // Remote Test Servers must populate `input_json` with a JSON encoded
+ // Remote Test Servers MUST populate `input_json` with a JSON encoded
// test.invocation.Request message.
Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"`
// Metadata for the smallest schedulable test units.
@@ -251,7 +251,7 @@
// this restriction.
//
// A single test platform request or Remote Test Driver invocation may contain
-// multiple instances of multiple Tests, but each instance of a Test must
+// multiple instances of multiple Tests, but each instance of a Test MUST
// correspond to exactly one reported result.
//
// See Also:
@@ -261,7 +261,7 @@
type Test struct {
// Globally unique name for this test.
//
- // Must be a valid resource per https://aip.dev/122.
+ // MUST be a valid resource per https://aip.dev/122.
//
// Pattern: remoteTestDrivers/{remoteTestDriver}/tests/{test}
// where {remoteTestDriver} is the Remote Test Driver package that contains
@@ -345,9 +345,9 @@
type Attribute struct {
// Opaque name for this attribute.
//
- // Value must be valid resource names per https://aip.dev/122.
+ // Value MUST be valid resource names per https://aip.dev/122.
//
- // Must not be interpreted by Test Lab Environments.
+ // MUST NOT be interpreted by Test Lab Environments.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@@ -392,12 +392,12 @@
//
// Test Lab Environments may optionally support targeting test requests to
// Device Under Test based on DUTConditions. If this feature is supported, the
- // Test Lab Environment must interpret `expression` in the scope of the
+ // Test Lab Environment MUST interpret `expression` in the scope of the
// protobuf message DUTCondition.Scope as defined below.
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
// This API only currently only supports a small sub-set of the CEL features,
- // as described here. Test Lab Environments should validate the expression and
+ // as described here. Test Lab Environments SHOULD validate the expression and
// reject use of unsupported features.
//
// TODO(crbug.com/1051689) Add reference to the metadata validator package.
@@ -428,9 +428,10 @@
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type DUTCondition.Scope. This variable contains the
// information about a particular Device Under Test being tested for
@@ -585,7 +586,7 @@
Authors []*Contact `protobuf:"bytes,1,rep,name=authors,proto3" json:"authors,omitempty"`
// Machine readable test-specific information.
//
- // Remote Test Drivers should include detailed information to aid analytics.
+ // Remote Test Drivers SHOULD include detailed information to aid analytics.
// For example, test authors may minimize code duplication by writing
// paramterized tests. Thus, multiple test metadata may refer to the
// same test implementation with different arguments. It is useful to include
@@ -598,7 +599,7 @@
// }
// }
//
- // This field must not be interpreted by the Test Lab Environments, but Remote
+ // This field MUST NOT be interpreted by the Test Lab Environments, but Remote
// Test Drivers can enrich analytics by using uniform stable schema for
// details across all their tests.
Details *_struct.Struct `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"`
diff --git a/go/test/plan/v1/plan.pb.go b/go/test/plan/v1/plan.pb.go
index a74fca9..0f6a261 100644
--- a/go/test/plan/v1/plan.pb.go
+++ b/go/test/plan/v1/plan.pb.go
@@ -68,14 +68,14 @@
// A Plan fully specifies a Test Platform end-user's coverage needs.
//
-// Plans should associate platform software and Device Under Test condition
-// coverage rules with tests that exercise those components. Plans must be used
+// Plans SHOULD associate platform software and Device Under Test condition
+// coverage rules with tests that exercise those components. Plans MUST be used
// in the Test Platform request API. Other Test Lab Environments may use plans
// to ease interoperation with the Test Platform.
type Plan struct {
// A globally unique test plan name.
//
- // Must be valid resource name per https://aip.dev/122.
+ // MUST be valid resource name per https://aip.dev/122.
//
// Pattern: plans/{plan}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -130,29 +130,29 @@
type Unit struct {
// A globally unique test plan unit name.
//
- // Must be valid resource name per https://aip.dev/122.
+ // MUST be valid resource name per https://aip.dev/122.
//
// Pattern: plans/{plan}/units/{unit}
// where {plan} is the parent Plan of this Unit.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Selects tests to include in this test plan unit.
TestCondition *TestCondition `protobuf:"bytes,2,opt,name=test_condition,json=testCondition,proto3" json:"test_condition,omitempty"`
- // Selects the set of Devices Under Test that tests must be run on to satisfy
- // this test plan unit.
+ // Selects the set of Devices Under Test that satisfy the coverage
+ // requirements of this test plan unit.
DutCoverageCondition *DUTCoverageCondition `protobuf:"bytes,3,opt,name=dut_coverage_condition,json=dutCoverageCondition,proto3" json:"dut_coverage_condition,omitempty"`
// Chrome OS platform software covered by this test plan.
//
// Test Platform requests may optionally include a reference to platform
// software to be tested via the test plan. For such requests, Test Platform
- // must only execute test plan units that have non-trivial coverage of the
- // referenced platform software. Unrelated test plan units must be skipped.
+ // MUST only execute test plan units that have non-trivial coverage of the
+ // referenced platform software. Unrelated test plan units MUST be skipped.
//
// A typical example is presubmit testing: When testing a change to the
// network manager, it may be desirable to only run test plan units that
// are known to exercise the network manager.
//
- // For a test plan unit with no `code_coverage` specified, Test Platform must
- // assume coverage of all platform software (i.e., this test plan unit must
+ // For a test plan unit with no `code_coverage` specified, Test Platform MUST
+ // assume coverage of all platform software (i.e., this test plan unit MUST
// never be skipped for code coverage considerations).
CodeCoverage *CodeCoverage `protobuf:"bytes,4,opt,name=code_coverage,json=codeCoverage,proto3" json:"code_coverage,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -218,7 +218,7 @@
// A Common Expression Language (CEL) expression to specify test conditions.
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
- // Test Platform must interpret `expression` in the scope of
+ // Test Platform MUST interpret `expression` in the scope of
// `test.plan.TestCondition.Scope` defined below.
//
// ## Examples
@@ -236,13 +236,14 @@
//
// ## CEL support
//
- // All standard CEL syntax, macros and functions must be supported.
+ // All standard CEL syntax, macros and functions MUST be supported.
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type TestCondition.Scope. This variable contains
// the information about a particular Test being tested for
@@ -342,7 +343,7 @@
// A Common Expression Language (CEL) expression to specify set of DUTs that
// provide the necessary coverage.
//
- // Test Platform must interpret `expression` in the scope of the
+ // Test Platform MUST interpret `expression` in the scope of the
// protobuf message DUTCoverageCondition.Scope defined below. In summary, the
// expression allows selection of a set of Devices Under Test that provide the
// necessary coverage - Test Platform will determine a set of devices that
@@ -355,7 +356,7 @@
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
// This API only supports a sub-set of the CEL features as described here.
- // Test Platform must validate the expression and reject use of unsupported
+ // Test Platform MUST validate the expression and reject use of unsupported
// features.
//
// TODO(crbug.com/1051689) Add reference to the metadata validator package.
@@ -392,7 +393,7 @@
// minimal set of devices to run the plan is best effort.
//
// Currently, only single-DUT constraints are supported by the Test Platform.
- // i.e., `expression` must be of the form:
+ // i.e., `expression` MUST be of the form:
// duts.all(DUT_SELECTOR) && size(duts) == 1
// where DUT_SELECTOR is an expression that does not refer to `duts`.
// This restriction will be lifted as this API matures.
@@ -410,9 +411,10 @@
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type DUTCoverageCondition.Scope. This variable
// contains the information about the set of Devices Under Test being
@@ -607,7 +609,7 @@
// A Common Expression Language (CEL) expression to specify code coverage.
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
- // Test Platform must interpret `expression` in the scope of
+ // Test Platform MUST interpret `expression` in the scope of
// `test.plan.CodeCoverageCondition.Scope` defined below.
//
// ## Examples
@@ -626,13 +628,14 @@
//
// ## CEL support
//
- // All standard CEL syntax, macros and functions must be supported.
+ // All standard CEL syntax, macros and functions MUST be supported.
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type CodeCoverage.Scope. This variable contains
// the information about what platform software changes are intended to be
diff --git a/go/test/rtd/v1/invocation.pb.go b/go/test/rtd/v1/invocation.pb.go
index df86a38..6210c48 100644
--- a/go/test/rtd/v1/invocation.pb.go
+++ b/go/test/rtd/v1/invocation.pb.go
@@ -33,9 +33,9 @@
ProgressSinkClientConfig *ProgressSinkClientConfig `protobuf:"bytes,1,opt,name=progress_sink_client_config,json=progressSinkClientConfig,proto3" json:"progress_sink_client_config,omitempty"`
// Set of DUTs used for each of the requests in this invocation.
Duts []*DUT `protobuf:"bytes,2,rep,name=duts,proto3" json:"duts,omitempty"`
- // Smallest unit of an invocation request for which results must be reported.
+ // Smallest unit of an invocation request for which results MUST be reported.
//
- // An invocation must execute all requests serially in-order. This assumption
+ // An invocation MUST execute all requests serially in-order. This assumption
// is necessary for future support of test sequences in test plans.
Requests []*Request `protobuf:"bytes,3,rep,name=requests,proto3" json:"requests,omitempty"`
// Configuration information for using Test Lab Services to interact
@@ -110,9 +110,9 @@
HardwareFeatures *api.HardwareFeatures `protobuf:"bytes,3,opt,name=hardware_features,json=hardwareFeatures,proto3" json:"hardware_features,omitempty"`
// Name for the DUT for using Test Lab Services to interact with the
// device and its peripherals.
- // The RTD must pass this to certain Test Lab Service RPCs to specify
- // DUTs to act on.
- // See the tls.OpenDutPortRequest message for an example of where
+ //
+ // The RTD MUST pass this to Test Lab Service RPCs that act on a particular
+ // DUT. See the tls.OpenDutPortRequest message for an example of where
// this is used.
TlsDutName string `protobuf:"bytes,4,opt,name=tls_dut_name,json=tlsDutName,proto3" json:"tls_dut_name,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -175,10 +175,10 @@
// Request for execution of a single test.metadata.Test
type Request struct {
- // name must be unique across all requests in this invocation.
+ // name MUST be unique across all requests in this invocation.
//
// Remote Test Drivers are recommended to use name as the opaque tag
- // required by the Test Lab Services API. Thus, name should be unique across
+ // required by the Test Lab Services API. Thus, name SHOULD be unique across
// all invocations to simplify analytics. UUIDs are recommended.
//
// See also:
@@ -248,12 +248,12 @@
type Request_Environment struct {
// Absolute path to a directory for writing arbitrary files.
//
- // This directory must be created by Remote Test Server prior to the Remote
+ // This directory MUST be created by Remote Test Server prior to the Remote
// Test Driver invocation.
//
- // * Remote Test Drivers should use
+ // * Remote Test Drivers SHOULD use
// test.invocation.ProgressClient.ReportLog() to report logs.
- // * Remote Test Drivers should use
+ // * Remote Test Drivers SHOULD use
// test.invocation.ProgressClient.ArchiveArtifact() to archive critical
// artifacts.
//
@@ -262,11 +262,11 @@
WorkDir string `protobuf:"bytes,1,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"`
// Absolute path to a directory for writing temporary files.
//
- // This directory must be created by Remote Test Server prior to the Remote
+ // This directory MUST be created by Remote Test Server prior to the Remote
// Test Driver invocation.
//
- // Remote Test Drivers must use this directory for temporary files and must
- // not attempt to use defaults like /tmp or the TMP environment variable.
+ // Remote Test Drivers MUST use this directory for temporary files and MUST
+ // NOT attempt to use defaults like /tmp or the TMP environment variable.
//
// See also: Environment.work_dir
TempDir string `protobuf:"bytes,2,opt,name=temp_dir,json=tempDir,proto3" json:"temp_dir,omitempty"`
diff --git a/go/test/rtd/v1/progress.pb.go b/go/test/rtd/v1/progress.pb.go
index 74050ba..5699512 100644
--- a/go/test/rtd/v1/progress.pb.go
+++ b/go/test/rtd/v1/progress.pb.go
@@ -29,7 +29,7 @@
type Result_State int32
const (
- // No end state specified. Must not be used.
+ // No end state specified. MUST NOT be used.
Result_STATE_UNSPECIFIED Result_State = 0
// Test request succeeded. All was well.
Result_SUCCEEDED Result_State = 1
@@ -40,7 +40,7 @@
// Common reasons a test may be skipped:
//
// * A runtime check by the Remote Test Driver concluded that the test is
- // not applicable to the targeted device(s). The Remote Test Driver should
+ // not applicable to the targeted device(s). The Remote Test Driver SHOULD
// include detailed reasons in `errors`.
Result_SKIPPED Result_State = 3
)
@@ -71,9 +71,9 @@
type Result_Error_Source int32
const (
- // No Source specified. Should not be used.
+ // No Source specified. SHOULD NOT be used.
//
- // If source is unspecified, the Test Lab Environment should assume the
+ // If source is unspecified, the Test Lab Environment SHOULD assume the
// source to be the Remote Test Driver.
Result_Error_SOURCE_UNSPECIFIED Result_Error_Source = 0
// The test failed.
@@ -110,12 +110,12 @@
type Result_Error_Severity int32
const (
- // No Severity set. Should not be used.
+ // No Severity set. SHOULD NOT be used.
Result_Error_SEVERITY_UNSPECIFIED Result_Error_Severity = 0
- // Remote Test Server should validate that a Result contains a CRITICAL
+ // Remote Test Server SHOULD validate that a Result contains a CRITICAL
// message iff state == FAILED.
Result_Error_CRITICAL Result_Error_Severity = 1
- // Must not, by itself, lead to a FAILED Result.state.
+ // MUST NOT, by itself, lead to a FAILED Result.state.
Result_Error_WARNING Result_Error_Severity = 2
)
@@ -185,9 +185,9 @@
type Result struct {
// Final state of the test execution.
//
- // Error details must be available in `errors` if state != SUCCEEDED.
+ // Error details MUST be available in `errors` if state != SUCCEEDED.
State Result_State `protobuf:"varint,1,opt,name=state,proto3,enum=test.rtd.v1.Result_State" json:"state,omitempty"`
- // errors must be set if state != SUCCEEDED.
+ // errors MUST be set if state != SUCCEEDED.
//
// errors may be provided even if state == SUCCEEDED. Remote Test Drivers are
// encouraged to provide multiple observed errors in Result to aid end-user
@@ -244,10 +244,10 @@
Severity Result_Error_Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=test.rtd.v1.Result_Error_Severity" json:"severity,omitempty"`
// Machine parseable details about the error.
//
- // Test Lab Environments and Remote Test Servers must not interpret the
+ // Test Lab Environments and Remote Test Servers MUST NOT interpret the
// details.
//
- // Remote Test Drivers should use uniform stable schema for `details` to
+ // Remote Test Drivers SHOULD use uniform stable schema for `details` to
// enable robust analytics.
Details *_struct.Struct `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -352,7 +352,7 @@
}
type ReportResultResponse struct {
- // If set, the invocation should immediately terminate, skipping remaining
+ // If set, the invocation SHOULD immediately terminate, skipping remaining
// requests.
Terminate bool `protobuf:"varint,1,opt,name=terminate,proto3" json:"terminate,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -395,8 +395,8 @@
type ReportLogRequest struct {
// Name of the log sink.
//
- // name may be interpreted as a local file path or part of a URL. name must be
- // a valid resource name per https://aip.dev/122 and must be a valid POSIX
+ // name may be interpreted as a local file path or part of a URL. name MUST be
+ // a valid resource name per https://aip.dev/122 and MUST be a valid POSIX
// file path.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The request to report logs for, identified by the
@@ -489,11 +489,11 @@
type ArchiveArtifactRequest struct {
// Name for the archived artifact.
//
- // name may be interpreted as a local file path or part of a URL. name must be
- // a valid resource name per https://aip.dev/122 and must be a valid POSIX
+ // name may be interpreted as a local file path or part of a URL. name MUST be
+ // a valid resource name per https://aip.dev/122 and MUST be a valid POSIX
// file path.
//
- // name must be unique across all artifacts archived from a single invocation
+ // name MUST be unique across all artifacts archived from a single invocation
// request.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The request to archive artifacts for, identified by the
@@ -659,12 +659,12 @@
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ProgressSinkClient interface {
- // A Remote Test Driver invocation must call ReportResult exactly once per
+ // A Remote Test Driver invocation MUST call ReportResult exactly once per
// request.
ReportResult(ctx context.Context, in *ReportResultRequest, opts ...grpc.CallOption) (*ReportResultResponse, error)
// A log stream from the Remote Test Driver invocation.
//
- // Each call to this method must stream logs for a single invocation request
+ // Each call to this method MUST stream logs for a single invocation request
// and log file. Data for the same file may be split over multiple ReportLog
// calls. Data received from concurrent methods calls for the same log file
// may be interleved arbitrarily.
@@ -672,11 +672,11 @@
// Archive test artifacts to non-ephemeral storage.
//
// Different Test Lab Environments may use very different non-ephemeral
- // storage technologies. Remote Test Servers must archive the artifacts to
+ // storage technologies. Remote Test Servers MUST archive the artifacts to
// final storage synchronously and return an error if the archival fails.
//
- // Note: Remote Test Drivers should use ReportLog() to report logs.
- // ArchiveArtifact() should be used to report structured or binary data only.
+ // Note: Remote Test Drivers SHOULD use ReportLog() to report logs.
+ // ArchiveArtifact() SHOULD be used to report structured or binary data only.
//
// Remote Test Server may limit the size of artifacts that may be offloaded
// per request and may fail further requests with RESOURCE_EXHAUSTED.
@@ -745,12 +745,12 @@
// ProgressSinkServer is the server API for ProgressSink service.
type ProgressSinkServer interface {
- // A Remote Test Driver invocation must call ReportResult exactly once per
+ // A Remote Test Driver invocation MUST call ReportResult exactly once per
// request.
ReportResult(context.Context, *ReportResultRequest) (*ReportResultResponse, error)
// A log stream from the Remote Test Driver invocation.
//
- // Each call to this method must stream logs for a single invocation request
+ // Each call to this method MUST stream logs for a single invocation request
// and log file. Data for the same file may be split over multiple ReportLog
// calls. Data received from concurrent methods calls for the same log file
// may be interleved arbitrarily.
@@ -758,11 +758,11 @@
// Archive test artifacts to non-ephemeral storage.
//
// Different Test Lab Environments may use very different non-ephemeral
- // storage technologies. Remote Test Servers must archive the artifacts to
+ // storage technologies. Remote Test Servers MUST archive the artifacts to
// final storage synchronously and return an error if the archival fails.
//
- // Note: Remote Test Drivers should use ReportLog() to report logs.
- // ArchiveArtifact() should be used to report structured or binary data only.
+ // Note: Remote Test Drivers SHOULD use ReportLog() to report logs.
+ // ArchiveArtifact() SHOULD be used to report structured or binary data only.
//
// Remote Test Server may limit the size of artifacts that may be offloaded
// per request and may fail further requests with RESOURCE_EXHAUSTED.
diff --git a/src/test/metadata/v1/metadata.proto b/src/test/metadata/v1/metadata.proto
index 87af7c5..b6422fa 100644
--- a/src/test/metadata/v1/metadata.proto
+++ b/src/test/metadata/v1/metadata.proto
@@ -10,8 +10,8 @@
// This metadata is used for test execution requests, scheduling decisions and
// results analytics in various Test Lab Environments.
//
-// Metadata must be generated for all tests in supported Remote Test Drivers and
-// must be respected in all Test Lab Environments.
+// Metadata MUST be generated for all tests in supported Remote Test Drivers and
+// MUST be respected in all Test Lab Environments.
package test.metadata.v1;
option go_package = "go.chromium.org/chromiumos/infra/proto/go/test/metadata/v1;metadata";
@@ -26,7 +26,7 @@
// The test metadata specification.
//
-// Test metadata must be generated for each Remote Test Driver as one of the
+// Test metadata MUST be generated for each Remote Test Driver as one of the
// test artifacts generated from Chrome OS build system.
message Specification {
// A set of Remote Test Driver packages.
@@ -37,7 +37,7 @@
//
// Unlike tests, a RemoteTestDriver (identified by its name) may be specified
// multiple times, in a single Specification or across different Specification
- // instances. In that case, all fields except the list of tests must be
+ // instances. In that case, all fields except the list of tests MUST be
// identical across these RemoteTestDriver instances. The list of tests across
// these instances will be concatenated together.
repeated RemoteTestDriver remote_test_drivers = 1;
@@ -50,7 +50,7 @@
// Globally unique name for a Remote Test Driver package.
//
//
- // Must be a valid resource per https://aip.dev/122.
+ // MUST be a valid resource per https://aip.dev/122.
//
// Pattern: remoteTestDrivers/{remoteTestDriver}
//
@@ -64,17 +64,17 @@
// A container image containing all the required dependencies and other build
// artifacts required for test invocations.
//
- // Test Lab Environments should fail with an error indicating that the request
+ // Test Lab Environments SHOULD fail with an error indicating that the request
// was invalid if the image fails to be found for a test invocation.
BuildArtifact image = 2;
// Command to invoke the Remote Test Driver inside `image`.
//
- // Remote Test Servers must run `command` as
+ // Remote Test Servers MUST run `command` as
// $ ${command} -input_json ${input_json}
// where ${command} and ${input_json} are absolute paths inside the container.
//
- // Remote Test Servers must populate `input_json` with a JSON encoded
+ // Remote Test Servers MUST populate `input_json` with a JSON encoded
// test.invocation.Request message.
string command = 3;
@@ -120,7 +120,7 @@
// this restriction.
//
// A single test platform request or Remote Test Driver invocation may contain
-// multiple instances of multiple Tests, but each instance of a Test must
+// multiple instances of multiple Tests, but each instance of a Test MUST
// correspond to exactly one reported result.
//
// See Also:
@@ -130,7 +130,7 @@
message Test {
// Globally unique name for this test.
//
- // Must be a valid resource per https://aip.dev/122.
+ // MUST be a valid resource per https://aip.dev/122.
//
// Pattern: remoteTestDrivers/{remoteTestDriver}/tests/{test}
// where {remoteTestDriver} is the Remote Test Driver package that contains
@@ -161,9 +161,9 @@
message Attribute {
// Opaque name for this attribute.
//
- // Value must be valid resource names per https://aip.dev/122.
+ // Value MUST be valid resource names per https://aip.dev/122.
//
- // Must not be interpreted by Test Lab Environments.
+ // MUST NOT be interpreted by Test Lab Environments.
string name = 1;
}
@@ -173,12 +173,12 @@
//
// Test Lab Environments may optionally support targeting test requests to
// Device Under Test based on DUTConditions. If this feature is supported, the
- // Test Lab Environment must interpret `expression` in the scope of the
+ // Test Lab Environment MUST interpret `expression` in the scope of the
// protobuf message DUTCondition.Scope as defined below.
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
// This API only currently only supports a small sub-set of the CEL features,
- // as described here. Test Lab Environments should validate the expression and
+ // as described here. Test Lab Environments SHOULD validate the expression and
// reject use of unsupported features.
//
// TODO(crbug.com/1051689) Add reference to the metadata validator package.
@@ -209,9 +209,10 @@
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type DUTCondition.Scope. This variable contains the
// information about a particular Device Under Test being tested for
@@ -283,7 +284,7 @@
// Machine readable test-specific information.
//
- // Remote Test Drivers should include detailed information to aid analytics.
+ // Remote Test Drivers SHOULD include detailed information to aid analytics.
// For example, test authors may minimize code duplication by writing
// paramterized tests. Thus, multiple test metadata may refer to the
// same test implementation with different arguments. It is useful to include
@@ -296,7 +297,7 @@
// }
// }
//
- // This field must not be interpreted by the Test Lab Environments, but Remote
+ // This field MUST NOT be interpreted by the Test Lab Environments, but Remote
// Test Drivers can enrich analytics by using uniform stable schema for
// details across all their tests.
google.protobuf.Struct details = 2;
diff --git a/src/test/plan/v1/plan.proto b/src/test/plan/v1/plan.proto
index fd92674..c79138a 100644
--- a/src/test/plan/v1/plan.proto
+++ b/src/test/plan/v1/plan.proto
@@ -25,14 +25,14 @@
// A Plan fully specifies a Test Platform end-user's coverage needs.
//
-// Plans should associate platform software and Device Under Test condition
-// coverage rules with tests that exercise those components. Plans must be used
+// Plans SHOULD associate platform software and Device Under Test condition
+// coverage rules with tests that exercise those components. Plans MUST be used
// in the Test Platform request API. Other Test Lab Environments may use plans
// to ease interoperation with the Test Platform.
message Plan {
// A globally unique test plan name.
//
- // Must be valid resource name per https://aip.dev/122.
+ // MUST be valid resource name per https://aip.dev/122.
//
// Pattern: plans/{plan}
string name = 1;
@@ -46,7 +46,7 @@
message Unit {
// A globally unique test plan unit name.
//
- // Must be valid resource name per https://aip.dev/122.
+ // MUST be valid resource name per https://aip.dev/122.
//
// Pattern: plans/{plan}/units/{unit}
// where {plan} is the parent Plan of this Unit.
@@ -55,23 +55,23 @@
// Selects tests to include in this test plan unit.
TestCondition test_condition = 2;
- // Selects the set of Devices Under Test that tests must be run on to satisfy
- // this test plan unit.
+ // Selects the set of Devices Under Test that satisfy the coverage
+ // requirements of this test plan unit.
DUTCoverageCondition dut_coverage_condition = 3;
// Chrome OS platform software covered by this test plan.
//
// Test Platform requests may optionally include a reference to platform
// software to be tested via the test plan. For such requests, Test Platform
- // must only execute test plan units that have non-trivial coverage of the
- // referenced platform software. Unrelated test plan units must be skipped.
+ // MUST only execute test plan units that have non-trivial coverage of the
+ // referenced platform software. Unrelated test plan units MUST be skipped.
//
// A typical example is presubmit testing: When testing a change to the
// network manager, it may be desirable to only run test plan units that
// are known to exercise the network manager.
//
- // For a test plan unit with no `code_coverage` specified, Test Platform must
- // assume coverage of all platform software (i.e., this test plan unit must
+ // For a test plan unit with no `code_coverage` specified, Test Platform MUST
+ // assume coverage of all platform software (i.e., this test plan unit MUST
// never be skipped for code coverage considerations).
CodeCoverage code_coverage = 4;
}
@@ -81,7 +81,7 @@
// A Common Expression Language (CEL) expression to specify test conditions.
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
- // Test Platform must interpret `expression` in the scope of
+ // Test Platform MUST interpret `expression` in the scope of
// `test.plan.TestCondition.Scope` defined below.
//
// ## Examples
@@ -99,13 +99,14 @@
//
// ## CEL support
//
- // All standard CEL syntax, macros and functions must be supported.
+ // All standard CEL syntax, macros and functions MUST be supported.
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type TestCondition.Scope. This variable contains
// the information about a particular Test being tested for
@@ -129,7 +130,7 @@
// A Common Expression Language (CEL) expression to specify set of DUTs that
// provide the necessary coverage.
//
- // Test Platform must interpret `expression` in the scope of the
+ // Test Platform MUST interpret `expression` in the scope of the
// protobuf message DUTCoverageCondition.Scope defined below. In summary, the
// expression allows selection of a set of Devices Under Test that provide the
// necessary coverage - Test Platform will determine a set of devices that
@@ -142,7 +143,7 @@
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
// This API only supports a sub-set of the CEL features as described here.
- // Test Platform must validate the expression and reject use of unsupported
+ // Test Platform MUST validate the expression and reject use of unsupported
// features.
//
// TODO(crbug.com/1051689) Add reference to the metadata validator package.
@@ -179,7 +180,7 @@
// minimal set of devices to run the plan is best effort.
//
// Currently, only single-DUT constraints are supported by the Test Platform.
- // i.e., `expression` must be of the form:
+ // i.e., `expression` MUST be of the form:
// duts.all(DUT_SELECTOR) && size(duts) == 1
// where DUT_SELECTOR is an expression that does not refer to `duts`.
// This restriction will be lifted as this API matures.
@@ -197,9 +198,10 @@
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type DUTCoverageCondition.Scope. This variable
// contains the information about the set of Devices Under Test being
@@ -275,7 +277,7 @@
// A Common Expression Language (CEL) expression to specify code coverage.
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
- // Test Platform must interpret `expression` in the scope of
+ // Test Platform MUST interpret `expression` in the scope of
// `test.plan.CodeCoverageCondition.Scope` defined below.
//
// ## Examples
@@ -294,13 +296,14 @@
//
// ## CEL support
//
- // All standard CEL syntax, macros and functions must be supported.
+ // All standard CEL syntax, macros and functions MUST be supported.
//
// ### Evaluation context
//
- // A CEL expression must be evaluated in some context that provides the basic
- // bindings for name resolution. `expression` must be evaluated in an
- // evaluation context that contains
+ // In general, a CEL expression must be evaluated in some context that
+ // provides the basic bindings for name resolution.
+ //
+ // In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type CodeCoverage.Scope. This variable contains
// the information about what platform software changes are intended to be
diff --git a/src/test/rtd/v1/invocation.proto b/src/test/rtd/v1/invocation.proto
index 96281ff..88b8006 100644
--- a/src/test/rtd/v1/invocation.proto
+++ b/src/test/rtd/v1/invocation.proto
@@ -28,9 +28,9 @@
// Set of DUTs used for each of the requests in this invocation.
repeated DUT duts = 2;
- // Smallest unit of an invocation request for which results must be reported.
+ // Smallest unit of an invocation request for which results MUST be reported.
//
- // An invocation must execute all requests serially in-order. This assumption
+ // An invocation MUST execute all requests serially in-order. This assumption
// is necessary for future support of test sequences in test plans.
repeated Request requests = 3;
@@ -52,19 +52,19 @@
// Name for the DUT for using Test Lab Services to interact with the
// device and its peripherals.
- // The RTD must pass this to certain Test Lab Service RPCs to specify
- // DUTs to act on.
- // See the tls.OpenDutPortRequest message for an example of where
+ //
+ // The RTD MUST pass this to Test Lab Service RPCs that act on a particular
+ // DUT. See the tls.OpenDutPortRequest message for an example of where
// this is used.
string tls_dut_name = 4;
}
// Request for execution of a single test.metadata.Test
message Request {
- // name must be unique across all requests in this invocation.
+ // name MUST be unique across all requests in this invocation.
//
// Remote Test Drivers are recommended to use name as the opaque tag
- // required by the Test Lab Services API. Thus, name should be unique across
+ // required by the Test Lab Services API. Thus, name SHOULD be unique across
// all invocations to simplify analytics. UUIDs are recommended.
//
// See also:
@@ -82,12 +82,12 @@
message Environment {
// Absolute path to a directory for writing arbitrary files.
//
- // This directory must be created by Remote Test Server prior to the Remote
+ // This directory MUST be created by Remote Test Server prior to the Remote
// Test Driver invocation.
//
- // * Remote Test Drivers should use
+ // * Remote Test Drivers SHOULD use
// test.invocation.ProgressClient.ReportLog() to report logs.
- // * Remote Test Drivers should use
+ // * Remote Test Drivers SHOULD use
// test.invocation.ProgressClient.ArchiveArtifact() to archive critical
// artifacts.
//
@@ -97,11 +97,11 @@
// Absolute path to a directory for writing temporary files.
//
- // This directory must be created by Remote Test Server prior to the Remote
+ // This directory MUST be created by Remote Test Server prior to the Remote
// Test Driver invocation.
//
- // Remote Test Drivers must use this directory for temporary files and must
- // not attempt to use defaults like /tmp or the TMP environment variable.
+ // Remote Test Drivers MUST use this directory for temporary files and MUST
+ // NOT attempt to use defaults like /tmp or the TMP environment variable.
//
// See also: Environment.work_dir
string temp_dir = 2;
diff --git a/src/test/rtd/v1/progress.proto b/src/test/rtd/v1/progress.proto
index b83acbc..ffa61d7 100644
--- a/src/test/rtd/v1/progress.proto
+++ b/src/test/rtd/v1/progress.proto
@@ -21,23 +21,23 @@
// Remote Test Driver invocation.
//
// A simple implementation of Remote Test Driver may report progress at the
-// end of the invocation for all requests together. Real implementations should
+// end of the invocation for all requests together. Real implementations SHOULD
// report incremental progress during the invocation.
//
-// A progress sink service instance is tied to a single Invocation. There must
+// A progress sink service instance is tied to a single Invocation. There MUST
// always be a single Remote Test Driver invocation inside a Remote Test Server.
// If a Test Lab Environment desires to share a ProgressSink instance across
// various Remote Test Servers, a way to dinstinguish the different Remote Test
// Driver clients must be determined, which is not supported directly by the
// following API.
service ProgressSink {
- // A Remote Test Driver invocation must call ReportResult exactly once per
+ // A Remote Test Driver invocation MUST call ReportResult exactly once per
// request.
rpc ReportResult(ReportResultRequest) returns (ReportResultResponse);
// A log stream from the Remote Test Driver invocation.
//
- // Each call to this method must stream logs for a single invocation request
+ // Each call to this method MUST stream logs for a single invocation request
// and log file. Data for the same file may be split over multiple ReportLog
// calls. Data received from concurrent methods calls for the same log file
// may be interleved arbitrarily.
@@ -46,11 +46,11 @@
// Archive test artifacts to non-ephemeral storage.
//
// Different Test Lab Environments may use very different non-ephemeral
- // storage technologies. Remote Test Servers must archive the artifacts to
+ // storage technologies. Remote Test Servers MUST archive the artifacts to
// final storage synchronously and return an error if the archival fails.
//
- // Note: Remote Test Drivers should use ReportLog() to report logs.
- // ArchiveArtifact() should be used to report structured or binary data only.
+ // Note: Remote Test Drivers SHOULD use ReportLog() to report logs.
+ // ArchiveArtifact() SHOULD be used to report structured or binary data only.
//
// Remote Test Server may limit the size of artifacts that may be offloaded
// per request and may fail further requests with RESOURCE_EXHAUSTED.
@@ -61,7 +61,7 @@
message Result {
// Enum entries *may* be added to this enum in the future.
enum State {
- // No end state specified. Must not be used.
+ // No end state specified. MUST NOT be used.
STATE_UNSPECIFIED = 0;
// Test request succeeded. All was well.
SUCCEEDED = 1;
@@ -72,21 +72,21 @@
// Common reasons a test may be skipped:
//
// * A runtime check by the Remote Test Driver concluded that the test is
- // not applicable to the targeted device(s). The Remote Test Driver should
+ // not applicable to the targeted device(s). The Remote Test Driver SHOULD
// include detailed reasons in `errors`.
SKIPPED = 3;
}
// Final state of the test execution.
//
- // Error details must be available in `errors` if state != SUCCEEDED.
+ // Error details MUST be available in `errors` if state != SUCCEEDED.
State state = 1;
message Error {
// Enum entries *may* be added in the future.
enum Source {
- // No Source specified. Should not be used.
+ // No Source specified. SHOULD NOT be used.
//
- // If source is unspecified, the Test Lab Environment should assume the
+ // If source is unspecified, the Test Lab Environment SHOULD assume the
// source to be the Remote Test Driver.
SOURCE_UNSPECIFIED = 0;
// The test failed.
@@ -102,12 +102,12 @@
// Enum entries *may* be added in the future.
enum Severity {
- // No Severity set. Should not be used.
+ // No Severity set. SHOULD NOT be used.
SEVERITY_UNSPECIFIED = 0;
- // Remote Test Server should validate that a Result contains a CRITICAL
+ // Remote Test Server SHOULD validate that a Result contains a CRITICAL
// message iff state == FAILED.
CRITICAL = 1;
- // Must not, by itself, lead to a FAILED Result.state.
+ // MUST NOT, by itself, lead to a FAILED Result.state.
WARNING = 2;
}
@@ -116,15 +116,15 @@
// Machine parseable details about the error.
//
- // Test Lab Environments and Remote Test Servers must not interpret the
+ // Test Lab Environments and Remote Test Servers MUST NOT interpret the
// details.
//
- // Remote Test Drivers should use uniform stable schema for `details` to
+ // Remote Test Drivers SHOULD use uniform stable schema for `details` to
// enable robust analytics.
google.protobuf.Struct details = 3;
}
- // errors must be set if state != SUCCEEDED.
+ // errors MUST be set if state != SUCCEEDED.
//
// errors may be provided even if state == SUCCEEDED. Remote Test Drivers are
// encouraged to provide multiple observed errors in Result to aid end-user
@@ -142,7 +142,7 @@
}
message ReportResultResponse {
- // If set, the invocation should immediately terminate, skipping remaining
+ // If set, the invocation SHOULD immediately terminate, skipping remaining
// requests.
bool terminate = 1;
}
@@ -150,8 +150,8 @@
message ReportLogRequest {
// Name of the log sink.
//
- // name may be interpreted as a local file path or part of a URL. name must be
- // a valid resource name per https://aip.dev/122 and must be a valid POSIX
+ // name may be interpreted as a local file path or part of a URL. name MUST be
+ // a valid resource name per https://aip.dev/122 and MUST be a valid POSIX
// file path.
string name = 1;
@@ -168,11 +168,11 @@
message ArchiveArtifactRequest {
// Name for the archived artifact.
//
- // name may be interpreted as a local file path or part of a URL. name must be
- // a valid resource name per https://aip.dev/122 and must be a valid POSIX
+ // name may be interpreted as a local file path or part of a URL. name MUST be
+ // a valid resource name per https://aip.dev/122 and MUST be a valid POSIX
// file path.
//
- // name must be unique across all artifacts archived from a single invocation
+ // name MUST be unique across all artifacts archived from a single invocation
// request.
string name = 1;