github.com/GoogleCloudPlatform/testgrid@v0.0.174/pb/summary/summary.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 // Summary info for TestGrid tests, dashboard tabs, and dashboards. 18 // Stored in GCS as "dashboard-<normalized dashboard name>". 19 20 // Code generated by protoc-gen-go. DO NOT EDIT. 21 // versions: 22 // protoc-gen-go v1.28.0 23 // protoc v3.21.1 24 // source: summary.proto 25 26 package summary 27 28 import ( 29 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 30 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 31 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 32 reflect "reflect" 33 sync "sync" 34 ) 35 36 const ( 37 // Verify that this generated code is sufficiently up-to-date. 38 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 39 // Verify that runtime/protoimpl is sufficiently up-to-date. 40 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 41 ) 42 43 type TestInfo_Trend int32 44 45 const ( 46 TestInfo_UNKNOWN TestInfo_Trend = 0 47 TestInfo_NO_CHANGE TestInfo_Trend = 1 48 TestInfo_UP TestInfo_Trend = 2 49 TestInfo_DOWN TestInfo_Trend = 3 50 ) 51 52 // Enum value maps for TestInfo_Trend. 53 var ( 54 TestInfo_Trend_name = map[int32]string{ 55 0: "UNKNOWN", 56 1: "NO_CHANGE", 57 2: "UP", 58 3: "DOWN", 59 } 60 TestInfo_Trend_value = map[string]int32{ 61 "UNKNOWN": 0, 62 "NO_CHANGE": 1, 63 "UP": 2, 64 "DOWN": 3, 65 } 66 ) 67 68 func (x TestInfo_Trend) Enum() *TestInfo_Trend { 69 p := new(TestInfo_Trend) 70 *p = x 71 return p 72 } 73 74 func (x TestInfo_Trend) String() string { 75 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 76 } 77 78 func (TestInfo_Trend) Descriptor() protoreflect.EnumDescriptor { 79 return file_summary_proto_enumTypes[0].Descriptor() 80 } 81 82 func (TestInfo_Trend) Type() protoreflect.EnumType { 83 return &file_summary_proto_enumTypes[0] 84 } 85 86 func (x TestInfo_Trend) Number() protoreflect.EnumNumber { 87 return protoreflect.EnumNumber(x) 88 } 89 90 // Deprecated: Use TestInfo_Trend.Descriptor instead. 91 func (TestInfo_Trend) EnumDescriptor() ([]byte, []int) { 92 return file_summary_proto_rawDescGZIP(), []int{1, 0} 93 } 94 95 type DashboardTabSummary_TabStatus int32 96 97 const ( 98 DashboardTabSummary_NOT_SET DashboardTabSummary_TabStatus = 0 99 DashboardTabSummary_UNKNOWN DashboardTabSummary_TabStatus = 1 100 DashboardTabSummary_PASS DashboardTabSummary_TabStatus = 2 101 DashboardTabSummary_FAIL DashboardTabSummary_TabStatus = 3 102 DashboardTabSummary_FLAKY DashboardTabSummary_TabStatus = 4 103 DashboardTabSummary_STALE DashboardTabSummary_TabStatus = 5 104 DashboardTabSummary_BROKEN DashboardTabSummary_TabStatus = 6 105 DashboardTabSummary_PENDING DashboardTabSummary_TabStatus = 7 106 DashboardTabSummary_ACCEPTABLE DashboardTabSummary_TabStatus = 8 107 ) 108 109 // Enum value maps for DashboardTabSummary_TabStatus. 110 var ( 111 DashboardTabSummary_TabStatus_name = map[int32]string{ 112 0: "NOT_SET", 113 1: "UNKNOWN", 114 2: "PASS", 115 3: "FAIL", 116 4: "FLAKY", 117 5: "STALE", 118 6: "BROKEN", 119 7: "PENDING", 120 8: "ACCEPTABLE", 121 } 122 DashboardTabSummary_TabStatus_value = map[string]int32{ 123 "NOT_SET": 0, 124 "UNKNOWN": 1, 125 "PASS": 2, 126 "FAIL": 3, 127 "FLAKY": 4, 128 "STALE": 5, 129 "BROKEN": 6, 130 "PENDING": 7, 131 "ACCEPTABLE": 8, 132 } 133 ) 134 135 func (x DashboardTabSummary_TabStatus) Enum() *DashboardTabSummary_TabStatus { 136 p := new(DashboardTabSummary_TabStatus) 137 *p = x 138 return p 139 } 140 141 func (x DashboardTabSummary_TabStatus) String() string { 142 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 143 } 144 145 func (DashboardTabSummary_TabStatus) Descriptor() protoreflect.EnumDescriptor { 146 return file_summary_proto_enumTypes[1].Descriptor() 147 } 148 149 func (DashboardTabSummary_TabStatus) Type() protoreflect.EnumType { 150 return &file_summary_proto_enumTypes[1] 151 } 152 153 func (x DashboardTabSummary_TabStatus) Number() protoreflect.EnumNumber { 154 return protoreflect.EnumNumber(x) 155 } 156 157 // Deprecated: Use DashboardTabSummary_TabStatus.Descriptor instead. 158 func (DashboardTabSummary_TabStatus) EnumDescriptor() ([]byte, []int) { 159 return file_summary_proto_rawDescGZIP(), []int{4, 0} 160 } 161 162 // Summary of a failing test. 163 type FailingTestSummary struct { 164 state protoimpl.MessageState 165 sizeCache protoimpl.SizeCache 166 unknownFields protoimpl.UnknownFields 167 168 // Display name of the test. 169 DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 170 // Name of the test. E.g., the target for tests in Sponge. 171 TestName string `protobuf:"bytes,2,opt,name=test_name,json=testName,proto3" json:"test_name,omitempty"` 172 // First build ID at which the test failed. 173 FailBuildId string `protobuf:"bytes,3,opt,name=fail_build_id,json=failBuildId,proto3" json:"fail_build_id,omitempty"` 174 // Timestamp for the first cycle in which the test failed. 175 FailTimestamp float64 `protobuf:"fixed64,4,opt,name=fail_timestamp,json=failTimestamp,proto3" json:"fail_timestamp,omitempty"` 176 // Last build ID at which the test passed. 177 PassBuildId string `protobuf:"bytes,5,opt,name=pass_build_id,json=passBuildId,proto3" json:"pass_build_id,omitempty"` 178 // Timestamp for the last cycle in which the test passed. 179 PassTimestamp float64 `protobuf:"fixed64,6,opt,name=pass_timestamp,json=passTimestamp,proto3" json:"pass_timestamp,omitempty"` 180 // Number of times the test has failed. 181 FailCount int32 `protobuf:"varint,7,opt,name=fail_count,json=failCount,proto3" json:"fail_count,omitempty"` 182 // Link to search for build changes. 183 BuildLink string `protobuf:"bytes,8,opt,name=build_link,json=buildLink,proto3" json:"build_link,omitempty"` 184 // Text for option to search for build changes. 185 BuildLinkText string `protobuf:"bytes,9,opt,name=build_link_text,json=buildLinkText,proto3" json:"build_link_text,omitempty"` 186 // Text to display for link to search for build changes. 187 BuildUrlText string `protobuf:"bytes,10,opt,name=build_url_text,json=buildUrlText,proto3" json:"build_url_text,omitempty"` 188 // Text for failure statuses associated with this test. 189 FailureMessage string `protobuf:"bytes,11,opt,name=failure_message,json=failureMessage,proto3" json:"failure_message,omitempty"` 190 // List of bug IDs for bugs associated with this test. 191 LinkedBugs []string `protobuf:"bytes,12,rep,name=linked_bugs,json=linkedBugs,proto3" json:"linked_bugs,omitempty"` 192 // A link to the first build in which the test failed. 193 FailTestLink string `protobuf:"bytes,13,opt,name=fail_test_link,json=failTestLink,proto3" json:"fail_test_link,omitempty"` 194 // A link to the latest build in which the test failed. 195 LatestFailTestLink string `protobuf:"bytes,17,opt,name=latest_fail_test_link,json=latestFailTestLink,proto3" json:"latest_fail_test_link,omitempty"` 196 // The test ID for the latest test failure. (Does not indicate the failure is 197 // 'over', just the latest test failure we found.) 198 LatestFailBuildId string `protobuf:"bytes,14,opt,name=latest_fail_build_id,json=latestFailBuildId,proto3" json:"latest_fail_build_id,omitempty"` 199 // Maps (property name):(property value) for arbitrary alert properties. 200 Properties map[string]string `protobuf:"bytes,15,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 201 // A list of IDs for issue hotlists related to this failure. 202 HotlistIds []string `protobuf:"bytes,16,rep,name=hotlist_ids,json=hotlistIds,proto3" json:"hotlist_ids,omitempty"` 203 // Dynamic email list, route email alerts to these instead of the configured 204 // defaults. 205 EmailAddresses []string `protobuf:"bytes,18,rep,name=email_addresses,json=emailAddresses,proto3" json:"email_addresses,omitempty"` 206 // map of custom column headers 207 CustomColumnHeaders map[string]string `protobuf:"bytes,19,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"` 208 } 209 210 func (x *FailingTestSummary) Reset() { 211 *x = FailingTestSummary{} 212 if protoimpl.UnsafeEnabled { 213 mi := &file_summary_proto_msgTypes[0] 214 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 215 ms.StoreMessageInfo(mi) 216 } 217 } 218 219 func (x *FailingTestSummary) String() string { 220 return protoimpl.X.MessageStringOf(x) 221 } 222 223 func (*FailingTestSummary) ProtoMessage() {} 224 225 func (x *FailingTestSummary) ProtoReflect() protoreflect.Message { 226 mi := &file_summary_proto_msgTypes[0] 227 if protoimpl.UnsafeEnabled && x != nil { 228 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 229 if ms.LoadMessageInfo() == nil { 230 ms.StoreMessageInfo(mi) 231 } 232 return ms 233 } 234 return mi.MessageOf(x) 235 } 236 237 // Deprecated: Use FailingTestSummary.ProtoReflect.Descriptor instead. 238 func (*FailingTestSummary) Descriptor() ([]byte, []int) { 239 return file_summary_proto_rawDescGZIP(), []int{0} 240 } 241 242 func (x *FailingTestSummary) GetDisplayName() string { 243 if x != nil { 244 return x.DisplayName 245 } 246 return "" 247 } 248 249 func (x *FailingTestSummary) GetTestName() string { 250 if x != nil { 251 return x.TestName 252 } 253 return "" 254 } 255 256 func (x *FailingTestSummary) GetFailBuildId() string { 257 if x != nil { 258 return x.FailBuildId 259 } 260 return "" 261 } 262 263 func (x *FailingTestSummary) GetFailTimestamp() float64 { 264 if x != nil { 265 return x.FailTimestamp 266 } 267 return 0 268 } 269 270 func (x *FailingTestSummary) GetPassBuildId() string { 271 if x != nil { 272 return x.PassBuildId 273 } 274 return "" 275 } 276 277 func (x *FailingTestSummary) GetPassTimestamp() float64 { 278 if x != nil { 279 return x.PassTimestamp 280 } 281 return 0 282 } 283 284 func (x *FailingTestSummary) GetFailCount() int32 { 285 if x != nil { 286 return x.FailCount 287 } 288 return 0 289 } 290 291 func (x *FailingTestSummary) GetBuildLink() string { 292 if x != nil { 293 return x.BuildLink 294 } 295 return "" 296 } 297 298 func (x *FailingTestSummary) GetBuildLinkText() string { 299 if x != nil { 300 return x.BuildLinkText 301 } 302 return "" 303 } 304 305 func (x *FailingTestSummary) GetBuildUrlText() string { 306 if x != nil { 307 return x.BuildUrlText 308 } 309 return "" 310 } 311 312 func (x *FailingTestSummary) GetFailureMessage() string { 313 if x != nil { 314 return x.FailureMessage 315 } 316 return "" 317 } 318 319 func (x *FailingTestSummary) GetLinkedBugs() []string { 320 if x != nil { 321 return x.LinkedBugs 322 } 323 return nil 324 } 325 326 func (x *FailingTestSummary) GetFailTestLink() string { 327 if x != nil { 328 return x.FailTestLink 329 } 330 return "" 331 } 332 333 func (x *FailingTestSummary) GetLatestFailTestLink() string { 334 if x != nil { 335 return x.LatestFailTestLink 336 } 337 return "" 338 } 339 340 func (x *FailingTestSummary) GetLatestFailBuildId() string { 341 if x != nil { 342 return x.LatestFailBuildId 343 } 344 return "" 345 } 346 347 func (x *FailingTestSummary) GetProperties() map[string]string { 348 if x != nil { 349 return x.Properties 350 } 351 return nil 352 } 353 354 func (x *FailingTestSummary) GetHotlistIds() []string { 355 if x != nil { 356 return x.HotlistIds 357 } 358 return nil 359 } 360 361 func (x *FailingTestSummary) GetEmailAddresses() []string { 362 if x != nil { 363 return x.EmailAddresses 364 } 365 return nil 366 } 367 368 func (x *FailingTestSummary) GetCustomColumnHeaders() map[string]string { 369 if x != nil { 370 return x.CustomColumnHeaders 371 } 372 return nil 373 } 374 375 // Metrics about a specific test, i.e. passes, fails, total runs, etc. 376 // Next ID: 12 377 type TestInfo struct { 378 state protoimpl.MessageState 379 sizeCache protoimpl.SizeCache 380 unknownFields protoimpl.UnknownFields 381 382 // The display name of the test, typically what is shown for each row in 383 // TestGrid 384 DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 385 // The total number of test runs not including runs failed due to 386 // infrastructure failures. 387 TotalNonInfraRuns int32 `protobuf:"varint,2,opt,name=total_non_infra_runs,json=totalNonInfraRuns,proto3" json:"total_non_infra_runs,omitempty"` 388 // The number of passed test runs not including runs failed due to 389 // infrastructure failures. 390 PassedNonInfraRuns int32 `protobuf:"varint,3,opt,name=passed_non_infra_runs,json=passedNonInfraRuns,proto3" json:"passed_non_infra_runs,omitempty"` 391 // The number of failed test runs not including runs failed due to 392 // infrastructure failures. 393 FailedNonInfraRuns int32 `protobuf:"varint,4,opt,name=failed_non_infra_runs,json=failedNonInfraRuns,proto3" json:"failed_non_infra_runs,omitempty"` 394 // The number of failed test runs specifically due to infrastructure 395 // failures. 396 FailedInfraRuns int32 `protobuf:"varint,5,opt,name=failed_infra_runs,json=failedInfraRuns,proto3" json:"failed_infra_runs,omitempty"` 397 // The total number of all runs, including failures due to infrastructure 398 TotalRunsWithInfra int32 `protobuf:"varint,6,opt,name=total_runs_with_infra,json=totalRunsWithInfra,proto3" json:"total_runs_with_infra,omitempty"` 399 // Any other type of runs not included above. 400 OtherRuns int32 `protobuf:"varint,7,opt,name=other_runs,json=otherRuns,proto3" json:"other_runs,omitempty"` 401 // The flakiness of the test, measured out of 100 402 Flakiness float32 `protobuf:"fixed32,8,opt,name=flakiness,proto3" json:"flakiness,omitempty"` 403 // The flakiness of the test from previous intervals 404 PreviousFlakiness []float32 `protobuf:"fixed32,10,rep,packed,name=previous_flakiness,json=previousFlakiness,proto3" json:"previous_flakiness,omitempty"` 405 // The change of flakiness based on the last interval's flakiness 406 // e.g. if last interval the flakiness was 50, and now it's 75, the 407 // trend is UP. A trend of NO_CHANGE means last week and this week were 408 // exactly the same. The interval is set by each tab's config, with 409 // a default of 7 days. 410 ChangeFromLastInterval TestInfo_Trend `protobuf:"varint,9,opt,name=change_from_last_interval,json=changeFromLastInterval,proto3,enum=testgrid.summary.TestInfo_Trend" json:"change_from_last_interval,omitempty"` 411 // A map of infra failure name to the count of that failure for the interval. 412 InfraFailures map[string]int32 `protobuf:"bytes,11,rep,name=infra_failures,json=infraFailures,proto3" json:"infra_failures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` 413 } 414 415 func (x *TestInfo) Reset() { 416 *x = TestInfo{} 417 if protoimpl.UnsafeEnabled { 418 mi := &file_summary_proto_msgTypes[1] 419 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 420 ms.StoreMessageInfo(mi) 421 } 422 } 423 424 func (x *TestInfo) String() string { 425 return protoimpl.X.MessageStringOf(x) 426 } 427 428 func (*TestInfo) ProtoMessage() {} 429 430 func (x *TestInfo) ProtoReflect() protoreflect.Message { 431 mi := &file_summary_proto_msgTypes[1] 432 if protoimpl.UnsafeEnabled && x != nil { 433 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 434 if ms.LoadMessageInfo() == nil { 435 ms.StoreMessageInfo(mi) 436 } 437 return ms 438 } 439 return mi.MessageOf(x) 440 } 441 442 // Deprecated: Use TestInfo.ProtoReflect.Descriptor instead. 443 func (*TestInfo) Descriptor() ([]byte, []int) { 444 return file_summary_proto_rawDescGZIP(), []int{1} 445 } 446 447 func (x *TestInfo) GetDisplayName() string { 448 if x != nil { 449 return x.DisplayName 450 } 451 return "" 452 } 453 454 func (x *TestInfo) GetTotalNonInfraRuns() int32 { 455 if x != nil { 456 return x.TotalNonInfraRuns 457 } 458 return 0 459 } 460 461 func (x *TestInfo) GetPassedNonInfraRuns() int32 { 462 if x != nil { 463 return x.PassedNonInfraRuns 464 } 465 return 0 466 } 467 468 func (x *TestInfo) GetFailedNonInfraRuns() int32 { 469 if x != nil { 470 return x.FailedNonInfraRuns 471 } 472 return 0 473 } 474 475 func (x *TestInfo) GetFailedInfraRuns() int32 { 476 if x != nil { 477 return x.FailedInfraRuns 478 } 479 return 0 480 } 481 482 func (x *TestInfo) GetTotalRunsWithInfra() int32 { 483 if x != nil { 484 return x.TotalRunsWithInfra 485 } 486 return 0 487 } 488 489 func (x *TestInfo) GetOtherRuns() int32 { 490 if x != nil { 491 return x.OtherRuns 492 } 493 return 0 494 } 495 496 func (x *TestInfo) GetFlakiness() float32 { 497 if x != nil { 498 return x.Flakiness 499 } 500 return 0 501 } 502 503 func (x *TestInfo) GetPreviousFlakiness() []float32 { 504 if x != nil { 505 return x.PreviousFlakiness 506 } 507 return nil 508 } 509 510 func (x *TestInfo) GetChangeFromLastInterval() TestInfo_Trend { 511 if x != nil { 512 return x.ChangeFromLastInterval 513 } 514 return TestInfo_UNKNOWN 515 } 516 517 func (x *TestInfo) GetInfraFailures() map[string]int32 { 518 if x != nil { 519 return x.InfraFailures 520 } 521 return nil 522 } 523 524 // Summary of the flakiness and overall healthiness of a dashboard tab 525 type HealthinessInfo struct { 526 state protoimpl.MessageState 527 sizeCache protoimpl.SizeCache 528 unknownFields protoimpl.UnknownFields 529 530 // The start of the time frame that the analysis was run for. 531 // Represents the lower bound but does not guarantee that the earliest 532 // test occurred at start 533 Start *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"` 534 // The end of the time frame that the analysis was run for. 535 // Same caveat as above but for upper bound. 536 End *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"` 537 // A list of test entries associated with this tab + timeframe. 538 Tests []*TestInfo `protobuf:"bytes,3,rep,name=tests,proto3" json:"tests,omitempty"` 539 // The flakiness out of 100 (think percentage but drop the sign) 540 AverageFlakiness float32 `protobuf:"fixed32,4,opt,name=average_flakiness,json=averageFlakiness,proto3" json:"average_flakiness,omitempty"` 541 // The average flakiness for previous intervals 542 PreviousFlakiness []float32 `protobuf:"fixed32,5,rep,packed,name=previous_flakiness,json=previousFlakiness,proto3" json:"previous_flakiness,omitempty"` 543 } 544 545 func (x *HealthinessInfo) Reset() { 546 *x = HealthinessInfo{} 547 if protoimpl.UnsafeEnabled { 548 mi := &file_summary_proto_msgTypes[2] 549 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 550 ms.StoreMessageInfo(mi) 551 } 552 } 553 554 func (x *HealthinessInfo) String() string { 555 return protoimpl.X.MessageStringOf(x) 556 } 557 558 func (*HealthinessInfo) ProtoMessage() {} 559 560 func (x *HealthinessInfo) ProtoReflect() protoreflect.Message { 561 mi := &file_summary_proto_msgTypes[2] 562 if protoimpl.UnsafeEnabled && x != nil { 563 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 564 if ms.LoadMessageInfo() == nil { 565 ms.StoreMessageInfo(mi) 566 } 567 return ms 568 } 569 return mi.MessageOf(x) 570 } 571 572 // Deprecated: Use HealthinessInfo.ProtoReflect.Descriptor instead. 573 func (*HealthinessInfo) Descriptor() ([]byte, []int) { 574 return file_summary_proto_rawDescGZIP(), []int{2} 575 } 576 577 func (x *HealthinessInfo) GetStart() *timestamppb.Timestamp { 578 if x != nil { 579 return x.Start 580 } 581 return nil 582 } 583 584 func (x *HealthinessInfo) GetEnd() *timestamppb.Timestamp { 585 if x != nil { 586 return x.End 587 } 588 return nil 589 } 590 591 func (x *HealthinessInfo) GetTests() []*TestInfo { 592 if x != nil { 593 return x.Tests 594 } 595 return nil 596 } 597 598 func (x *HealthinessInfo) GetAverageFlakiness() float32 { 599 if x != nil { 600 return x.AverageFlakiness 601 } 602 return 0 603 } 604 605 func (x *HealthinessInfo) GetPreviousFlakiness() []float32 { 606 if x != nil { 607 return x.PreviousFlakiness 608 } 609 return nil 610 } 611 612 // Information about alerts that have been sent 613 type AlertingData struct { 614 state protoimpl.MessageState 615 sizeCache protoimpl.SizeCache 616 unknownFields protoimpl.UnknownFields 617 618 // Seconds since epoch at which an email was last sent 619 LastEmailTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=last_email_time,json=lastEmailTime,proto3" json:"last_email_time,omitempty"` 620 } 621 622 func (x *AlertingData) Reset() { 623 *x = AlertingData{} 624 if protoimpl.UnsafeEnabled { 625 mi := &file_summary_proto_msgTypes[3] 626 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 627 ms.StoreMessageInfo(mi) 628 } 629 } 630 631 func (x *AlertingData) String() string { 632 return protoimpl.X.MessageStringOf(x) 633 } 634 635 func (*AlertingData) ProtoMessage() {} 636 637 func (x *AlertingData) ProtoReflect() protoreflect.Message { 638 mi := &file_summary_proto_msgTypes[3] 639 if protoimpl.UnsafeEnabled && x != nil { 640 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 641 if ms.LoadMessageInfo() == nil { 642 ms.StoreMessageInfo(mi) 643 } 644 return ms 645 } 646 return mi.MessageOf(x) 647 } 648 649 // Deprecated: Use AlertingData.ProtoReflect.Descriptor instead. 650 func (*AlertingData) Descriptor() ([]byte, []int) { 651 return file_summary_proto_rawDescGZIP(), []int{3} 652 } 653 654 func (x *AlertingData) GetLastEmailTime() *timestamppb.Timestamp { 655 if x != nil { 656 return x.LastEmailTime 657 } 658 return nil 659 } 660 661 // Summary of a dashboard tab. 662 type DashboardTabSummary struct { 663 state protoimpl.MessageState 664 sizeCache protoimpl.SizeCache 665 unknownFields protoimpl.UnknownFields 666 667 // The name of the dashboard. 668 DashboardName string `protobuf:"bytes,1,opt,name=dashboard_name,json=dashboardName,proto3" json:"dashboard_name,omitempty"` 669 // The name of the dashboard tab. 670 DashboardTabName string `protobuf:"bytes,2,opt,name=dashboard_tab_name,json=dashboardTabName,proto3" json:"dashboard_tab_name,omitempty"` 671 // Any top-level alert on this dashboard tab. 672 Alert string `protobuf:"bytes,3,opt,name=alert,proto3" json:"alert,omitempty"` 673 // List of failing test summary information. 674 FailingTestSummaries []*FailingTestSummary `protobuf:"bytes,4,rep,name=failing_test_summaries,json=failingTestSummaries,proto3" json:"failing_test_summaries,omitempty"` 675 // Seconds since epoch at which the test group was last updated. 676 LastUpdateTimestamp float64 `protobuf:"fixed64,5,opt,name=last_update_timestamp,json=lastUpdateTimestamp,proto3" json:"last_update_timestamp,omitempty"` 677 // A summary of the status of this dashboard tab. 678 Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` 679 // The overall status for this dashboard tab. 680 OverallStatus DashboardTabSummary_TabStatus `protobuf:"varint,7,opt,name=overall_status,json=overallStatus,proto3,enum=testgrid.summary.DashboardTabSummary_TabStatus" json:"overall_status,omitempty"` 681 // The ID for the latest passing build. 682 LatestGreen string `protobuf:"bytes,8,opt,name=latest_green,json=latestGreen,proto3" json:"latest_green,omitempty"` 683 // Seconds since epoch at which tests last ran. 684 LastRunTimestamp float64 `protobuf:"fixed64,9,opt,name=last_run_timestamp,json=lastRunTimestamp,proto3" json:"last_run_timestamp,omitempty"` 685 // String indicating the URL for linking to a bug. 686 BugUrl string `protobuf:"bytes,10,opt,name=bug_url,json=bugUrl,proto3" json:"bug_url,omitempty"` 687 // Metrics for the recent healthiness of a tab 688 Healthiness *HealthinessInfo `protobuf:"bytes,12,opt,name=healthiness,proto3" json:"healthiness,omitempty"` 689 // All the issue IDs linked to this tab. 690 LinkedIssues []string `protobuf:"bytes,13,rep,name=linked_issues,json=linkedIssues,proto3" json:"linked_issues,omitempty"` 691 // Metrics about alerts sent with respect to this summary 692 // Maintained by alerter; does not need to be populated by summarizer 693 AlertingData *AlertingData `protobuf:"bytes,14,opt,name=alerting_data,json=alertingData,proto3" json:"alerting_data,omitempty"` 694 // DEPRECATED: now part of the TabStatus. 695 // 696 // Deprecated: Do not use. 697 AcceptablyFlaky bool `protobuf:"varint,15,opt,name=acceptably_flaky,json=acceptablyFlaky,proto3" json:"acceptably_flaky,omitempty"` 698 // Additional metrics provided for the dashboard tab 699 SummaryMetrics *DashboardTabSummaryMetrics `protobuf:"bytes,16,opt,name=summary_metrics,json=summaryMetrics,proto3" json:"summary_metrics,omitempty"` 700 } 701 702 func (x *DashboardTabSummary) Reset() { 703 *x = DashboardTabSummary{} 704 if protoimpl.UnsafeEnabled { 705 mi := &file_summary_proto_msgTypes[4] 706 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 707 ms.StoreMessageInfo(mi) 708 } 709 } 710 711 func (x *DashboardTabSummary) String() string { 712 return protoimpl.X.MessageStringOf(x) 713 } 714 715 func (*DashboardTabSummary) ProtoMessage() {} 716 717 func (x *DashboardTabSummary) ProtoReflect() protoreflect.Message { 718 mi := &file_summary_proto_msgTypes[4] 719 if protoimpl.UnsafeEnabled && x != nil { 720 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 721 if ms.LoadMessageInfo() == nil { 722 ms.StoreMessageInfo(mi) 723 } 724 return ms 725 } 726 return mi.MessageOf(x) 727 } 728 729 // Deprecated: Use DashboardTabSummary.ProtoReflect.Descriptor instead. 730 func (*DashboardTabSummary) Descriptor() ([]byte, []int) { 731 return file_summary_proto_rawDescGZIP(), []int{4} 732 } 733 734 func (x *DashboardTabSummary) GetDashboardName() string { 735 if x != nil { 736 return x.DashboardName 737 } 738 return "" 739 } 740 741 func (x *DashboardTabSummary) GetDashboardTabName() string { 742 if x != nil { 743 return x.DashboardTabName 744 } 745 return "" 746 } 747 748 func (x *DashboardTabSummary) GetAlert() string { 749 if x != nil { 750 return x.Alert 751 } 752 return "" 753 } 754 755 func (x *DashboardTabSummary) GetFailingTestSummaries() []*FailingTestSummary { 756 if x != nil { 757 return x.FailingTestSummaries 758 } 759 return nil 760 } 761 762 func (x *DashboardTabSummary) GetLastUpdateTimestamp() float64 { 763 if x != nil { 764 return x.LastUpdateTimestamp 765 } 766 return 0 767 } 768 769 func (x *DashboardTabSummary) GetStatus() string { 770 if x != nil { 771 return x.Status 772 } 773 return "" 774 } 775 776 func (x *DashboardTabSummary) GetOverallStatus() DashboardTabSummary_TabStatus { 777 if x != nil { 778 return x.OverallStatus 779 } 780 return DashboardTabSummary_NOT_SET 781 } 782 783 func (x *DashboardTabSummary) GetLatestGreen() string { 784 if x != nil { 785 return x.LatestGreen 786 } 787 return "" 788 } 789 790 func (x *DashboardTabSummary) GetLastRunTimestamp() float64 { 791 if x != nil { 792 return x.LastRunTimestamp 793 } 794 return 0 795 } 796 797 func (x *DashboardTabSummary) GetBugUrl() string { 798 if x != nil { 799 return x.BugUrl 800 } 801 return "" 802 } 803 804 func (x *DashboardTabSummary) GetHealthiness() *HealthinessInfo { 805 if x != nil { 806 return x.Healthiness 807 } 808 return nil 809 } 810 811 func (x *DashboardTabSummary) GetLinkedIssues() []string { 812 if x != nil { 813 return x.LinkedIssues 814 } 815 return nil 816 } 817 818 func (x *DashboardTabSummary) GetAlertingData() *AlertingData { 819 if x != nil { 820 return x.AlertingData 821 } 822 return nil 823 } 824 825 // Deprecated: Do not use. 826 func (x *DashboardTabSummary) GetAcceptablyFlaky() bool { 827 if x != nil { 828 return x.AcceptablyFlaky 829 } 830 return false 831 } 832 833 func (x *DashboardTabSummary) GetSummaryMetrics() *DashboardTabSummaryMetrics { 834 if x != nil { 835 return x.SummaryMetrics 836 } 837 return nil 838 } 839 840 // Most recent summary metrics for the tab calculated over columns (not individual tests) 841 type DashboardTabSummaryMetrics struct { 842 state protoimpl.MessageState 843 sizeCache protoimpl.SizeCache 844 unknownFields protoimpl.UnknownFields 845 846 // Number of total columns analyzed by summarizer 847 CompletedColumns int32 `protobuf:"varint,1,opt,name=completed_columns,json=completedColumns,proto3" json:"completed_columns,omitempty"` 848 // Number of columns with all tests passing 849 PassingColumns int32 `protobuf:"varint,2,opt,name=passing_columns,json=passingColumns,proto3" json:"passing_columns,omitempty"` 850 // Number of ignored columns 851 IgnoredColumns int32 `protobuf:"varint,3,opt,name=ignored_columns,json=ignoredColumns,proto3" json:"ignored_columns,omitempty"` 852 } 853 854 func (x *DashboardTabSummaryMetrics) Reset() { 855 *x = DashboardTabSummaryMetrics{} 856 if protoimpl.UnsafeEnabled { 857 mi := &file_summary_proto_msgTypes[5] 858 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 859 ms.StoreMessageInfo(mi) 860 } 861 } 862 863 func (x *DashboardTabSummaryMetrics) String() string { 864 return protoimpl.X.MessageStringOf(x) 865 } 866 867 func (*DashboardTabSummaryMetrics) ProtoMessage() {} 868 869 func (x *DashboardTabSummaryMetrics) ProtoReflect() protoreflect.Message { 870 mi := &file_summary_proto_msgTypes[5] 871 if protoimpl.UnsafeEnabled && x != nil { 872 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 873 if ms.LoadMessageInfo() == nil { 874 ms.StoreMessageInfo(mi) 875 } 876 return ms 877 } 878 return mi.MessageOf(x) 879 } 880 881 // Deprecated: Use DashboardTabSummaryMetrics.ProtoReflect.Descriptor instead. 882 func (*DashboardTabSummaryMetrics) Descriptor() ([]byte, []int) { 883 return file_summary_proto_rawDescGZIP(), []int{5} 884 } 885 886 func (x *DashboardTabSummaryMetrics) GetCompletedColumns() int32 { 887 if x != nil { 888 return x.CompletedColumns 889 } 890 return 0 891 } 892 893 func (x *DashboardTabSummaryMetrics) GetPassingColumns() int32 { 894 if x != nil { 895 return x.PassingColumns 896 } 897 return 0 898 } 899 900 func (x *DashboardTabSummaryMetrics) GetIgnoredColumns() int32 { 901 if x != nil { 902 return x.IgnoredColumns 903 } 904 return 0 905 } 906 907 // Summary state of a dashboard. 908 type DashboardSummary struct { 909 state protoimpl.MessageState 910 sizeCache protoimpl.SizeCache 911 unknownFields protoimpl.UnknownFields 912 913 // Summary of a dashboard tab; see config.proto. 914 TabSummaries []*DashboardTabSummary `protobuf:"bytes,1,rep,name=tab_summaries,json=tabSummaries,proto3" json:"tab_summaries,omitempty"` 915 } 916 917 func (x *DashboardSummary) Reset() { 918 *x = DashboardSummary{} 919 if protoimpl.UnsafeEnabled { 920 mi := &file_summary_proto_msgTypes[6] 921 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 922 ms.StoreMessageInfo(mi) 923 } 924 } 925 926 func (x *DashboardSummary) String() string { 927 return protoimpl.X.MessageStringOf(x) 928 } 929 930 func (*DashboardSummary) ProtoMessage() {} 931 932 func (x *DashboardSummary) ProtoReflect() protoreflect.Message { 933 mi := &file_summary_proto_msgTypes[6] 934 if protoimpl.UnsafeEnabled && x != nil { 935 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 936 if ms.LoadMessageInfo() == nil { 937 ms.StoreMessageInfo(mi) 938 } 939 return ms 940 } 941 return mi.MessageOf(x) 942 } 943 944 // Deprecated: Use DashboardSummary.ProtoReflect.Descriptor instead. 945 func (*DashboardSummary) Descriptor() ([]byte, []int) { 946 return file_summary_proto_rawDescGZIP(), []int{6} 947 } 948 949 func (x *DashboardSummary) GetTabSummaries() []*DashboardTabSummary { 950 if x != nil { 951 return x.TabSummaries 952 } 953 return nil 954 } 955 956 var File_summary_proto protoreflect.FileDescriptor 957 958 var file_summary_proto_rawDesc = []byte{ 959 0x0a, 0x0d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 960 0x10, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 961 0x79, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 962 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 963 0x74, 0x6f, 0x22, 0xe4, 0x07, 0x0a, 0x12, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 964 0x73, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 965 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 966 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 967 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 968 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x61, 0x69, 969 0x6c, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 970 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 971 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 972 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 973 0x74, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x69, 974 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73, 975 0x73, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x73, 0x73, 976 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 977 0x52, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 978 0x1d, 0x0a, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 979 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 980 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, 981 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x26, 0x0a, 982 0x0f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 983 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 984 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x75, 985 0x72, 0x6c, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 986 0x75, 0x69, 0x6c, 0x64, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 987 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 988 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x73, 989 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x62, 990 0x75, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 991 0x64, 0x42, 0x75, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x65, 992 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 993 0x61, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x31, 0x0a, 0x15, 0x6c, 994 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 995 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 996 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2f, 997 0x0a, 0x14, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x62, 0x75, 998 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 999 0x74, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 1000 0x54, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0f, 0x20, 1001 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 1002 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 1003 0x73, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 1004 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 1005 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 1006 0x5f, 0x69, 0x64, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x6c, 1007 0x69, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 1008 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 1009 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 1010 0x71, 0x0a, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 1011 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 1012 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 1013 0x79, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x6d, 1014 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 1015 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x63, 1016 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 1017 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 1018 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 1019 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 1020 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 1021 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 1022 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 1023 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 1024 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 1025 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbb, 0x05, 0x0a, 0x08, 0x54, 0x65, 1026 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 1027 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 1028 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x74, 0x6f, 0x74, 1029 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x5f, 0x72, 0x75, 0x6e, 1030 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 1031 0x6e, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x70, 0x61, 1032 0x73, 0x73, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x5f, 0x72, 1033 0x75, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x61, 0x73, 0x73, 0x65, 1034 0x64, 0x4e, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x31, 0x0a, 1035 0x15, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x72, 1036 0x61, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x66, 0x61, 1037 0x69, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73, 1038 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 1039 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, 0x69, 1040 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x15, 1041 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 1042 0x69, 0x6e, 0x66, 0x72, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x74, 0x6f, 0x74, 1043 0x61, 0x6c, 0x52, 0x75, 0x6e, 0x73, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x12, 1044 0x1d, 0x0a, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x07, 0x20, 1045 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x1c, 1046 0x0a, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 1047 0x02, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 1048 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 1049 0x73, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x02, 0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 1050 0x75, 0x73, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x5b, 0x0a, 0x19, 0x63, 1051 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 1052 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 1053 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 1054 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x72, 0x65, 0x6e, 0x64, 1055 0x52, 0x16, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 1056 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x54, 0x0a, 0x0e, 0x69, 0x6e, 0x66, 0x72, 1057 0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 1058 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 1059 0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x49, 0x6e, 0x66, 1060 0x72, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 1061 0x0d, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x40, 1062 0x0a, 0x12, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x45, 1063 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 1064 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 1065 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 1066 0x22, 0x35, 0x0a, 0x05, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 1067 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x43, 0x48, 0x41, 1068 0x4e, 0x47, 0x45, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x50, 0x10, 0x02, 0x12, 0x08, 0x0a, 1069 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x22, 0xff, 0x01, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x6c, 1070 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x05, 0x73, 1071 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 1072 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 1073 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 1074 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 1075 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 1076 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x74, 1077 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x65, 0x73, 1078 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 1079 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2b, 0x0a, 1080 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 1081 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 1082 0x65, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 1083 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 1084 0x18, 0x05, 0x20, 0x03, 0x28, 0x02, 0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 1085 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x52, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 1086 0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 1087 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 1088 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 1089 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 1090 0x6c, 0x61, 0x73, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9f, 0x07, 1091 0x0a, 0x13, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x53, 0x75, 1092 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 1093 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 1094 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 1095 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x5f, 0x6e, 0x61, 1096 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 1097 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 1098 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 1099 0x12, 0x5a, 0x0a, 0x16, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, 1100 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 1101 0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 1102 0x61, 0x72, 0x79, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x53, 1103 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x14, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 1104 0x65, 0x73, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 1105 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 1106 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x6c, 0x61, 0x73, 1107 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 1108 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 1109 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 1110 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 1111 0x32, 0x2f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 1112 0x61, 0x72, 0x79, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 1113 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 1114 0x73, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 1115 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 1116 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 1117 0x65, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 1118 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 1119 0x10, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 1120 0x70, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x75, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 1121 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x68, 0x65, 1122 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 1123 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 1124 0x72, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 1125 0x66, 0x6f, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 1126 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 1127 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x73, 1128 0x73, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 1129 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, 1130 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x41, 1131 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x61, 0x6c, 0x65, 1132 0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x63, 0x63, 1133 0x65, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x79, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x18, 0x0f, 0x20, 1134 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 1135 0x62, 0x6c, 0x79, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x12, 0x55, 0x0a, 0x0f, 0x73, 0x75, 0x6d, 0x6d, 1136 0x61, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 1137 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 1138 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 1139 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 1140 0x0e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 1141 0x78, 0x0a, 0x09, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 1142 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 1143 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x02, 1144 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 1145 0x41, 0x4b, 0x59, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x05, 1146 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x52, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 1147 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x43, 0x43, 1148 0x45, 0x50, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, 1149 0x9b, 0x01, 0x0a, 0x1a, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 1150 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2b, 1151 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 1152 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 1153 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 1154 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 1155 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 1156 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 1157 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 1158 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x5e, 0x0a, 1159 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 1160 0x79, 0x12, 0x4a, 0x0a, 0x0d, 0x74, 0x61, 0x62, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 1161 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 1162 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x44, 0x61, 0x73, 0x68, 1163 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 1164 0x0c, 0x74, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x34, 0x5a, 1165 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 1166 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 1167 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x73, 0x75, 0x6d, 0x6d, 1168 0x61, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 1169 } 1170 1171 var ( 1172 file_summary_proto_rawDescOnce sync.Once 1173 file_summary_proto_rawDescData = file_summary_proto_rawDesc 1174 ) 1175 1176 func file_summary_proto_rawDescGZIP() []byte { 1177 file_summary_proto_rawDescOnce.Do(func() { 1178 file_summary_proto_rawDescData = protoimpl.X.CompressGZIP(file_summary_proto_rawDescData) 1179 }) 1180 return file_summary_proto_rawDescData 1181 } 1182 1183 var file_summary_proto_enumTypes = make([]protoimpl.EnumInfo, 2) 1184 var file_summary_proto_msgTypes = make([]protoimpl.MessageInfo, 10) 1185 var file_summary_proto_goTypes = []interface{}{ 1186 (TestInfo_Trend)(0), // 0: testgrid.summary.TestInfo.Trend 1187 (DashboardTabSummary_TabStatus)(0), // 1: testgrid.summary.DashboardTabSummary.TabStatus 1188 (*FailingTestSummary)(nil), // 2: testgrid.summary.FailingTestSummary 1189 (*TestInfo)(nil), // 3: testgrid.summary.TestInfo 1190 (*HealthinessInfo)(nil), // 4: testgrid.summary.HealthinessInfo 1191 (*AlertingData)(nil), // 5: testgrid.summary.AlertingData 1192 (*DashboardTabSummary)(nil), // 6: testgrid.summary.DashboardTabSummary 1193 (*DashboardTabSummaryMetrics)(nil), // 7: testgrid.summary.DashboardTabSummaryMetrics 1194 (*DashboardSummary)(nil), // 8: testgrid.summary.DashboardSummary 1195 nil, // 9: testgrid.summary.FailingTestSummary.PropertiesEntry 1196 nil, // 10: testgrid.summary.FailingTestSummary.CustomColumnHeadersEntry 1197 nil, // 11: testgrid.summary.TestInfo.InfraFailuresEntry 1198 (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp 1199 } 1200 var file_summary_proto_depIdxs = []int32{ 1201 9, // 0: testgrid.summary.FailingTestSummary.properties:type_name -> testgrid.summary.FailingTestSummary.PropertiesEntry 1202 10, // 1: testgrid.summary.FailingTestSummary.custom_column_headers:type_name -> testgrid.summary.FailingTestSummary.CustomColumnHeadersEntry 1203 0, // 2: testgrid.summary.TestInfo.change_from_last_interval:type_name -> testgrid.summary.TestInfo.Trend 1204 11, // 3: testgrid.summary.TestInfo.infra_failures:type_name -> testgrid.summary.TestInfo.InfraFailuresEntry 1205 12, // 4: testgrid.summary.HealthinessInfo.start:type_name -> google.protobuf.Timestamp 1206 12, // 5: testgrid.summary.HealthinessInfo.end:type_name -> google.protobuf.Timestamp 1207 3, // 6: testgrid.summary.HealthinessInfo.tests:type_name -> testgrid.summary.TestInfo 1208 12, // 7: testgrid.summary.AlertingData.last_email_time:type_name -> google.protobuf.Timestamp 1209 2, // 8: testgrid.summary.DashboardTabSummary.failing_test_summaries:type_name -> testgrid.summary.FailingTestSummary 1210 1, // 9: testgrid.summary.DashboardTabSummary.overall_status:type_name -> testgrid.summary.DashboardTabSummary.TabStatus 1211 4, // 10: testgrid.summary.DashboardTabSummary.healthiness:type_name -> testgrid.summary.HealthinessInfo 1212 5, // 11: testgrid.summary.DashboardTabSummary.alerting_data:type_name -> testgrid.summary.AlertingData 1213 7, // 12: testgrid.summary.DashboardTabSummary.summary_metrics:type_name -> testgrid.summary.DashboardTabSummaryMetrics 1214 6, // 13: testgrid.summary.DashboardSummary.tab_summaries:type_name -> testgrid.summary.DashboardTabSummary 1215 14, // [14:14] is the sub-list for method output_type 1216 14, // [14:14] is the sub-list for method input_type 1217 14, // [14:14] is the sub-list for extension type_name 1218 14, // [14:14] is the sub-list for extension extendee 1219 0, // [0:14] is the sub-list for field type_name 1220 } 1221 1222 func init() { file_summary_proto_init() } 1223 func file_summary_proto_init() { 1224 if File_summary_proto != nil { 1225 return 1226 } 1227 if !protoimpl.UnsafeEnabled { 1228 file_summary_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 1229 switch v := v.(*FailingTestSummary); i { 1230 case 0: 1231 return &v.state 1232 case 1: 1233 return &v.sizeCache 1234 case 2: 1235 return &v.unknownFields 1236 default: 1237 return nil 1238 } 1239 } 1240 file_summary_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 1241 switch v := v.(*TestInfo); i { 1242 case 0: 1243 return &v.state 1244 case 1: 1245 return &v.sizeCache 1246 case 2: 1247 return &v.unknownFields 1248 default: 1249 return nil 1250 } 1251 } 1252 file_summary_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 1253 switch v := v.(*HealthinessInfo); i { 1254 case 0: 1255 return &v.state 1256 case 1: 1257 return &v.sizeCache 1258 case 2: 1259 return &v.unknownFields 1260 default: 1261 return nil 1262 } 1263 } 1264 file_summary_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 1265 switch v := v.(*AlertingData); i { 1266 case 0: 1267 return &v.state 1268 case 1: 1269 return &v.sizeCache 1270 case 2: 1271 return &v.unknownFields 1272 default: 1273 return nil 1274 } 1275 } 1276 file_summary_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 1277 switch v := v.(*DashboardTabSummary); i { 1278 case 0: 1279 return &v.state 1280 case 1: 1281 return &v.sizeCache 1282 case 2: 1283 return &v.unknownFields 1284 default: 1285 return nil 1286 } 1287 } 1288 file_summary_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 1289 switch v := v.(*DashboardTabSummaryMetrics); i { 1290 case 0: 1291 return &v.state 1292 case 1: 1293 return &v.sizeCache 1294 case 2: 1295 return &v.unknownFields 1296 default: 1297 return nil 1298 } 1299 } 1300 file_summary_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 1301 switch v := v.(*DashboardSummary); i { 1302 case 0: 1303 return &v.state 1304 case 1: 1305 return &v.sizeCache 1306 case 2: 1307 return &v.unknownFields 1308 default: 1309 return nil 1310 } 1311 } 1312 } 1313 type x struct{} 1314 out := protoimpl.TypeBuilder{ 1315 File: protoimpl.DescBuilder{ 1316 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 1317 RawDescriptor: file_summary_proto_rawDesc, 1318 NumEnums: 2, 1319 NumMessages: 10, 1320 NumExtensions: 0, 1321 NumServices: 0, 1322 }, 1323 GoTypes: file_summary_proto_goTypes, 1324 DependencyIndexes: file_summary_proto_depIdxs, 1325 EnumInfos: file_summary_proto_enumTypes, 1326 MessageInfos: file_summary_proto_msgTypes, 1327 }.Build() 1328 File_summary_proto = out.File 1329 file_summary_proto_rawDesc = nil 1330 file_summary_proto_goTypes = nil 1331 file_summary_proto_depIdxs = nil 1332 }