1// Copyright 2021 The ChromiumOS Authors 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5syntax = "proto3"; 6 7package chromiumos.test.api; 8 9option go_package = "go.chromium.org/chromiumos/config/go/test/api"; 10 11import "chromiumos/test/api/test_case.proto"; 12import "chromiumos/test/api/test_case_metadata.proto"; 13import "chromiumos/test/api/test_execution_metadata.proto"; 14 15 16// Defines a named collection of tests. 17// 18// For test scheduling/execution purposes, there is no guarantee on ordering. 19// Tests can be batched/unbatched in different sequences and can be 20// executed on different devices altogether. 21message TestSuite { 22 // Optional human friendly name 23 string name = 1; 24 25 oneof spec { 26 // Explicit list of tests 27 TestCaseIdList test_case_ids = 2; 28 // Tests are included via tag inclusion/exclusion criteria. 29 TestCaseTagCriteria test_case_tag_criteria = 3; 30 // List of all test_cases 31 TestCaseList test_cases = 4; 32 // List of TestCaseMetadata which is list of test case with metadata. 33 TestCaseMetadataList test_cases_metadata = 6; 34 } 35 36 // No-op with CTP2 rollout, use max_in_shard instead. 37 int64 total_shards = 5 [deprecated = true]; 38 39 // See test_platform.Request.TestPlan.max_in_shard. 40 int64 max_in_shard = 8; 41 42 // Defines a combination of tag and test name based selection criteria, 43 // which is applied against a list of TestCase definitions to determine 44 // test suite inclusion. 45 // 46 // Tests are included if they meet the following: 47 // - MATCH ALL of the [include] tags and at least one from [include] test names 48 // - DO NOT MATCH ANY of the exclude tags or test names 49 // 50 // Tags must match exactly (i.e. no regexp, wildcard, etc. allowed). 51 // Test names allow usage of wildcard. 52 message TestCaseTagCriteria { 53 repeated string tags = 1; 54 repeated string tag_excludes = 2; 55 repeated string test_names = 3; 56 repeated string test_name_excludes = 4; 57 } 58 59 // K:Vs to be passed to the harness. Mostly will be used for args; but 60 // technically can go for others. 61 ExecutionMetadata execution_metadata = 7; 62 63} 64