go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/resultdb/proto/bq/test_result_row.proto (about) 1 // Copyright 2020 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 syntax = "proto3"; 16 17 package luci.resultdb.bq; 18 19 import "google/protobuf/duration.proto"; 20 import "google/protobuf/struct.proto"; 21 import "google/protobuf/timestamp.proto"; 22 import "go.chromium.org/luci/common/bq/pb/options.proto"; 23 import "go.chromium.org/luci/resultdb/proto/bq/common.proto"; 24 import "go.chromium.org/luci/resultdb/proto/v1/common.proto"; 25 import "go.chromium.org/luci/resultdb/proto/v1/invocation.proto"; 26 import "go.chromium.org/luci/resultdb/proto/v1/test_metadata.proto"; 27 import "go.chromium.org/luci/resultdb/proto/v1/failure_reason.proto"; 28 29 option go_package = "go.chromium.org/luci/resultdb/proto/bq;resultpb"; 30 31 // TestResultRow represents a row in a BigQuery table for result of a functional 32 // test case. 33 // Next id: 22. 34 message TestResultRow { 35 // Exported contains info of the exported invocation. 36 // 37 // Note: it's possible that this invocation is not the result's 38 // immediate parent invocation, but the including invocation. 39 // For example if the BigQuery table is for all test results of Chromium CI 40 // builds, then the exported invocation is for a CI build, which includes 41 // multiple invocations for swarming tasks within that build. 42 InvocationRecord exported = 1; 43 44 // Parent contains info of the result's immediate parent invocation. 45 InvocationRecord parent = 2; 46 47 // Name of the test result. 48 // Format: 49 // "invocations/{PARENT.ID}/tests/{URL_ESCAPED_TEST_ID}/results/{RESULT_ID}". 50 // where URL_ESCAPED_TEST_ID is test_id escaped with 51 // https://golang.org/pkg/net/url/#PathEscape See also https://aip.dev/122. 52 string name = 17; 53 54 // Is a unique identifier of the test in a LUCI project. 55 // Refer to TestResult.test_id for details. 56 string test_id = 3; 57 58 // Identifies a test result in a given invocation and test id. 59 string result_id = 4; 60 61 // Describes one specific way of running the test, 62 // e.g. a specific bucket, builder and a test suite. 63 repeated luci.resultdb.v1.StringPair variant = 5; 64 65 // A hex-encoded sha256 of concatenated "<key>:<value>\n" variant pairs. 66 string variant_hash = 6; 67 68 // Expected is a flag indicating whether the result of test case execution is 69 // expected. Refer to TestResult.Expected for details. 70 bool expected = 7; 71 72 // Status of the test result. 73 // See TestStatus for possible values. 74 string status = 8; 75 76 // A human-readable explanation of the result, in HTML. 77 string summary_html = 9; 78 79 // The point in time when the test case started to execute. 80 google.protobuf.Timestamp start_time = 10; 81 82 // Duration of the test case execution in seconds. 83 google.protobuf.Duration duration = 11; 84 85 // Tags contains metadata for this test result. 86 // It might describe this particular execution or the test case. 87 repeated luci.resultdb.v1.StringPair tags = 12; 88 89 // If the failures of the test variant are exonerated. 90 // Note: the exoneration is at the test variant level, not result level. 91 bool exonerated = 13; 92 93 // The code sources tested. If the invocation which contained the test result 94 // specified that code sources directly, this is those sources. 95 // If the code sources were marked as are inherited from the including 96 // invocation, this is the resolved code sources (if they could be resolved). 97 // Unset otherwise. 98 luci.resultdb.v1.Sources sources = 20; 99 100 // Partition_time is used to partition the table. 101 // It is the time when exported invocation was created in Spanner. 102 // Note: it is NOT the time when the row is inserted into BigQuery table. 103 // https://cloud.google.com/bigquery/docs/creating-column-partitions#limitations 104 // mentions "The partitioning column must be a top-level field." 105 // So we keep this column here instead of adding the CreateTime to Invocation. 106 google.protobuf.Timestamp partition_time = 14; 107 108 // Metadata of the test case, 109 // e.g. the original test name and test location. 110 luci.resultdb.v1.TestMetadata test_metadata = 16; 111 112 // Information about failed tests. 113 // e.g. the assertion failure message. 114 luci.resultdb.v1.FailureReason failure_reason = 18; 115 116 // Arbitrary JSON object that contains structured, domain-specific properties 117 // of the test result. 118 google.protobuf.Struct properties = 19 [(bqschema.options).bq_type = "JSON"]; 119 120 // Reasoning behind a test skip, in machine-readable form. 121 // MUST not be set unless status is SKIP. 122 // See SkipReason in v1/test_result.proto for possible values. 123 string skip_reason = 21; 124 }