go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/proto/bq/failure_attribute_row.proto (about) 1 // Copyright 2023 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.analysis.bq; 18 19 import "google/protobuf/timestamp.proto"; 20 21 option go_package = "go.chromium.org/luci/analysis/proto/bq;bqpb"; 22 23 // FailureAttributeRow represents a row in a BigQuery table, 24 // `failure_attrbiutes`, that records the additional attributes of a test 25 // failure. 26 // Next ID: 7. 27 message FailureAttributeRow { 28 // The LUCI project that the test failure belongs to. 29 string project = 1; 30 31 // The test results system from which the test originated. 32 // 33 // Currently, the only valid value is "resultdb". 34 string test_result_system = 2; 35 36 // The invocation from which this test result was ingested. This is 37 // the top-level invocation that was ingested, an "invocation" being 38 // a container of test results as identified by the source test result 39 // system. 40 // 41 // For ResultDB, LUCI Analysis ingests invocations corresponding to 42 // buildbucket builds. 43 // 44 // All test results ingested from the same invocation (i.e. with the 45 // same ingested_invocation_id) will have the same partition time. 46 string ingested_invocation_id = 3; 47 48 // The identity of the test result in the test results system. Together 49 // with the test results sytstem, this uniquely identifies the test result 50 // that was clustered. 51 // 52 // For test results in ResultDB, the format is: 53 // "invocations/{INVOCATION_ID}/tests/{URL_ESCAPED_TEST_ID}/results/{RESULT_ID}" 54 // Where INVOCATION_ID, URL_ESCAPED_TEST_ID and RESULT_ID are values 55 // defined in ResultDB. 56 // 57 // Note that the test result ID is split over two fields (test_result_system, 58 // test_result_id), rather than as one field with a record type, so that 59 // BigQuery clustering can be defined over the ID (not possible if a 60 // record type was used). 61 string test_result_id = 4; 62 63 // The test result partition time identifies the beginning of the test 64 // result retention period, and corresponds approximately to the time 65 // the test result was produced. 66 // 67 // It is guaranteed that all test results from one presubmit run 68 // will have the same partition time. It is also guaranteed that all 69 // test results from one build will have the same partition time (in 70 // case of builds associated with presubmit runs this was implied by 71 // previous guarantee, but for testing that occurs outside presubmit 72 // this is an added guarantee). 73 google.protobuf.Timestamp partition_time = 5; 74 75 // The number of test runs that filtered out the test due to this failure. 76 // 77 // Conceptually, a test scheduler may decide to filter out certain tests when 78 // it sees the tests failed in some places. This field records the number of 79 // test runs that filerterd out the test due to this failure. The exact 80 // attribution rule (to determine which failures triggered the test filtering) 81 // is up to the implementation. 82 // 83 // For now, this field records the number of skipped runs caused by 84 // go/cros-test-filtering, and the attribution rule is defined in 85 // go/attribute-test-filtering-events-to-failures. 86 int64 attributed_filtered_run_count = 6; 87 }