go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/internal/clustering/proto/failure.pb.go (about)

     1  // Copyright 2022 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  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.31.0
    18  // 	protoc        v3.21.7
    19  // source: go.chromium.org/luci/analysis/internal/clustering/proto/failure.proto
    20  
    21  package clusteringpb
    22  
    23  import (
    24  	v1 "go.chromium.org/luci/analysis/proto/v1"
    25  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    26  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    27  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    28  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    29  	reflect "reflect"
    30  	sync "sync"
    31  )
    32  
    33  const (
    34  	// Verify that this generated code is sufficiently up-to-date.
    35  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    36  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    37  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    38  )
    39  
    40  // Chunk is a set of unexpected test failures which are processed together
    41  // for efficiency.
    42  // Serialised and stored in GCS.
    43  type Chunk struct {
    44  	state         protoimpl.MessageState
    45  	sizeCache     protoimpl.SizeCache
    46  	unknownFields protoimpl.UnknownFields
    47  
    48  	Failures []*Failure `protobuf:"bytes,1,rep,name=failures,proto3" json:"failures,omitempty"`
    49  }
    50  
    51  func (x *Chunk) Reset() {
    52  	*x = Chunk{}
    53  	if protoimpl.UnsafeEnabled {
    54  		mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[0]
    55  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    56  		ms.StoreMessageInfo(mi)
    57  	}
    58  }
    59  
    60  func (x *Chunk) String() string {
    61  	return protoimpl.X.MessageStringOf(x)
    62  }
    63  
    64  func (*Chunk) ProtoMessage() {}
    65  
    66  func (x *Chunk) ProtoReflect() protoreflect.Message {
    67  	mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[0]
    68  	if protoimpl.UnsafeEnabled && x != nil {
    69  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    70  		if ms.LoadMessageInfo() == nil {
    71  			ms.StoreMessageInfo(mi)
    72  		}
    73  		return ms
    74  	}
    75  	return mi.MessageOf(x)
    76  }
    77  
    78  // Deprecated: Use Chunk.ProtoReflect.Descriptor instead.
    79  func (*Chunk) Descriptor() ([]byte, []int) {
    80  	return file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescGZIP(), []int{0}
    81  }
    82  
    83  func (x *Chunk) GetFailures() []*Failure {
    84  	if x != nil {
    85  		return x.Failures
    86  	}
    87  	return nil
    88  }
    89  
    90  // LUCI Analysis internal representation of an unexpected test failure.
    91  type Failure struct {
    92  	state         protoimpl.MessageState
    93  	sizeCache     protoimpl.SizeCache
    94  	unknownFields protoimpl.UnknownFields
    95  
    96  	// The identity of the test result, as defined by the source system.
    97  	TestResultId *v1.TestResultId `protobuf:"bytes,1,opt,name=test_result_id,json=testResultId,proto3" json:"test_result_id,omitempty"`
    98  	// Timestamp representing the start of the data retention period. This acts
    99  	// as the partitioning key in time/date-partitioned tables.
   100  	PartitionTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=partition_time,json=partitionTime,proto3" json:"partition_time,omitempty"`
   101  	// The one-based index of this failure within the chunk. Assigned by
   102  	// LUCI Analysis ingestion.
   103  	ChunkIndex int64 `protobuf:"varint,3,opt,name=chunk_index,json=chunkIndex,proto3" json:"chunk_index,omitempty"`
   104  	// Security realm of the test result.
   105  	// For test results from ResultDB, this must be set. The format is
   106  	// "{LUCI_PROJECT}:{REALM_SUFFIX}", for example "chromium:ci".
   107  	Realm string `protobuf:"bytes,4,opt,name=realm,proto3" json:"realm,omitempty"`
   108  	// The unique identifier of the test.
   109  	// For test results from ResultDB, see luci.resultdb.v1.TestResult.test_id.
   110  	TestId string `protobuf:"bytes,5,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
   111  	// key:value pairs to specify the way of running a particular test.
   112  	// e.g. a specific bucket, builder and a test suite.
   113  	Variant *v1.Variant `protobuf:"bytes,6,opt,name=variant,proto3" json:"variant,omitempty"`
   114  	// Metadata key value pairs for this test result.
   115  	// It might describe this particular execution or the test case.
   116  	// A key can be repeated.
   117  	Tags []*v1.StringPair `protobuf:"bytes,25,rep,name=tags,proto3" json:"tags,omitempty"`
   118  	// Hash of the variant.
   119  	// hex(sha256(”.join(sorted('%s:%s\n' for k, v in variant.items())))).
   120  	VariantHash string `protobuf:"bytes,7,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
   121  	// A failure reason describing why the test failed.
   122  	FailureReason *v1.FailureReason `protobuf:"bytes,8,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"`
   123  	// The bug tracking component corresponding to this test case, as identified
   124  	// by the test results system. If no information is available, this is
   125  	// unset.
   126  	BugTrackingComponent *v1.BugTrackingComponent `protobuf:"bytes,9,opt,name=bug_tracking_component,json=bugTrackingComponent,proto3" json:"bug_tracking_component,omitempty"`
   127  	// The point in time when the test case started to execute.
   128  	StartTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
   129  	// The amount of time the test case took to execute.
   130  	Duration *durationpb.Duration `protobuf:"bytes,11,opt,name=duration,proto3" json:"duration,omitempty"`
   131  	// The exonerations applied to the test verdict.
   132  	// An empty list indicates the test verdict this test result was a part of
   133  	// was not exonerated.
   134  	Exonerations []*TestExoneration `protobuf:"bytes,26,rep,name=exonerations,proto3" json:"exonerations,omitempty"`
   135  	// The presubmit run the test result was a part of (if any).
   136  	PresubmitRun *PresubmitRun `protobuf:"bytes,27,opt,name=presubmit_run,json=presubmitRun,proto3" json:"presubmit_run,omitempty"`
   137  	// The status of the build that contained this test result. Can be used
   138  	// to filter incomplete results (e.g. where build was cancelled or had
   139  	// an infra failure). Can also be used to filter builds with incomplete
   140  	// exonerations (e.g. build succeeded but some tests not exonerated).
   141  	// This is the build corresponding to ingested_invocation_id.
   142  	BuildStatus v1.BuildStatus `protobuf:"varint,28,opt,name=build_status,json=buildStatus,proto3,enum=luci.analysis.v1.BuildStatus" json:"build_status,omitempty"`
   143  	// Whether the build was critical to a presubmit run succeeding.
   144  	// If the build was not part of a presubmit run, this is unset.
   145  	BuildCritical *bool `protobuf:"varint,29,opt,name=build_critical,json=buildCritical,proto3,oneof" json:"build_critical,omitempty"`
   146  	// The unsubmitted changelists that were tested (if any).
   147  	// Changelists are sorted in ascending (host, change, patchset) order.
   148  	// Up to 10 changelists are captured.
   149  	Changelists []*v1.Changelist `protobuf:"bytes,23,rep,name=changelists,proto3" json:"changelists,omitempty"`
   150  	// The invocation from which this test result was ingested. This is
   151  	// the top-level invocation that was ingested, an "invocation" being
   152  	// a container of test results as identified by the source test result
   153  	// system.
   154  	//
   155  	// For ResultDB, LUCI Analysis ingests invocations corresponding to
   156  	// buildbucket builds.
   157  	//
   158  	// All test results ingested from the same invocation (i.e. with the
   159  	// same ingested_invocation_id) will have the same partition time.
   160  	IngestedInvocationId string `protobuf:"bytes,14,opt,name=ingested_invocation_id,json=ingestedInvocationId,proto3" json:"ingested_invocation_id,omitempty"`
   161  	// The zero-based index for this test result, in the sequence of the
   162  	// ingested invocation's results for this test variant. Within the sequence,
   163  	// test results are ordered by start_time and then by test result ID.
   164  	// The first test result is 0, the last test result is
   165  	// ingested_invocation_result_count - 1.
   166  	IngestedInvocationResultIndex int64 `protobuf:"varint,15,opt,name=ingested_invocation_result_index,json=ingestedInvocationResultIndex,proto3" json:"ingested_invocation_result_index,omitempty"`
   167  	// The number of test results having this test variant in the ingested
   168  	// invocation.
   169  	IngestedInvocationResultCount int64 `protobuf:"varint,16,opt,name=ingested_invocation_result_count,json=ingestedInvocationResultCount,proto3" json:"ingested_invocation_result_count,omitempty"`
   170  	// Is the ingested invocation blocked by this test variant? This is
   171  	// only true if all (non-skipped) test results for this test variant
   172  	// (in the ingested invocation) are unexpected failures.
   173  	//
   174  	// Exoneration does not factor into this value; check exonerations
   175  	// to see if the impact of this ingested invocation being blocked was
   176  	// mitigated by exoneration.
   177  	IsIngestedInvocationBlocked bool `protobuf:"varint,17,opt,name=is_ingested_invocation_blocked,json=isIngestedInvocationBlocked,proto3" json:"is_ingested_invocation_blocked,omitempty"`
   178  	// The identifier of the test run the test ran in. Test results in different
   179  	// test runs are generally considered independent as they should be unable
   180  	// to leak state to one another.
   181  	//
   182  	// In Chrome and Chrome OS, a test run logically corresponds to a swarming
   183  	// task that runs tests, but this ID is not necessarily the ID of that
   184  	// task, but rather any other ID that is unique per such task.
   185  	//
   186  	// If test result system is ResultDB, this is the ID of the ResultDB
   187  	// invocation the test result was immediately contained within, not including
   188  	// any "invocations/" prefix.
   189  	TestRunId string `protobuf:"bytes,18,opt,name=test_run_id,json=testRunId,proto3" json:"test_run_id,omitempty"`
   190  	// The zero-based index for this test result, in the sequence of results
   191  	// having this test variant and test run. Within the sequence, test
   192  	// results are ordered by start_time and then by test result ID.
   193  	// The first test result is 0, the last test result is
   194  	// test_run_result_count - 1.
   195  	TestRunResultIndex int64 `protobuf:"varint,19,opt,name=test_run_result_index,json=testRunResultIndex,proto3" json:"test_run_result_index,omitempty"`
   196  	// The number of test results having this test variant and test run.
   197  	TestRunResultCount int64 `protobuf:"varint,20,opt,name=test_run_result_count,json=testRunResultCount,proto3" json:"test_run_result_count,omitempty"`
   198  	// Is the test run blocked by this test variant? This is only true if all
   199  	// (non-skipped) test results for this test variant (in the test run)
   200  	// are unexpected failures.
   201  	//
   202  	// Exoneration does not factor into this value; check exonerations
   203  	// to see if the impact of this test run being blocked was
   204  	// mitigated by exoneration.
   205  	IsTestRunBlocked bool `protobuf:"varint,21,opt,name=is_test_run_blocked,json=isTestRunBlocked,proto3" json:"is_test_run_blocked,omitempty"`
   206  	// The code sources tested, if known.
   207  	Sources *v1.Sources `protobuf:"bytes,30,opt,name=sources,proto3" json:"sources,omitempty"`
   208  	// The gardener rotations the build is a part of. Corresponds to the
   209  	// `sheriff_rotations` field of the build input properties.
   210  	BuildGardenerRotations []string `protobuf:"bytes,31,rep,name=build_gardener_rotations,json=buildGardenerRotations,proto3" json:"build_gardener_rotations,omitempty"`
   211  	// Information about the test variant-branch the result is from.
   212  	TestVariantBranch *TestVariantBranch `protobuf:"bytes,32,opt,name=test_variant_branch,json=testVariantBranch,proto3" json:"test_variant_branch,omitempty"`
   213  }
   214  
   215  func (x *Failure) Reset() {
   216  	*x = Failure{}
   217  	if protoimpl.UnsafeEnabled {
   218  		mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[1]
   219  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   220  		ms.StoreMessageInfo(mi)
   221  	}
   222  }
   223  
   224  func (x *Failure) String() string {
   225  	return protoimpl.X.MessageStringOf(x)
   226  }
   227  
   228  func (*Failure) ProtoMessage() {}
   229  
   230  func (x *Failure) ProtoReflect() protoreflect.Message {
   231  	mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[1]
   232  	if protoimpl.UnsafeEnabled && x != nil {
   233  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   234  		if ms.LoadMessageInfo() == nil {
   235  			ms.StoreMessageInfo(mi)
   236  		}
   237  		return ms
   238  	}
   239  	return mi.MessageOf(x)
   240  }
   241  
   242  // Deprecated: Use Failure.ProtoReflect.Descriptor instead.
   243  func (*Failure) Descriptor() ([]byte, []int) {
   244  	return file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescGZIP(), []int{1}
   245  }
   246  
   247  func (x *Failure) GetTestResultId() *v1.TestResultId {
   248  	if x != nil {
   249  		return x.TestResultId
   250  	}
   251  	return nil
   252  }
   253  
   254  func (x *Failure) GetPartitionTime() *timestamppb.Timestamp {
   255  	if x != nil {
   256  		return x.PartitionTime
   257  	}
   258  	return nil
   259  }
   260  
   261  func (x *Failure) GetChunkIndex() int64 {
   262  	if x != nil {
   263  		return x.ChunkIndex
   264  	}
   265  	return 0
   266  }
   267  
   268  func (x *Failure) GetRealm() string {
   269  	if x != nil {
   270  		return x.Realm
   271  	}
   272  	return ""
   273  }
   274  
   275  func (x *Failure) GetTestId() string {
   276  	if x != nil {
   277  		return x.TestId
   278  	}
   279  	return ""
   280  }
   281  
   282  func (x *Failure) GetVariant() *v1.Variant {
   283  	if x != nil {
   284  		return x.Variant
   285  	}
   286  	return nil
   287  }
   288  
   289  func (x *Failure) GetTags() []*v1.StringPair {
   290  	if x != nil {
   291  		return x.Tags
   292  	}
   293  	return nil
   294  }
   295  
   296  func (x *Failure) GetVariantHash() string {
   297  	if x != nil {
   298  		return x.VariantHash
   299  	}
   300  	return ""
   301  }
   302  
   303  func (x *Failure) GetFailureReason() *v1.FailureReason {
   304  	if x != nil {
   305  		return x.FailureReason
   306  	}
   307  	return nil
   308  }
   309  
   310  func (x *Failure) GetBugTrackingComponent() *v1.BugTrackingComponent {
   311  	if x != nil {
   312  		return x.BugTrackingComponent
   313  	}
   314  	return nil
   315  }
   316  
   317  func (x *Failure) GetStartTime() *timestamppb.Timestamp {
   318  	if x != nil {
   319  		return x.StartTime
   320  	}
   321  	return nil
   322  }
   323  
   324  func (x *Failure) GetDuration() *durationpb.Duration {
   325  	if x != nil {
   326  		return x.Duration
   327  	}
   328  	return nil
   329  }
   330  
   331  func (x *Failure) GetExonerations() []*TestExoneration {
   332  	if x != nil {
   333  		return x.Exonerations
   334  	}
   335  	return nil
   336  }
   337  
   338  func (x *Failure) GetPresubmitRun() *PresubmitRun {
   339  	if x != nil {
   340  		return x.PresubmitRun
   341  	}
   342  	return nil
   343  }
   344  
   345  func (x *Failure) GetBuildStatus() v1.BuildStatus {
   346  	if x != nil {
   347  		return x.BuildStatus
   348  	}
   349  	return v1.BuildStatus(0)
   350  }
   351  
   352  func (x *Failure) GetBuildCritical() bool {
   353  	if x != nil && x.BuildCritical != nil {
   354  		return *x.BuildCritical
   355  	}
   356  	return false
   357  }
   358  
   359  func (x *Failure) GetChangelists() []*v1.Changelist {
   360  	if x != nil {
   361  		return x.Changelists
   362  	}
   363  	return nil
   364  }
   365  
   366  func (x *Failure) GetIngestedInvocationId() string {
   367  	if x != nil {
   368  		return x.IngestedInvocationId
   369  	}
   370  	return ""
   371  }
   372  
   373  func (x *Failure) GetIngestedInvocationResultIndex() int64 {
   374  	if x != nil {
   375  		return x.IngestedInvocationResultIndex
   376  	}
   377  	return 0
   378  }
   379  
   380  func (x *Failure) GetIngestedInvocationResultCount() int64 {
   381  	if x != nil {
   382  		return x.IngestedInvocationResultCount
   383  	}
   384  	return 0
   385  }
   386  
   387  func (x *Failure) GetIsIngestedInvocationBlocked() bool {
   388  	if x != nil {
   389  		return x.IsIngestedInvocationBlocked
   390  	}
   391  	return false
   392  }
   393  
   394  func (x *Failure) GetTestRunId() string {
   395  	if x != nil {
   396  		return x.TestRunId
   397  	}
   398  	return ""
   399  }
   400  
   401  func (x *Failure) GetTestRunResultIndex() int64 {
   402  	if x != nil {
   403  		return x.TestRunResultIndex
   404  	}
   405  	return 0
   406  }
   407  
   408  func (x *Failure) GetTestRunResultCount() int64 {
   409  	if x != nil {
   410  		return x.TestRunResultCount
   411  	}
   412  	return 0
   413  }
   414  
   415  func (x *Failure) GetIsTestRunBlocked() bool {
   416  	if x != nil {
   417  		return x.IsTestRunBlocked
   418  	}
   419  	return false
   420  }
   421  
   422  func (x *Failure) GetSources() *v1.Sources {
   423  	if x != nil {
   424  		return x.Sources
   425  	}
   426  	return nil
   427  }
   428  
   429  func (x *Failure) GetBuildGardenerRotations() []string {
   430  	if x != nil {
   431  		return x.BuildGardenerRotations
   432  	}
   433  	return nil
   434  }
   435  
   436  func (x *Failure) GetTestVariantBranch() *TestVariantBranch {
   437  	if x != nil {
   438  		return x.TestVariantBranch
   439  	}
   440  	return nil
   441  }
   442  
   443  // Statistics about the (test,variant,ref) the verdict is from.
   444  type TestVariantBranch struct {
   445  	state         protoimpl.MessageState
   446  	sizeCache     protoimpl.SizeCache
   447  	unknownFields protoimpl.UnknownFields
   448  
   449  	// The number of flaky verdicts in the preceding 24 hours. A verdict
   450  	// is considered flaky for this count if it has both expected and
   451  	// unexpected test results (excluding skips). Whether the verdict
   452  	// was exonerated is irrelevant.
   453  	FlakyVerdicts_24H int64 `protobuf:"varint,1,opt,name=flaky_verdicts_24h,json=flakyVerdicts24h,proto3" json:"flaky_verdicts_24h,omitempty"`
   454  	// The number of unexpected verdicts in the preceding 24 hours. A verdict
   455  	// is unexpected for this count if has only unexpected test results
   456  	// (excluding skips). Whether the verdict was exonerated is irrelevant.
   457  	UnexpectedVerdicts_24H int64 `protobuf:"varint,2,opt,name=unexpected_verdicts_24h,json=unexpectedVerdicts24h,proto3" json:"unexpected_verdicts_24h,omitempty"`
   458  	// The total number of verdicts in the preceding 24 hours, excluding
   459  	// verdicts with only skipped test results.
   460  	TotalVerdicts_24H int64 `protobuf:"varint,3,opt,name=total_verdicts_24h,json=totalVerdicts24h,proto3" json:"total_verdicts_24h,omitempty"`
   461  }
   462  
   463  func (x *TestVariantBranch) Reset() {
   464  	*x = TestVariantBranch{}
   465  	if protoimpl.UnsafeEnabled {
   466  		mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[2]
   467  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   468  		ms.StoreMessageInfo(mi)
   469  	}
   470  }
   471  
   472  func (x *TestVariantBranch) String() string {
   473  	return protoimpl.X.MessageStringOf(x)
   474  }
   475  
   476  func (*TestVariantBranch) ProtoMessage() {}
   477  
   478  func (x *TestVariantBranch) ProtoReflect() protoreflect.Message {
   479  	mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[2]
   480  	if protoimpl.UnsafeEnabled && x != nil {
   481  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   482  		if ms.LoadMessageInfo() == nil {
   483  			ms.StoreMessageInfo(mi)
   484  		}
   485  		return ms
   486  	}
   487  	return mi.MessageOf(x)
   488  }
   489  
   490  // Deprecated: Use TestVariantBranch.ProtoReflect.Descriptor instead.
   491  func (*TestVariantBranch) Descriptor() ([]byte, []int) {
   492  	return file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescGZIP(), []int{2}
   493  }
   494  
   495  func (x *TestVariantBranch) GetFlakyVerdicts_24H() int64 {
   496  	if x != nil {
   497  		return x.FlakyVerdicts_24H
   498  	}
   499  	return 0
   500  }
   501  
   502  func (x *TestVariantBranch) GetUnexpectedVerdicts_24H() int64 {
   503  	if x != nil {
   504  		return x.UnexpectedVerdicts_24H
   505  	}
   506  	return 0
   507  }
   508  
   509  func (x *TestVariantBranch) GetTotalVerdicts_24H() int64 {
   510  	if x != nil {
   511  		return x.TotalVerdicts_24H
   512  	}
   513  	return 0
   514  }
   515  
   516  // LUCI Analysis internal representation of a test exoneration.
   517  type TestExoneration struct {
   518  	state         protoimpl.MessageState
   519  	sizeCache     protoimpl.SizeCache
   520  	unknownFields protoimpl.UnknownFields
   521  
   522  	// The machine-readable reason for the exoneration.
   523  	Reason v1.ExonerationReason `protobuf:"varint,1,opt,name=reason,proto3,enum=luci.analysis.v1.ExonerationReason" json:"reason,omitempty"`
   524  }
   525  
   526  func (x *TestExoneration) Reset() {
   527  	*x = TestExoneration{}
   528  	if protoimpl.UnsafeEnabled {
   529  		mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[3]
   530  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   531  		ms.StoreMessageInfo(mi)
   532  	}
   533  }
   534  
   535  func (x *TestExoneration) String() string {
   536  	return protoimpl.X.MessageStringOf(x)
   537  }
   538  
   539  func (*TestExoneration) ProtoMessage() {}
   540  
   541  func (x *TestExoneration) ProtoReflect() protoreflect.Message {
   542  	mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[3]
   543  	if protoimpl.UnsafeEnabled && x != nil {
   544  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   545  		if ms.LoadMessageInfo() == nil {
   546  			ms.StoreMessageInfo(mi)
   547  		}
   548  		return ms
   549  	}
   550  	return mi.MessageOf(x)
   551  }
   552  
   553  // Deprecated: Use TestExoneration.ProtoReflect.Descriptor instead.
   554  func (*TestExoneration) Descriptor() ([]byte, []int) {
   555  	return file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescGZIP(), []int{3}
   556  }
   557  
   558  func (x *TestExoneration) GetReason() v1.ExonerationReason {
   559  	if x != nil {
   560  		return x.Reason
   561  	}
   562  	return v1.ExonerationReason(0)
   563  }
   564  
   565  // LUCI Analysis internal representation of a presubmit run (e.g. LUCI CV Run).
   566  type PresubmitRun struct {
   567  	state         protoimpl.MessageState
   568  	sizeCache     protoimpl.SizeCache
   569  	unknownFields protoimpl.UnknownFields
   570  
   571  	// Identity of the presubmit run that contains this test result.
   572  	// This should be unique per "CQ+1"/"CQ+2" attempt on gerrit.
   573  	//
   574  	// One presumbit run MAY have many ingested invocation IDs (e.g. for its
   575  	// various tryjobs), but every ingested invocation ID only ever has one
   576  	// presubmit run ID (if any).
   577  	//
   578  	// All test results for the same presubmit run will have one
   579  	// partition_time.
   580  	//
   581  	// If the test result was not collected as part of a presubmit run,
   582  	// this is unset.
   583  	PresubmitRunId *v1.PresubmitRunId `protobuf:"bytes,1,opt,name=presubmit_run_id,json=presubmitRunId,proto3" json:"presubmit_run_id,omitempty"`
   584  	// The owner of the presubmit run (if any).
   585  	// This is the owner of the CL on which CQ+1/CQ+2 was clicked
   586  	// (even in case of presubmit run with multiple CLs).
   587  	// There is scope for this field to become an email address if privacy
   588  	// approval is obtained, until then it is "automation" (for automation
   589  	// service accounts) and "user" otherwise.
   590  	Owner string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
   591  	// The mode of the presubmit run. E.g. DRY_RUN, FULL_RUN, QUICK_DRY_RUN.
   592  	Mode v1.PresubmitRunMode `protobuf:"varint,3,opt,name=mode,proto3,enum=luci.analysis.v1.PresubmitRunMode" json:"mode,omitempty"`
   593  	// The presubmit run's ending status. E.g. SUCCESS, FAILURE, CANCELED.
   594  	Status v1.PresubmitRunStatus `protobuf:"varint,4,opt,name=status,proto3,enum=luci.analysis.v1.PresubmitRunStatus" json:"status,omitempty"`
   595  }
   596  
   597  func (x *PresubmitRun) Reset() {
   598  	*x = PresubmitRun{}
   599  	if protoimpl.UnsafeEnabled {
   600  		mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[4]
   601  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   602  		ms.StoreMessageInfo(mi)
   603  	}
   604  }
   605  
   606  func (x *PresubmitRun) String() string {
   607  	return protoimpl.X.MessageStringOf(x)
   608  }
   609  
   610  func (*PresubmitRun) ProtoMessage() {}
   611  
   612  func (x *PresubmitRun) ProtoReflect() protoreflect.Message {
   613  	mi := &file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[4]
   614  	if protoimpl.UnsafeEnabled && x != nil {
   615  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   616  		if ms.LoadMessageInfo() == nil {
   617  			ms.StoreMessageInfo(mi)
   618  		}
   619  		return ms
   620  	}
   621  	return mi.MessageOf(x)
   622  }
   623  
   624  // Deprecated: Use PresubmitRun.ProtoReflect.Descriptor instead.
   625  func (*PresubmitRun) Descriptor() ([]byte, []int) {
   626  	return file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescGZIP(), []int{4}
   627  }
   628  
   629  func (x *PresubmitRun) GetPresubmitRunId() *v1.PresubmitRunId {
   630  	if x != nil {
   631  		return x.PresubmitRunId
   632  	}
   633  	return nil
   634  }
   635  
   636  func (x *PresubmitRun) GetOwner() string {
   637  	if x != nil {
   638  		return x.Owner
   639  	}
   640  	return ""
   641  }
   642  
   643  func (x *PresubmitRun) GetMode() v1.PresubmitRunMode {
   644  	if x != nil {
   645  		return x.Mode
   646  	}
   647  	return v1.PresubmitRunMode(0)
   648  }
   649  
   650  func (x *PresubmitRun) GetStatus() v1.PresubmitRunStatus {
   651  	if x != nil {
   652  		return x.Status
   653  	}
   654  	return v1.PresubmitRunStatus(0)
   655  }
   656  
   657  var File_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto protoreflect.FileDescriptor
   658  
   659  var file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDesc = []byte{
   660  	0x0a, 0x45, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
   661  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f,
   662  	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
   663  	0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
   664  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e,
   665  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e,
   666  	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67,
   667  	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65,
   668  	0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f,
   669  	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72,
   670  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x2e,
   671  	0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63,
   672  	0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
   673  	0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
   674  	0x1a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
   675  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f,
   676  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
   677  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
   678  	0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61,
   679  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x66,
   680  	0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
   681  	0x6f, 0x74, 0x6f, 0x22, 0x4f, 0x0a, 0x05, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x46, 0x0a, 0x08,
   682  	0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a,
   683  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69,
   684  	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69,
   685  	0x6e, 0x67, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c,
   686  	0x75, 0x72, 0x65, 0x73, 0x22, 0x96, 0x0d, 0x0a, 0x07, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
   687  	0x12, 0x44, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f,
   688  	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
   689  	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74,
   690  	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x49, 0x64, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65,
   691  	0x73, 0x75, 0x6c, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
   692  	0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
   693  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
   694  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74,
   695  	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x75,
   696  	0x6e, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
   697  	0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65,
   698  	0x61, 0x6c, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d,
   699  	0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
   700  	0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x61, 0x72,
   701  	0x69, 0x61, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63,
   702  	0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61,
   703  	0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x30,
   704  	0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c,
   705  	0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e,
   706  	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73,
   707  	0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68,
   708  	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48,
   709  	0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72,
   710  	0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75,
   711  	0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46,
   712  	0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0d, 0x66, 0x61,
   713  	0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x16, 0x62,
   714  	0x75, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70,
   715  	0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6c, 0x75,
   716  	0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42,
   717  	0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e,
   718  	0x65, 0x6e, 0x74, 0x52, 0x14, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67,
   719  	0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61,
   720  	0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
   721  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
   722  	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
   723  	0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
   724  	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
   725  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
   726  	0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x0c, 0x65,
   727  	0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28,
   728  	0x0b, 0x32, 0x32, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
   729  	0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74,
   730  	0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72,
   731  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
   732  	0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74,
   733  	0x5f, 0x72, 0x75, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x75, 0x63,
   734  	0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
   735  	0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50,
   736  	0x72, 0x65, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x0c, 0x70, 0x72, 0x65,
   737  	0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x75, 0x69,
   738  	0x6c, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32,
   739  	0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e,
   740  	0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b,
   741  	0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x62,
   742  	0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x1d, 0x20,
   743  	0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x72, 0x69, 0x74,
   744  	0x69, 0x63, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67,
   745  	0x65, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c,
   746  	0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e,
   747  	0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e,
   748  	0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x65, 0x73,
   749  	0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
   750  	0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65,
   751  	0x64, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x47, 0x0a,
   752  	0x20, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61,
   753  	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65,
   754  	0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65,
   755  	0x64, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c,
   756  	0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x47, 0x0a, 0x20, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74,
   757  	0x65, 0x64, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65,
   758  	0x73, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03,
   759  	0x52, 0x1d, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61,
   760  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
   761  	0x43, 0x0a, 0x1e, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x69,
   762  	0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65,
   763  	0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x69, 0x73, 0x49, 0x6e, 0x67, 0x65, 0x73,
   764  	0x74, 0x65, 0x64, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f,
   765  	0x63, 0x6b, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e,
   766  	0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x52,
   767  	0x75, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e,
   768  	0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x13, 0x20,
   769  	0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x75,
   770  	0x6c, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x65, 0x73, 0x74, 0x5f,
   771  	0x72, 0x75, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
   772  	0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x52,
   773  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x69, 0x73,
   774  	0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65,
   775  	0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x54, 0x65, 0x73, 0x74, 0x52,
   776  	0x75, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x6f, 0x75,
   777  	0x72, 0x63, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63,
   778  	0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f,
   779  	0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x38,
   780  	0x0a, 0x18, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x67, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x65, 0x72,
   781  	0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09,
   782  	0x52, 0x16, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x47, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x65, 0x72, 0x52,
   783  	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x64, 0x0a, 0x13, 0x74, 0x65, 0x73, 0x74,
   784  	0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18,
   785  	0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61,
   786  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63,
   787  	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61,
   788  	0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x11, 0x74, 0x65, 0x73,
   789  	0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x42, 0x11,
   790  	0x0a, 0x0f, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61,
   791  	0x6c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x18, 0x10, 0x19, 0x22, 0xa7, 0x01,
   792  	0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x42, 0x72, 0x61,
   793  	0x6e, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x5f, 0x76, 0x65, 0x72,
   794  	0x64, 0x69, 0x63, 0x74, 0x73, 0x5f, 0x32, 0x34, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
   795  	0x10, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x32, 0x34,
   796  	0x68, 0x12, 0x36, 0x0a, 0x17, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f,
   797  	0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x5f, 0x32, 0x34, 0x68, 0x18, 0x02, 0x20, 0x01,
   798  	0x28, 0x03, 0x52, 0x15, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, 0x65,
   799  	0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x32, 0x34, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74,
   800  	0x61, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x5f, 0x32, 0x34, 0x68, 0x18,
   801  	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x64,
   802  	0x69, 0x63, 0x74, 0x73, 0x32, 0x34, 0x68, 0x22, 0x4e, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x45,
   803  	0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x65,
   804  	0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63,
   805  	0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78,
   806  	0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52,
   807  	0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xe6, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x65, 0x73,
   808  	0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x73,
   809  	0x75, 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
   810  	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
   811  	0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52,
   812  	0x75, 0x6e, 0x49, 0x64, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52,
   813  	0x75, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20,
   814  	0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x6f,
   815  	0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
   816  	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73,
   817  	0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f,
   818  	0x64, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01,
   819  	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
   820  	0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52,
   821  	0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
   822  	0x42, 0x46, 0x5a, 0x44, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
   823  	0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
   824  	0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74,
   825  	0x65, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x63, 0x6c, 0x75, 0x73,
   826  	0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
   827  }
   828  
   829  var (
   830  	file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescOnce sync.Once
   831  	file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescData = file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDesc
   832  )
   833  
   834  func file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescGZIP() []byte {
   835  	file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescOnce.Do(func() {
   836  		file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescData)
   837  	})
   838  	return file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDescData
   839  }
   840  
   841  var file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
   842  var file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_goTypes = []interface{}{
   843  	(*Chunk)(nil),                   // 0: luci.analysis.internal.clustering.Chunk
   844  	(*Failure)(nil),                 // 1: luci.analysis.internal.clustering.Failure
   845  	(*TestVariantBranch)(nil),       // 2: luci.analysis.internal.clustering.TestVariantBranch
   846  	(*TestExoneration)(nil),         // 3: luci.analysis.internal.clustering.TestExoneration
   847  	(*PresubmitRun)(nil),            // 4: luci.analysis.internal.clustering.PresubmitRun
   848  	(*v1.TestResultId)(nil),         // 5: luci.analysis.v1.TestResultId
   849  	(*timestamppb.Timestamp)(nil),   // 6: google.protobuf.Timestamp
   850  	(*v1.Variant)(nil),              // 7: luci.analysis.v1.Variant
   851  	(*v1.StringPair)(nil),           // 8: luci.analysis.v1.StringPair
   852  	(*v1.FailureReason)(nil),        // 9: luci.analysis.v1.FailureReason
   853  	(*v1.BugTrackingComponent)(nil), // 10: luci.analysis.v1.BugTrackingComponent
   854  	(*durationpb.Duration)(nil),     // 11: google.protobuf.Duration
   855  	(v1.BuildStatus)(0),             // 12: luci.analysis.v1.BuildStatus
   856  	(*v1.Changelist)(nil),           // 13: luci.analysis.v1.Changelist
   857  	(*v1.Sources)(nil),              // 14: luci.analysis.v1.Sources
   858  	(v1.ExonerationReason)(0),       // 15: luci.analysis.v1.ExonerationReason
   859  	(*v1.PresubmitRunId)(nil),       // 16: luci.analysis.v1.PresubmitRunId
   860  	(v1.PresubmitRunMode)(0),        // 17: luci.analysis.v1.PresubmitRunMode
   861  	(v1.PresubmitRunStatus)(0),      // 18: luci.analysis.v1.PresubmitRunStatus
   862  }
   863  var file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_depIdxs = []int32{
   864  	1,  // 0: luci.analysis.internal.clustering.Chunk.failures:type_name -> luci.analysis.internal.clustering.Failure
   865  	5,  // 1: luci.analysis.internal.clustering.Failure.test_result_id:type_name -> luci.analysis.v1.TestResultId
   866  	6,  // 2: luci.analysis.internal.clustering.Failure.partition_time:type_name -> google.protobuf.Timestamp
   867  	7,  // 3: luci.analysis.internal.clustering.Failure.variant:type_name -> luci.analysis.v1.Variant
   868  	8,  // 4: luci.analysis.internal.clustering.Failure.tags:type_name -> luci.analysis.v1.StringPair
   869  	9,  // 5: luci.analysis.internal.clustering.Failure.failure_reason:type_name -> luci.analysis.v1.FailureReason
   870  	10, // 6: luci.analysis.internal.clustering.Failure.bug_tracking_component:type_name -> luci.analysis.v1.BugTrackingComponent
   871  	6,  // 7: luci.analysis.internal.clustering.Failure.start_time:type_name -> google.protobuf.Timestamp
   872  	11, // 8: luci.analysis.internal.clustering.Failure.duration:type_name -> google.protobuf.Duration
   873  	3,  // 9: luci.analysis.internal.clustering.Failure.exonerations:type_name -> luci.analysis.internal.clustering.TestExoneration
   874  	4,  // 10: luci.analysis.internal.clustering.Failure.presubmit_run:type_name -> luci.analysis.internal.clustering.PresubmitRun
   875  	12, // 11: luci.analysis.internal.clustering.Failure.build_status:type_name -> luci.analysis.v1.BuildStatus
   876  	13, // 12: luci.analysis.internal.clustering.Failure.changelists:type_name -> luci.analysis.v1.Changelist
   877  	14, // 13: luci.analysis.internal.clustering.Failure.sources:type_name -> luci.analysis.v1.Sources
   878  	2,  // 14: luci.analysis.internal.clustering.Failure.test_variant_branch:type_name -> luci.analysis.internal.clustering.TestVariantBranch
   879  	15, // 15: luci.analysis.internal.clustering.TestExoneration.reason:type_name -> luci.analysis.v1.ExonerationReason
   880  	16, // 16: luci.analysis.internal.clustering.PresubmitRun.presubmit_run_id:type_name -> luci.analysis.v1.PresubmitRunId
   881  	17, // 17: luci.analysis.internal.clustering.PresubmitRun.mode:type_name -> luci.analysis.v1.PresubmitRunMode
   882  	18, // 18: luci.analysis.internal.clustering.PresubmitRun.status:type_name -> luci.analysis.v1.PresubmitRunStatus
   883  	19, // [19:19] is the sub-list for method output_type
   884  	19, // [19:19] is the sub-list for method input_type
   885  	19, // [19:19] is the sub-list for extension type_name
   886  	19, // [19:19] is the sub-list for extension extendee
   887  	0,  // [0:19] is the sub-list for field type_name
   888  }
   889  
   890  func init() { file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_init() }
   891  func file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_init() {
   892  	if File_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto != nil {
   893  		return
   894  	}
   895  	if !protoimpl.UnsafeEnabled {
   896  		file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
   897  			switch v := v.(*Chunk); i {
   898  			case 0:
   899  				return &v.state
   900  			case 1:
   901  				return &v.sizeCache
   902  			case 2:
   903  				return &v.unknownFields
   904  			default:
   905  				return nil
   906  			}
   907  		}
   908  		file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
   909  			switch v := v.(*Failure); i {
   910  			case 0:
   911  				return &v.state
   912  			case 1:
   913  				return &v.sizeCache
   914  			case 2:
   915  				return &v.unknownFields
   916  			default:
   917  				return nil
   918  			}
   919  		}
   920  		file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
   921  			switch v := v.(*TestVariantBranch); i {
   922  			case 0:
   923  				return &v.state
   924  			case 1:
   925  				return &v.sizeCache
   926  			case 2:
   927  				return &v.unknownFields
   928  			default:
   929  				return nil
   930  			}
   931  		}
   932  		file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
   933  			switch v := v.(*TestExoneration); i {
   934  			case 0:
   935  				return &v.state
   936  			case 1:
   937  				return &v.sizeCache
   938  			case 2:
   939  				return &v.unknownFields
   940  			default:
   941  				return nil
   942  			}
   943  		}
   944  		file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
   945  			switch v := v.(*PresubmitRun); i {
   946  			case 0:
   947  				return &v.state
   948  			case 1:
   949  				return &v.sizeCache
   950  			case 2:
   951  				return &v.unknownFields
   952  			default:
   953  				return nil
   954  			}
   955  		}
   956  	}
   957  	file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes[1].OneofWrappers = []interface{}{}
   958  	type x struct{}
   959  	out := protoimpl.TypeBuilder{
   960  		File: protoimpl.DescBuilder{
   961  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
   962  			RawDescriptor: file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDesc,
   963  			NumEnums:      0,
   964  			NumMessages:   5,
   965  			NumExtensions: 0,
   966  			NumServices:   0,
   967  		},
   968  		GoTypes:           file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_goTypes,
   969  		DependencyIndexes: file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_depIdxs,
   970  		MessageInfos:      file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_msgTypes,
   971  	}.Build()
   972  	File_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto = out.File
   973  	file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_rawDesc = nil
   974  	file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_goTypes = nil
   975  	file_go_chromium_org_luci_analysis_internal_clustering_proto_failure_proto_depIdxs = nil
   976  }