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 11// Defines an atomic unit of test work that's independently executable. 12// 13// Test cases are the atomic building blocks used to define/generate test plans 14// and then ultimately scheduling units of work (batched or independent). 15// 16// Test case definitions can come from any execution workflow/environment. 17// E.g. Automated test cases will generally be defined/reported by the 18// various test-drivers (e.g. Tast/Tauto/...) at build time. 19// 20// Manual test cases will be defined/managed directly in starlark config 21// and then act as the building blocks for manual test planning/scheduling. 22// 23// Test cases also are the atom at which test results can be reported. 24message TestCase { 25 // Globally unique (for ChromeOS) string id for a given test case. 26 Id id = 1; 27 message Id { 28 string value = 1; 29 } 30 // Human friendly name 31 string name = 2; 32 33 // Tags associated with a given test case, which drive scheduling logic 34 // based on tag inclusion or exclusion criteria. 35 repeated Tag tags = 3; 36 message Tag { 37 string value = 1; 38 } 39 40 // Dependencies for a given test cases, which drive scheduling logic for 41 // dut matching. 42 repeated Dependency dependencies = 4; 43 message Dependency { 44 string value = 1; 45 } 46 47 // BuildDeps for a given test cases, which drive test filtering logic for 48 // scheduling. 49 repeated BuildDeps build_dependencies = 5; 50 message BuildDeps { 51 string value = 1; 52 } 53} 54 55// List of globally unique test case identifiers 56message TestCaseIdList { 57 repeated TestCase.Id test_case_ids = 1; 58} 59 60message TestCaseList { 61 repeated TestCase test_cases = 1; 62} 63