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  }