blob: ef3a76527567f05ba95e7d6d8b8679a79a4d6be6 [file] [log] [blame]
// Copyright 2019 The LUCI Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.1
// protoc v3.21.7
// source: go.chromium.org/luci/resultdb/proto/v1/test_result.proto
package resultpb
import (
_ "google.golang.org/genproto/googleapis/api/annotations"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
durationpb "google.golang.org/protobuf/types/known/durationpb"
structpb "google.golang.org/protobuf/types/known/structpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Machine-readable status of a test result.
type TestStatus int32
const (
// Status was not specified.
// Not to be used in actual test results; serves as a default value for an
// unset field.
TestStatus_STATUS_UNSPECIFIED TestStatus = 0
// The test case has passed.
TestStatus_PASS TestStatus = 1
// The test case has failed.
// Suggests that the code under test is incorrect, but it is also possible
// that the test is incorrect or it is a flake.
TestStatus_FAIL TestStatus = 2
// The test case has crashed during execution.
// The outcome is inconclusive: the code under test might or might not be
// correct, but the test+code is incorrect.
TestStatus_CRASH TestStatus = 3
// The test case has started, but was aborted before finishing.
// A common reason: timeout.
TestStatus_ABORT TestStatus = 4
// The test case did not execute.
// Examples:
// - The execution of the collection of test cases, such as a test
// binary, was aborted prematurely and execution of some test cases was
// skipped.
// - The test harness configuration specified that the test case MUST be
// skipped.
TestStatus_SKIP TestStatus = 5
)
// Enum value maps for TestStatus.
var (
TestStatus_name = map[int32]string{
0: "STATUS_UNSPECIFIED",
1: "PASS",
2: "FAIL",
3: "CRASH",
4: "ABORT",
5: "SKIP",
}
TestStatus_value = map[string]int32{
"STATUS_UNSPECIFIED": 0,
"PASS": 1,
"FAIL": 2,
"CRASH": 3,
"ABORT": 4,
"SKIP": 5,
}
)
func (x TestStatus) Enum() *TestStatus {
p := new(TestStatus)
*p = x
return p
}
func (x TestStatus) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TestStatus) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[0].Descriptor()
}
func (TestStatus) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[0]
}
func (x TestStatus) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TestStatus.Descriptor instead.
func (TestStatus) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{0}
}
// Reason why a test variant was exonerated.
type ExonerationReason int32
const (
// Reason was not specified.
// Not to be used in actual test exonerations; serves as a default value for
// an unset field.
ExonerationReason_EXONERATION_REASON_UNSPECIFIED ExonerationReason = 0
// Similar unexpected results were observed on a mainline branch
// (i.e. against a build without unsubmitted changes applied).
// (For avoidance of doubt, this includes both flakily and
// deterministically occurring unexpected results.)
// Applies to unexpected results in presubmit/CQ runs only.
ExonerationReason_OCCURS_ON_MAINLINE ExonerationReason = 1
// Similar unexpected results were observed in presubmit run(s) for other,
// unrelated CL(s). (This is suggestive of the issue being present
// on mainline but is not confirmed as there are possible confounding
// factors, like how tests are run on CLs vs how tests are run on
// mainline branches.)
// Applies to unexpected results in presubmit/CQ runs only.
ExonerationReason_OCCURS_ON_OTHER_CLS ExonerationReason = 2
// The tests are not critical to the test subject (e.g. CL) passing.
// This could be because more data is being collected to determine if
// the tests are stable enough to be made critical (as is often the
// case for experimental test suites).
// If information exists indicating the tests are producing unexpected
// results, and the tests are not critical for that reason,
// prefer more specific reasons OCCURS_ON_MAINLINE or OCCURS_ON_OTHER_CLS.
ExonerationReason_NOT_CRITICAL ExonerationReason = 3
// The test result was an unexpected pass. (Note that such an exoneration is
// not automatically created for unexpected passes, unless the option is
// specified to ResultSink or the project manually creates one).
ExonerationReason_UNEXPECTED_PASS ExonerationReason = 4
)
// Enum value maps for ExonerationReason.
var (
ExonerationReason_name = map[int32]string{
0: "EXONERATION_REASON_UNSPECIFIED",
1: "OCCURS_ON_MAINLINE",
2: "OCCURS_ON_OTHER_CLS",
3: "NOT_CRITICAL",
4: "UNEXPECTED_PASS",
}
ExonerationReason_value = map[string]int32{
"EXONERATION_REASON_UNSPECIFIED": 0,
"OCCURS_ON_MAINLINE": 1,
"OCCURS_ON_OTHER_CLS": 2,
"NOT_CRITICAL": 3,
"UNEXPECTED_PASS": 4,
}
)
func (x ExonerationReason) Enum() *ExonerationReason {
p := new(ExonerationReason)
*p = x
return p
}
func (x ExonerationReason) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ExonerationReason) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[1].Descriptor()
}
func (ExonerationReason) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[1]
}
func (x ExonerationReason) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ExonerationReason.Descriptor instead.
func (ExonerationReason) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{1}
}
// A result of a functional test case.
// Often a single test case is executed multiple times and has multiple results,
// a single test suite has multiple test cases,
// and the same test suite can be executed in different variants
// (OS, GPU, compile flags, etc).
//
// This message does not specify the test id.
// It should be available in the message that embeds this message.
//
// Next id: 17.
type TestResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Can be used to refer to this test result, e.g. in ResultDB.GetTestResult
// RPC.
// Format:
// "invocations/{INVOCATION_ID}/tests/{URL_ESCAPED_TEST_ID}/results/{RESULT_ID}".
// where URL_ESCAPED_TEST_ID is test_id escaped with
// https://golang.org/pkg/net/url/#PathEscape See also https://aip.dev/122.
//
// Output only.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Test id, a unique identifier of the test in a LUCI project.
// Regex: ^[[::print::]]{1,512}$
//
// If two tests have a common test id prefix that ends with a
// non-alphanumeric character, they considered a part of a group. Examples:
// - "a/b/c"
// - "a/b/d"
// - "a/b/e:x"
// - "a/b/e:y"
// - "a/f"
// This defines the following groups:
// - All items belong to one group because of the common prefix "a/"
// - Within that group, the first 4 form a sub-group because of the common
// prefix "a/b/"
// - Within that group, "a/b/e:x" and "a/b/e:y" form a sub-group because of
// the common prefix "a/b/e:".
//
// This can be used in UI.
// LUCI does not interpret test ids in any other way.
TestId string `protobuf:"bytes,2,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
// Identifies a test result in a given invocation and test id.
// Regex: ^[a-z0-9\-_.]{1,32}$
ResultId string `protobuf:"bytes,3,opt,name=result_id,json=resultId,proto3" json:"result_id,omitempty"`
// Description of one specific way of running the test,
// e.g. a specific bucket, builder and a test suite.
Variant *Variant `protobuf:"bytes,4,opt,name=variant,proto3" json:"variant,omitempty"`
// Whether the result of test case execution is expected.
// In a typical Chromium CL, 99%+ of test results are expected.
// Users are typically interested only in the unexpected results.
//
// An unexpected result != test case failure. There are test cases that are
// expected to fail/skip/crash. The test harness compares the actual status
// with the expected one(s) and this field is the result of the comparison.
Expected bool `protobuf:"varint,5,opt,name=expected,proto3" json:"expected,omitempty"`
// Machine-readable status of the test case.
// MUST NOT be STATUS_UNSPECIFIED.
Status TestStatus `protobuf:"varint,6,opt,name=status,proto3,enum=luci.resultdb.v1.TestStatus" json:"status,omitempty"`
// Human-readable explanation of the result, in HTML.
// MUST be sanitized before rendering in the browser.
//
// The size of the summary must be equal to or smaller than 4096 bytes in
// UTF-8.
//
// Supports artifact embedding using custom tags:
// - <text-artifact> renders contents of an artifact as text.
// Usage:
// - To embed result level artifact: <text-artifact
// artifact-id="<artifact_id>">
// - To embed invocation level artifact: <text-artifact
// artifact-id="<artifact_id>" inv-level>
SummaryHtml string `protobuf:"bytes,7,opt,name=summary_html,json=summaryHtml,proto3" json:"summary_html,omitempty"`
// The point in time when the test case started to execute.
StartTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// Duration of the test case execution.
// MUST be equal to or greater than 0.
Duration *durationpb.Duration `protobuf:"bytes,9,opt,name=duration,proto3" json:"duration,omitempty"`
// Metadata for this test result.
// It might describe this particular execution or the test case.
// A key can be repeated.
Tags []*StringPair `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags,omitempty"`
// Hash of the variant.
// hex(sha256(sorted(”.join('%s:%s\n' for k, v in variant.items())))).
//
// Output only.
VariantHash string `protobuf:"bytes,12,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
// Information about the test at the time of its execution.
TestMetadata *TestMetadata `protobuf:"bytes,13,opt,name=test_metadata,json=testMetadata,proto3" json:"test_metadata,omitempty"`
// Information about the test failure. Only present if the test failed.
FailureReason *FailureReason `protobuf:"bytes,14,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"`
// Arbitrary JSON object that contains structured, domain-specific properties
// of the test result.
//
// The serialized size must be <= 4096 bytes.
Properties *structpb.Struct `protobuf:"bytes,15,opt,name=properties,proto3" json:"properties,omitempty"`
// Whether the test result has been masked so that it includes only metadata.
// The metadata fields for a TestResult are:
// * name
// * test_id
// * result_id
// * expected
// * status
// * start_time
// * duration
// * variant_hash
// * failure_reason.primary_error_message (truncated to 140 characters)
//
// Output only.
IsMasked bool `protobuf:"varint,16,opt,name=is_masked,json=isMasked,proto3" json:"is_masked,omitempty"`
}
func (x *TestResult) Reset() {
*x = TestResult{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TestResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TestResult) ProtoMessage() {}
func (x *TestResult) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TestResult.ProtoReflect.Descriptor instead.
func (*TestResult) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{0}
}
func (x *TestResult) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *TestResult) GetTestId() string {
if x != nil {
return x.TestId
}
return ""
}
func (x *TestResult) GetResultId() string {
if x != nil {
return x.ResultId
}
return ""
}
func (x *TestResult) GetVariant() *Variant {
if x != nil {
return x.Variant
}
return nil
}
func (x *TestResult) GetExpected() bool {
if x != nil {
return x.Expected
}
return false
}
func (x *TestResult) GetStatus() TestStatus {
if x != nil {
return x.Status
}
return TestStatus_STATUS_UNSPECIFIED
}
func (x *TestResult) GetSummaryHtml() string {
if x != nil {
return x.SummaryHtml
}
return ""
}
func (x *TestResult) GetStartTime() *timestamppb.Timestamp {
if x != nil {
return x.StartTime
}
return nil
}
func (x *TestResult) GetDuration() *durationpb.Duration {
if x != nil {
return x.Duration
}
return nil
}
func (x *TestResult) GetTags() []*StringPair {
if x != nil {
return x.Tags
}
return nil
}
func (x *TestResult) GetVariantHash() string {
if x != nil {
return x.VariantHash
}
return ""
}
func (x *TestResult) GetTestMetadata() *TestMetadata {
if x != nil {
return x.TestMetadata
}
return nil
}
func (x *TestResult) GetFailureReason() *FailureReason {
if x != nil {
return x.FailureReason
}
return nil
}
func (x *TestResult) GetProperties() *structpb.Struct {
if x != nil {
return x.Properties
}
return nil
}
func (x *TestResult) GetIsMasked() bool {
if x != nil {
return x.IsMasked
}
return false
}
// Indicates the test subject (e.g. a CL) is absolved from blame
// for an unexpected result of a test variant.
// For example, the test variant fails both with and without CL, so it is not
// CL's fault.
type TestExoneration struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Can be used to refer to this test exoneration, e.g. in
// ResultDB.GetTestExoneration RPC.
// Format:
// invocations/{INVOCATION_ID}/tests/{URL_ESCAPED_TEST_ID}/exonerations/{EXONERATION_ID}.
// URL_ESCAPED_TEST_ID is test_variant.test_id escaped with
// https://golang.org/pkg/net/url/#PathEscape See also https://aip.dev/122.
//
// Output only.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Test identifier, see TestResult.test_id.
TestId string `protobuf:"bytes,2,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
// Description of the variant of the test, see Variant type.
// Unlike TestResult.extra_variant_pairs, this one must be a full definition
// of the variant, i.e. it is not combined with Invocation.base_test_variant.
Variant *Variant `protobuf:"bytes,3,opt,name=variant,proto3" json:"variant,omitempty"`
// Identifies an exoneration in a given invocation and test id.
// It is server-generated.
ExonerationId string `protobuf:"bytes,4,opt,name=exoneration_id,json=exonerationId,proto3" json:"exoneration_id,omitempty"`
// Reasoning behind the exoneration, in HTML.
// MUST be sanitized before rendering in the browser.
ExplanationHtml string `protobuf:"bytes,5,opt,name=explanation_html,json=explanationHtml,proto3" json:"explanation_html,omitempty"`
// Hash of the variant.
// hex(sha256(sorted(”.join('%s:%s\n' for k, v in variant.items())))).
VariantHash string `protobuf:"bytes,6,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
// Reasoning behind the exoneration, in machine-readable form.
// Used to assist downstream analyses, such as automatic bug-filing.
// This allow detection of e.g. critical tests failing in presubmit,
// even if they are being exonerated because they fail on other CLs.
Reason ExonerationReason `protobuf:"varint,7,opt,name=reason,proto3,enum=luci.resultdb.v1.ExonerationReason" json:"reason,omitempty"`
// Whether the test exoneration has been masked so that it includes only
// metadata. The metadata fields for a TestExoneration are:
// * name
// * test_id
// * exoneration_id
// * variant_hash
// * explanation_html
// * reason
//
// Output only.
IsMasked bool `protobuf:"varint,8,opt,name=is_masked,json=isMasked,proto3" json:"is_masked,omitempty"`
}
func (x *TestExoneration) Reset() {
*x = TestExoneration{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TestExoneration) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TestExoneration) ProtoMessage() {}
func (x *TestExoneration) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TestExoneration.ProtoReflect.Descriptor instead.
func (*TestExoneration) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{1}
}
func (x *TestExoneration) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *TestExoneration) GetTestId() string {
if x != nil {
return x.TestId
}
return ""
}
func (x *TestExoneration) GetVariant() *Variant {
if x != nil {
return x.Variant
}
return nil
}
func (x *TestExoneration) GetExonerationId() string {
if x != nil {
return x.ExonerationId
}
return ""
}
func (x *TestExoneration) GetExplanationHtml() string {
if x != nil {
return x.ExplanationHtml
}
return ""
}
func (x *TestExoneration) GetVariantHash() string {
if x != nil {
return x.VariantHash
}
return ""
}
func (x *TestExoneration) GetReason() ExonerationReason {
if x != nil {
return x.Reason
}
return ExonerationReason_EXONERATION_REASON_UNSPECIFIED
}
func (x *TestExoneration) GetIsMasked() bool {
if x != nil {
return x.IsMasked
}
return false
}
var File_go_chromium_org_luci_resultdb_proto_v1_test_result_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDesc = []byte{
0x0a, 0x38, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x6c, 0x75, 0x63, 0x69,
0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62,
0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73,
0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75,
0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f,
0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67,
0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c,
0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65,
0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf5, 0x05, 0x0a, 0x0a, 0x54,
0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x06, 0x74, 0x65, 0x73,
0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x05, 0xe0, 0x41, 0x02, 0x52, 0x08,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69,
0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69,
0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72,
0x69, 0x61, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61,
0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05,
0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63,
0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26,
0x0a, 0x0c, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x07,
0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x73, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x79, 0x48, 0x74, 0x6d, 0x6c, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61,
0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x42, 0x03,
0xe0, 0x41, 0x05, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x0c, 0x76, 0x61, 0x72,
0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42,
0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
0x48, 0x61, 0x73, 0x68, 0x12, 0x43, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x75,
0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54,
0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x65, 0x73,
0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0e, 0x66, 0x61, 0x69,
0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
0x62, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73,
0x6f, 0x6e, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18,
0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a,
0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73,
0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0,
0x41, 0x03, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x0b,
0x10, 0x0c, 0x22, 0xe6, 0x02, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x76,
0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c,
0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
0x12, 0x2d, 0x0a, 0x0e, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05,
0x52, 0x0d, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
0x2e, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68,
0x74, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f,
0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x74, 0x6d, 0x6c, 0x12,
0x26, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69,
0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x6f, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41,
0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f,
0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41,
0x03, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x2a, 0x58, 0x0a, 0x0a, 0x54,
0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41,
0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46,
0x41, 0x49, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x52, 0x41, 0x53, 0x48, 0x10, 0x03,
0x12, 0x09, 0x0a, 0x05, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x53,
0x4b, 0x49, 0x50, 0x10, 0x05, 0x2a, 0x8f, 0x01, 0x0a, 0x11, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x45,
0x58, 0x4f, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f,
0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
0x16, 0x0a, 0x12, 0x4f, 0x43, 0x43, 0x55, 0x52, 0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x49,
0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x43, 0x43, 0x55, 0x52,
0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x53, 0x10, 0x02,
0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c,
0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44,
0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x04, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76,
0x31, 0x3b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescData = file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDesc
)
func file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescOnce.Do(func() {
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescData)
})
return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescData
}
var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_goTypes = []interface{}{
(TestStatus)(0), // 0: luci.resultdb.v1.TestStatus
(ExonerationReason)(0), // 1: luci.resultdb.v1.ExonerationReason
(*TestResult)(nil), // 2: luci.resultdb.v1.TestResult
(*TestExoneration)(nil), // 3: luci.resultdb.v1.TestExoneration
(*Variant)(nil), // 4: luci.resultdb.v1.Variant
(*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
(*durationpb.Duration)(nil), // 6: google.protobuf.Duration
(*StringPair)(nil), // 7: luci.resultdb.v1.StringPair
(*TestMetadata)(nil), // 8: luci.resultdb.v1.TestMetadata
(*FailureReason)(nil), // 9: luci.resultdb.v1.FailureReason
(*structpb.Struct)(nil), // 10: google.protobuf.Struct
}
var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_depIdxs = []int32{
4, // 0: luci.resultdb.v1.TestResult.variant:type_name -> luci.resultdb.v1.Variant
0, // 1: luci.resultdb.v1.TestResult.status:type_name -> luci.resultdb.v1.TestStatus
5, // 2: luci.resultdb.v1.TestResult.start_time:type_name -> google.protobuf.Timestamp
6, // 3: luci.resultdb.v1.TestResult.duration:type_name -> google.protobuf.Duration
7, // 4: luci.resultdb.v1.TestResult.tags:type_name -> luci.resultdb.v1.StringPair
8, // 5: luci.resultdb.v1.TestResult.test_metadata:type_name -> luci.resultdb.v1.TestMetadata
9, // 6: luci.resultdb.v1.TestResult.failure_reason:type_name -> luci.resultdb.v1.FailureReason
10, // 7: luci.resultdb.v1.TestResult.properties:type_name -> google.protobuf.Struct
4, // 8: luci.resultdb.v1.TestExoneration.variant:type_name -> luci.resultdb.v1.Variant
1, // 9: luci.resultdb.v1.TestExoneration.reason:type_name -> luci.resultdb.v1.ExonerationReason
10, // [10:10] is the sub-list for method output_type
10, // [10:10] is the sub-list for method input_type
10, // [10:10] is the sub-list for extension type_name
10, // [10:10] is the sub-list for extension extendee
0, // [0:10] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_init() }
func file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_init() {
if File_go_chromium_org_luci_resultdb_proto_v1_test_result_proto != nil {
return
}
file_go_chromium_org_luci_resultdb_proto_v1_common_proto_init()
file_go_chromium_org_luci_resultdb_proto_v1_test_metadata_proto_init()
file_go_chromium_org_luci_resultdb_proto_v1_failure_reason_proto_init()
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestExoneration); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDesc,
NumEnums: 2,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_depIdxs,
EnumInfos: file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes,
MessageInfos: file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_resultdb_proto_v1_test_result_proto = out.File
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDesc = nil
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_goTypes = nil
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_depIdxs = nil
}