github.com/GoogleCloudPlatform/testgrid@v0.0.174/pb/state/state.pb.go (about)

     1  /*
     2  Copyright The TestGrid Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  // Backing state for a test results table of a TestGrid dashboard tab.
    18  // Grid is the top-level message; updated and stored by the updater and
    19  // tabulator.
    20  
    21  // Code generated by protoc-gen-go. DO NOT EDIT.
    22  // versions:
    23  // 	protoc-gen-go v1.28.0
    24  // 	protoc        v3.21.1
    25  // source: state.proto
    26  
    27  package state
    28  
    29  import (
    30  	config "github.com/GoogleCloudPlatform/testgrid/pb/config"
    31  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    32  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    33  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    34  	reflect "reflect"
    35  	sync "sync"
    36  )
    37  
    38  const (
    39  	// Verify that this generated code is sufficiently up-to-date.
    40  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    41  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    42  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    43  )
    44  
    45  type Property struct {
    46  	state         protoimpl.MessageState
    47  	sizeCache     protoimpl.SizeCache
    48  	unknownFields protoimpl.UnknownFields
    49  
    50  	Property map[string]string `protobuf:"bytes,1,rep,name=property,proto3" json:"property,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
    51  }
    52  
    53  func (x *Property) Reset() {
    54  	*x = Property{}
    55  	if protoimpl.UnsafeEnabled {
    56  		mi := &file_state_proto_msgTypes[0]
    57  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    58  		ms.StoreMessageInfo(mi)
    59  	}
    60  }
    61  
    62  func (x *Property) String() string {
    63  	return protoimpl.X.MessageStringOf(x)
    64  }
    65  
    66  func (*Property) ProtoMessage() {}
    67  
    68  func (x *Property) ProtoReflect() protoreflect.Message {
    69  	mi := &file_state_proto_msgTypes[0]
    70  	if protoimpl.UnsafeEnabled && x != nil {
    71  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    72  		if ms.LoadMessageInfo() == nil {
    73  			ms.StoreMessageInfo(mi)
    74  		}
    75  		return ms
    76  	}
    77  	return mi.MessageOf(x)
    78  }
    79  
    80  // Deprecated: Use Property.ProtoReflect.Descriptor instead.
    81  func (*Property) Descriptor() ([]byte, []int) {
    82  	return file_state_proto_rawDescGZIP(), []int{0}
    83  }
    84  
    85  func (x *Property) GetProperty() map[string]string {
    86  	if x != nil {
    87  		return x.Property
    88  	}
    89  	return nil
    90  }
    91  
    92  // A metric and its values for each test cycle.
    93  type Metric struct {
    94  	state         protoimpl.MessageState
    95  	sizeCache     protoimpl.SizeCache
    96  	unknownFields protoimpl.UnknownFields
    97  
    98  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name of metric, such as duration
    99  	// Sparse encoding of values. Indices is a list of pairs of <index, count>
   100  	// that details columns with metric values. So given:
   101  	//   Indices: [0, 2, 6, 4]
   102  	//   Values: [0.1,0.2,6.1,6.2,6.3,6.4]
   103  	// Decoded 12-value equivalent is:
   104  	// [0.1, 0.2, nil, nil, nil, nil, 6.1, 6.2, 6.3, 6.4, nil, nil, ...]
   105  	Indices []int32   `protobuf:"varint,2,rep,packed,name=indices,proto3" json:"indices,omitempty"` // n=index of first value, n+1=count of filled values
   106  	Values  []float64 `protobuf:"fixed64,3,rep,packed,name=values,proto3" json:"values,omitempty"`  // only present for columns with a metric value
   107  }
   108  
   109  func (x *Metric) Reset() {
   110  	*x = Metric{}
   111  	if protoimpl.UnsafeEnabled {
   112  		mi := &file_state_proto_msgTypes[1]
   113  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   114  		ms.StoreMessageInfo(mi)
   115  	}
   116  }
   117  
   118  func (x *Metric) String() string {
   119  	return protoimpl.X.MessageStringOf(x)
   120  }
   121  
   122  func (*Metric) ProtoMessage() {}
   123  
   124  func (x *Metric) ProtoReflect() protoreflect.Message {
   125  	mi := &file_state_proto_msgTypes[1]
   126  	if protoimpl.UnsafeEnabled && x != nil {
   127  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   128  		if ms.LoadMessageInfo() == nil {
   129  			ms.StoreMessageInfo(mi)
   130  		}
   131  		return ms
   132  	}
   133  	return mi.MessageOf(x)
   134  }
   135  
   136  // Deprecated: Use Metric.ProtoReflect.Descriptor instead.
   137  func (*Metric) Descriptor() ([]byte, []int) {
   138  	return file_state_proto_rawDescGZIP(), []int{1}
   139  }
   140  
   141  func (x *Metric) GetName() string {
   142  	if x != nil {
   143  		return x.Name
   144  	}
   145  	return ""
   146  }
   147  
   148  func (x *Metric) GetIndices() []int32 {
   149  	if x != nil {
   150  		return x.Indices
   151  	}
   152  	return nil
   153  }
   154  
   155  func (x *Metric) GetValues() []float64 {
   156  	if x != nil {
   157  		return x.Values
   158  	}
   159  	return nil
   160  }
   161  
   162  type UpdatePhaseData struct {
   163  	state         protoimpl.MessageState
   164  	sizeCache     protoimpl.SizeCache
   165  	unknownFields protoimpl.UnknownFields
   166  
   167  	// The name for a part of the update cycle.
   168  	PhaseName string `protobuf:"bytes,1,opt,name=phase_name,json=phaseName,proto3" json:"phase_name,omitempty"`
   169  	// Time taken for a part of the update cycle, in seconds.
   170  	PhaseSeconds float64 `protobuf:"fixed64,2,opt,name=phase_seconds,json=phaseSeconds,proto3" json:"phase_seconds,omitempty"`
   171  }
   172  
   173  func (x *UpdatePhaseData) Reset() {
   174  	*x = UpdatePhaseData{}
   175  	if protoimpl.UnsafeEnabled {
   176  		mi := &file_state_proto_msgTypes[2]
   177  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   178  		ms.StoreMessageInfo(mi)
   179  	}
   180  }
   181  
   182  func (x *UpdatePhaseData) String() string {
   183  	return protoimpl.X.MessageStringOf(x)
   184  }
   185  
   186  func (*UpdatePhaseData) ProtoMessage() {}
   187  
   188  func (x *UpdatePhaseData) ProtoReflect() protoreflect.Message {
   189  	mi := &file_state_proto_msgTypes[2]
   190  	if protoimpl.UnsafeEnabled && x != nil {
   191  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   192  		if ms.LoadMessageInfo() == nil {
   193  			ms.StoreMessageInfo(mi)
   194  		}
   195  		return ms
   196  	}
   197  	return mi.MessageOf(x)
   198  }
   199  
   200  // Deprecated: Use UpdatePhaseData.ProtoReflect.Descriptor instead.
   201  func (*UpdatePhaseData) Descriptor() ([]byte, []int) {
   202  	return file_state_proto_rawDescGZIP(), []int{2}
   203  }
   204  
   205  func (x *UpdatePhaseData) GetPhaseName() string {
   206  	if x != nil {
   207  		return x.PhaseName
   208  	}
   209  	return ""
   210  }
   211  
   212  func (x *UpdatePhaseData) GetPhaseSeconds() float64 {
   213  	if x != nil {
   214  		return x.PhaseSeconds
   215  	}
   216  	return 0
   217  }
   218  
   219  // Info on time taken to update test results during the last update cycle.
   220  type UpdateInfo struct {
   221  	state         protoimpl.MessageState
   222  	sizeCache     protoimpl.SizeCache
   223  	unknownFields protoimpl.UnknownFields
   224  
   225  	// Metrics for how long parts of the update cycle take.
   226  	UpdatePhaseData []*UpdatePhaseData `protobuf:"bytes,1,rep,name=update_phase_data,json=updatePhaseData,proto3" json:"update_phase_data,omitempty"`
   227  }
   228  
   229  func (x *UpdateInfo) Reset() {
   230  	*x = UpdateInfo{}
   231  	if protoimpl.UnsafeEnabled {
   232  		mi := &file_state_proto_msgTypes[3]
   233  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   234  		ms.StoreMessageInfo(mi)
   235  	}
   236  }
   237  
   238  func (x *UpdateInfo) String() string {
   239  	return protoimpl.X.MessageStringOf(x)
   240  }
   241  
   242  func (*UpdateInfo) ProtoMessage() {}
   243  
   244  func (x *UpdateInfo) ProtoReflect() protoreflect.Message {
   245  	mi := &file_state_proto_msgTypes[3]
   246  	if protoimpl.UnsafeEnabled && x != nil {
   247  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   248  		if ms.LoadMessageInfo() == nil {
   249  			ms.StoreMessageInfo(mi)
   250  		}
   251  		return ms
   252  	}
   253  	return mi.MessageOf(x)
   254  }
   255  
   256  // Deprecated: Use UpdateInfo.ProtoReflect.Descriptor instead.
   257  func (*UpdateInfo) Descriptor() ([]byte, []int) {
   258  	return file_state_proto_rawDescGZIP(), []int{3}
   259  }
   260  
   261  func (x *UpdateInfo) GetUpdatePhaseData() []*UpdatePhaseData {
   262  	if x != nil {
   263  		return x.UpdatePhaseData
   264  	}
   265  	return nil
   266  }
   267  
   268  // Info on a failing test row about the failure.
   269  type AlertInfo struct {
   270  	state         protoimpl.MessageState
   271  	sizeCache     protoimpl.SizeCache
   272  	unknownFields protoimpl.UnknownFields
   273  
   274  	// Number of results that have failed.
   275  	FailCount int32 `protobuf:"varint,1,opt,name=fail_count,json=failCount,proto3" json:"fail_count,omitempty"`
   276  	// The build ID the test first failed at.
   277  	FailBuildId string `protobuf:"bytes,2,opt,name=fail_build_id,json=failBuildId,proto3" json:"fail_build_id,omitempty"`
   278  	// The time the test first failed at.
   279  	FailTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fail_time,json=failTime,proto3" json:"fail_time,omitempty"`
   280  	// The test ID for the first test failure.
   281  	FailTestId string `protobuf:"bytes,4,opt,name=fail_test_id,json=failTestId,proto3" json:"fail_test_id,omitempty"`
   282  	// The build ID the test last passed at.
   283  	PassBuildId string `protobuf:"bytes,5,opt,name=pass_build_id,json=passBuildId,proto3" json:"pass_build_id,omitempty"`
   284  	// The time the test last passed at.
   285  	PassTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=pass_time,json=passTime,proto3" json:"pass_time,omitempty"`
   286  	// A snippet explaining the failure.
   287  	FailureMessage string `protobuf:"bytes,7,opt,name=failure_message,json=failureMessage,proto3" json:"failure_message,omitempty"`
   288  	// Link to search for build changes, internally a code-search link.
   289  	BuildLink string `protobuf:"bytes,8,opt,name=build_link,json=buildLink,proto3" json:"build_link,omitempty"`
   290  	// Text for option to search for build changes.
   291  	BuildLinkText string `protobuf:"bytes,9,opt,name=build_link_text,json=buildLinkText,proto3" json:"build_link_text,omitempty"`
   292  	// Text to display for link to search for build changes.
   293  	BuildUrlText string `protobuf:"bytes,10,opt,name=build_url_text,json=buildUrlText,proto3" json:"build_url_text,omitempty"`
   294  	// The build ID for the latest test failure. (Does not indicate the failure is
   295  	// 'over', just the latest test failure we found.)
   296  	LatestFailBuildId string `protobuf:"bytes,11,opt,name=latest_fail_build_id,json=latestFailBuildId,proto3" json:"latest_fail_build_id,omitempty"`
   297  	// The test ID for the latest test failure.
   298  	LatestFailTestId string `protobuf:"bytes,14,opt,name=latest_fail_test_id,json=latestFailTestId,proto3" json:"latest_fail_test_id,omitempty"`
   299  	// Maps (property name):(property value) for arbitrary alert properties.
   300  	Properties map[string]string `protobuf:"bytes,12,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   301  	// A list of IDs for issue hotlists related to this failure.
   302  	HotlistIds []string `protobuf:"bytes,13,rep,name=hotlist_ids,json=hotlistIds,proto3" json:"hotlist_ids,omitempty"`
   303  	// Dynamic email list, route email alerts to these instead of the configured
   304  	// defaults.
   305  	EmailAddresses []string `protobuf:"bytes,15,rep,name=email_addresses,json=emailAddresses,proto3" json:"email_addresses,omitempty"`
   306  	// Maps (custom column headers name):(custom column headers value) for arbitrary alert properties.
   307  	CustomColumnHeaders map[string]string `protobuf:"bytes,16,rep,name=custom_column_headers,json=customColumnHeaders,proto3" json:"custom_column_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   308  }
   309  
   310  func (x *AlertInfo) Reset() {
   311  	*x = AlertInfo{}
   312  	if protoimpl.UnsafeEnabled {
   313  		mi := &file_state_proto_msgTypes[4]
   314  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   315  		ms.StoreMessageInfo(mi)
   316  	}
   317  }
   318  
   319  func (x *AlertInfo) String() string {
   320  	return protoimpl.X.MessageStringOf(x)
   321  }
   322  
   323  func (*AlertInfo) ProtoMessage() {}
   324  
   325  func (x *AlertInfo) ProtoReflect() protoreflect.Message {
   326  	mi := &file_state_proto_msgTypes[4]
   327  	if protoimpl.UnsafeEnabled && x != nil {
   328  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   329  		if ms.LoadMessageInfo() == nil {
   330  			ms.StoreMessageInfo(mi)
   331  		}
   332  		return ms
   333  	}
   334  	return mi.MessageOf(x)
   335  }
   336  
   337  // Deprecated: Use AlertInfo.ProtoReflect.Descriptor instead.
   338  func (*AlertInfo) Descriptor() ([]byte, []int) {
   339  	return file_state_proto_rawDescGZIP(), []int{4}
   340  }
   341  
   342  func (x *AlertInfo) GetFailCount() int32 {
   343  	if x != nil {
   344  		return x.FailCount
   345  	}
   346  	return 0
   347  }
   348  
   349  func (x *AlertInfo) GetFailBuildId() string {
   350  	if x != nil {
   351  		return x.FailBuildId
   352  	}
   353  	return ""
   354  }
   355  
   356  func (x *AlertInfo) GetFailTime() *timestamppb.Timestamp {
   357  	if x != nil {
   358  		return x.FailTime
   359  	}
   360  	return nil
   361  }
   362  
   363  func (x *AlertInfo) GetFailTestId() string {
   364  	if x != nil {
   365  		return x.FailTestId
   366  	}
   367  	return ""
   368  }
   369  
   370  func (x *AlertInfo) GetPassBuildId() string {
   371  	if x != nil {
   372  		return x.PassBuildId
   373  	}
   374  	return ""
   375  }
   376  
   377  func (x *AlertInfo) GetPassTime() *timestamppb.Timestamp {
   378  	if x != nil {
   379  		return x.PassTime
   380  	}
   381  	return nil
   382  }
   383  
   384  func (x *AlertInfo) GetFailureMessage() string {
   385  	if x != nil {
   386  		return x.FailureMessage
   387  	}
   388  	return ""
   389  }
   390  
   391  func (x *AlertInfo) GetBuildLink() string {
   392  	if x != nil {
   393  		return x.BuildLink
   394  	}
   395  	return ""
   396  }
   397  
   398  func (x *AlertInfo) GetBuildLinkText() string {
   399  	if x != nil {
   400  		return x.BuildLinkText
   401  	}
   402  	return ""
   403  }
   404  
   405  func (x *AlertInfo) GetBuildUrlText() string {
   406  	if x != nil {
   407  		return x.BuildUrlText
   408  	}
   409  	return ""
   410  }
   411  
   412  func (x *AlertInfo) GetLatestFailBuildId() string {
   413  	if x != nil {
   414  		return x.LatestFailBuildId
   415  	}
   416  	return ""
   417  }
   418  
   419  func (x *AlertInfo) GetLatestFailTestId() string {
   420  	if x != nil {
   421  		return x.LatestFailTestId
   422  	}
   423  	return ""
   424  }
   425  
   426  func (x *AlertInfo) GetProperties() map[string]string {
   427  	if x != nil {
   428  		return x.Properties
   429  	}
   430  	return nil
   431  }
   432  
   433  func (x *AlertInfo) GetHotlistIds() []string {
   434  	if x != nil {
   435  		return x.HotlistIds
   436  	}
   437  	return nil
   438  }
   439  
   440  func (x *AlertInfo) GetEmailAddresses() []string {
   441  	if x != nil {
   442  		return x.EmailAddresses
   443  	}
   444  	return nil
   445  }
   446  
   447  func (x *AlertInfo) GetCustomColumnHeaders() map[string]string {
   448  	if x != nil {
   449  		return x.CustomColumnHeaders
   450  	}
   451  	return nil
   452  }
   453  
   454  // Info on default test metadata for a dashboard tab.
   455  type TestMetadata struct {
   456  	state         protoimpl.MessageState
   457  	sizeCache     protoimpl.SizeCache
   458  	unknownFields protoimpl.UnknownFields
   459  
   460  	// Name of the test with associated test metadata.
   461  	TestName string `protobuf:"bytes,1,opt,name=test_name,json=testName,proto3" json:"test_name,omitempty"`
   462  	// Default bug component.
   463  	BugComponent int32 `protobuf:"varint,2,opt,name=bug_component,json=bugComponent,proto3" json:"bug_component,omitempty"`
   464  	// Default owner.
   465  	Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"`
   466  	// Default list of cc's.
   467  	Cc []string `protobuf:"bytes,4,rep,name=cc,proto3" json:"cc,omitempty"`
   468  	// When present, only file a bug for failed tests with same error type.
   469  	// Otherwise, always file a bug.
   470  	ErrorType string `protobuf:"bytes,5,opt,name=error_type,json=errorType,proto3" json:"error_type,omitempty"`
   471  }
   472  
   473  func (x *TestMetadata) Reset() {
   474  	*x = TestMetadata{}
   475  	if protoimpl.UnsafeEnabled {
   476  		mi := &file_state_proto_msgTypes[5]
   477  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   478  		ms.StoreMessageInfo(mi)
   479  	}
   480  }
   481  
   482  func (x *TestMetadata) String() string {
   483  	return protoimpl.X.MessageStringOf(x)
   484  }
   485  
   486  func (*TestMetadata) ProtoMessage() {}
   487  
   488  func (x *TestMetadata) ProtoReflect() protoreflect.Message {
   489  	mi := &file_state_proto_msgTypes[5]
   490  	if protoimpl.UnsafeEnabled && x != nil {
   491  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   492  		if ms.LoadMessageInfo() == nil {
   493  			ms.StoreMessageInfo(mi)
   494  		}
   495  		return ms
   496  	}
   497  	return mi.MessageOf(x)
   498  }
   499  
   500  // Deprecated: Use TestMetadata.ProtoReflect.Descriptor instead.
   501  func (*TestMetadata) Descriptor() ([]byte, []int) {
   502  	return file_state_proto_rawDescGZIP(), []int{5}
   503  }
   504  
   505  func (x *TestMetadata) GetTestName() string {
   506  	if x != nil {
   507  		return x.TestName
   508  	}
   509  	return ""
   510  }
   511  
   512  func (x *TestMetadata) GetBugComponent() int32 {
   513  	if x != nil {
   514  		return x.BugComponent
   515  	}
   516  	return 0
   517  }
   518  
   519  func (x *TestMetadata) GetOwner() string {
   520  	if x != nil {
   521  		return x.Owner
   522  	}
   523  	return ""
   524  }
   525  
   526  func (x *TestMetadata) GetCc() []string {
   527  	if x != nil {
   528  		return x.Cc
   529  	}
   530  	return nil
   531  }
   532  
   533  func (x *TestMetadata) GetErrorType() string {
   534  	if x != nil {
   535  		return x.ErrorType
   536  	}
   537  	return ""
   538  }
   539  
   540  // TestGrid column headers. Does not contain the individual cells.
   541  type Column struct {
   542  	state         protoimpl.MessageState
   543  	sizeCache     protoimpl.SizeCache
   544  	unknownFields protoimpl.UnknownFields
   545  
   546  	// Unique instance of the job, typically BUILD_NUMBER from prow or a guid
   547  	Build string `protobuf:"bytes,1,opt,name=build,proto3" json:"build,omitempty"`
   548  	// Name associated with the column (such as the run/invocation ID).No two
   549  	// columns should have the same build_id and name. The name field allows the
   550  	// display of multiple columns with the same build_id.
   551  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
   552  	// Milliseconds since start of epoch (python time.time() * 1000)
   553  	// TODO(#683): Use a timestamp, not this double
   554  	Started float64 `protobuf:"fixed64,3,opt,name=started,proto3" json:"started,omitempty"`
   555  	// Additional custom headers like commit, image used, etc.
   556  	Extra []string `protobuf:"bytes,4,rep,name=extra,proto3" json:"extra,omitempty"`
   557  	// Custom hotlist ids.
   558  	HotlistIds string `protobuf:"bytes,5,opt,name=hotlist_ids,json=hotlistIds,proto3" json:"hotlist_ids,omitempty"`
   559  	// An optional hint for the updater.
   560  	Hint string `protobuf:"bytes,6,opt,name=hint,proto3" json:"hint,omitempty"`
   561  	// Dynamic email list, route email alerts to these instead of the configured
   562  	// defaults.
   563  	EmailAddresses []string `protobuf:"bytes,7,rep,name=email_addresses,json=emailAddresses,proto3" json:"email_addresses,omitempty"`
   564  	// Status totals for the column.
   565  	// Only written in tab state, if a broken threshold is defined for columns.
   566  	Stats *Stats `protobuf:"bytes,8,opt,name=stats,proto3" json:"stats,omitempty"`
   567  }
   568  
   569  func (x *Column) Reset() {
   570  	*x = Column{}
   571  	if protoimpl.UnsafeEnabled {
   572  		mi := &file_state_proto_msgTypes[6]
   573  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   574  		ms.StoreMessageInfo(mi)
   575  	}
   576  }
   577  
   578  func (x *Column) String() string {
   579  	return protoimpl.X.MessageStringOf(x)
   580  }
   581  
   582  func (*Column) ProtoMessage() {}
   583  
   584  func (x *Column) ProtoReflect() protoreflect.Message {
   585  	mi := &file_state_proto_msgTypes[6]
   586  	if protoimpl.UnsafeEnabled && x != nil {
   587  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   588  		if ms.LoadMessageInfo() == nil {
   589  			ms.StoreMessageInfo(mi)
   590  		}
   591  		return ms
   592  	}
   593  	return mi.MessageOf(x)
   594  }
   595  
   596  // Deprecated: Use Column.ProtoReflect.Descriptor instead.
   597  func (*Column) Descriptor() ([]byte, []int) {
   598  	return file_state_proto_rawDescGZIP(), []int{6}
   599  }
   600  
   601  func (x *Column) GetBuild() string {
   602  	if x != nil {
   603  		return x.Build
   604  	}
   605  	return ""
   606  }
   607  
   608  func (x *Column) GetName() string {
   609  	if x != nil {
   610  		return x.Name
   611  	}
   612  	return ""
   613  }
   614  
   615  func (x *Column) GetStarted() float64 {
   616  	if x != nil {
   617  		return x.Started
   618  	}
   619  	return 0
   620  }
   621  
   622  func (x *Column) GetExtra() []string {
   623  	if x != nil {
   624  		return x.Extra
   625  	}
   626  	return nil
   627  }
   628  
   629  func (x *Column) GetHotlistIds() string {
   630  	if x != nil {
   631  		return x.HotlistIds
   632  	}
   633  	return ""
   634  }
   635  
   636  func (x *Column) GetHint() string {
   637  	if x != nil {
   638  		return x.Hint
   639  	}
   640  	return ""
   641  }
   642  
   643  func (x *Column) GetEmailAddresses() []string {
   644  	if x != nil {
   645  		return x.EmailAddresses
   646  	}
   647  	return nil
   648  }
   649  
   650  func (x *Column) GetStats() *Stats {
   651  	if x != nil {
   652  		return x.Stats
   653  	}
   654  	return nil
   655  }
   656  
   657  type Stats struct {
   658  	state         protoimpl.MessageState
   659  	sizeCache     protoimpl.SizeCache
   660  	unknownFields protoimpl.UnknownFields
   661  
   662  	FailCount  int32 `protobuf:"varint,1,opt,name=fail_count,json=failCount,proto3" json:"fail_count,omitempty"`
   663  	PassCount  int32 `protobuf:"varint,2,opt,name=pass_count,json=passCount,proto3" json:"pass_count,omitempty"`
   664  	TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"`
   665  	// True if this column has any in-progress runs.
   666  	Pending bool `protobuf:"varint,4,opt,name=pending,proto3" json:"pending,omitempty"`
   667  	// True if a broken threshold is defined, and this column's fail/total ratio
   668  	// exceeds it.
   669  	Broken bool `protobuf:"varint,5,opt,name=broken,proto3" json:"broken,omitempty"`
   670  }
   671  
   672  func (x *Stats) Reset() {
   673  	*x = Stats{}
   674  	if protoimpl.UnsafeEnabled {
   675  		mi := &file_state_proto_msgTypes[7]
   676  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   677  		ms.StoreMessageInfo(mi)
   678  	}
   679  }
   680  
   681  func (x *Stats) String() string {
   682  	return protoimpl.X.MessageStringOf(x)
   683  }
   684  
   685  func (*Stats) ProtoMessage() {}
   686  
   687  func (x *Stats) ProtoReflect() protoreflect.Message {
   688  	mi := &file_state_proto_msgTypes[7]
   689  	if protoimpl.UnsafeEnabled && x != nil {
   690  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   691  		if ms.LoadMessageInfo() == nil {
   692  			ms.StoreMessageInfo(mi)
   693  		}
   694  		return ms
   695  	}
   696  	return mi.MessageOf(x)
   697  }
   698  
   699  // Deprecated: Use Stats.ProtoReflect.Descriptor instead.
   700  func (*Stats) Descriptor() ([]byte, []int) {
   701  	return file_state_proto_rawDescGZIP(), []int{7}
   702  }
   703  
   704  func (x *Stats) GetFailCount() int32 {
   705  	if x != nil {
   706  		return x.FailCount
   707  	}
   708  	return 0
   709  }
   710  
   711  func (x *Stats) GetPassCount() int32 {
   712  	if x != nil {
   713  		return x.PassCount
   714  	}
   715  	return 0
   716  }
   717  
   718  func (x *Stats) GetTotalCount() int32 {
   719  	if x != nil {
   720  		return x.TotalCount
   721  	}
   722  	return 0
   723  }
   724  
   725  func (x *Stats) GetPending() bool {
   726  	if x != nil {
   727  		return x.Pending
   728  	}
   729  	return false
   730  }
   731  
   732  func (x *Stats) GetBroken() bool {
   733  	if x != nil {
   734  		return x.Broken
   735  	}
   736  	return false
   737  }
   738  
   739  // TestGrid rows
   740  type Row struct {
   741  	state         protoimpl.MessageState
   742  	sizeCache     protoimpl.SizeCache
   743  	unknownFields protoimpl.UnknownFields
   744  
   745  	// Display name, which might process id to append/filter info.
   746  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   747  	// raw id for the row, such as the bazel target or golang package.
   748  	Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
   749  	// Results for this row, run-length encoded to reduce size/improve
   750  	// performance. Thus (encoded -> decoded equivalent):
   751  	//   [0, 3, 5, 4] -> [0, 0, 0, 5, 5, 5, 5]
   752  	//   [5, 1] -> [5]
   753  	//   [1, 5] -> [1, 1, 1, 1, 1]
   754  	// The decoded values are Result enums
   755  	Results []int32 `protobuf:"varint,3,rep,packed,name=results,proto3" json:"results,omitempty"`
   756  	// Test IDs for each test result in this test case.
   757  	// Must be present on every column, regardless of status.
   758  	CellIds []string `protobuf:"bytes,4,rep,name=cell_ids,json=cellIds,proto3" json:"cell_ids,omitempty"`
   759  	// Short description of the result, displayed on mouseover.
   760  	// Present for any column with a non-empty status (not NO_RESULT).
   761  	Messages []string `protobuf:"bytes,5,rep,name=messages,proto3" json:"messages,omitempty"`
   762  	// Names of metrics associated with this test case. Stored separate from
   763  	// metric info (which may be omitted).
   764  	Metric  []string  `protobuf:"bytes,7,rep,name=metric,proto3" json:"metric,omitempty"`
   765  	Metrics []*Metric `protobuf:"bytes,8,rep,name=metrics,proto3" json:"metrics,omitempty"` // Numerical performance/timing data, etc.
   766  	// Short string to place inside the cell (F for fail, etc)
   767  	// Present for any column with a non-empty status (not NO_RESULT).
   768  	Icons []string `protobuf:"bytes,9,rep,name=icons,proto3" json:"icons,omitempty"`
   769  	// IDs for issues associated with this row.
   770  	Issues []string `protobuf:"bytes,10,rep,name=issues,proto3" json:"issues,omitempty"`
   771  	// An alert for the failure if there's a recent failure for this row.
   772  	AlertInfo *AlertInfo `protobuf:"bytes,11,opt,name=alert_info,json=alertInfo,proto3" json:"alert_info,omitempty"`
   773  	// Values of a user-defined property found in cells for this row.
   774  	// TODO: Fold this into `properties` field.
   775  	UserProperty []string `protobuf:"bytes,12,rep,name=user_property,json=userProperty,proto3" json:"user_property,omitempty"`
   776  	// General key-value pairs associated with cells in this row.
   777  	// Present for any column with a non-empty status (not NO_RESULT).
   778  	Properties []*Property `protobuf:"bytes,13,rep,name=properties,proto3" json:"properties,omitempty"`
   779  }
   780  
   781  func (x *Row) Reset() {
   782  	*x = Row{}
   783  	if protoimpl.UnsafeEnabled {
   784  		mi := &file_state_proto_msgTypes[8]
   785  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   786  		ms.StoreMessageInfo(mi)
   787  	}
   788  }
   789  
   790  func (x *Row) String() string {
   791  	return protoimpl.X.MessageStringOf(x)
   792  }
   793  
   794  func (*Row) ProtoMessage() {}
   795  
   796  func (x *Row) ProtoReflect() protoreflect.Message {
   797  	mi := &file_state_proto_msgTypes[8]
   798  	if protoimpl.UnsafeEnabled && x != nil {
   799  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   800  		if ms.LoadMessageInfo() == nil {
   801  			ms.StoreMessageInfo(mi)
   802  		}
   803  		return ms
   804  	}
   805  	return mi.MessageOf(x)
   806  }
   807  
   808  // Deprecated: Use Row.ProtoReflect.Descriptor instead.
   809  func (*Row) Descriptor() ([]byte, []int) {
   810  	return file_state_proto_rawDescGZIP(), []int{8}
   811  }
   812  
   813  func (x *Row) GetName() string {
   814  	if x != nil {
   815  		return x.Name
   816  	}
   817  	return ""
   818  }
   819  
   820  func (x *Row) GetId() string {
   821  	if x != nil {
   822  		return x.Id
   823  	}
   824  	return ""
   825  }
   826  
   827  func (x *Row) GetResults() []int32 {
   828  	if x != nil {
   829  		return x.Results
   830  	}
   831  	return nil
   832  }
   833  
   834  func (x *Row) GetCellIds() []string {
   835  	if x != nil {
   836  		return x.CellIds
   837  	}
   838  	return nil
   839  }
   840  
   841  func (x *Row) GetMessages() []string {
   842  	if x != nil {
   843  		return x.Messages
   844  	}
   845  	return nil
   846  }
   847  
   848  func (x *Row) GetMetric() []string {
   849  	if x != nil {
   850  		return x.Metric
   851  	}
   852  	return nil
   853  }
   854  
   855  func (x *Row) GetMetrics() []*Metric {
   856  	if x != nil {
   857  		return x.Metrics
   858  	}
   859  	return nil
   860  }
   861  
   862  func (x *Row) GetIcons() []string {
   863  	if x != nil {
   864  		return x.Icons
   865  	}
   866  	return nil
   867  }
   868  
   869  func (x *Row) GetIssues() []string {
   870  	if x != nil {
   871  		return x.Issues
   872  	}
   873  	return nil
   874  }
   875  
   876  func (x *Row) GetAlertInfo() *AlertInfo {
   877  	if x != nil {
   878  		return x.AlertInfo
   879  	}
   880  	return nil
   881  }
   882  
   883  func (x *Row) GetUserProperty() []string {
   884  	if x != nil {
   885  		return x.UserProperty
   886  	}
   887  	return nil
   888  }
   889  
   890  func (x *Row) GetProperties() []*Property {
   891  	if x != nil {
   892  		return x.Properties
   893  	}
   894  	return nil
   895  }
   896  
   897  // A single table of test results backing a dashboard tab.
   898  type Grid struct {
   899  	state         protoimpl.MessageState
   900  	sizeCache     protoimpl.SizeCache
   901  	unknownFields protoimpl.UnknownFields
   902  
   903  	// A cycle of test results, not including the results. In the TestGrid client,
   904  	// the cycles define the columns.
   905  	Columns []*Column `protobuf:"bytes,1,rep,name=columns,proto3" json:"columns,omitempty"`
   906  	// A test case with test results. In the TestGrid client, the cases define the
   907  	// rows (and the results define the individual cells).
   908  	Rows []*Row `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"`
   909  	// The latest configuration used to generate this test group.
   910  	Config *config.TestGroup `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"`
   911  	// Seconds since epoch for last time this cycle was updated.
   912  	LastTimeUpdated float64 `protobuf:"fixed64,6,opt,name=last_time_updated,json=lastTimeUpdated,proto3" json:"last_time_updated,omitempty"`
   913  	// Stored info on previous timing for parts of the update cycle.
   914  	UpdateInfo []*UpdateInfo `protobuf:"bytes,8,rep,name=update_info,json=updateInfo,proto3" json:"update_info,omitempty"`
   915  	// Stored info on default test metadata.
   916  	TestMetadata []*TestMetadata `protobuf:"bytes,9,rep,name=test_metadata,json=testMetadata,proto3" json:"test_metadata,omitempty"`
   917  	// Clusters of failures for a TestResultTable instance.
   918  	Cluster []*Cluster `protobuf:"bytes,10,rep,name=cluster,proto3" json:"cluster,omitempty"`
   919  	// Most recent timestamp that clusters have processed.
   920  	MostRecentClusterTimestamp float64 `protobuf:"fixed64,11,opt,name=most_recent_cluster_timestamp,json=mostRecentClusterTimestamp,proto3" json:"most_recent_cluster_timestamp,omitempty"`
   921  }
   922  
   923  func (x *Grid) Reset() {
   924  	*x = Grid{}
   925  	if protoimpl.UnsafeEnabled {
   926  		mi := &file_state_proto_msgTypes[9]
   927  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   928  		ms.StoreMessageInfo(mi)
   929  	}
   930  }
   931  
   932  func (x *Grid) String() string {
   933  	return protoimpl.X.MessageStringOf(x)
   934  }
   935  
   936  func (*Grid) ProtoMessage() {}
   937  
   938  func (x *Grid) ProtoReflect() protoreflect.Message {
   939  	mi := &file_state_proto_msgTypes[9]
   940  	if protoimpl.UnsafeEnabled && x != nil {
   941  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   942  		if ms.LoadMessageInfo() == nil {
   943  			ms.StoreMessageInfo(mi)
   944  		}
   945  		return ms
   946  	}
   947  	return mi.MessageOf(x)
   948  }
   949  
   950  // Deprecated: Use Grid.ProtoReflect.Descriptor instead.
   951  func (*Grid) Descriptor() ([]byte, []int) {
   952  	return file_state_proto_rawDescGZIP(), []int{9}
   953  }
   954  
   955  func (x *Grid) GetColumns() []*Column {
   956  	if x != nil {
   957  		return x.Columns
   958  	}
   959  	return nil
   960  }
   961  
   962  func (x *Grid) GetRows() []*Row {
   963  	if x != nil {
   964  		return x.Rows
   965  	}
   966  	return nil
   967  }
   968  
   969  func (x *Grid) GetConfig() *config.TestGroup {
   970  	if x != nil {
   971  		return x.Config
   972  	}
   973  	return nil
   974  }
   975  
   976  func (x *Grid) GetLastTimeUpdated() float64 {
   977  	if x != nil {
   978  		return x.LastTimeUpdated
   979  	}
   980  	return 0
   981  }
   982  
   983  func (x *Grid) GetUpdateInfo() []*UpdateInfo {
   984  	if x != nil {
   985  		return x.UpdateInfo
   986  	}
   987  	return nil
   988  }
   989  
   990  func (x *Grid) GetTestMetadata() []*TestMetadata {
   991  	if x != nil {
   992  		return x.TestMetadata
   993  	}
   994  	return nil
   995  }
   996  
   997  func (x *Grid) GetCluster() []*Cluster {
   998  	if x != nil {
   999  		return x.Cluster
  1000  	}
  1001  	return nil
  1002  }
  1003  
  1004  func (x *Grid) GetMostRecentClusterTimestamp() float64 {
  1005  	if x != nil {
  1006  		return x.MostRecentClusterTimestamp
  1007  	}
  1008  	return 0
  1009  }
  1010  
  1011  // A cluster of failures grouped by test status and message for a test results
  1012  // table.
  1013  type Cluster struct {
  1014  	state         protoimpl.MessageState
  1015  	sizeCache     protoimpl.SizeCache
  1016  	unknownFields protoimpl.UnknownFields
  1017  
  1018  	// Test status cluster grouped by.
  1019  	TestStatus int32 `protobuf:"varint,1,opt,name=test_status,json=testStatus,proto3" json:"test_status,omitempty"`
  1020  	// Error message or testFailureClassification string cluster grouped by.
  1021  	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
  1022  	// ClusterRows that belong to this cluster.
  1023  	ClusterRow []*ClusterRow `protobuf:"bytes,3,rep,name=cluster_row,json=clusterRow,proto3" json:"cluster_row,omitempty"`
  1024  }
  1025  
  1026  func (x *Cluster) Reset() {
  1027  	*x = Cluster{}
  1028  	if protoimpl.UnsafeEnabled {
  1029  		mi := &file_state_proto_msgTypes[10]
  1030  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1031  		ms.StoreMessageInfo(mi)
  1032  	}
  1033  }
  1034  
  1035  func (x *Cluster) String() string {
  1036  	return protoimpl.X.MessageStringOf(x)
  1037  }
  1038  
  1039  func (*Cluster) ProtoMessage() {}
  1040  
  1041  func (x *Cluster) ProtoReflect() protoreflect.Message {
  1042  	mi := &file_state_proto_msgTypes[10]
  1043  	if protoimpl.UnsafeEnabled && x != nil {
  1044  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1045  		if ms.LoadMessageInfo() == nil {
  1046  			ms.StoreMessageInfo(mi)
  1047  		}
  1048  		return ms
  1049  	}
  1050  	return mi.MessageOf(x)
  1051  }
  1052  
  1053  // Deprecated: Use Cluster.ProtoReflect.Descriptor instead.
  1054  func (*Cluster) Descriptor() ([]byte, []int) {
  1055  	return file_state_proto_rawDescGZIP(), []int{10}
  1056  }
  1057  
  1058  func (x *Cluster) GetTestStatus() int32 {
  1059  	if x != nil {
  1060  		return x.TestStatus
  1061  	}
  1062  	return 0
  1063  }
  1064  
  1065  func (x *Cluster) GetMessage() string {
  1066  	if x != nil {
  1067  		return x.Message
  1068  	}
  1069  	return ""
  1070  }
  1071  
  1072  func (x *Cluster) GetClusterRow() []*ClusterRow {
  1073  	if x != nil {
  1074  		return x.ClusterRow
  1075  	}
  1076  	return nil
  1077  }
  1078  
  1079  // Cells in a TestRow that belong to a specific Cluster.
  1080  type ClusterRow struct {
  1081  	state         protoimpl.MessageState
  1082  	sizeCache     protoimpl.SizeCache
  1083  	unknownFields protoimpl.UnknownFields
  1084  
  1085  	// Name of TestRow.
  1086  	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
  1087  	// Index within row that belongs to Cluster (refer to columns of the row).
  1088  	Index []int32 `protobuf:"varint,2,rep,packed,name=index,proto3" json:"index,omitempty"`
  1089  }
  1090  
  1091  func (x *ClusterRow) Reset() {
  1092  	*x = ClusterRow{}
  1093  	if protoimpl.UnsafeEnabled {
  1094  		mi := &file_state_proto_msgTypes[11]
  1095  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1096  		ms.StoreMessageInfo(mi)
  1097  	}
  1098  }
  1099  
  1100  func (x *ClusterRow) String() string {
  1101  	return protoimpl.X.MessageStringOf(x)
  1102  }
  1103  
  1104  func (*ClusterRow) ProtoMessage() {}
  1105  
  1106  func (x *ClusterRow) ProtoReflect() protoreflect.Message {
  1107  	mi := &file_state_proto_msgTypes[11]
  1108  	if protoimpl.UnsafeEnabled && x != nil {
  1109  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1110  		if ms.LoadMessageInfo() == nil {
  1111  			ms.StoreMessageInfo(mi)
  1112  		}
  1113  		return ms
  1114  	}
  1115  	return mi.MessageOf(x)
  1116  }
  1117  
  1118  // Deprecated: Use ClusterRow.ProtoReflect.Descriptor instead.
  1119  func (*ClusterRow) Descriptor() ([]byte, []int) {
  1120  	return file_state_proto_rawDescGZIP(), []int{11}
  1121  }
  1122  
  1123  func (x *ClusterRow) GetDisplayName() string {
  1124  	if x != nil {
  1125  		return x.DisplayName
  1126  	}
  1127  	return ""
  1128  }
  1129  
  1130  func (x *ClusterRow) GetIndex() []int32 {
  1131  	if x != nil {
  1132  		return x.Index
  1133  	}
  1134  	return nil
  1135  }
  1136  
  1137  var File_state_proto protoreflect.FileDescriptor
  1138  
  1139  var file_state_proto_rawDesc = []byte{
  1140  	0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74,
  1141  	0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x1f, 0x67,
  1142  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,
  1143  	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
  1144  	0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  1145  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x01, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65,
  1146  	0x72, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18,
  1147  	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  1148  	0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e,
  1149  	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70,
  1150  	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65,
  1151  	0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
  1152  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
  1153  	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
  1154  	0x3a, 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12,
  1155  	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
  1156  	0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20,
  1157  	0x03, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06,
  1158  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x01, 0x52, 0x06, 0x76, 0x61,
  1159  	0x6c, 0x75, 0x65, 0x73, 0x22, 0x55, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68,
  1160  	0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x68, 0x61, 0x73, 0x65,
  1161  	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x68, 0x61,
  1162  	0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f,
  1163  	0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x70,
  1164  	0x68, 0x61, 0x73, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x59, 0x0a, 0x0a, 0x55,
  1165  	0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x11, 0x75, 0x70, 0x64,
  1166  	0x61, 0x74, 0x65, 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
  1167  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
  1168  	0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x61, 0x73,
  1169  	0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x61,
  1170  	0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x80, 0x07, 0x0a, 0x09, 0x41, 0x6c, 0x65, 0x72, 0x74,
  1171  	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x75,
  1172  	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f,
  1173  	0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x62, 0x75, 0x69, 0x6c,
  1174  	0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c,
  1175  	0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x5f,
  1176  	0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
  1177  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
  1178  	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65,
  1179  	0x12, 0x20, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64,
  1180  	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74,
  1181  	0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64,
  1182  	0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x42,
  1183  	0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74,
  1184  	0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  1185  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
  1186  	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12,
  1187  	0x27, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
  1188  	0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
  1189  	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c,
  1190  	0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75,
  1191  	0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c, 0x64,
  1192  	0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
  1193  	0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12,
  1194  	0x24, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x65, 0x78,
  1195  	0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x72,
  1196  	0x6c, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f,
  1197  	0x66, 0x61, 0x69, 0x6c, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20,
  1198  	0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x42,
  1199  	0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74,
  1200  	0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20,
  1201  	0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x54,
  1202  	0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
  1203  	0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74,
  1204  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74,
  1205  	0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45,
  1206  	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
  1207  	0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18,
  1208  	0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64,
  1209  	0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
  1210  	0x73, 0x73, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6d, 0x61, 0x69,
  1211  	0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x15, 0x63, 0x75,
  1212  	0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64,
  1213  	0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x65, 0x73, 0x74,
  1214  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74,
  1215  	0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
  1216  	0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x63,
  1217  	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65,
  1218  	0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
  1219  	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
  1220  	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
  1221  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
  1222  	0x01, 0x1a, 0x46, 0x0a, 0x18, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
  1223  	0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
  1224  	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
  1225  	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
  1226  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9b, 0x01, 0x0a, 0x0c, 0x54, 0x65,
  1227  	0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65,
  1228  	0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74,
  1229  	0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x67, 0x5f, 0x63,
  1230  	0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
  1231  	0x62, 0x75, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05,
  1232  	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e,
  1233  	0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x63, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02,
  1234  	0x63, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65,
  1235  	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70,
  1236  	0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xed, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6c, 0x75,
  1237  	0x6d, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
  1238  	0x09, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  1239  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
  1240  	0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73,
  1241  	0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18,
  1242  	0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1f, 0x0a, 0x0b,
  1243  	0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
  1244  	0x09, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a,
  1245  	0x04, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x6e,
  1246  	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
  1247  	0x73, 0x73, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6d, 0x61, 0x69,
  1248  	0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74,
  1249  	0x61, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x65, 0x73, 0x74,
  1250  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73,
  1251  	0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
  1252  	0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
  1253  	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74,
  1254  	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
  1255  	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
  1256  	0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
  1257  	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74,
  1258  	0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28,
  1259  	0x08, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72,
  1260  	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x72, 0x6f, 0x6b,
  1261  	0x65, 0x6e, 0x22, 0x91, 0x03, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
  1262  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
  1263  	0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18,
  1264  	0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52,
  1265  	0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x65, 0x6c, 0x6c,
  1266  	0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x65, 0x6c, 0x6c,
  1267  	0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18,
  1268  	0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12,
  1269  	0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52,
  1270  	0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69,
  1271  	0x63, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67,
  1272  	0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
  1273  	0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x63, 0x6f,
  1274  	0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x63, 0x6f, 0x6e, 0x73, 0x12,
  1275  	0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52,
  1276  	0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74,
  1277  	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65,
  1278  	0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x65,
  1279  	0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x66,
  1280  	0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
  1281  	0x74, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x72,
  1282  	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
  1283  	0x74, 0x69, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x73,
  1284  	0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70,
  1285  	0x65, 0x72, 0x74, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
  1286  	0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xc9, 0x03, 0x0a, 0x04, 0x47, 0x72, 0x69, 0x64, 0x12,
  1287  	0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
  1288  	0x32, 0x16, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74,
  1289  	0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
  1290  	0x73, 0x12, 0x27, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
  1291  	0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
  1292  	0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x63, 0x6f,
  1293  	0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x65, 0x73,
  1294  	0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73,
  1295  	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a,
  1296  	0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61,
  1297  	0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54,
  1298  	0x69, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70,
  1299  	0x64, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
  1300  	0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
  1301  	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x75, 0x70, 0x64,
  1302  	0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f,
  1303  	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
  1304  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
  1305  	0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x65,
  1306  	0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6c,
  1307  	0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x65,
  1308  	0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x75,
  1309  	0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a,
  1310  	0x1d, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x75,
  1311  	0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b,
  1312  	0x20, 0x01, 0x28, 0x01, 0x52, 0x1a, 0x6d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74,
  1313  	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
  1314  	0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x07,
  1315  	0x10, 0x08, 0x22, 0x81, 0x01, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1f,
  1316  	0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
  1317  	0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
  1318  	0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  1319  	0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6c, 0x75,
  1320  	0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a,
  1321  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
  1322  	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x77, 0x52, 0x0a, 0x63, 0x6c, 0x75, 0x73,
  1323  	0x74, 0x65, 0x72, 0x52, 0x6f, 0x77, 0x22, 0x45, 0x0a, 0x0a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
  1324  	0x72, 0x52, 0x6f, 0x77, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f,
  1325  	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
  1326  	0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
  1327  	0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x32, 0x5a,
  1328  	0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67,
  1329  	0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
  1330  	0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x73, 0x74, 0x61, 0x74,
  1331  	0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  1332  }
  1333  
  1334  var (
  1335  	file_state_proto_rawDescOnce sync.Once
  1336  	file_state_proto_rawDescData = file_state_proto_rawDesc
  1337  )
  1338  
  1339  func file_state_proto_rawDescGZIP() []byte {
  1340  	file_state_proto_rawDescOnce.Do(func() {
  1341  		file_state_proto_rawDescData = protoimpl.X.CompressGZIP(file_state_proto_rawDescData)
  1342  	})
  1343  	return file_state_proto_rawDescData
  1344  }
  1345  
  1346  var file_state_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
  1347  var file_state_proto_goTypes = []interface{}{
  1348  	(*Property)(nil),              // 0: testgrid.state.Property
  1349  	(*Metric)(nil),                // 1: testgrid.state.Metric
  1350  	(*UpdatePhaseData)(nil),       // 2: testgrid.state.UpdatePhaseData
  1351  	(*UpdateInfo)(nil),            // 3: testgrid.state.UpdateInfo
  1352  	(*AlertInfo)(nil),             // 4: testgrid.state.AlertInfo
  1353  	(*TestMetadata)(nil),          // 5: testgrid.state.TestMetadata
  1354  	(*Column)(nil),                // 6: testgrid.state.Column
  1355  	(*Stats)(nil),                 // 7: testgrid.state.Stats
  1356  	(*Row)(nil),                   // 8: testgrid.state.Row
  1357  	(*Grid)(nil),                  // 9: testgrid.state.Grid
  1358  	(*Cluster)(nil),               // 10: testgrid.state.Cluster
  1359  	(*ClusterRow)(nil),            // 11: testgrid.state.ClusterRow
  1360  	nil,                           // 12: testgrid.state.Property.PropertyEntry
  1361  	nil,                           // 13: testgrid.state.AlertInfo.PropertiesEntry
  1362  	nil,                           // 14: testgrid.state.AlertInfo.CustomColumnHeadersEntry
  1363  	(*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp
  1364  	(*config.TestGroup)(nil),      // 16: testgrid.config.TestGroup
  1365  }
  1366  var file_state_proto_depIdxs = []int32{
  1367  	12, // 0: testgrid.state.Property.property:type_name -> testgrid.state.Property.PropertyEntry
  1368  	2,  // 1: testgrid.state.UpdateInfo.update_phase_data:type_name -> testgrid.state.UpdatePhaseData
  1369  	15, // 2: testgrid.state.AlertInfo.fail_time:type_name -> google.protobuf.Timestamp
  1370  	15, // 3: testgrid.state.AlertInfo.pass_time:type_name -> google.protobuf.Timestamp
  1371  	13, // 4: testgrid.state.AlertInfo.properties:type_name -> testgrid.state.AlertInfo.PropertiesEntry
  1372  	14, // 5: testgrid.state.AlertInfo.custom_column_headers:type_name -> testgrid.state.AlertInfo.CustomColumnHeadersEntry
  1373  	7,  // 6: testgrid.state.Column.stats:type_name -> testgrid.state.Stats
  1374  	1,  // 7: testgrid.state.Row.metrics:type_name -> testgrid.state.Metric
  1375  	4,  // 8: testgrid.state.Row.alert_info:type_name -> testgrid.state.AlertInfo
  1376  	0,  // 9: testgrid.state.Row.properties:type_name -> testgrid.state.Property
  1377  	6,  // 10: testgrid.state.Grid.columns:type_name -> testgrid.state.Column
  1378  	8,  // 11: testgrid.state.Grid.rows:type_name -> testgrid.state.Row
  1379  	16, // 12: testgrid.state.Grid.config:type_name -> testgrid.config.TestGroup
  1380  	3,  // 13: testgrid.state.Grid.update_info:type_name -> testgrid.state.UpdateInfo
  1381  	5,  // 14: testgrid.state.Grid.test_metadata:type_name -> testgrid.state.TestMetadata
  1382  	10, // 15: testgrid.state.Grid.cluster:type_name -> testgrid.state.Cluster
  1383  	11, // 16: testgrid.state.Cluster.cluster_row:type_name -> testgrid.state.ClusterRow
  1384  	17, // [17:17] is the sub-list for method output_type
  1385  	17, // [17:17] is the sub-list for method input_type
  1386  	17, // [17:17] is the sub-list for extension type_name
  1387  	17, // [17:17] is the sub-list for extension extendee
  1388  	0,  // [0:17] is the sub-list for field type_name
  1389  }
  1390  
  1391  func init() { file_state_proto_init() }
  1392  func file_state_proto_init() {
  1393  	if File_state_proto != nil {
  1394  		return
  1395  	}
  1396  	if !protoimpl.UnsafeEnabled {
  1397  		file_state_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1398  			switch v := v.(*Property); i {
  1399  			case 0:
  1400  				return &v.state
  1401  			case 1:
  1402  				return &v.sizeCache
  1403  			case 2:
  1404  				return &v.unknownFields
  1405  			default:
  1406  				return nil
  1407  			}
  1408  		}
  1409  		file_state_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1410  			switch v := v.(*Metric); i {
  1411  			case 0:
  1412  				return &v.state
  1413  			case 1:
  1414  				return &v.sizeCache
  1415  			case 2:
  1416  				return &v.unknownFields
  1417  			default:
  1418  				return nil
  1419  			}
  1420  		}
  1421  		file_state_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1422  			switch v := v.(*UpdatePhaseData); i {
  1423  			case 0:
  1424  				return &v.state
  1425  			case 1:
  1426  				return &v.sizeCache
  1427  			case 2:
  1428  				return &v.unknownFields
  1429  			default:
  1430  				return nil
  1431  			}
  1432  		}
  1433  		file_state_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1434  			switch v := v.(*UpdateInfo); i {
  1435  			case 0:
  1436  				return &v.state
  1437  			case 1:
  1438  				return &v.sizeCache
  1439  			case 2:
  1440  				return &v.unknownFields
  1441  			default:
  1442  				return nil
  1443  			}
  1444  		}
  1445  		file_state_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1446  			switch v := v.(*AlertInfo); i {
  1447  			case 0:
  1448  				return &v.state
  1449  			case 1:
  1450  				return &v.sizeCache
  1451  			case 2:
  1452  				return &v.unknownFields
  1453  			default:
  1454  				return nil
  1455  			}
  1456  		}
  1457  		file_state_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1458  			switch v := v.(*TestMetadata); i {
  1459  			case 0:
  1460  				return &v.state
  1461  			case 1:
  1462  				return &v.sizeCache
  1463  			case 2:
  1464  				return &v.unknownFields
  1465  			default:
  1466  				return nil
  1467  			}
  1468  		}
  1469  		file_state_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1470  			switch v := v.(*Column); i {
  1471  			case 0:
  1472  				return &v.state
  1473  			case 1:
  1474  				return &v.sizeCache
  1475  			case 2:
  1476  				return &v.unknownFields
  1477  			default:
  1478  				return nil
  1479  			}
  1480  		}
  1481  		file_state_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1482  			switch v := v.(*Stats); i {
  1483  			case 0:
  1484  				return &v.state
  1485  			case 1:
  1486  				return &v.sizeCache
  1487  			case 2:
  1488  				return &v.unknownFields
  1489  			default:
  1490  				return nil
  1491  			}
  1492  		}
  1493  		file_state_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1494  			switch v := v.(*Row); i {
  1495  			case 0:
  1496  				return &v.state
  1497  			case 1:
  1498  				return &v.sizeCache
  1499  			case 2:
  1500  				return &v.unknownFields
  1501  			default:
  1502  				return nil
  1503  			}
  1504  		}
  1505  		file_state_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  1506  			switch v := v.(*Grid); i {
  1507  			case 0:
  1508  				return &v.state
  1509  			case 1:
  1510  				return &v.sizeCache
  1511  			case 2:
  1512  				return &v.unknownFields
  1513  			default:
  1514  				return nil
  1515  			}
  1516  		}
  1517  		file_state_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  1518  			switch v := v.(*Cluster); i {
  1519  			case 0:
  1520  				return &v.state
  1521  			case 1:
  1522  				return &v.sizeCache
  1523  			case 2:
  1524  				return &v.unknownFields
  1525  			default:
  1526  				return nil
  1527  			}
  1528  		}
  1529  		file_state_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  1530  			switch v := v.(*ClusterRow); i {
  1531  			case 0:
  1532  				return &v.state
  1533  			case 1:
  1534  				return &v.sizeCache
  1535  			case 2:
  1536  				return &v.unknownFields
  1537  			default:
  1538  				return nil
  1539  			}
  1540  		}
  1541  	}
  1542  	type x struct{}
  1543  	out := protoimpl.TypeBuilder{
  1544  		File: protoimpl.DescBuilder{
  1545  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1546  			RawDescriptor: file_state_proto_rawDesc,
  1547  			NumEnums:      0,
  1548  			NumMessages:   15,
  1549  			NumExtensions: 0,
  1550  			NumServices:   0,
  1551  		},
  1552  		GoTypes:           file_state_proto_goTypes,
  1553  		DependencyIndexes: file_state_proto_depIdxs,
  1554  		MessageInfos:      file_state_proto_msgTypes,
  1555  	}.Build()
  1556  	File_state_proto = out.File
  1557  	file_state_proto_rawDesc = nil
  1558  	file_state_proto_goTypes = nil
  1559  	file_state_proto_depIdxs = nil
  1560  }