go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/bisection/proto/v1/analyses.pb.go (about) 1 // Copyright 2023 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by protoc-gen-go. DO NOT EDIT. 16 // versions: 17 // protoc-gen-go v1.31.0 18 // protoc v3.21.7 19 // source: go.chromium.org/luci/bisection/proto/v1/analyses.proto 20 21 package bisectionpb 22 23 import prpc "go.chromium.org/luci/grpc/prpc" 24 25 import ( 26 context "context" 27 proto "go.chromium.org/luci/buildbucket/proto" 28 _ "google.golang.org/genproto/googleapis/api/annotations" 29 grpc "google.golang.org/grpc" 30 codes "google.golang.org/grpc/codes" 31 status "google.golang.org/grpc/status" 32 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 33 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 34 fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 35 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 36 reflect "reflect" 37 sync "sync" 38 ) 39 40 const ( 41 // Verify that this generated code is sufficiently up-to-date. 42 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 43 // Verify that runtime/protoimpl is sufficiently up-to-date. 44 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 45 ) 46 47 // AnalysisRunStatus focusses on whether the analysis is currently running, not 48 // the actual result of the analysis. 49 type AnalysisRunStatus int32 50 51 const ( 52 AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED AnalysisRunStatus = 0 53 // The analysis started and is still running. 54 AnalysisRunStatus_STARTED AnalysisRunStatus = 2 55 // The analysis has ended (either it stopped naturally or ran into an error). 56 AnalysisRunStatus_ENDED AnalysisRunStatus = 3 57 // The analysis has been canceled. 58 AnalysisRunStatus_CANCELED AnalysisRunStatus = 4 59 ) 60 61 // Enum value maps for AnalysisRunStatus. 62 var ( 63 AnalysisRunStatus_name = map[int32]string{ 64 0: "ANALYSIS_RUN_STATUS_UNSPECIFIED", 65 2: "STARTED", 66 3: "ENDED", 67 4: "CANCELED", 68 } 69 AnalysisRunStatus_value = map[string]int32{ 70 "ANALYSIS_RUN_STATUS_UNSPECIFIED": 0, 71 "STARTED": 2, 72 "ENDED": 3, 73 "CANCELED": 4, 74 } 75 ) 76 77 func (x AnalysisRunStatus) Enum() *AnalysisRunStatus { 78 p := new(AnalysisRunStatus) 79 *p = x 80 return p 81 } 82 83 func (x AnalysisRunStatus) String() string { 84 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 85 } 86 87 func (AnalysisRunStatus) Descriptor() protoreflect.EnumDescriptor { 88 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[0].Descriptor() 89 } 90 91 func (AnalysisRunStatus) Type() protoreflect.EnumType { 92 return &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[0] 93 } 94 95 func (x AnalysisRunStatus) Number() protoreflect.EnumNumber { 96 return protoreflect.EnumNumber(x) 97 } 98 99 // Deprecated: Use AnalysisRunStatus.Descriptor instead. 100 func (AnalysisRunStatus) EnumDescriptor() ([]byte, []int) { 101 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{0} 102 } 103 104 type BuildFailureType int32 105 106 const ( 107 BuildFailureType_BUILD_FAILURE_TYPE_UNSPECIFIED BuildFailureType = 0 108 BuildFailureType_COMPILE BuildFailureType = 1 109 BuildFailureType_TEST BuildFailureType = 2 110 BuildFailureType_INFRA BuildFailureType = 3 111 BuildFailureType_OTHER BuildFailureType = 4 112 ) 113 114 // Enum value maps for BuildFailureType. 115 var ( 116 BuildFailureType_name = map[int32]string{ 117 0: "BUILD_FAILURE_TYPE_UNSPECIFIED", 118 1: "COMPILE", 119 2: "TEST", 120 3: "INFRA", 121 4: "OTHER", 122 } 123 BuildFailureType_value = map[string]int32{ 124 "BUILD_FAILURE_TYPE_UNSPECIFIED": 0, 125 "COMPILE": 1, 126 "TEST": 2, 127 "INFRA": 3, 128 "OTHER": 4, 129 } 130 ) 131 132 func (x BuildFailureType) Enum() *BuildFailureType { 133 p := new(BuildFailureType) 134 *p = x 135 return p 136 } 137 138 func (x BuildFailureType) String() string { 139 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 140 } 141 142 func (BuildFailureType) Descriptor() protoreflect.EnumDescriptor { 143 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[1].Descriptor() 144 } 145 146 func (BuildFailureType) Type() protoreflect.EnumType { 147 return &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[1] 148 } 149 150 func (x BuildFailureType) Number() protoreflect.EnumNumber { 151 return protoreflect.EnumNumber(x) 152 } 153 154 // Deprecated: Use BuildFailureType.Descriptor instead. 155 func (BuildFailureType) EnumDescriptor() ([]byte, []int) { 156 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{1} 157 } 158 159 type GetAnalysisRequest struct { 160 state protoimpl.MessageState 161 sizeCache protoimpl.SizeCache 162 unknownFields protoimpl.UnknownFields 163 164 // ID of the analysis. 165 AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"` 166 } 167 168 func (x *GetAnalysisRequest) Reset() { 169 *x = GetAnalysisRequest{} 170 if protoimpl.UnsafeEnabled { 171 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[0] 172 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 173 ms.StoreMessageInfo(mi) 174 } 175 } 176 177 func (x *GetAnalysisRequest) String() string { 178 return protoimpl.X.MessageStringOf(x) 179 } 180 181 func (*GetAnalysisRequest) ProtoMessage() {} 182 183 func (x *GetAnalysisRequest) ProtoReflect() protoreflect.Message { 184 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[0] 185 if protoimpl.UnsafeEnabled && x != nil { 186 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 187 if ms.LoadMessageInfo() == nil { 188 ms.StoreMessageInfo(mi) 189 } 190 return ms 191 } 192 return mi.MessageOf(x) 193 } 194 195 // Deprecated: Use GetAnalysisRequest.ProtoReflect.Descriptor instead. 196 func (*GetAnalysisRequest) Descriptor() ([]byte, []int) { 197 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{0} 198 } 199 200 func (x *GetAnalysisRequest) GetAnalysisId() int64 { 201 if x != nil { 202 return x.AnalysisId 203 } 204 return 0 205 } 206 207 type QueryAnalysisRequest struct { 208 state protoimpl.MessageState 209 sizeCache protoimpl.SizeCache 210 unknownFields protoimpl.UnknownFields 211 212 // The build failure information to query for the analyses. 213 BuildFailure *BuildFailure `protobuf:"bytes,1,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"` 214 } 215 216 func (x *QueryAnalysisRequest) Reset() { 217 *x = QueryAnalysisRequest{} 218 if protoimpl.UnsafeEnabled { 219 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[1] 220 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 221 ms.StoreMessageInfo(mi) 222 } 223 } 224 225 func (x *QueryAnalysisRequest) String() string { 226 return protoimpl.X.MessageStringOf(x) 227 } 228 229 func (*QueryAnalysisRequest) ProtoMessage() {} 230 231 func (x *QueryAnalysisRequest) ProtoReflect() protoreflect.Message { 232 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[1] 233 if protoimpl.UnsafeEnabled && x != nil { 234 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 235 if ms.LoadMessageInfo() == nil { 236 ms.StoreMessageInfo(mi) 237 } 238 return ms 239 } 240 return mi.MessageOf(x) 241 } 242 243 // Deprecated: Use QueryAnalysisRequest.ProtoReflect.Descriptor instead. 244 func (*QueryAnalysisRequest) Descriptor() ([]byte, []int) { 245 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{1} 246 } 247 248 func (x *QueryAnalysisRequest) GetBuildFailure() *BuildFailure { 249 if x != nil { 250 return x.BuildFailure 251 } 252 return nil 253 } 254 255 type QueryAnalysisResponse struct { 256 state protoimpl.MessageState 257 sizeCache protoimpl.SizeCache 258 unknownFields protoimpl.UnknownFields 259 260 // The analyses corresponding to the QueryAnalysisRequest. 261 Analyses []*Analysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"` 262 } 263 264 func (x *QueryAnalysisResponse) Reset() { 265 *x = QueryAnalysisResponse{} 266 if protoimpl.UnsafeEnabled { 267 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[2] 268 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 269 ms.StoreMessageInfo(mi) 270 } 271 } 272 273 func (x *QueryAnalysisResponse) String() string { 274 return protoimpl.X.MessageStringOf(x) 275 } 276 277 func (*QueryAnalysisResponse) ProtoMessage() {} 278 279 func (x *QueryAnalysisResponse) ProtoReflect() protoreflect.Message { 280 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[2] 281 if protoimpl.UnsafeEnabled && x != nil { 282 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 283 if ms.LoadMessageInfo() == nil { 284 ms.StoreMessageInfo(mi) 285 } 286 return ms 287 } 288 return mi.MessageOf(x) 289 } 290 291 // Deprecated: Use QueryAnalysisResponse.ProtoReflect.Descriptor instead. 292 func (*QueryAnalysisResponse) Descriptor() ([]byte, []int) { 293 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{2} 294 } 295 296 func (x *QueryAnalysisResponse) GetAnalyses() []*Analysis { 297 if x != nil { 298 return x.Analyses 299 } 300 return nil 301 } 302 303 type ListAnalysesRequest struct { 304 state protoimpl.MessageState 305 sizeCache protoimpl.SizeCache 306 unknownFields protoimpl.UnknownFields 307 308 // Optional. The maximum number of analyses to be returned in the response. 309 // The service may return fewer than this value. 310 // If unspecified, at most 50 analyses will be returned. 311 // The maximum value is 200; values above 200 will be coerced to 200. 312 PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 313 // Optional. A page token, received from a previous `ListAnalyses` call. 314 // Provide this to retrieve the subsequent page. 315 // When paginating, all other parameters provided to `ListAnalyses` must 316 // match the call that provided the page token, 317 // with the exception of page_size and page_token. 318 PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 319 } 320 321 func (x *ListAnalysesRequest) Reset() { 322 *x = ListAnalysesRequest{} 323 if protoimpl.UnsafeEnabled { 324 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[3] 325 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 326 ms.StoreMessageInfo(mi) 327 } 328 } 329 330 func (x *ListAnalysesRequest) String() string { 331 return protoimpl.X.MessageStringOf(x) 332 } 333 334 func (*ListAnalysesRequest) ProtoMessage() {} 335 336 func (x *ListAnalysesRequest) ProtoReflect() protoreflect.Message { 337 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[3] 338 if protoimpl.UnsafeEnabled && x != nil { 339 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 340 if ms.LoadMessageInfo() == nil { 341 ms.StoreMessageInfo(mi) 342 } 343 return ms 344 } 345 return mi.MessageOf(x) 346 } 347 348 // Deprecated: Use ListAnalysesRequest.ProtoReflect.Descriptor instead. 349 func (*ListAnalysesRequest) Descriptor() ([]byte, []int) { 350 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{3} 351 } 352 353 func (x *ListAnalysesRequest) GetPageSize() int32 { 354 if x != nil { 355 return x.PageSize 356 } 357 return 0 358 } 359 360 func (x *ListAnalysesRequest) GetPageToken() string { 361 if x != nil { 362 return x.PageToken 363 } 364 return "" 365 } 366 367 type ListAnalysesResponse struct { 368 state protoimpl.MessageState 369 sizeCache protoimpl.SizeCache 370 unknownFields protoimpl.UnknownFields 371 372 // The analyses corresponding to the ListAnalysesRequest. 373 Analyses []*Analysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"` 374 // The token to send as `page_token` to retrieve the next page of analyses. 375 // If this field is omitted, there are no subsequent pages. 376 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 377 } 378 379 func (x *ListAnalysesResponse) Reset() { 380 *x = ListAnalysesResponse{} 381 if protoimpl.UnsafeEnabled { 382 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[4] 383 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 384 ms.StoreMessageInfo(mi) 385 } 386 } 387 388 func (x *ListAnalysesResponse) String() string { 389 return protoimpl.X.MessageStringOf(x) 390 } 391 392 func (*ListAnalysesResponse) ProtoMessage() {} 393 394 func (x *ListAnalysesResponse) ProtoReflect() protoreflect.Message { 395 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[4] 396 if protoimpl.UnsafeEnabled && x != nil { 397 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 398 if ms.LoadMessageInfo() == nil { 399 ms.StoreMessageInfo(mi) 400 } 401 return ms 402 } 403 return mi.MessageOf(x) 404 } 405 406 // Deprecated: Use ListAnalysesResponse.ProtoReflect.Descriptor instead. 407 func (*ListAnalysesResponse) Descriptor() ([]byte, []int) { 408 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{4} 409 } 410 411 func (x *ListAnalysesResponse) GetAnalyses() []*Analysis { 412 if x != nil { 413 return x.Analyses 414 } 415 return nil 416 } 417 418 func (x *ListAnalysesResponse) GetNextPageToken() string { 419 if x != nil { 420 return x.NextPageToken 421 } 422 return "" 423 } 424 425 type TriggerAnalysisRequest struct { 426 state protoimpl.MessageState 427 sizeCache protoimpl.SizeCache 428 unknownFields protoimpl.UnknownFields 429 430 // Failure for which to trigger the analysis. 431 BuildFailure *BuildFailure `protobuf:"bytes,1,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"` 432 // Optionally, the client can pass the bug associated with the failure. 433 // LUCI Bisection will update the bug with analysis progress/result. 434 // This is mainly for SoM, which has information about bugs associated 435 // with a failure. 436 BugInfo []*BugInfo `protobuf:"bytes,2,rep,name=bug_info,json=bugInfo,proto3" json:"bug_info,omitempty"` 437 } 438 439 func (x *TriggerAnalysisRequest) Reset() { 440 *x = TriggerAnalysisRequest{} 441 if protoimpl.UnsafeEnabled { 442 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[5] 443 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 444 ms.StoreMessageInfo(mi) 445 } 446 } 447 448 func (x *TriggerAnalysisRequest) String() string { 449 return protoimpl.X.MessageStringOf(x) 450 } 451 452 func (*TriggerAnalysisRequest) ProtoMessage() {} 453 454 func (x *TriggerAnalysisRequest) ProtoReflect() protoreflect.Message { 455 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[5] 456 if protoimpl.UnsafeEnabled && x != nil { 457 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 458 if ms.LoadMessageInfo() == nil { 459 ms.StoreMessageInfo(mi) 460 } 461 return ms 462 } 463 return mi.MessageOf(x) 464 } 465 466 // Deprecated: Use TriggerAnalysisRequest.ProtoReflect.Descriptor instead. 467 func (*TriggerAnalysisRequest) Descriptor() ([]byte, []int) { 468 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{5} 469 } 470 471 func (x *TriggerAnalysisRequest) GetBuildFailure() *BuildFailure { 472 if x != nil { 473 return x.BuildFailure 474 } 475 return nil 476 } 477 478 func (x *TriggerAnalysisRequest) GetBugInfo() []*BugInfo { 479 if x != nil { 480 return x.BugInfo 481 } 482 return nil 483 } 484 485 type TriggerAnalysisResponse struct { 486 state protoimpl.MessageState 487 sizeCache protoimpl.SizeCache 488 unknownFields protoimpl.UnknownFields 489 490 // The analysis result corresponding to the request. 491 // It is either a new analysis or an existing one. 492 Result *Analysis `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` 493 // is_new_analysis will be set to true if a new analysis is triggered. 494 // It will be set to false if an existing analysis is used instead. 495 IsNewAnalysis bool `protobuf:"varint,2,opt,name=is_new_analysis,json=isNewAnalysis,proto3" json:"is_new_analysis,omitempty"` 496 } 497 498 func (x *TriggerAnalysisResponse) Reset() { 499 *x = TriggerAnalysisResponse{} 500 if protoimpl.UnsafeEnabled { 501 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[6] 502 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 503 ms.StoreMessageInfo(mi) 504 } 505 } 506 507 func (x *TriggerAnalysisResponse) String() string { 508 return protoimpl.X.MessageStringOf(x) 509 } 510 511 func (*TriggerAnalysisResponse) ProtoMessage() {} 512 513 func (x *TriggerAnalysisResponse) ProtoReflect() protoreflect.Message { 514 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[6] 515 if protoimpl.UnsafeEnabled && x != nil { 516 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 517 if ms.LoadMessageInfo() == nil { 518 ms.StoreMessageInfo(mi) 519 } 520 return ms 521 } 522 return mi.MessageOf(x) 523 } 524 525 // Deprecated: Use TriggerAnalysisResponse.ProtoReflect.Descriptor instead. 526 func (*TriggerAnalysisResponse) Descriptor() ([]byte, []int) { 527 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{6} 528 } 529 530 func (x *TriggerAnalysisResponse) GetResult() *Analysis { 531 if x != nil { 532 return x.Result 533 } 534 return nil 535 } 536 537 func (x *TriggerAnalysisResponse) GetIsNewAnalysis() bool { 538 if x != nil { 539 return x.IsNewAnalysis 540 } 541 return false 542 } 543 544 // Update the information of an analysis, 545 // e.g. update the bugs associated with an analysis. 546 // LUCI Bisection will comment on the bug with analysis progress/results. 547 // Note: Existing bugs associated with the analysis will be replaced. 548 type UpdateAnalysisRequest struct { 549 state protoimpl.MessageState 550 sizeCache protoimpl.SizeCache 551 unknownFields protoimpl.UnknownFields 552 553 // ID of the analysis. 554 AnalysisId string `protobuf:"bytes,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"` 555 BugInfo []*BugInfo `protobuf:"bytes,2,rep,name=bug_info,json=bugInfo,proto3" json:"bug_info,omitempty"` 556 } 557 558 func (x *UpdateAnalysisRequest) Reset() { 559 *x = UpdateAnalysisRequest{} 560 if protoimpl.UnsafeEnabled { 561 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[7] 562 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 563 ms.StoreMessageInfo(mi) 564 } 565 } 566 567 func (x *UpdateAnalysisRequest) String() string { 568 return protoimpl.X.MessageStringOf(x) 569 } 570 571 func (*UpdateAnalysisRequest) ProtoMessage() {} 572 573 func (x *UpdateAnalysisRequest) ProtoReflect() protoreflect.Message { 574 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[7] 575 if protoimpl.UnsafeEnabled && x != nil { 576 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 577 if ms.LoadMessageInfo() == nil { 578 ms.StoreMessageInfo(mi) 579 } 580 return ms 581 } 582 return mi.MessageOf(x) 583 } 584 585 // Deprecated: Use UpdateAnalysisRequest.ProtoReflect.Descriptor instead. 586 func (*UpdateAnalysisRequest) Descriptor() ([]byte, []int) { 587 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{7} 588 } 589 590 func (x *UpdateAnalysisRequest) GetAnalysisId() string { 591 if x != nil { 592 return x.AnalysisId 593 } 594 return "" 595 } 596 597 func (x *UpdateAnalysisRequest) GetBugInfo() []*BugInfo { 598 if x != nil { 599 return x.BugInfo 600 } 601 return nil 602 } 603 604 // Analysis contains result of an analysis. 605 // Next available tag: 15. 606 type Analysis struct { 607 state protoimpl.MessageState 608 sizeCache protoimpl.SizeCache 609 unknownFields protoimpl.UnknownFields 610 611 // ID to identify this analysis. 612 AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"` 613 // The failure associated with the analysis. 614 BuildFailure *BuildFailure `protobuf:"bytes,2,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"` 615 // Result status of the analysis. 616 Status AnalysisStatus `protobuf:"varint,3,opt,name=status,proto3,enum=luci.bisection.v1.AnalysisStatus" json:"status,omitempty"` 617 // Run status of the analysis. 618 // See https://go.chromium.org/luci/bisection/proto/v1/#AnalysisRunStatus 619 RunStatus AnalysisRunStatus `protobuf:"varint,4,opt,name=run_status,json=runStatus,proto3,enum=luci.bisection.v1.AnalysisRunStatus" json:"run_status,omitempty"` 620 // Buildbucket ID for the last passed build. 621 LastPassedBbid int64 `protobuf:"varint,5,opt,name=last_passed_bbid,json=lastPassedBbid,proto3" json:"last_passed_bbid,omitempty"` 622 // Buildbucket ID for the first failed build. 623 FirstFailedBbid int64 `protobuf:"varint,6,opt,name=first_failed_bbid,json=firstFailedBbid,proto3" json:"first_failed_bbid,omitempty"` 624 // Timestamp for the created time of the analysis. 625 CreatedTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"` 626 // Timestamp for the last updated time of the analysis. 627 LastUpdatedTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_updated_time,json=lastUpdatedTime,proto3" json:"last_updated_time,omitempty"` 628 // Timestamp for the end time of the analysis. 629 EndTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 630 // Result of heuristic analysis. 631 HeuristicResult *HeuristicAnalysisResult `protobuf:"bytes,10,opt,name=heuristic_result,json=heuristicResult,proto3" json:"heuristic_result,omitempty"` 632 // Result of nth-section analysis. 633 NthSectionResult *NthSectionAnalysisResult `protobuf:"bytes,11,opt,name=nth_section_result,json=nthSectionResult,proto3" json:"nth_section_result,omitempty"` 634 // Builder for the first failed build. 635 Builder *proto.BuilderID `protobuf:"bytes,12,opt,name=builder,proto3" json:"builder,omitempty"` 636 // Type of the failure associated with the analysis. 637 BuildFailureType BuildFailureType `protobuf:"varint,13,opt,name=build_failure_type,json=buildFailureType,proto3,enum=luci.bisection.v1.BuildFailureType" json:"build_failure_type,omitempty"` 638 // The culprits for the analysis. 639 // For some rare cases, we may get more than one culprit for a regression 640 // range. So we set it as repeated field. 641 Culprits []*Culprit `protobuf:"bytes,14,rep,name=culprits,proto3" json:"culprits,omitempty"` 642 } 643 644 func (x *Analysis) Reset() { 645 *x = Analysis{} 646 if protoimpl.UnsafeEnabled { 647 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[8] 648 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 649 ms.StoreMessageInfo(mi) 650 } 651 } 652 653 func (x *Analysis) String() string { 654 return protoimpl.X.MessageStringOf(x) 655 } 656 657 func (*Analysis) ProtoMessage() {} 658 659 func (x *Analysis) ProtoReflect() protoreflect.Message { 660 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[8] 661 if protoimpl.UnsafeEnabled && x != nil { 662 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 663 if ms.LoadMessageInfo() == nil { 664 ms.StoreMessageInfo(mi) 665 } 666 return ms 667 } 668 return mi.MessageOf(x) 669 } 670 671 // Deprecated: Use Analysis.ProtoReflect.Descriptor instead. 672 func (*Analysis) Descriptor() ([]byte, []int) { 673 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{8} 674 } 675 676 func (x *Analysis) GetAnalysisId() int64 { 677 if x != nil { 678 return x.AnalysisId 679 } 680 return 0 681 } 682 683 func (x *Analysis) GetBuildFailure() *BuildFailure { 684 if x != nil { 685 return x.BuildFailure 686 } 687 return nil 688 } 689 690 func (x *Analysis) GetStatus() AnalysisStatus { 691 if x != nil { 692 return x.Status 693 } 694 return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED 695 } 696 697 func (x *Analysis) GetRunStatus() AnalysisRunStatus { 698 if x != nil { 699 return x.RunStatus 700 } 701 return AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED 702 } 703 704 func (x *Analysis) GetLastPassedBbid() int64 { 705 if x != nil { 706 return x.LastPassedBbid 707 } 708 return 0 709 } 710 711 func (x *Analysis) GetFirstFailedBbid() int64 { 712 if x != nil { 713 return x.FirstFailedBbid 714 } 715 return 0 716 } 717 718 func (x *Analysis) GetCreatedTime() *timestamppb.Timestamp { 719 if x != nil { 720 return x.CreatedTime 721 } 722 return nil 723 } 724 725 func (x *Analysis) GetLastUpdatedTime() *timestamppb.Timestamp { 726 if x != nil { 727 return x.LastUpdatedTime 728 } 729 return nil 730 } 731 732 func (x *Analysis) GetEndTime() *timestamppb.Timestamp { 733 if x != nil { 734 return x.EndTime 735 } 736 return nil 737 } 738 739 func (x *Analysis) GetHeuristicResult() *HeuristicAnalysisResult { 740 if x != nil { 741 return x.HeuristicResult 742 } 743 return nil 744 } 745 746 func (x *Analysis) GetNthSectionResult() *NthSectionAnalysisResult { 747 if x != nil { 748 return x.NthSectionResult 749 } 750 return nil 751 } 752 753 func (x *Analysis) GetBuilder() *proto.BuilderID { 754 if x != nil { 755 return x.Builder 756 } 757 return nil 758 } 759 760 func (x *Analysis) GetBuildFailureType() BuildFailureType { 761 if x != nil { 762 return x.BuildFailureType 763 } 764 return BuildFailureType_BUILD_FAILURE_TYPE_UNSPECIFIED 765 } 766 767 func (x *Analysis) GetCulprits() []*Culprit { 768 if x != nil { 769 return x.Culprits 770 } 771 return nil 772 } 773 774 type BuildFailure struct { 775 state protoimpl.MessageState 776 sizeCache protoimpl.SizeCache 777 unknownFields protoimpl.UnknownFields 778 779 // Buildbucket ID for the failed build. 780 Bbid int64 `protobuf:"varint,1,opt,name=bbid,proto3" json:"bbid,omitempty"` 781 // failed_step_name should be 'compile' for compile failures. 782 FailedStepName string `protobuf:"bytes,2,opt,name=failed_step_name,json=failedStepName,proto3" json:"failed_step_name,omitempty"` 783 } 784 785 func (x *BuildFailure) Reset() { 786 *x = BuildFailure{} 787 if protoimpl.UnsafeEnabled { 788 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[9] 789 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 790 ms.StoreMessageInfo(mi) 791 } 792 } 793 794 func (x *BuildFailure) String() string { 795 return protoimpl.X.MessageStringOf(x) 796 } 797 798 func (*BuildFailure) ProtoMessage() {} 799 800 func (x *BuildFailure) ProtoReflect() protoreflect.Message { 801 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[9] 802 if protoimpl.UnsafeEnabled && x != nil { 803 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 804 if ms.LoadMessageInfo() == nil { 805 ms.StoreMessageInfo(mi) 806 } 807 return ms 808 } 809 return mi.MessageOf(x) 810 } 811 812 // Deprecated: Use BuildFailure.ProtoReflect.Descriptor instead. 813 func (*BuildFailure) Descriptor() ([]byte, []int) { 814 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{9} 815 } 816 817 func (x *BuildFailure) GetBbid() int64 { 818 if x != nil { 819 return x.Bbid 820 } 821 return 0 822 } 823 824 func (x *BuildFailure) GetFailedStepName() string { 825 if x != nil { 826 return x.FailedStepName 827 } 828 return "" 829 } 830 831 type ListTestAnalysesRequest struct { 832 state protoimpl.MessageState 833 sizeCache protoimpl.SizeCache 834 unknownFields protoimpl.UnknownFields 835 836 // The project that the test analyses belong to. 837 Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` 838 // Optional. The maximum number of analyses to be returned in the response. 839 // The service may return fewer than this value. 840 // If unspecified, at most 50 analyses will be returned. 841 // The maximum value is 200; values above 200 will be coerced to 200. 842 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 843 // Optional. A page token, received from a previous `ListTestAnalyses` call. 844 // Provide this to retrieve the subsequent page. 845 // When paginating, all other parameters provided to `ListTestAnalyses` must 846 // match the call that provided the page token, 847 // with the exception of page_size and page_token. 848 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 849 // The fields to be included in the response. 850 // By default, all fields are included. 851 Fields *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=fields,proto3" json:"fields,omitempty"` 852 } 853 854 func (x *ListTestAnalysesRequest) Reset() { 855 *x = ListTestAnalysesRequest{} 856 if protoimpl.UnsafeEnabled { 857 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[10] 858 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 859 ms.StoreMessageInfo(mi) 860 } 861 } 862 863 func (x *ListTestAnalysesRequest) String() string { 864 return protoimpl.X.MessageStringOf(x) 865 } 866 867 func (*ListTestAnalysesRequest) ProtoMessage() {} 868 869 func (x *ListTestAnalysesRequest) ProtoReflect() protoreflect.Message { 870 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[10] 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 ListTestAnalysesRequest.ProtoReflect.Descriptor instead. 882 func (*ListTestAnalysesRequest) Descriptor() ([]byte, []int) { 883 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{10} 884 } 885 886 func (x *ListTestAnalysesRequest) GetProject() string { 887 if x != nil { 888 return x.Project 889 } 890 return "" 891 } 892 893 func (x *ListTestAnalysesRequest) GetPageSize() int32 { 894 if x != nil { 895 return x.PageSize 896 } 897 return 0 898 } 899 900 func (x *ListTestAnalysesRequest) GetPageToken() string { 901 if x != nil { 902 return x.PageToken 903 } 904 return "" 905 } 906 907 func (x *ListTestAnalysesRequest) GetFields() *fieldmaskpb.FieldMask { 908 if x != nil { 909 return x.Fields 910 } 911 return nil 912 } 913 914 type ListTestAnalysesResponse struct { 915 state protoimpl.MessageState 916 sizeCache protoimpl.SizeCache 917 unknownFields protoimpl.UnknownFields 918 919 // The test analyses corresponding to the ListTestAnalysesRequest. 920 Analyses []*TestAnalysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"` 921 // The token to send as `page_token` to retrieve the next page of analyses. 922 // If this field is omitted, there are no subsequent pages. 923 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 924 } 925 926 func (x *ListTestAnalysesResponse) Reset() { 927 *x = ListTestAnalysesResponse{} 928 if protoimpl.UnsafeEnabled { 929 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[11] 930 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 931 ms.StoreMessageInfo(mi) 932 } 933 } 934 935 func (x *ListTestAnalysesResponse) String() string { 936 return protoimpl.X.MessageStringOf(x) 937 } 938 939 func (*ListTestAnalysesResponse) ProtoMessage() {} 940 941 func (x *ListTestAnalysesResponse) ProtoReflect() protoreflect.Message { 942 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[11] 943 if protoimpl.UnsafeEnabled && x != nil { 944 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 945 if ms.LoadMessageInfo() == nil { 946 ms.StoreMessageInfo(mi) 947 } 948 return ms 949 } 950 return mi.MessageOf(x) 951 } 952 953 // Deprecated: Use ListTestAnalysesResponse.ProtoReflect.Descriptor instead. 954 func (*ListTestAnalysesResponse) Descriptor() ([]byte, []int) { 955 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{11} 956 } 957 958 func (x *ListTestAnalysesResponse) GetAnalyses() []*TestAnalysis { 959 if x != nil { 960 return x.Analyses 961 } 962 return nil 963 } 964 965 func (x *ListTestAnalysesResponse) GetNextPageToken() string { 966 if x != nil { 967 return x.NextPageToken 968 } 969 return "" 970 } 971 972 type GetTestAnalysisRequest struct { 973 state protoimpl.MessageState 974 sizeCache protoimpl.SizeCache 975 unknownFields protoimpl.UnknownFields 976 977 // ID of the analysis. 978 AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"` 979 // The fields to be included in the response. 980 // By default, all fields are included. 981 Fields *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=fields,proto3" json:"fields,omitempty"` 982 } 983 984 func (x *GetTestAnalysisRequest) Reset() { 985 *x = GetTestAnalysisRequest{} 986 if protoimpl.UnsafeEnabled { 987 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[12] 988 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 989 ms.StoreMessageInfo(mi) 990 } 991 } 992 993 func (x *GetTestAnalysisRequest) String() string { 994 return protoimpl.X.MessageStringOf(x) 995 } 996 997 func (*GetTestAnalysisRequest) ProtoMessage() {} 998 999 func (x *GetTestAnalysisRequest) ProtoReflect() protoreflect.Message { 1000 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[12] 1001 if protoimpl.UnsafeEnabled && x != nil { 1002 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1003 if ms.LoadMessageInfo() == nil { 1004 ms.StoreMessageInfo(mi) 1005 } 1006 return ms 1007 } 1008 return mi.MessageOf(x) 1009 } 1010 1011 // Deprecated: Use GetTestAnalysisRequest.ProtoReflect.Descriptor instead. 1012 func (*GetTestAnalysisRequest) Descriptor() ([]byte, []int) { 1013 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{12} 1014 } 1015 1016 func (x *GetTestAnalysisRequest) GetAnalysisId() int64 { 1017 if x != nil { 1018 return x.AnalysisId 1019 } 1020 return 0 1021 } 1022 1023 func (x *GetTestAnalysisRequest) GetFields() *fieldmaskpb.FieldMask { 1024 if x != nil { 1025 return x.Fields 1026 } 1027 return nil 1028 } 1029 1030 type TestAnalysis struct { 1031 state protoimpl.MessageState 1032 sizeCache protoimpl.SizeCache 1033 unknownFields protoimpl.UnknownFields 1034 1035 // ID to identify this analysis. 1036 AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"` 1037 // Timestamp for the create time of the analysis. 1038 CreatedTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"` 1039 // Timestamp for the start time of the analysis. 1040 StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 1041 // Timestamp for the end time of the analysis. 1042 EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 1043 // Result status of the analysis. 1044 Status AnalysisStatus `protobuf:"varint,5,opt,name=status,proto3,enum=luci.bisection.v1.AnalysisStatus" json:"status,omitempty"` 1045 // Run status of the analysis. 1046 RunStatus AnalysisRunStatus `protobuf:"varint,6,opt,name=run_status,json=runStatus,proto3,enum=luci.bisection.v1.AnalysisRunStatus" json:"run_status,omitempty"` 1047 // The verified culprit for the analysis. 1048 Culprit *TestCulprit `protobuf:"bytes,7,opt,name=culprit,proto3" json:"culprit,omitempty"` 1049 // The builder that the analysis analyzed. 1050 Builder *proto.BuilderID `protobuf:"bytes,8,opt,name=builder,proto3" json:"builder,omitempty"` 1051 // Test failures that the analysis analyzed. 1052 // The first item will be the primary failure, followed by other failures. 1053 // Bisection process will follow the path of the primary test failure. 1054 TestFailures []*TestFailure `protobuf:"bytes,9,rep,name=test_failures,json=testFailures,proto3" json:"test_failures,omitempty"` 1055 // The start commit of the regression range (exclusive). 1056 StartCommit *proto.GitilesCommit `protobuf:"bytes,10,opt,name=start_commit,json=startCommit,proto3" json:"start_commit,omitempty"` 1057 // The end commit of the regression range (inclusive). 1058 EndCommit *proto.GitilesCommit `protobuf:"bytes,11,opt,name=end_commit,json=endCommit,proto3" json:"end_commit,omitempty"` 1059 // The start failure rate of the failures. 1060 StartFailureRate float32 `protobuf:"fixed32,12,opt,name=start_failure_rate,json=startFailureRate,proto3" json:"start_failure_rate,omitempty"` 1061 // The end failure rate of the failures. 1062 EndFailureRate float32 `protobuf:"fixed32,13,opt,name=end_failure_rate,json=endFailureRate,proto3" json:"end_failure_rate,omitempty"` 1063 // Sample build bucket ID where the primary test failure failed. 1064 SampleBbid int64 `protobuf:"varint,14,opt,name=sample_bbid,json=sampleBbid,proto3" json:"sample_bbid,omitempty"` 1065 // Nthsection result. 1066 NthSectionResult *TestNthSectionAnalysisResult `protobuf:"bytes,15,opt,name=nth_section_result,json=nthSectionResult,proto3" json:"nth_section_result,omitempty"` 1067 } 1068 1069 func (x *TestAnalysis) Reset() { 1070 *x = TestAnalysis{} 1071 if protoimpl.UnsafeEnabled { 1072 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[13] 1073 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1074 ms.StoreMessageInfo(mi) 1075 } 1076 } 1077 1078 func (x *TestAnalysis) String() string { 1079 return protoimpl.X.MessageStringOf(x) 1080 } 1081 1082 func (*TestAnalysis) ProtoMessage() {} 1083 1084 func (x *TestAnalysis) ProtoReflect() protoreflect.Message { 1085 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[13] 1086 if protoimpl.UnsafeEnabled && x != nil { 1087 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1088 if ms.LoadMessageInfo() == nil { 1089 ms.StoreMessageInfo(mi) 1090 } 1091 return ms 1092 } 1093 return mi.MessageOf(x) 1094 } 1095 1096 // Deprecated: Use TestAnalysis.ProtoReflect.Descriptor instead. 1097 func (*TestAnalysis) Descriptor() ([]byte, []int) { 1098 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{13} 1099 } 1100 1101 func (x *TestAnalysis) GetAnalysisId() int64 { 1102 if x != nil { 1103 return x.AnalysisId 1104 } 1105 return 0 1106 } 1107 1108 func (x *TestAnalysis) GetCreatedTime() *timestamppb.Timestamp { 1109 if x != nil { 1110 return x.CreatedTime 1111 } 1112 return nil 1113 } 1114 1115 func (x *TestAnalysis) GetStartTime() *timestamppb.Timestamp { 1116 if x != nil { 1117 return x.StartTime 1118 } 1119 return nil 1120 } 1121 1122 func (x *TestAnalysis) GetEndTime() *timestamppb.Timestamp { 1123 if x != nil { 1124 return x.EndTime 1125 } 1126 return nil 1127 } 1128 1129 func (x *TestAnalysis) GetStatus() AnalysisStatus { 1130 if x != nil { 1131 return x.Status 1132 } 1133 return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED 1134 } 1135 1136 func (x *TestAnalysis) GetRunStatus() AnalysisRunStatus { 1137 if x != nil { 1138 return x.RunStatus 1139 } 1140 return AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED 1141 } 1142 1143 func (x *TestAnalysis) GetCulprit() *TestCulprit { 1144 if x != nil { 1145 return x.Culprit 1146 } 1147 return nil 1148 } 1149 1150 func (x *TestAnalysis) GetBuilder() *proto.BuilderID { 1151 if x != nil { 1152 return x.Builder 1153 } 1154 return nil 1155 } 1156 1157 func (x *TestAnalysis) GetTestFailures() []*TestFailure { 1158 if x != nil { 1159 return x.TestFailures 1160 } 1161 return nil 1162 } 1163 1164 func (x *TestAnalysis) GetStartCommit() *proto.GitilesCommit { 1165 if x != nil { 1166 return x.StartCommit 1167 } 1168 return nil 1169 } 1170 1171 func (x *TestAnalysis) GetEndCommit() *proto.GitilesCommit { 1172 if x != nil { 1173 return x.EndCommit 1174 } 1175 return nil 1176 } 1177 1178 func (x *TestAnalysis) GetStartFailureRate() float32 { 1179 if x != nil { 1180 return x.StartFailureRate 1181 } 1182 return 0 1183 } 1184 1185 func (x *TestAnalysis) GetEndFailureRate() float32 { 1186 if x != nil { 1187 return x.EndFailureRate 1188 } 1189 return 0 1190 } 1191 1192 func (x *TestAnalysis) GetSampleBbid() int64 { 1193 if x != nil { 1194 return x.SampleBbid 1195 } 1196 return 0 1197 } 1198 1199 func (x *TestAnalysis) GetNthSectionResult() *TestNthSectionAnalysisResult { 1200 if x != nil { 1201 return x.NthSectionResult 1202 } 1203 return nil 1204 } 1205 1206 type TestFailure struct { 1207 state protoimpl.MessageState 1208 sizeCache protoimpl.SizeCache 1209 unknownFields protoimpl.UnknownFields 1210 1211 // The ID of the test. 1212 TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"` 1213 // The variant hash of the test. 1214 VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"` 1215 // Hash to identify the branch in the source control. 1216 RefHash string `protobuf:"bytes,3,opt,name=ref_hash,json=refHash,proto3" json:"ref_hash,omitempty"` 1217 // The variant of the test. 1218 Variant *Variant `protobuf:"bytes,4,opt,name=variant,proto3" json:"variant,omitempty"` 1219 // Whether the test failure was diverged from the primary test failure 1220 // during the bisection process. 1221 IsDiverged bool `protobuf:"varint,5,opt,name=is_diverged,json=isDiverged,proto3" json:"is_diverged,omitempty"` 1222 // Whether the test failure is a primary failure or not. 1223 IsPrimary bool `protobuf:"varint,6,opt,name=is_primary,json=isPrimary,proto3" json:"is_primary,omitempty"` 1224 // Start hour of the test failure. 1225 StartHour *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_hour,json=startHour,proto3" json:"start_hour,omitempty"` 1226 } 1227 1228 func (x *TestFailure) Reset() { 1229 *x = TestFailure{} 1230 if protoimpl.UnsafeEnabled { 1231 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[14] 1232 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1233 ms.StoreMessageInfo(mi) 1234 } 1235 } 1236 1237 func (x *TestFailure) String() string { 1238 return protoimpl.X.MessageStringOf(x) 1239 } 1240 1241 func (*TestFailure) ProtoMessage() {} 1242 1243 func (x *TestFailure) ProtoReflect() protoreflect.Message { 1244 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[14] 1245 if protoimpl.UnsafeEnabled && x != nil { 1246 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1247 if ms.LoadMessageInfo() == nil { 1248 ms.StoreMessageInfo(mi) 1249 } 1250 return ms 1251 } 1252 return mi.MessageOf(x) 1253 } 1254 1255 // Deprecated: Use TestFailure.ProtoReflect.Descriptor instead. 1256 func (*TestFailure) Descriptor() ([]byte, []int) { 1257 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{14} 1258 } 1259 1260 func (x *TestFailure) GetTestId() string { 1261 if x != nil { 1262 return x.TestId 1263 } 1264 return "" 1265 } 1266 1267 func (x *TestFailure) GetVariantHash() string { 1268 if x != nil { 1269 return x.VariantHash 1270 } 1271 return "" 1272 } 1273 1274 func (x *TestFailure) GetRefHash() string { 1275 if x != nil { 1276 return x.RefHash 1277 } 1278 return "" 1279 } 1280 1281 func (x *TestFailure) GetVariant() *Variant { 1282 if x != nil { 1283 return x.Variant 1284 } 1285 return nil 1286 } 1287 1288 func (x *TestFailure) GetIsDiverged() bool { 1289 if x != nil { 1290 return x.IsDiverged 1291 } 1292 return false 1293 } 1294 1295 func (x *TestFailure) GetIsPrimary() bool { 1296 if x != nil { 1297 return x.IsPrimary 1298 } 1299 return false 1300 } 1301 1302 func (x *TestFailure) GetStartHour() *timestamppb.Timestamp { 1303 if x != nil { 1304 return x.StartHour 1305 } 1306 return nil 1307 } 1308 1309 type TestNthSectionAnalysisResult struct { 1310 state protoimpl.MessageState 1311 sizeCache protoimpl.SizeCache 1312 unknownFields protoimpl.UnknownFields 1313 1314 // The status of the nth-section analysis. 1315 Status AnalysisStatus `protobuf:"varint,1,opt,name=status,proto3,enum=luci.bisection.v1.AnalysisStatus" json:"status,omitempty"` 1316 // The run status of the nth-section analysis. 1317 RunStatus AnalysisRunStatus `protobuf:"varint,2,opt,name=run_status,json=runStatus,proto3,enum=luci.bisection.v1.AnalysisRunStatus" json:"run_status,omitempty"` 1318 // Timestamp for the start time of the nth-section analysis. 1319 StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 1320 // Timestamp for the end time of the nth-section analysis. 1321 EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 1322 // Optional, when status = RUNNING. This is the possible commit range of the 1323 // culprit. This will be updated as the nth-section progress. 1324 // This will only be available if nthsection is still running (not ended). 1325 RemainingNthSectionRange *RegressionRange `protobuf:"bytes,5,opt,name=remaining_nth_section_range,json=remainingNthSectionRange,proto3" json:"remaining_nth_section_range,omitempty"` 1326 // List of the reruns that have been run so far for the nth-section analysis. 1327 // The runs are sorted by the create timestamp. 1328 Reruns []*TestSingleRerun `protobuf:"bytes,6,rep,name=reruns,proto3" json:"reruns,omitempty"` 1329 // The blame list of commits to run the nth-section analysis on. 1330 // The commits are sorted by recency, with the most recent commit first. 1331 BlameList *BlameList `protobuf:"bytes,7,opt,name=blame_list,json=blameList,proto3" json:"blame_list,omitempty"` 1332 // Optional, when nth-section has found a culprit. 1333 Suspect *TestCulprit `protobuf:"bytes,8,opt,name=suspect,proto3" json:"suspect,omitempty"` 1334 } 1335 1336 func (x *TestNthSectionAnalysisResult) Reset() { 1337 *x = TestNthSectionAnalysisResult{} 1338 if protoimpl.UnsafeEnabled { 1339 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[15] 1340 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1341 ms.StoreMessageInfo(mi) 1342 } 1343 } 1344 1345 func (x *TestNthSectionAnalysisResult) String() string { 1346 return protoimpl.X.MessageStringOf(x) 1347 } 1348 1349 func (*TestNthSectionAnalysisResult) ProtoMessage() {} 1350 1351 func (x *TestNthSectionAnalysisResult) ProtoReflect() protoreflect.Message { 1352 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[15] 1353 if protoimpl.UnsafeEnabled && x != nil { 1354 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1355 if ms.LoadMessageInfo() == nil { 1356 ms.StoreMessageInfo(mi) 1357 } 1358 return ms 1359 } 1360 return mi.MessageOf(x) 1361 } 1362 1363 // Deprecated: Use TestNthSectionAnalysisResult.ProtoReflect.Descriptor instead. 1364 func (*TestNthSectionAnalysisResult) Descriptor() ([]byte, []int) { 1365 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{15} 1366 } 1367 1368 func (x *TestNthSectionAnalysisResult) GetStatus() AnalysisStatus { 1369 if x != nil { 1370 return x.Status 1371 } 1372 return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED 1373 } 1374 1375 func (x *TestNthSectionAnalysisResult) GetRunStatus() AnalysisRunStatus { 1376 if x != nil { 1377 return x.RunStatus 1378 } 1379 return AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED 1380 } 1381 1382 func (x *TestNthSectionAnalysisResult) GetStartTime() *timestamppb.Timestamp { 1383 if x != nil { 1384 return x.StartTime 1385 } 1386 return nil 1387 } 1388 1389 func (x *TestNthSectionAnalysisResult) GetEndTime() *timestamppb.Timestamp { 1390 if x != nil { 1391 return x.EndTime 1392 } 1393 return nil 1394 } 1395 1396 func (x *TestNthSectionAnalysisResult) GetRemainingNthSectionRange() *RegressionRange { 1397 if x != nil { 1398 return x.RemainingNthSectionRange 1399 } 1400 return nil 1401 } 1402 1403 func (x *TestNthSectionAnalysisResult) GetReruns() []*TestSingleRerun { 1404 if x != nil { 1405 return x.Reruns 1406 } 1407 return nil 1408 } 1409 1410 func (x *TestNthSectionAnalysisResult) GetBlameList() *BlameList { 1411 if x != nil { 1412 return x.BlameList 1413 } 1414 return nil 1415 } 1416 1417 func (x *TestNthSectionAnalysisResult) GetSuspect() *TestCulprit { 1418 if x != nil { 1419 return x.Suspect 1420 } 1421 return nil 1422 } 1423 1424 type TestSingleRerun struct { 1425 state protoimpl.MessageState 1426 sizeCache protoimpl.SizeCache 1427 unknownFields protoimpl.UnknownFields 1428 1429 // Buildbucket ID of the rerun build. 1430 Bbid int64 `protobuf:"varint,1,opt,name=bbid,proto3" json:"bbid,omitempty"` 1431 // Timestamp for the create time of the rerun. 1432 CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` 1433 // Timestamp for the start time of the rerun. 1434 StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 1435 // Timestamp for the end time of the rerun. 1436 EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 1437 // Timestamp when the rerun send the result to bisection from recipe. 1438 ReportTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=report_time,json=reportTime,proto3" json:"report_time,omitempty"` 1439 // ID of the bot that runs the rerun. 1440 BotId string `protobuf:"bytes,6,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"` 1441 // Result of the rerun. 1442 RerunResult *RerunTestResults `protobuf:"bytes,7,opt,name=rerun_result,json=rerunResult,proto3" json:"rerun_result,omitempty"` 1443 // Gitiles commit to do the rerun with. 1444 Commit *proto.GitilesCommit `protobuf:"bytes,8,opt,name=commit,proto3" json:"commit,omitempty"` 1445 // Index of the commit to rerun within the blamelist, if this is an 1446 // nth-section rerun. We need to use a string instead of an int here because 1447 // 0 is a possible valid value but would get lost due to the "omitempty" flag 1448 // in the generated proto. 1449 // There is one case where the index is not populated (empty string). It is when 1450 // the culprit is the (last pass + 1) position, and this rerun is for parent commit 1451 // of the culprit verification. In such cases, the parent commit (last pass) is not found in the 1452 // blamelist (this blamelist is (last pass, first fail]). In such case, index will be "". 1453 Index string `protobuf:"bytes,9,opt,name=index,proto3" json:"index,omitempty"` 1454 } 1455 1456 func (x *TestSingleRerun) Reset() { 1457 *x = TestSingleRerun{} 1458 if protoimpl.UnsafeEnabled { 1459 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[16] 1460 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1461 ms.StoreMessageInfo(mi) 1462 } 1463 } 1464 1465 func (x *TestSingleRerun) String() string { 1466 return protoimpl.X.MessageStringOf(x) 1467 } 1468 1469 func (*TestSingleRerun) ProtoMessage() {} 1470 1471 func (x *TestSingleRerun) ProtoReflect() protoreflect.Message { 1472 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[16] 1473 if protoimpl.UnsafeEnabled && x != nil { 1474 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1475 if ms.LoadMessageInfo() == nil { 1476 ms.StoreMessageInfo(mi) 1477 } 1478 return ms 1479 } 1480 return mi.MessageOf(x) 1481 } 1482 1483 // Deprecated: Use TestSingleRerun.ProtoReflect.Descriptor instead. 1484 func (*TestSingleRerun) Descriptor() ([]byte, []int) { 1485 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{16} 1486 } 1487 1488 func (x *TestSingleRerun) GetBbid() int64 { 1489 if x != nil { 1490 return x.Bbid 1491 } 1492 return 0 1493 } 1494 1495 func (x *TestSingleRerun) GetCreateTime() *timestamppb.Timestamp { 1496 if x != nil { 1497 return x.CreateTime 1498 } 1499 return nil 1500 } 1501 1502 func (x *TestSingleRerun) GetStartTime() *timestamppb.Timestamp { 1503 if x != nil { 1504 return x.StartTime 1505 } 1506 return nil 1507 } 1508 1509 func (x *TestSingleRerun) GetEndTime() *timestamppb.Timestamp { 1510 if x != nil { 1511 return x.EndTime 1512 } 1513 return nil 1514 } 1515 1516 func (x *TestSingleRerun) GetReportTime() *timestamppb.Timestamp { 1517 if x != nil { 1518 return x.ReportTime 1519 } 1520 return nil 1521 } 1522 1523 func (x *TestSingleRerun) GetBotId() string { 1524 if x != nil { 1525 return x.BotId 1526 } 1527 return "" 1528 } 1529 1530 func (x *TestSingleRerun) GetRerunResult() *RerunTestResults { 1531 if x != nil { 1532 return x.RerunResult 1533 } 1534 return nil 1535 } 1536 1537 func (x *TestSingleRerun) GetCommit() *proto.GitilesCommit { 1538 if x != nil { 1539 return x.Commit 1540 } 1541 return nil 1542 } 1543 1544 func (x *TestSingleRerun) GetIndex() string { 1545 if x != nil { 1546 return x.Index 1547 } 1548 return "" 1549 } 1550 1551 type RerunTestResults struct { 1552 state protoimpl.MessageState 1553 sizeCache protoimpl.SizeCache 1554 unknownFields protoimpl.UnknownFields 1555 1556 Results []*RerunTestSingleResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` 1557 // Status of the rerun. 1558 RerunStatus RerunStatus `protobuf:"varint,2,opt,name=rerun_status,json=rerunStatus,proto3,enum=luci.bisection.v1.RerunStatus" json:"rerun_status,omitempty"` 1559 } 1560 1561 func (x *RerunTestResults) Reset() { 1562 *x = RerunTestResults{} 1563 if protoimpl.UnsafeEnabled { 1564 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[17] 1565 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1566 ms.StoreMessageInfo(mi) 1567 } 1568 } 1569 1570 func (x *RerunTestResults) String() string { 1571 return protoimpl.X.MessageStringOf(x) 1572 } 1573 1574 func (*RerunTestResults) ProtoMessage() {} 1575 1576 func (x *RerunTestResults) ProtoReflect() protoreflect.Message { 1577 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[17] 1578 if protoimpl.UnsafeEnabled && x != nil { 1579 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1580 if ms.LoadMessageInfo() == nil { 1581 ms.StoreMessageInfo(mi) 1582 } 1583 return ms 1584 } 1585 return mi.MessageOf(x) 1586 } 1587 1588 // Deprecated: Use RerunTestResults.ProtoReflect.Descriptor instead. 1589 func (*RerunTestResults) Descriptor() ([]byte, []int) { 1590 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{17} 1591 } 1592 1593 func (x *RerunTestResults) GetResults() []*RerunTestSingleResult { 1594 if x != nil { 1595 return x.Results 1596 } 1597 return nil 1598 } 1599 1600 func (x *RerunTestResults) GetRerunStatus() RerunStatus { 1601 if x != nil { 1602 return x.RerunStatus 1603 } 1604 return RerunStatus_RERUN_STATUS_UNSPECIFIED 1605 } 1606 1607 type RerunTestSingleResult struct { 1608 state protoimpl.MessageState 1609 sizeCache protoimpl.SizeCache 1610 unknownFields protoimpl.UnknownFields 1611 1612 // Test ID of the result. 1613 TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"` 1614 // Variant hash of the result. 1615 VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"` 1616 // Number of expected results. 1617 ExpectedCount int64 `protobuf:"varint,3,opt,name=expected_count,json=expectedCount,proto3" json:"expected_count,omitempty"` 1618 // Number of unexpected results. 1619 UnexpectedCount int64 `protobuf:"varint,4,opt,name=unexpected_count,json=unexpectedCount,proto3" json:"unexpected_count,omitempty"` 1620 } 1621 1622 func (x *RerunTestSingleResult) Reset() { 1623 *x = RerunTestSingleResult{} 1624 if protoimpl.UnsafeEnabled { 1625 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[18] 1626 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1627 ms.StoreMessageInfo(mi) 1628 } 1629 } 1630 1631 func (x *RerunTestSingleResult) String() string { 1632 return protoimpl.X.MessageStringOf(x) 1633 } 1634 1635 func (*RerunTestSingleResult) ProtoMessage() {} 1636 1637 func (x *RerunTestSingleResult) ProtoReflect() protoreflect.Message { 1638 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[18] 1639 if protoimpl.UnsafeEnabled && x != nil { 1640 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1641 if ms.LoadMessageInfo() == nil { 1642 ms.StoreMessageInfo(mi) 1643 } 1644 return ms 1645 } 1646 return mi.MessageOf(x) 1647 } 1648 1649 // Deprecated: Use RerunTestSingleResult.ProtoReflect.Descriptor instead. 1650 func (*RerunTestSingleResult) Descriptor() ([]byte, []int) { 1651 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{18} 1652 } 1653 1654 func (x *RerunTestSingleResult) GetTestId() string { 1655 if x != nil { 1656 return x.TestId 1657 } 1658 return "" 1659 } 1660 1661 func (x *RerunTestSingleResult) GetVariantHash() string { 1662 if x != nil { 1663 return x.VariantHash 1664 } 1665 return "" 1666 } 1667 1668 func (x *RerunTestSingleResult) GetExpectedCount() int64 { 1669 if x != nil { 1670 return x.ExpectedCount 1671 } 1672 return 0 1673 } 1674 1675 func (x *RerunTestSingleResult) GetUnexpectedCount() int64 { 1676 if x != nil { 1677 return x.UnexpectedCount 1678 } 1679 return 0 1680 } 1681 1682 type TestSuspectVerificationDetails struct { 1683 state protoimpl.MessageState 1684 sizeCache protoimpl.SizeCache 1685 unknownFields protoimpl.UnknownFields 1686 1687 // The status of the suspect verification. 1688 Status SuspectVerificationStatus `protobuf:"varint,1,opt,name=status,proto3,enum=luci.bisection.v1.SuspectVerificationStatus" json:"status,omitempty"` 1689 // The verification rerun build for the suspect commit. 1690 SuspectRerun *TestSingleRerun `protobuf:"bytes,2,opt,name=suspect_rerun,json=suspectRerun,proto3" json:"suspect_rerun,omitempty"` 1691 // The verification rerun build for the parent commit of the suspect. 1692 ParentRerun *TestSingleRerun `protobuf:"bytes,3,opt,name=parent_rerun,json=parentRerun,proto3" json:"parent_rerun,omitempty"` 1693 } 1694 1695 func (x *TestSuspectVerificationDetails) Reset() { 1696 *x = TestSuspectVerificationDetails{} 1697 if protoimpl.UnsafeEnabled { 1698 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[19] 1699 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1700 ms.StoreMessageInfo(mi) 1701 } 1702 } 1703 1704 func (x *TestSuspectVerificationDetails) String() string { 1705 return protoimpl.X.MessageStringOf(x) 1706 } 1707 1708 func (*TestSuspectVerificationDetails) ProtoMessage() {} 1709 1710 func (x *TestSuspectVerificationDetails) ProtoReflect() protoreflect.Message { 1711 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[19] 1712 if protoimpl.UnsafeEnabled && x != nil { 1713 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1714 if ms.LoadMessageInfo() == nil { 1715 ms.StoreMessageInfo(mi) 1716 } 1717 return ms 1718 } 1719 return mi.MessageOf(x) 1720 } 1721 1722 // Deprecated: Use TestSuspectVerificationDetails.ProtoReflect.Descriptor instead. 1723 func (*TestSuspectVerificationDetails) Descriptor() ([]byte, []int) { 1724 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{19} 1725 } 1726 1727 func (x *TestSuspectVerificationDetails) GetStatus() SuspectVerificationStatus { 1728 if x != nil { 1729 return x.Status 1730 } 1731 return SuspectVerificationStatus_SUSPECT_VERIFICATION_STATUS_UNSPECIFIED 1732 } 1733 1734 func (x *TestSuspectVerificationDetails) GetSuspectRerun() *TestSingleRerun { 1735 if x != nil { 1736 return x.SuspectRerun 1737 } 1738 return nil 1739 } 1740 1741 func (x *TestSuspectVerificationDetails) GetParentRerun() *TestSingleRerun { 1742 if x != nil { 1743 return x.ParentRerun 1744 } 1745 return nil 1746 } 1747 1748 type TestCulprit struct { 1749 state protoimpl.MessageState 1750 sizeCache protoimpl.SizeCache 1751 unknownFields protoimpl.UnknownFields 1752 1753 // The gitiles commit for the culprit. 1754 Commit *proto.GitilesCommit `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"` 1755 // The review URL for the culprit. 1756 ReviewUrl string `protobuf:"bytes,2,opt,name=review_url,json=reviewUrl,proto3" json:"review_url,omitempty"` 1757 // The review title for the culprit. 1758 ReviewTitle string `protobuf:"bytes,3,opt,name=review_title,json=reviewTitle,proto3" json:"review_title,omitempty"` 1759 // Actions we have taken with the culprit. 1760 // More than one action may be taken, for example, reverting the culprit and 1761 // commenting on the bug. 1762 CulpritAction []*CulpritAction `protobuf:"bytes,4,rep,name=culprit_action,json=culpritAction,proto3" json:"culprit_action,omitempty"` 1763 // The details of suspect verification for the culprit. 1764 VerificationDetails *TestSuspectVerificationDetails `protobuf:"bytes,5,opt,name=verification_details,json=verificationDetails,proto3" json:"verification_details,omitempty"` 1765 } 1766 1767 func (x *TestCulprit) Reset() { 1768 *x = TestCulprit{} 1769 if protoimpl.UnsafeEnabled { 1770 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[20] 1771 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1772 ms.StoreMessageInfo(mi) 1773 } 1774 } 1775 1776 func (x *TestCulprit) String() string { 1777 return protoimpl.X.MessageStringOf(x) 1778 } 1779 1780 func (*TestCulprit) ProtoMessage() {} 1781 1782 func (x *TestCulprit) ProtoReflect() protoreflect.Message { 1783 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[20] 1784 if protoimpl.UnsafeEnabled && x != nil { 1785 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1786 if ms.LoadMessageInfo() == nil { 1787 ms.StoreMessageInfo(mi) 1788 } 1789 return ms 1790 } 1791 return mi.MessageOf(x) 1792 } 1793 1794 // Deprecated: Use TestCulprit.ProtoReflect.Descriptor instead. 1795 func (*TestCulprit) Descriptor() ([]byte, []int) { 1796 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{20} 1797 } 1798 1799 func (x *TestCulprit) GetCommit() *proto.GitilesCommit { 1800 if x != nil { 1801 return x.Commit 1802 } 1803 return nil 1804 } 1805 1806 func (x *TestCulprit) GetReviewUrl() string { 1807 if x != nil { 1808 return x.ReviewUrl 1809 } 1810 return "" 1811 } 1812 1813 func (x *TestCulprit) GetReviewTitle() string { 1814 if x != nil { 1815 return x.ReviewTitle 1816 } 1817 return "" 1818 } 1819 1820 func (x *TestCulprit) GetCulpritAction() []*CulpritAction { 1821 if x != nil { 1822 return x.CulpritAction 1823 } 1824 return nil 1825 } 1826 1827 func (x *TestCulprit) GetVerificationDetails() *TestSuspectVerificationDetails { 1828 if x != nil { 1829 return x.VerificationDetails 1830 } 1831 return nil 1832 } 1833 1834 type BatchGetTestAnalysesRequest struct { 1835 state protoimpl.MessageState 1836 sizeCache protoimpl.SizeCache 1837 unknownFields protoimpl.UnknownFields 1838 1839 // The LUCI project. 1840 Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` 1841 // The response will only contain analyses which analyze failures in this list. 1842 // It is an error to request for more than 100 test failures. 1843 TestFailures []*BatchGetTestAnalysesRequest_TestFailureIdentifier `protobuf:"bytes,2,rep,name=test_failures,json=testFailures,proto3" json:"test_failures,omitempty"` 1844 // The fields to be included in the response. 1845 // By default, all fields are included. 1846 Fields *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=fields,proto3" json:"fields,omitempty"` 1847 } 1848 1849 func (x *BatchGetTestAnalysesRequest) Reset() { 1850 *x = BatchGetTestAnalysesRequest{} 1851 if protoimpl.UnsafeEnabled { 1852 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[21] 1853 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1854 ms.StoreMessageInfo(mi) 1855 } 1856 } 1857 1858 func (x *BatchGetTestAnalysesRequest) String() string { 1859 return protoimpl.X.MessageStringOf(x) 1860 } 1861 1862 func (*BatchGetTestAnalysesRequest) ProtoMessage() {} 1863 1864 func (x *BatchGetTestAnalysesRequest) ProtoReflect() protoreflect.Message { 1865 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[21] 1866 if protoimpl.UnsafeEnabled && x != nil { 1867 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1868 if ms.LoadMessageInfo() == nil { 1869 ms.StoreMessageInfo(mi) 1870 } 1871 return ms 1872 } 1873 return mi.MessageOf(x) 1874 } 1875 1876 // Deprecated: Use BatchGetTestAnalysesRequest.ProtoReflect.Descriptor instead. 1877 func (*BatchGetTestAnalysesRequest) Descriptor() ([]byte, []int) { 1878 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{21} 1879 } 1880 1881 func (x *BatchGetTestAnalysesRequest) GetProject() string { 1882 if x != nil { 1883 return x.Project 1884 } 1885 return "" 1886 } 1887 1888 func (x *BatchGetTestAnalysesRequest) GetTestFailures() []*BatchGetTestAnalysesRequest_TestFailureIdentifier { 1889 if x != nil { 1890 return x.TestFailures 1891 } 1892 return nil 1893 } 1894 1895 func (x *BatchGetTestAnalysesRequest) GetFields() *fieldmaskpb.FieldMask { 1896 if x != nil { 1897 return x.Fields 1898 } 1899 return nil 1900 } 1901 1902 type BatchGetTestAnalysesResponse struct { 1903 state protoimpl.MessageState 1904 sizeCache protoimpl.SizeCache 1905 unknownFields protoimpl.UnknownFields 1906 1907 // Test analyses for each test failure in the order they were requested. 1908 // The test analysis will be null if the requested test failure has not been 1909 // analyzed by any bisection. 1910 TestAnalyses []*TestAnalysis `protobuf:"bytes,1,rep,name=test_analyses,json=testAnalyses,proto3" json:"test_analyses,omitempty"` 1911 } 1912 1913 func (x *BatchGetTestAnalysesResponse) Reset() { 1914 *x = BatchGetTestAnalysesResponse{} 1915 if protoimpl.UnsafeEnabled { 1916 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[22] 1917 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1918 ms.StoreMessageInfo(mi) 1919 } 1920 } 1921 1922 func (x *BatchGetTestAnalysesResponse) String() string { 1923 return protoimpl.X.MessageStringOf(x) 1924 } 1925 1926 func (*BatchGetTestAnalysesResponse) ProtoMessage() {} 1927 1928 func (x *BatchGetTestAnalysesResponse) ProtoReflect() protoreflect.Message { 1929 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[22] 1930 if protoimpl.UnsafeEnabled && x != nil { 1931 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1932 if ms.LoadMessageInfo() == nil { 1933 ms.StoreMessageInfo(mi) 1934 } 1935 return ms 1936 } 1937 return mi.MessageOf(x) 1938 } 1939 1940 // Deprecated: Use BatchGetTestAnalysesResponse.ProtoReflect.Descriptor instead. 1941 func (*BatchGetTestAnalysesResponse) Descriptor() ([]byte, []int) { 1942 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{22} 1943 } 1944 1945 func (x *BatchGetTestAnalysesResponse) GetTestAnalyses() []*TestAnalysis { 1946 if x != nil { 1947 return x.TestAnalyses 1948 } 1949 return nil 1950 } 1951 1952 // Identify a test failure. 1953 type BatchGetTestAnalysesRequest_TestFailureIdentifier struct { 1954 state protoimpl.MessageState 1955 sizeCache protoimpl.SizeCache 1956 unknownFields protoimpl.UnknownFields 1957 1958 // Identify a test variant. All fields are required. 1959 // This represents the ongoing test failure of this test variant. 1960 TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"` 1961 VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"` 1962 RefHash string `protobuf:"bytes,3,opt,name=ref_hash,json=refHash,proto3" json:"ref_hash,omitempty"` 1963 } 1964 1965 func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) Reset() { 1966 *x = BatchGetTestAnalysesRequest_TestFailureIdentifier{} 1967 if protoimpl.UnsafeEnabled { 1968 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[23] 1969 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1970 ms.StoreMessageInfo(mi) 1971 } 1972 } 1973 1974 func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) String() string { 1975 return protoimpl.X.MessageStringOf(x) 1976 } 1977 1978 func (*BatchGetTestAnalysesRequest_TestFailureIdentifier) ProtoMessage() {} 1979 1980 func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) ProtoReflect() protoreflect.Message { 1981 mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[23] 1982 if protoimpl.UnsafeEnabled && x != nil { 1983 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1984 if ms.LoadMessageInfo() == nil { 1985 ms.StoreMessageInfo(mi) 1986 } 1987 return ms 1988 } 1989 return mi.MessageOf(x) 1990 } 1991 1992 // Deprecated: Use BatchGetTestAnalysesRequest_TestFailureIdentifier.ProtoReflect.Descriptor instead. 1993 func (*BatchGetTestAnalysesRequest_TestFailureIdentifier) Descriptor() ([]byte, []int) { 1994 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{21, 0} 1995 } 1996 1997 func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) GetTestId() string { 1998 if x != nil { 1999 return x.TestId 2000 } 2001 return "" 2002 } 2003 2004 func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) GetVariantHash() string { 2005 if x != nil { 2006 return x.VariantHash 2007 } 2008 return "" 2009 } 2010 2011 func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) GetRefHash() string { 2012 if x != nil { 2013 return x.RefHash 2014 } 2015 return "" 2016 } 2017 2018 var File_go_chromium_org_luci_bisection_proto_v1_analyses_proto protoreflect.FileDescriptor 2019 2020 var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc = []byte{ 2021 0x0a, 0x36, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 2022 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2023 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2024 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 2025 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 2026 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 2027 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 2028 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 2029 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 2030 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 2031 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 2032 0x32, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 2033 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 2034 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x67, 0x73, 0x2e, 0x70, 0x72, 2035 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 2036 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 2037 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 2038 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x6f, 0x2e, 0x63, 0x68, 2039 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 2040 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 2041 0x76, 0x31, 0x2f, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 2042 0x6f, 0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 2043 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 2044 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x75, 0x72, 0x69, 2045 0x73, 0x74, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x6f, 0x2e, 0x63, 2046 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 2047 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2048 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x74, 0x68, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 2049 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 2050 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 2051 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 2052 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x6f, 0x2e, 0x63, 0x68, 2053 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 2054 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 2055 0x6f, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 2056 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 2057 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 2058 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 2059 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 2060 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79, 2061 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x75, 2062 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 2063 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2064 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 2065 0x72, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 2066 0x22, 0x50, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2067 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x61, 0x6e, 0x61, 2068 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 2069 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 2070 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2071 0x65, 0x73, 0x22, 0x51, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2072 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 2073 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 2074 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 2075 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 2076 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 2077 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 2078 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 2079 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2080 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e, 2081 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 2082 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 2083 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x95, 2084 0x01, 0x0a, 0x16, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2085 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x75, 0x69, 2086 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 2087 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 2088 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 2089 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 2090 0x35, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 2091 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2092 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x62, 2093 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x76, 0x0a, 0x17, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 2094 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 2095 0x65, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 2096 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2097 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x06, 2098 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x77, 2099 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 2100 0x0d, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, 0x74, 2101 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 2102 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 2103 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 2104 0x02, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x35, 0x0a, 2105 0x08, 0x62, 0x75, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 2106 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2107 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x62, 0x75, 0x67, 2108 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf7, 0x06, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2109 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 2110 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 2111 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 2112 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 2113 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 2114 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 2115 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 2116 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 2117 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 2118 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 2119 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 2120 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 2121 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 2122 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72, 2123 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 2124 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x62, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 2125 0x28, 0x03, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x42, 0x62, 2126 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 2127 0x65, 0x64, 0x5f, 0x62, 0x62, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x66, 2128 0x69, 0x72, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x62, 0x69, 0x64, 0x12, 0x3d, 2129 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 2130 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2131 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 2132 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 2133 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 2134 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2135 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 2136 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 2137 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 2138 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2139 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 2140 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x10, 2141 0x68, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 2142 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 2143 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x75, 0x72, 0x69, 2144 0x73, 0x74, 0x69, 0x63, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 2145 0x6c, 0x74, 0x52, 0x0f, 0x68, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 2146 0x75, 0x6c, 0x74, 0x12, 0x59, 0x0a, 0x12, 0x6e, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 2147 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 2148 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2149 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 2150 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x6e, 0x74, 2151 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 2152 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 2153 0x19, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 2154 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x49, 0x44, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 2155 0x64, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x12, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 2156 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 2157 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2158 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 2159 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 2160 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 2161 0x74, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 2162 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x6c, 2163 0x70, 0x72, 0x69, 0x74, 0x52, 0x08, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x73, 0x22, 0x4c, 2164 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x12, 2165 0x0a, 0x04, 0x62, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x62, 0x62, 2166 0x69, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x65, 2167 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x61, 2168 0x69, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa8, 0x01, 0x0a, 2169 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 2170 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 2171 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 2172 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 2173 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 2174 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 2175 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 2176 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 2177 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 2178 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 2179 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7f, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 2180 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 2181 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 2182 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 2183 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 2184 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 2185 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 2186 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 2187 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 2188 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 2189 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 2190 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x6e, 2191 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 2192 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2193 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 2194 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0xec, 0x06, 0x0a, 2195 0x0c, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1f, 0x0a, 2196 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 2197 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x3d, 2198 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 2199 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2200 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 2201 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 2202 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 2203 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2204 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 2205 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 2206 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 2207 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 2208 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 2209 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 2210 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2211 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 2212 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x72, 0x75, 2213 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 2214 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 2215 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x53, 0x74, 2216 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 2217 0x38, 0x0a, 0x07, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 2218 0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 2219 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 2220 0x52, 0x07, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x62, 0x75, 0x69, 2221 0x6c, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x69, 2222 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x69, 0x6c, 2223 0x64, 0x65, 0x72, 0x49, 0x44, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x43, 2224 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 2225 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 2226 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 2227 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 2228 0x72, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 2229 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 2230 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 2231 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 2232 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 2233 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 2234 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 2235 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 2236 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x66, 0x61, 0x69, 2237 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 2238 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x61, 0x74, 2239 0x65, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 2240 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x65, 0x6e, 0x64, 2241 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 2242 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x62, 0x62, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 2243 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x62, 0x69, 0x64, 0x12, 0x5d, 0x0a, 0x12, 2244 0x6e, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 2245 0x6c, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 2246 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 2247 0x74, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 2248 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x6e, 0x74, 0x68, 0x53, 0x65, 2249 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x02, 0x0a, 0x0b, 2250 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 2251 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 2252 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 2253 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 2254 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x68, 2255 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x48, 0x61, 2256 0x73, 0x68, 0x12, 0x34, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 2257 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 2258 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 2259 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x64, 2260 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 2261 0x73, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 2262 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 2263 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 2264 0x74, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 2265 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 2266 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 2267 0x6f, 0x75, 0x72, 0x22, 0xa6, 0x04, 0x0a, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x4e, 0x74, 0x68, 0x53, 2268 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 2269 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 2270 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 2271 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2272 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 2273 0x43, 0x0a, 0x0a, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 2274 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 2275 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 2276 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72, 0x75, 0x6e, 0x53, 0x74, 2277 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 2278 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2279 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 2280 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 2281 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 2282 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2283 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 2284 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x1b, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 2285 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 2286 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x75, 2287 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 2288 0x52, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 2289 0x18, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63, 2290 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x72, 0x65, 0x72, 2291 0x75, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69, 2292 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 2293 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x06, 0x72, 2294 0x65, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 2295 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 2296 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 2297 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x09, 0x62, 0x6c, 0x61, 0x6d, 0x65, 0x4c, 0x69, 2298 0x73, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 2299 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 2300 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x75, 0x6c, 0x70, 2301 0x72, 0x69, 0x74, 0x52, 0x07, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x22, 0xbd, 0x03, 0x0a, 2302 0x0f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 2303 0x12, 0x12, 0x0a, 0x04, 0x62, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 2304 0x62, 0x62, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 2305 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2306 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 2307 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 2308 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 2309 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 2310 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 2311 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 2312 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 2313 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2314 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 2315 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x69, 2316 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2317 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 2318 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 2319 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 2320 0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x72, 0x75, 0x6e, 2321 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 2322 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2323 0x31, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 2324 0x74, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 2325 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 2326 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 2327 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 2328 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 2329 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x99, 0x01, 0x0a, 2330 0x10, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 2331 0x73, 0x12, 0x42, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 2332 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 2333 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 2334 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 2335 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0c, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x5f, 0x73, 2336 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x75, 2337 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 2338 0x52, 0x65, 0x72, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x72, 2339 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x72, 2340 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 2341 0x6c, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 2342 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 2343 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 2344 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, 2345 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 2346 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 2347 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 2348 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 2349 0x0f, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 2350 0x22, 0xf6, 0x01, 0x0a, 0x1e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 2351 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 2352 0x69, 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 2353 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 2354 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x56, 2355 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 2356 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x75, 0x73, 2357 0x70, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 2358 0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 2359 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 2360 0x65, 0x72, 0x75, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x72, 2361 0x75, 0x6e, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x72, 2362 0x75, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 2363 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 2364 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x0b, 0x70, 0x61, 2365 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x22, 0xb5, 0x02, 0x0a, 0x0b, 0x54, 0x65, 2366 0x73, 0x74, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 2367 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 2368 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 2369 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 2370 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 2371 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12, 2372 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 2373 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x69, 0x74, 2374 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x5f, 0x61, 0x63, 2375 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 2376 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 2377 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x75, 2378 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x14, 0x76, 2379 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 2380 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x75, 0x63, 0x69, 2381 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 2382 0x73, 0x74, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 2383 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x13, 0x76, 0x65, 2384 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 2385 0x73, 0x22, 0xc6, 0x02, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 2386 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2387 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 2388 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x69, 0x0a, 0x0d, 0x74, 2389 0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 2390 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 2391 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 2392 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 2393 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x64, 2394 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x46, 0x61, 2395 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 2396 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2397 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 2398 0x73, 0x6b, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x6e, 0x0a, 0x15, 0x54, 0x65, 2399 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 2400 0x69, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 2401 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 2402 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 2403 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 2404 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 2405 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x48, 0x61, 0x73, 0x68, 0x22, 0x64, 0x0a, 0x1c, 0x42, 0x61, 2406 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2407 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x65, 2408 0x73, 0x74, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 2409 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2410 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2411 0x69, 0x73, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 2412 0x2a, 0x5e, 0x0a, 0x11, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x53, 2413 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 2414 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 2415 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 2416 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x44, 0x45, 0x44, 2417 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 2418 0x2a, 0x63, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 2419 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x46, 0x41, 2420 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 2421 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 2422 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x02, 0x12, 2423 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, 2424 0x48, 0x45, 0x52, 0x10, 0x04, 0x32, 0xaa, 0x06, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2425 0x65, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2426 0x73, 0x12, 0x25, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2427 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2428 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 2429 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 2430 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x62, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 2431 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 2432 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 2433 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 2434 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2435 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2436 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 2437 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69, 2438 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 2439 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2440 0x74, 0x1a, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2441 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2442 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0f, 0x54, 0x72, 2443 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x29, 0x2e, 2444 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2445 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2446 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 2447 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 2448 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 2449 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 2450 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 2451 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 2452 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2453 0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 2454 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x6b, 0x0a, 2455 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 2456 0x73, 0x12, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2457 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 2458 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 2459 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2460 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 2461 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x47, 0x65, 2462 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x29, 0x2e, 2463 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2464 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 2465 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 2466 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 2467 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x77, 0x0a, 0x14, 0x42, 0x61, 0x74, 2468 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 2469 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2470 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 2471 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2472 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 2473 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 2474 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 2475 0x73, 0x65, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 2476 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 2477 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x62, 0x69, 2478 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2479 0x33, 2480 } 2481 2482 var ( 2483 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescOnce sync.Once 2484 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData = file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc 2485 ) 2486 2487 func file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP() []byte { 2488 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescOnce.Do(func() { 2489 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData) 2490 }) 2491 return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData 2492 } 2493 2494 var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes = make([]protoimpl.EnumInfo, 2) 2495 var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes = make([]protoimpl.MessageInfo, 24) 2496 var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_goTypes = []interface{}{ 2497 (AnalysisRunStatus)(0), // 0: luci.bisection.v1.AnalysisRunStatus 2498 (BuildFailureType)(0), // 1: luci.bisection.v1.BuildFailureType 2499 (*GetAnalysisRequest)(nil), // 2: luci.bisection.v1.GetAnalysisRequest 2500 (*QueryAnalysisRequest)(nil), // 3: luci.bisection.v1.QueryAnalysisRequest 2501 (*QueryAnalysisResponse)(nil), // 4: luci.bisection.v1.QueryAnalysisResponse 2502 (*ListAnalysesRequest)(nil), // 5: luci.bisection.v1.ListAnalysesRequest 2503 (*ListAnalysesResponse)(nil), // 6: luci.bisection.v1.ListAnalysesResponse 2504 (*TriggerAnalysisRequest)(nil), // 7: luci.bisection.v1.TriggerAnalysisRequest 2505 (*TriggerAnalysisResponse)(nil), // 8: luci.bisection.v1.TriggerAnalysisResponse 2506 (*UpdateAnalysisRequest)(nil), // 9: luci.bisection.v1.UpdateAnalysisRequest 2507 (*Analysis)(nil), // 10: luci.bisection.v1.Analysis 2508 (*BuildFailure)(nil), // 11: luci.bisection.v1.BuildFailure 2509 (*ListTestAnalysesRequest)(nil), // 12: luci.bisection.v1.ListTestAnalysesRequest 2510 (*ListTestAnalysesResponse)(nil), // 13: luci.bisection.v1.ListTestAnalysesResponse 2511 (*GetTestAnalysisRequest)(nil), // 14: luci.bisection.v1.GetTestAnalysisRequest 2512 (*TestAnalysis)(nil), // 15: luci.bisection.v1.TestAnalysis 2513 (*TestFailure)(nil), // 16: luci.bisection.v1.TestFailure 2514 (*TestNthSectionAnalysisResult)(nil), // 17: luci.bisection.v1.TestNthSectionAnalysisResult 2515 (*TestSingleRerun)(nil), // 18: luci.bisection.v1.TestSingleRerun 2516 (*RerunTestResults)(nil), // 19: luci.bisection.v1.RerunTestResults 2517 (*RerunTestSingleResult)(nil), // 20: luci.bisection.v1.RerunTestSingleResult 2518 (*TestSuspectVerificationDetails)(nil), // 21: luci.bisection.v1.TestSuspectVerificationDetails 2519 (*TestCulprit)(nil), // 22: luci.bisection.v1.TestCulprit 2520 (*BatchGetTestAnalysesRequest)(nil), // 23: luci.bisection.v1.BatchGetTestAnalysesRequest 2521 (*BatchGetTestAnalysesResponse)(nil), // 24: luci.bisection.v1.BatchGetTestAnalysesResponse 2522 (*BatchGetTestAnalysesRequest_TestFailureIdentifier)(nil), // 25: luci.bisection.v1.BatchGetTestAnalysesRequest.TestFailureIdentifier 2523 (*BugInfo)(nil), // 26: luci.bisection.v1.BugInfo 2524 (AnalysisStatus)(0), // 27: luci.bisection.v1.AnalysisStatus 2525 (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp 2526 (*HeuristicAnalysisResult)(nil), // 29: luci.bisection.v1.HeuristicAnalysisResult 2527 (*NthSectionAnalysisResult)(nil), // 30: luci.bisection.v1.NthSectionAnalysisResult 2528 (*proto.BuilderID)(nil), // 31: buildbucket.v2.BuilderID 2529 (*Culprit)(nil), // 32: luci.bisection.v1.Culprit 2530 (*fieldmaskpb.FieldMask)(nil), // 33: google.protobuf.FieldMask 2531 (*proto.GitilesCommit)(nil), // 34: buildbucket.v2.GitilesCommit 2532 (*Variant)(nil), // 35: luci.bisection.v1.Variant 2533 (*RegressionRange)(nil), // 36: luci.bisection.v1.RegressionRange 2534 (*BlameList)(nil), // 37: luci.bisection.v1.BlameList 2535 (RerunStatus)(0), // 38: luci.bisection.v1.RerunStatus 2536 (SuspectVerificationStatus)(0), // 39: luci.bisection.v1.SuspectVerificationStatus 2537 (*CulpritAction)(nil), // 40: luci.bisection.v1.CulpritAction 2538 } 2539 var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_depIdxs = []int32{ 2540 11, // 0: luci.bisection.v1.QueryAnalysisRequest.build_failure:type_name -> luci.bisection.v1.BuildFailure 2541 10, // 1: luci.bisection.v1.QueryAnalysisResponse.analyses:type_name -> luci.bisection.v1.Analysis 2542 10, // 2: luci.bisection.v1.ListAnalysesResponse.analyses:type_name -> luci.bisection.v1.Analysis 2543 11, // 3: luci.bisection.v1.TriggerAnalysisRequest.build_failure:type_name -> luci.bisection.v1.BuildFailure 2544 26, // 4: luci.bisection.v1.TriggerAnalysisRequest.bug_info:type_name -> luci.bisection.v1.BugInfo 2545 10, // 5: luci.bisection.v1.TriggerAnalysisResponse.result:type_name -> luci.bisection.v1.Analysis 2546 26, // 6: luci.bisection.v1.UpdateAnalysisRequest.bug_info:type_name -> luci.bisection.v1.BugInfo 2547 11, // 7: luci.bisection.v1.Analysis.build_failure:type_name -> luci.bisection.v1.BuildFailure 2548 27, // 8: luci.bisection.v1.Analysis.status:type_name -> luci.bisection.v1.AnalysisStatus 2549 0, // 9: luci.bisection.v1.Analysis.run_status:type_name -> luci.bisection.v1.AnalysisRunStatus 2550 28, // 10: luci.bisection.v1.Analysis.created_time:type_name -> google.protobuf.Timestamp 2551 28, // 11: luci.bisection.v1.Analysis.last_updated_time:type_name -> google.protobuf.Timestamp 2552 28, // 12: luci.bisection.v1.Analysis.end_time:type_name -> google.protobuf.Timestamp 2553 29, // 13: luci.bisection.v1.Analysis.heuristic_result:type_name -> luci.bisection.v1.HeuristicAnalysisResult 2554 30, // 14: luci.bisection.v1.Analysis.nth_section_result:type_name -> luci.bisection.v1.NthSectionAnalysisResult 2555 31, // 15: luci.bisection.v1.Analysis.builder:type_name -> buildbucket.v2.BuilderID 2556 1, // 16: luci.bisection.v1.Analysis.build_failure_type:type_name -> luci.bisection.v1.BuildFailureType 2557 32, // 17: luci.bisection.v1.Analysis.culprits:type_name -> luci.bisection.v1.Culprit 2558 33, // 18: luci.bisection.v1.ListTestAnalysesRequest.fields:type_name -> google.protobuf.FieldMask 2559 15, // 19: luci.bisection.v1.ListTestAnalysesResponse.analyses:type_name -> luci.bisection.v1.TestAnalysis 2560 33, // 20: luci.bisection.v1.GetTestAnalysisRequest.fields:type_name -> google.protobuf.FieldMask 2561 28, // 21: luci.bisection.v1.TestAnalysis.created_time:type_name -> google.protobuf.Timestamp 2562 28, // 22: luci.bisection.v1.TestAnalysis.start_time:type_name -> google.protobuf.Timestamp 2563 28, // 23: luci.bisection.v1.TestAnalysis.end_time:type_name -> google.protobuf.Timestamp 2564 27, // 24: luci.bisection.v1.TestAnalysis.status:type_name -> luci.bisection.v1.AnalysisStatus 2565 0, // 25: luci.bisection.v1.TestAnalysis.run_status:type_name -> luci.bisection.v1.AnalysisRunStatus 2566 22, // 26: luci.bisection.v1.TestAnalysis.culprit:type_name -> luci.bisection.v1.TestCulprit 2567 31, // 27: luci.bisection.v1.TestAnalysis.builder:type_name -> buildbucket.v2.BuilderID 2568 16, // 28: luci.bisection.v1.TestAnalysis.test_failures:type_name -> luci.bisection.v1.TestFailure 2569 34, // 29: luci.bisection.v1.TestAnalysis.start_commit:type_name -> buildbucket.v2.GitilesCommit 2570 34, // 30: luci.bisection.v1.TestAnalysis.end_commit:type_name -> buildbucket.v2.GitilesCommit 2571 17, // 31: luci.bisection.v1.TestAnalysis.nth_section_result:type_name -> luci.bisection.v1.TestNthSectionAnalysisResult 2572 35, // 32: luci.bisection.v1.TestFailure.variant:type_name -> luci.bisection.v1.Variant 2573 28, // 33: luci.bisection.v1.TestFailure.start_hour:type_name -> google.protobuf.Timestamp 2574 27, // 34: luci.bisection.v1.TestNthSectionAnalysisResult.status:type_name -> luci.bisection.v1.AnalysisStatus 2575 0, // 35: luci.bisection.v1.TestNthSectionAnalysisResult.run_status:type_name -> luci.bisection.v1.AnalysisRunStatus 2576 28, // 36: luci.bisection.v1.TestNthSectionAnalysisResult.start_time:type_name -> google.protobuf.Timestamp 2577 28, // 37: luci.bisection.v1.TestNthSectionAnalysisResult.end_time:type_name -> google.protobuf.Timestamp 2578 36, // 38: luci.bisection.v1.TestNthSectionAnalysisResult.remaining_nth_section_range:type_name -> luci.bisection.v1.RegressionRange 2579 18, // 39: luci.bisection.v1.TestNthSectionAnalysisResult.reruns:type_name -> luci.bisection.v1.TestSingleRerun 2580 37, // 40: luci.bisection.v1.TestNthSectionAnalysisResult.blame_list:type_name -> luci.bisection.v1.BlameList 2581 22, // 41: luci.bisection.v1.TestNthSectionAnalysisResult.suspect:type_name -> luci.bisection.v1.TestCulprit 2582 28, // 42: luci.bisection.v1.TestSingleRerun.create_time:type_name -> google.protobuf.Timestamp 2583 28, // 43: luci.bisection.v1.TestSingleRerun.start_time:type_name -> google.protobuf.Timestamp 2584 28, // 44: luci.bisection.v1.TestSingleRerun.end_time:type_name -> google.protobuf.Timestamp 2585 28, // 45: luci.bisection.v1.TestSingleRerun.report_time:type_name -> google.protobuf.Timestamp 2586 19, // 46: luci.bisection.v1.TestSingleRerun.rerun_result:type_name -> luci.bisection.v1.RerunTestResults 2587 34, // 47: luci.bisection.v1.TestSingleRerun.commit:type_name -> buildbucket.v2.GitilesCommit 2588 20, // 48: luci.bisection.v1.RerunTestResults.results:type_name -> luci.bisection.v1.RerunTestSingleResult 2589 38, // 49: luci.bisection.v1.RerunTestResults.rerun_status:type_name -> luci.bisection.v1.RerunStatus 2590 39, // 50: luci.bisection.v1.TestSuspectVerificationDetails.status:type_name -> luci.bisection.v1.SuspectVerificationStatus 2591 18, // 51: luci.bisection.v1.TestSuspectVerificationDetails.suspect_rerun:type_name -> luci.bisection.v1.TestSingleRerun 2592 18, // 52: luci.bisection.v1.TestSuspectVerificationDetails.parent_rerun:type_name -> luci.bisection.v1.TestSingleRerun 2593 34, // 53: luci.bisection.v1.TestCulprit.commit:type_name -> buildbucket.v2.GitilesCommit 2594 40, // 54: luci.bisection.v1.TestCulprit.culprit_action:type_name -> luci.bisection.v1.CulpritAction 2595 21, // 55: luci.bisection.v1.TestCulprit.verification_details:type_name -> luci.bisection.v1.TestSuspectVerificationDetails 2596 25, // 56: luci.bisection.v1.BatchGetTestAnalysesRequest.test_failures:type_name -> luci.bisection.v1.BatchGetTestAnalysesRequest.TestFailureIdentifier 2597 33, // 57: luci.bisection.v1.BatchGetTestAnalysesRequest.fields:type_name -> google.protobuf.FieldMask 2598 15, // 58: luci.bisection.v1.BatchGetTestAnalysesResponse.test_analyses:type_name -> luci.bisection.v1.TestAnalysis 2599 2, // 59: luci.bisection.v1.Analyses.GetAnalysis:input_type -> luci.bisection.v1.GetAnalysisRequest 2600 3, // 60: luci.bisection.v1.Analyses.QueryAnalysis:input_type -> luci.bisection.v1.QueryAnalysisRequest 2601 5, // 61: luci.bisection.v1.Analyses.ListAnalyses:input_type -> luci.bisection.v1.ListAnalysesRequest 2602 7, // 62: luci.bisection.v1.Analyses.TriggerAnalysis:input_type -> luci.bisection.v1.TriggerAnalysisRequest 2603 9, // 63: luci.bisection.v1.Analyses.UpdateAnalysis:input_type -> luci.bisection.v1.UpdateAnalysisRequest 2604 12, // 64: luci.bisection.v1.Analyses.ListTestAnalyses:input_type -> luci.bisection.v1.ListTestAnalysesRequest 2605 14, // 65: luci.bisection.v1.Analyses.GetTestAnalysis:input_type -> luci.bisection.v1.GetTestAnalysisRequest 2606 23, // 66: luci.bisection.v1.Analyses.BatchGetTestAnalyses:input_type -> luci.bisection.v1.BatchGetTestAnalysesRequest 2607 10, // 67: luci.bisection.v1.Analyses.GetAnalysis:output_type -> luci.bisection.v1.Analysis 2608 4, // 68: luci.bisection.v1.Analyses.QueryAnalysis:output_type -> luci.bisection.v1.QueryAnalysisResponse 2609 6, // 69: luci.bisection.v1.Analyses.ListAnalyses:output_type -> luci.bisection.v1.ListAnalysesResponse 2610 8, // 70: luci.bisection.v1.Analyses.TriggerAnalysis:output_type -> luci.bisection.v1.TriggerAnalysisResponse 2611 10, // 71: luci.bisection.v1.Analyses.UpdateAnalysis:output_type -> luci.bisection.v1.Analysis 2612 13, // 72: luci.bisection.v1.Analyses.ListTestAnalyses:output_type -> luci.bisection.v1.ListTestAnalysesResponse 2613 15, // 73: luci.bisection.v1.Analyses.GetTestAnalysis:output_type -> luci.bisection.v1.TestAnalysis 2614 24, // 74: luci.bisection.v1.Analyses.BatchGetTestAnalyses:output_type -> luci.bisection.v1.BatchGetTestAnalysesResponse 2615 67, // [67:75] is the sub-list for method output_type 2616 59, // [59:67] is the sub-list for method input_type 2617 59, // [59:59] is the sub-list for extension type_name 2618 59, // [59:59] is the sub-list for extension extendee 2619 0, // [0:59] is the sub-list for field type_name 2620 } 2621 2622 func init() { file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_init() } 2623 func file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_init() { 2624 if File_go_chromium_org_luci_bisection_proto_v1_analyses_proto != nil { 2625 return 2626 } 2627 file_go_chromium_org_luci_bisection_proto_v1_bugs_proto_init() 2628 file_go_chromium_org_luci_bisection_proto_v1_common_proto_init() 2629 file_go_chromium_org_luci_bisection_proto_v1_culprits_proto_init() 2630 file_go_chromium_org_luci_bisection_proto_v1_heuristic_proto_init() 2631 file_go_chromium_org_luci_bisection_proto_v1_nthsection_proto_init() 2632 if !protoimpl.UnsafeEnabled { 2633 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2634 switch v := v.(*GetAnalysisRequest); i { 2635 case 0: 2636 return &v.state 2637 case 1: 2638 return &v.sizeCache 2639 case 2: 2640 return &v.unknownFields 2641 default: 2642 return nil 2643 } 2644 } 2645 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2646 switch v := v.(*QueryAnalysisRequest); i { 2647 case 0: 2648 return &v.state 2649 case 1: 2650 return &v.sizeCache 2651 case 2: 2652 return &v.unknownFields 2653 default: 2654 return nil 2655 } 2656 } 2657 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2658 switch v := v.(*QueryAnalysisResponse); i { 2659 case 0: 2660 return &v.state 2661 case 1: 2662 return &v.sizeCache 2663 case 2: 2664 return &v.unknownFields 2665 default: 2666 return nil 2667 } 2668 } 2669 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2670 switch v := v.(*ListAnalysesRequest); i { 2671 case 0: 2672 return &v.state 2673 case 1: 2674 return &v.sizeCache 2675 case 2: 2676 return &v.unknownFields 2677 default: 2678 return nil 2679 } 2680 } 2681 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2682 switch v := v.(*ListAnalysesResponse); i { 2683 case 0: 2684 return &v.state 2685 case 1: 2686 return &v.sizeCache 2687 case 2: 2688 return &v.unknownFields 2689 default: 2690 return nil 2691 } 2692 } 2693 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2694 switch v := v.(*TriggerAnalysisRequest); i { 2695 case 0: 2696 return &v.state 2697 case 1: 2698 return &v.sizeCache 2699 case 2: 2700 return &v.unknownFields 2701 default: 2702 return nil 2703 } 2704 } 2705 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2706 switch v := v.(*TriggerAnalysisResponse); i { 2707 case 0: 2708 return &v.state 2709 case 1: 2710 return &v.sizeCache 2711 case 2: 2712 return &v.unknownFields 2713 default: 2714 return nil 2715 } 2716 } 2717 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2718 switch v := v.(*UpdateAnalysisRequest); i { 2719 case 0: 2720 return &v.state 2721 case 1: 2722 return &v.sizeCache 2723 case 2: 2724 return &v.unknownFields 2725 default: 2726 return nil 2727 } 2728 } 2729 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2730 switch v := v.(*Analysis); i { 2731 case 0: 2732 return &v.state 2733 case 1: 2734 return &v.sizeCache 2735 case 2: 2736 return &v.unknownFields 2737 default: 2738 return nil 2739 } 2740 } 2741 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2742 switch v := v.(*BuildFailure); i { 2743 case 0: 2744 return &v.state 2745 case 1: 2746 return &v.sizeCache 2747 case 2: 2748 return &v.unknownFields 2749 default: 2750 return nil 2751 } 2752 } 2753 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2754 switch v := v.(*ListTestAnalysesRequest); i { 2755 case 0: 2756 return &v.state 2757 case 1: 2758 return &v.sizeCache 2759 case 2: 2760 return &v.unknownFields 2761 default: 2762 return nil 2763 } 2764 } 2765 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2766 switch v := v.(*ListTestAnalysesResponse); i { 2767 case 0: 2768 return &v.state 2769 case 1: 2770 return &v.sizeCache 2771 case 2: 2772 return &v.unknownFields 2773 default: 2774 return nil 2775 } 2776 } 2777 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 2778 switch v := v.(*GetTestAnalysisRequest); i { 2779 case 0: 2780 return &v.state 2781 case 1: 2782 return &v.sizeCache 2783 case 2: 2784 return &v.unknownFields 2785 default: 2786 return nil 2787 } 2788 } 2789 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 2790 switch v := v.(*TestAnalysis); i { 2791 case 0: 2792 return &v.state 2793 case 1: 2794 return &v.sizeCache 2795 case 2: 2796 return &v.unknownFields 2797 default: 2798 return nil 2799 } 2800 } 2801 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 2802 switch v := v.(*TestFailure); i { 2803 case 0: 2804 return &v.state 2805 case 1: 2806 return &v.sizeCache 2807 case 2: 2808 return &v.unknownFields 2809 default: 2810 return nil 2811 } 2812 } 2813 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 2814 switch v := v.(*TestNthSectionAnalysisResult); i { 2815 case 0: 2816 return &v.state 2817 case 1: 2818 return &v.sizeCache 2819 case 2: 2820 return &v.unknownFields 2821 default: 2822 return nil 2823 } 2824 } 2825 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 2826 switch v := v.(*TestSingleRerun); i { 2827 case 0: 2828 return &v.state 2829 case 1: 2830 return &v.sizeCache 2831 case 2: 2832 return &v.unknownFields 2833 default: 2834 return nil 2835 } 2836 } 2837 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 2838 switch v := v.(*RerunTestResults); i { 2839 case 0: 2840 return &v.state 2841 case 1: 2842 return &v.sizeCache 2843 case 2: 2844 return &v.unknownFields 2845 default: 2846 return nil 2847 } 2848 } 2849 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 2850 switch v := v.(*RerunTestSingleResult); i { 2851 case 0: 2852 return &v.state 2853 case 1: 2854 return &v.sizeCache 2855 case 2: 2856 return &v.unknownFields 2857 default: 2858 return nil 2859 } 2860 } 2861 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 2862 switch v := v.(*TestSuspectVerificationDetails); i { 2863 case 0: 2864 return &v.state 2865 case 1: 2866 return &v.sizeCache 2867 case 2: 2868 return &v.unknownFields 2869 default: 2870 return nil 2871 } 2872 } 2873 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 2874 switch v := v.(*TestCulprit); i { 2875 case 0: 2876 return &v.state 2877 case 1: 2878 return &v.sizeCache 2879 case 2: 2880 return &v.unknownFields 2881 default: 2882 return nil 2883 } 2884 } 2885 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 2886 switch v := v.(*BatchGetTestAnalysesRequest); i { 2887 case 0: 2888 return &v.state 2889 case 1: 2890 return &v.sizeCache 2891 case 2: 2892 return &v.unknownFields 2893 default: 2894 return nil 2895 } 2896 } 2897 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { 2898 switch v := v.(*BatchGetTestAnalysesResponse); i { 2899 case 0: 2900 return &v.state 2901 case 1: 2902 return &v.sizeCache 2903 case 2: 2904 return &v.unknownFields 2905 default: 2906 return nil 2907 } 2908 } 2909 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { 2910 switch v := v.(*BatchGetTestAnalysesRequest_TestFailureIdentifier); i { 2911 case 0: 2912 return &v.state 2913 case 1: 2914 return &v.sizeCache 2915 case 2: 2916 return &v.unknownFields 2917 default: 2918 return nil 2919 } 2920 } 2921 } 2922 type x struct{} 2923 out := protoimpl.TypeBuilder{ 2924 File: protoimpl.DescBuilder{ 2925 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2926 RawDescriptor: file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc, 2927 NumEnums: 2, 2928 NumMessages: 24, 2929 NumExtensions: 0, 2930 NumServices: 1, 2931 }, 2932 GoTypes: file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_goTypes, 2933 DependencyIndexes: file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_depIdxs, 2934 EnumInfos: file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes, 2935 MessageInfos: file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes, 2936 }.Build() 2937 File_go_chromium_org_luci_bisection_proto_v1_analyses_proto = out.File 2938 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc = nil 2939 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_goTypes = nil 2940 file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_depIdxs = nil 2941 } 2942 2943 // Reference imports to suppress errors if they are not otherwise used. 2944 var _ context.Context 2945 var _ grpc.ClientConnInterface 2946 2947 // This is a compile-time assertion to ensure that this generated file 2948 // is compatible with the grpc package it is being compiled against. 2949 const _ = grpc.SupportPackageIsVersion6 2950 2951 // AnalysesClient is the client API for Analyses service. 2952 // 2953 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 2954 type AnalysesClient interface { 2955 // GetAnalysis is used to get an analysis by analysis ID. 2956 GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) 2957 // QueryAnalysis is used to query for the status and result of analyses. 2958 // The user can pass in the failure information to retrieve the analyses. 2959 QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error) 2960 // ListAnalyses is used to get existing analyses. 2961 // Most recently created analyses are returned first. 2962 ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error) 2963 // TriggerAnalysis is used to trigger an analysis for a failed build. 2964 // This RPC is called from a LUCI Bisection client like SoM or Milo. 2965 // If an existing analysis is found for the same failure, no new analysis 2966 // will be triggered. 2967 TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error) 2968 // Update the information of an analysis, 2969 // e.g. update the bugs associated with an analysis. 2970 // Mainly used by SoM, since LUCI Bisection does not have any information 2971 // about bugs created by sheriffs. 2972 UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) 2973 // ListTestAnalyses is used to get existing test analyses. 2974 // Most recently created test analyses are returned first. 2975 ListTestAnalyses(ctx context.Context, in *ListTestAnalysesRequest, opts ...grpc.CallOption) (*ListTestAnalysesResponse, error) 2976 // GetTestAnalysis is used to get a test analysis by its ID. 2977 GetTestAnalysis(ctx context.Context, in *GetTestAnalysisRequest, opts ...grpc.CallOption) (*TestAnalysis, error) 2978 // BatchGetTestAnalyses is an RPC to batch get test analyses for test failures. 2979 // At this moment it only support getting the bisection for the ongoing test failure. 2980 // TODO(@beining): This endpoint can be extended to support returning bisection for 2981 // any test failure by specifying source position in the request. 2982 BatchGetTestAnalyses(ctx context.Context, in *BatchGetTestAnalysesRequest, opts ...grpc.CallOption) (*BatchGetTestAnalysesResponse, error) 2983 } 2984 type analysesPRPCClient struct { 2985 client *prpc.Client 2986 } 2987 2988 func NewAnalysesPRPCClient(client *prpc.Client) AnalysesClient { 2989 return &analysesPRPCClient{client} 2990 } 2991 2992 func (c *analysesPRPCClient) GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) { 2993 out := new(Analysis) 2994 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "GetAnalysis", in, out, opts...) 2995 if err != nil { 2996 return nil, err 2997 } 2998 return out, nil 2999 } 3000 3001 func (c *analysesPRPCClient) QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error) { 3002 out := new(QueryAnalysisResponse) 3003 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "QueryAnalysis", in, out, opts...) 3004 if err != nil { 3005 return nil, err 3006 } 3007 return out, nil 3008 } 3009 3010 func (c *analysesPRPCClient) ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error) { 3011 out := new(ListAnalysesResponse) 3012 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "ListAnalyses", in, out, opts...) 3013 if err != nil { 3014 return nil, err 3015 } 3016 return out, nil 3017 } 3018 3019 func (c *analysesPRPCClient) TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error) { 3020 out := new(TriggerAnalysisResponse) 3021 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "TriggerAnalysis", in, out, opts...) 3022 if err != nil { 3023 return nil, err 3024 } 3025 return out, nil 3026 } 3027 3028 func (c *analysesPRPCClient) UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) { 3029 out := new(Analysis) 3030 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "UpdateAnalysis", in, out, opts...) 3031 if err != nil { 3032 return nil, err 3033 } 3034 return out, nil 3035 } 3036 3037 func (c *analysesPRPCClient) ListTestAnalyses(ctx context.Context, in *ListTestAnalysesRequest, opts ...grpc.CallOption) (*ListTestAnalysesResponse, error) { 3038 out := new(ListTestAnalysesResponse) 3039 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "ListTestAnalyses", in, out, opts...) 3040 if err != nil { 3041 return nil, err 3042 } 3043 return out, nil 3044 } 3045 3046 func (c *analysesPRPCClient) GetTestAnalysis(ctx context.Context, in *GetTestAnalysisRequest, opts ...grpc.CallOption) (*TestAnalysis, error) { 3047 out := new(TestAnalysis) 3048 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "GetTestAnalysis", in, out, opts...) 3049 if err != nil { 3050 return nil, err 3051 } 3052 return out, nil 3053 } 3054 3055 func (c *analysesPRPCClient) BatchGetTestAnalyses(ctx context.Context, in *BatchGetTestAnalysesRequest, opts ...grpc.CallOption) (*BatchGetTestAnalysesResponse, error) { 3056 out := new(BatchGetTestAnalysesResponse) 3057 err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "BatchGetTestAnalyses", in, out, opts...) 3058 if err != nil { 3059 return nil, err 3060 } 3061 return out, nil 3062 } 3063 3064 type analysesClient struct { 3065 cc grpc.ClientConnInterface 3066 } 3067 3068 func NewAnalysesClient(cc grpc.ClientConnInterface) AnalysesClient { 3069 return &analysesClient{cc} 3070 } 3071 3072 func (c *analysesClient) GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) { 3073 out := new(Analysis) 3074 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/GetAnalysis", in, out, opts...) 3075 if err != nil { 3076 return nil, err 3077 } 3078 return out, nil 3079 } 3080 3081 func (c *analysesClient) QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error) { 3082 out := new(QueryAnalysisResponse) 3083 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/QueryAnalysis", in, out, opts...) 3084 if err != nil { 3085 return nil, err 3086 } 3087 return out, nil 3088 } 3089 3090 func (c *analysesClient) ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error) { 3091 out := new(ListAnalysesResponse) 3092 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/ListAnalyses", in, out, opts...) 3093 if err != nil { 3094 return nil, err 3095 } 3096 return out, nil 3097 } 3098 3099 func (c *analysesClient) TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error) { 3100 out := new(TriggerAnalysisResponse) 3101 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/TriggerAnalysis", in, out, opts...) 3102 if err != nil { 3103 return nil, err 3104 } 3105 return out, nil 3106 } 3107 3108 func (c *analysesClient) UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) { 3109 out := new(Analysis) 3110 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/UpdateAnalysis", in, out, opts...) 3111 if err != nil { 3112 return nil, err 3113 } 3114 return out, nil 3115 } 3116 3117 func (c *analysesClient) ListTestAnalyses(ctx context.Context, in *ListTestAnalysesRequest, opts ...grpc.CallOption) (*ListTestAnalysesResponse, error) { 3118 out := new(ListTestAnalysesResponse) 3119 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/ListTestAnalyses", in, out, opts...) 3120 if err != nil { 3121 return nil, err 3122 } 3123 return out, nil 3124 } 3125 3126 func (c *analysesClient) GetTestAnalysis(ctx context.Context, in *GetTestAnalysisRequest, opts ...grpc.CallOption) (*TestAnalysis, error) { 3127 out := new(TestAnalysis) 3128 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/GetTestAnalysis", in, out, opts...) 3129 if err != nil { 3130 return nil, err 3131 } 3132 return out, nil 3133 } 3134 3135 func (c *analysesClient) BatchGetTestAnalyses(ctx context.Context, in *BatchGetTestAnalysesRequest, opts ...grpc.CallOption) (*BatchGetTestAnalysesResponse, error) { 3136 out := new(BatchGetTestAnalysesResponse) 3137 err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/BatchGetTestAnalyses", in, out, opts...) 3138 if err != nil { 3139 return nil, err 3140 } 3141 return out, nil 3142 } 3143 3144 // AnalysesServer is the server API for Analyses service. 3145 type AnalysesServer interface { 3146 // GetAnalysis is used to get an analysis by analysis ID. 3147 GetAnalysis(context.Context, *GetAnalysisRequest) (*Analysis, error) 3148 // QueryAnalysis is used to query for the status and result of analyses. 3149 // The user can pass in the failure information to retrieve the analyses. 3150 QueryAnalysis(context.Context, *QueryAnalysisRequest) (*QueryAnalysisResponse, error) 3151 // ListAnalyses is used to get existing analyses. 3152 // Most recently created analyses are returned first. 3153 ListAnalyses(context.Context, *ListAnalysesRequest) (*ListAnalysesResponse, error) 3154 // TriggerAnalysis is used to trigger an analysis for a failed build. 3155 // This RPC is called from a LUCI Bisection client like SoM or Milo. 3156 // If an existing analysis is found for the same failure, no new analysis 3157 // will be triggered. 3158 TriggerAnalysis(context.Context, *TriggerAnalysisRequest) (*TriggerAnalysisResponse, error) 3159 // Update the information of an analysis, 3160 // e.g. update the bugs associated with an analysis. 3161 // Mainly used by SoM, since LUCI Bisection does not have any information 3162 // about bugs created by sheriffs. 3163 UpdateAnalysis(context.Context, *UpdateAnalysisRequest) (*Analysis, error) 3164 // ListTestAnalyses is used to get existing test analyses. 3165 // Most recently created test analyses are returned first. 3166 ListTestAnalyses(context.Context, *ListTestAnalysesRequest) (*ListTestAnalysesResponse, error) 3167 // GetTestAnalysis is used to get a test analysis by its ID. 3168 GetTestAnalysis(context.Context, *GetTestAnalysisRequest) (*TestAnalysis, error) 3169 // BatchGetTestAnalyses is an RPC to batch get test analyses for test failures. 3170 // At this moment it only support getting the bisection for the ongoing test failure. 3171 // TODO(@beining): This endpoint can be extended to support returning bisection for 3172 // any test failure by specifying source position in the request. 3173 BatchGetTestAnalyses(context.Context, *BatchGetTestAnalysesRequest) (*BatchGetTestAnalysesResponse, error) 3174 } 3175 3176 // UnimplementedAnalysesServer can be embedded to have forward compatible implementations. 3177 type UnimplementedAnalysesServer struct { 3178 } 3179 3180 func (*UnimplementedAnalysesServer) GetAnalysis(context.Context, *GetAnalysisRequest) (*Analysis, error) { 3181 return nil, status.Errorf(codes.Unimplemented, "method GetAnalysis not implemented") 3182 } 3183 func (*UnimplementedAnalysesServer) QueryAnalysis(context.Context, *QueryAnalysisRequest) (*QueryAnalysisResponse, error) { 3184 return nil, status.Errorf(codes.Unimplemented, "method QueryAnalysis not implemented") 3185 } 3186 func (*UnimplementedAnalysesServer) ListAnalyses(context.Context, *ListAnalysesRequest) (*ListAnalysesResponse, error) { 3187 return nil, status.Errorf(codes.Unimplemented, "method ListAnalyses not implemented") 3188 } 3189 func (*UnimplementedAnalysesServer) TriggerAnalysis(context.Context, *TriggerAnalysisRequest) (*TriggerAnalysisResponse, error) { 3190 return nil, status.Errorf(codes.Unimplemented, "method TriggerAnalysis not implemented") 3191 } 3192 func (*UnimplementedAnalysesServer) UpdateAnalysis(context.Context, *UpdateAnalysisRequest) (*Analysis, error) { 3193 return nil, status.Errorf(codes.Unimplemented, "method UpdateAnalysis not implemented") 3194 } 3195 func (*UnimplementedAnalysesServer) ListTestAnalyses(context.Context, *ListTestAnalysesRequest) (*ListTestAnalysesResponse, error) { 3196 return nil, status.Errorf(codes.Unimplemented, "method ListTestAnalyses not implemented") 3197 } 3198 func (*UnimplementedAnalysesServer) GetTestAnalysis(context.Context, *GetTestAnalysisRequest) (*TestAnalysis, error) { 3199 return nil, status.Errorf(codes.Unimplemented, "method GetTestAnalysis not implemented") 3200 } 3201 func (*UnimplementedAnalysesServer) BatchGetTestAnalyses(context.Context, *BatchGetTestAnalysesRequest) (*BatchGetTestAnalysesResponse, error) { 3202 return nil, status.Errorf(codes.Unimplemented, "method BatchGetTestAnalyses not implemented") 3203 } 3204 3205 func RegisterAnalysesServer(s prpc.Registrar, srv AnalysesServer) { 3206 s.RegisterService(&_Analyses_serviceDesc, srv) 3207 } 3208 3209 func _Analyses_GetAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3210 in := new(GetAnalysisRequest) 3211 if err := dec(in); err != nil { 3212 return nil, err 3213 } 3214 if interceptor == nil { 3215 return srv.(AnalysesServer).GetAnalysis(ctx, in) 3216 } 3217 info := &grpc.UnaryServerInfo{ 3218 Server: srv, 3219 FullMethod: "/luci.bisection.v1.Analyses/GetAnalysis", 3220 } 3221 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3222 return srv.(AnalysesServer).GetAnalysis(ctx, req.(*GetAnalysisRequest)) 3223 } 3224 return interceptor(ctx, in, info, handler) 3225 } 3226 3227 func _Analyses_QueryAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3228 in := new(QueryAnalysisRequest) 3229 if err := dec(in); err != nil { 3230 return nil, err 3231 } 3232 if interceptor == nil { 3233 return srv.(AnalysesServer).QueryAnalysis(ctx, in) 3234 } 3235 info := &grpc.UnaryServerInfo{ 3236 Server: srv, 3237 FullMethod: "/luci.bisection.v1.Analyses/QueryAnalysis", 3238 } 3239 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3240 return srv.(AnalysesServer).QueryAnalysis(ctx, req.(*QueryAnalysisRequest)) 3241 } 3242 return interceptor(ctx, in, info, handler) 3243 } 3244 3245 func _Analyses_ListAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3246 in := new(ListAnalysesRequest) 3247 if err := dec(in); err != nil { 3248 return nil, err 3249 } 3250 if interceptor == nil { 3251 return srv.(AnalysesServer).ListAnalyses(ctx, in) 3252 } 3253 info := &grpc.UnaryServerInfo{ 3254 Server: srv, 3255 FullMethod: "/luci.bisection.v1.Analyses/ListAnalyses", 3256 } 3257 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3258 return srv.(AnalysesServer).ListAnalyses(ctx, req.(*ListAnalysesRequest)) 3259 } 3260 return interceptor(ctx, in, info, handler) 3261 } 3262 3263 func _Analyses_TriggerAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3264 in := new(TriggerAnalysisRequest) 3265 if err := dec(in); err != nil { 3266 return nil, err 3267 } 3268 if interceptor == nil { 3269 return srv.(AnalysesServer).TriggerAnalysis(ctx, in) 3270 } 3271 info := &grpc.UnaryServerInfo{ 3272 Server: srv, 3273 FullMethod: "/luci.bisection.v1.Analyses/TriggerAnalysis", 3274 } 3275 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3276 return srv.(AnalysesServer).TriggerAnalysis(ctx, req.(*TriggerAnalysisRequest)) 3277 } 3278 return interceptor(ctx, in, info, handler) 3279 } 3280 3281 func _Analyses_UpdateAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3282 in := new(UpdateAnalysisRequest) 3283 if err := dec(in); err != nil { 3284 return nil, err 3285 } 3286 if interceptor == nil { 3287 return srv.(AnalysesServer).UpdateAnalysis(ctx, in) 3288 } 3289 info := &grpc.UnaryServerInfo{ 3290 Server: srv, 3291 FullMethod: "/luci.bisection.v1.Analyses/UpdateAnalysis", 3292 } 3293 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3294 return srv.(AnalysesServer).UpdateAnalysis(ctx, req.(*UpdateAnalysisRequest)) 3295 } 3296 return interceptor(ctx, in, info, handler) 3297 } 3298 3299 func _Analyses_ListTestAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3300 in := new(ListTestAnalysesRequest) 3301 if err := dec(in); err != nil { 3302 return nil, err 3303 } 3304 if interceptor == nil { 3305 return srv.(AnalysesServer).ListTestAnalyses(ctx, in) 3306 } 3307 info := &grpc.UnaryServerInfo{ 3308 Server: srv, 3309 FullMethod: "/luci.bisection.v1.Analyses/ListTestAnalyses", 3310 } 3311 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3312 return srv.(AnalysesServer).ListTestAnalyses(ctx, req.(*ListTestAnalysesRequest)) 3313 } 3314 return interceptor(ctx, in, info, handler) 3315 } 3316 3317 func _Analyses_GetTestAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3318 in := new(GetTestAnalysisRequest) 3319 if err := dec(in); err != nil { 3320 return nil, err 3321 } 3322 if interceptor == nil { 3323 return srv.(AnalysesServer).GetTestAnalysis(ctx, in) 3324 } 3325 info := &grpc.UnaryServerInfo{ 3326 Server: srv, 3327 FullMethod: "/luci.bisection.v1.Analyses/GetTestAnalysis", 3328 } 3329 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3330 return srv.(AnalysesServer).GetTestAnalysis(ctx, req.(*GetTestAnalysisRequest)) 3331 } 3332 return interceptor(ctx, in, info, handler) 3333 } 3334 3335 func _Analyses_BatchGetTestAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3336 in := new(BatchGetTestAnalysesRequest) 3337 if err := dec(in); err != nil { 3338 return nil, err 3339 } 3340 if interceptor == nil { 3341 return srv.(AnalysesServer).BatchGetTestAnalyses(ctx, in) 3342 } 3343 info := &grpc.UnaryServerInfo{ 3344 Server: srv, 3345 FullMethod: "/luci.bisection.v1.Analyses/BatchGetTestAnalyses", 3346 } 3347 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3348 return srv.(AnalysesServer).BatchGetTestAnalyses(ctx, req.(*BatchGetTestAnalysesRequest)) 3349 } 3350 return interceptor(ctx, in, info, handler) 3351 } 3352 3353 var _Analyses_serviceDesc = grpc.ServiceDesc{ 3354 ServiceName: "luci.bisection.v1.Analyses", 3355 HandlerType: (*AnalysesServer)(nil), 3356 Methods: []grpc.MethodDesc{ 3357 { 3358 MethodName: "GetAnalysis", 3359 Handler: _Analyses_GetAnalysis_Handler, 3360 }, 3361 { 3362 MethodName: "QueryAnalysis", 3363 Handler: _Analyses_QueryAnalysis_Handler, 3364 }, 3365 { 3366 MethodName: "ListAnalyses", 3367 Handler: _Analyses_ListAnalyses_Handler, 3368 }, 3369 { 3370 MethodName: "TriggerAnalysis", 3371 Handler: _Analyses_TriggerAnalysis_Handler, 3372 }, 3373 { 3374 MethodName: "UpdateAnalysis", 3375 Handler: _Analyses_UpdateAnalysis_Handler, 3376 }, 3377 { 3378 MethodName: "ListTestAnalyses", 3379 Handler: _Analyses_ListTestAnalyses_Handler, 3380 }, 3381 { 3382 MethodName: "GetTestAnalysis", 3383 Handler: _Analyses_GetTestAnalysis_Handler, 3384 }, 3385 { 3386 MethodName: "BatchGetTestAnalyses", 3387 Handler: _Analyses_BatchGetTestAnalyses_Handler, 3388 }, 3389 }, 3390 Streams: []grpc.StreamDesc{}, 3391 Metadata: "go.chromium.org/luci/bisection/proto/v1/analyses.proto", 3392 }