go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/internal/changepoints/proto/spanner.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/analysis/internal/changepoints/proto/spanner.proto 20 21 package changepointspb 22 23 import ( 24 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 25 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 26 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 27 reflect "reflect" 28 sync "sync" 29 ) 30 31 const ( 32 // Verify that this generated code is sufficiently up-to-date. 33 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 34 // Verify that runtime/protoimpl is sufficiently up-to-date. 35 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 36 ) 37 38 type SegmentState int32 39 40 const ( 41 SegmentState_SEGMENT_STATE_UNSPECIFIED SegmentState = 0 42 // Both the start and end commit positions of the segment are the result 43 // of analysis on the current input buffer. 44 SegmentState_ACTIVE SegmentState = 1 45 // The end commit position of the segment is the result of analysis on the 46 // current input buffer, but the start commit position is the result of 47 // past analysis. 48 SegmentState_FINALIZING SegmentState = 2 49 // Both the start and end commit positions of the segment are the result 50 // of past analysis. 51 SegmentState_FINALIZED SegmentState = 3 52 ) 53 54 // Enum value maps for SegmentState. 55 var ( 56 SegmentState_name = map[int32]string{ 57 0: "SEGMENT_STATE_UNSPECIFIED", 58 1: "ACTIVE", 59 2: "FINALIZING", 60 3: "FINALIZED", 61 } 62 SegmentState_value = map[string]int32{ 63 "SEGMENT_STATE_UNSPECIFIED": 0, 64 "ACTIVE": 1, 65 "FINALIZING": 2, 66 "FINALIZED": 3, 67 } 68 ) 69 70 func (x SegmentState) Enum() *SegmentState { 71 p := new(SegmentState) 72 *p = x 73 return p 74 } 75 76 func (x SegmentState) String() string { 77 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 78 } 79 80 func (SegmentState) Descriptor() protoreflect.EnumDescriptor { 81 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_enumTypes[0].Descriptor() 82 } 83 84 func (SegmentState) Type() protoreflect.EnumType { 85 return &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_enumTypes[0] 86 } 87 88 func (x SegmentState) Number() protoreflect.EnumNumber { 89 return protoreflect.EnumNumber(x) 90 } 91 92 // Deprecated: Use SegmentState.Descriptor instead. 93 func (SegmentState) EnumDescriptor() ([]byte, []int) { 94 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescGZIP(), []int{0} 95 } 96 97 // Segments is used to store the finalized segments in Spanner. 98 type Segments struct { 99 state protoimpl.MessageState 100 sizeCache protoimpl.SizeCache 101 unknownFields protoimpl.UnknownFields 102 103 // Segments, in ascending commit position order (oldest segment first). 104 Segments []*Segment `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"` 105 } 106 107 func (x *Segments) Reset() { 108 *x = Segments{} 109 if protoimpl.UnsafeEnabled { 110 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[0] 111 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 112 ms.StoreMessageInfo(mi) 113 } 114 } 115 116 func (x *Segments) String() string { 117 return protoimpl.X.MessageStringOf(x) 118 } 119 120 func (*Segments) ProtoMessage() {} 121 122 func (x *Segments) ProtoReflect() protoreflect.Message { 123 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[0] 124 if protoimpl.UnsafeEnabled && x != nil { 125 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 126 if ms.LoadMessageInfo() == nil { 127 ms.StoreMessageInfo(mi) 128 } 129 return ms 130 } 131 return mi.MessageOf(x) 132 } 133 134 // Deprecated: Use Segments.ProtoReflect.Descriptor instead. 135 func (*Segments) Descriptor() ([]byte, []int) { 136 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescGZIP(), []int{0} 137 } 138 139 func (x *Segments) GetSegments() []*Segment { 140 if x != nil { 141 return x.Segments 142 } 143 return nil 144 } 145 146 // Segment stores the finalized parts of finalizing and finalized segments 147 // in Spanner. 148 // Finalized segments will be stored in full. 149 // Only the finalized part of a finalizing segment will be stored. 150 // The unfinalized parts of segments can be computed from the input buffer. 151 type Segment struct { 152 state protoimpl.MessageState 153 sizeCache protoimpl.SizeCache 154 unknownFields protoimpl.UnknownFields 155 156 // The state of the segment. 157 // Only finalizing or finalized segments will be stored in spanner. 158 State SegmentState `protobuf:"varint,1,opt,name=state,proto3,enum=luci.analysis.internal.changepoints.SegmentState" json:"state,omitempty"` 159 // If set, means the start of the segment is as a result of a change point 160 // being identified. 161 // If unset, means the segment started because this was the first result in 162 // the known history of the test. 163 HasStartChangepoint bool `protobuf:"varint,2,opt,name=has_start_changepoint,json=hasStartChangepoint,proto3" json:"has_start_changepoint,omitempty"` 164 // The earliest commit position included in the segment. 165 StartPosition int64 `protobuf:"varint,3,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"` 166 // The earliest hour a verdict with the given start_position was recorded. 167 StartHour *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_hour,json=startHour,proto3" json:"start_hour,omitempty"` 168 // The end commit position of the segment. 169 // If set, the invariant end_position >= start_position holds. 170 EndPosition int64 `protobuf:"varint,5,opt,name=end_position,json=endPosition,proto3" json:"end_position,omitempty"` 171 // The latest hour a verdict with the last commit position in the segment 172 // was recorded. 173 EndHour *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=end_hour,json=endHour,proto3" json:"end_hour,omitempty"` 174 // The lower bound of the change point position at the start of the segment 175 // in a 99% two-tailed confidence interval. Inclusive. 176 // Only set if has_start_changepoint is set. If set, the invariant 177 // previous_segment.start_position <= start_position_lower_bound_99th <= start_position. 178 StartPositionLowerBound_99Th int64 `protobuf:"varint,7,opt,name=start_position_lower_bound_99th,json=startPositionLowerBound99th,proto3" json:"start_position_lower_bound_99th,omitempty"` 179 // The upper bound of the change point position at the start of the segment 180 // in a 99% two-tailed confidence interval. Inclusive. 181 // Only set if has_start_changepoint is set. If set, the invariant 182 // start_position <= start_position_upper_bound_99th <= end_position 183 // holds. 184 StartPositionUpperBound_99Th int64 `protobuf:"varint,8,opt,name=start_position_upper_bound_99th,json=startPositionUpperBound99th,proto3" json:"start_position_upper_bound_99th,omitempty"` 185 // The hour the most recent verdict with an unexpected test result 186 // was produced. *Only* captures the most recent hour for verdicts 187 // that are no longer in the input buffer. Used to set 188 // has_recent_unexpected_results on the output. 189 MostRecentUnexpectedResultHour *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=most_recent_unexpected_result_hour,json=mostRecentUnexpectedResultHour,proto3" json:"most_recent_unexpected_result_hour,omitempty"` 190 // Finalized counts for the segment. Note that this should 191 // *only* capture counts for verdicts that are no longer in 192 // the input buffer. 193 // Counts for verdicts in the input buffer can be obtained from the input 194 // buffer. 195 FinalizedCounts *Counts `protobuf:"bytes,10,opt,name=finalized_counts,json=finalizedCounts,proto3" json:"finalized_counts,omitempty"` 196 } 197 198 func (x *Segment) Reset() { 199 *x = Segment{} 200 if protoimpl.UnsafeEnabled { 201 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[1] 202 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 203 ms.StoreMessageInfo(mi) 204 } 205 } 206 207 func (x *Segment) String() string { 208 return protoimpl.X.MessageStringOf(x) 209 } 210 211 func (*Segment) ProtoMessage() {} 212 213 func (x *Segment) ProtoReflect() protoreflect.Message { 214 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[1] 215 if protoimpl.UnsafeEnabled && x != nil { 216 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 217 if ms.LoadMessageInfo() == nil { 218 ms.StoreMessageInfo(mi) 219 } 220 return ms 221 } 222 return mi.MessageOf(x) 223 } 224 225 // Deprecated: Use Segment.ProtoReflect.Descriptor instead. 226 func (*Segment) Descriptor() ([]byte, []int) { 227 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescGZIP(), []int{1} 228 } 229 230 func (x *Segment) GetState() SegmentState { 231 if x != nil { 232 return x.State 233 } 234 return SegmentState_SEGMENT_STATE_UNSPECIFIED 235 } 236 237 func (x *Segment) GetHasStartChangepoint() bool { 238 if x != nil { 239 return x.HasStartChangepoint 240 } 241 return false 242 } 243 244 func (x *Segment) GetStartPosition() int64 { 245 if x != nil { 246 return x.StartPosition 247 } 248 return 0 249 } 250 251 func (x *Segment) GetStartHour() *timestamppb.Timestamp { 252 if x != nil { 253 return x.StartHour 254 } 255 return nil 256 } 257 258 func (x *Segment) GetEndPosition() int64 { 259 if x != nil { 260 return x.EndPosition 261 } 262 return 0 263 } 264 265 func (x *Segment) GetEndHour() *timestamppb.Timestamp { 266 if x != nil { 267 return x.EndHour 268 } 269 return nil 270 } 271 272 func (x *Segment) GetStartPositionLowerBound_99Th() int64 { 273 if x != nil { 274 return x.StartPositionLowerBound_99Th 275 } 276 return 0 277 } 278 279 func (x *Segment) GetStartPositionUpperBound_99Th() int64 { 280 if x != nil { 281 return x.StartPositionUpperBound_99Th 282 } 283 return 0 284 } 285 286 func (x *Segment) GetMostRecentUnexpectedResultHour() *timestamppb.Timestamp { 287 if x != nil { 288 return x.MostRecentUnexpectedResultHour 289 } 290 return nil 291 } 292 293 func (x *Segment) GetFinalizedCounts() *Counts { 294 if x != nil { 295 return x.FinalizedCounts 296 } 297 return nil 298 } 299 300 // All exclude the effect of skipped test results. 301 // Next ID: 18 302 type Counts struct { 303 state protoimpl.MessageState 304 sizeCache protoimpl.SizeCache 305 unknownFields protoimpl.UnknownFields 306 307 // The number of unexpected non-skipped test results. 308 UnexpectedResults int64 `protobuf:"varint,1,opt,name=unexpected_results,json=unexpectedResults,proto3" json:"unexpected_results,omitempty"` 309 // The total number of non-skipped test results. 310 TotalResults int64 `protobuf:"varint,2,opt,name=total_results,json=totalResults,proto3" json:"total_results,omitempty"` 311 // The number of expected passed test results. 312 ExpectedPassedResults int64 `protobuf:"varint,10,opt,name=expected_passed_results,json=expectedPassedResults,proto3" json:"expected_passed_results,omitempty"` 313 // The number of expected failed test results. 314 ExpectedFailedResults int64 `protobuf:"varint,11,opt,name=expected_failed_results,json=expectedFailedResults,proto3" json:"expected_failed_results,omitempty"` 315 // The number of expected crashed test results. 316 ExpectedCrashedResults int64 `protobuf:"varint,12,opt,name=expected_crashed_results,json=expectedCrashedResults,proto3" json:"expected_crashed_results,omitempty"` 317 // The number of expected aborted test results. 318 ExpectedAbortedResults int64 `protobuf:"varint,13,opt,name=expected_aborted_results,json=expectedAbortedResults,proto3" json:"expected_aborted_results,omitempty"` 319 // The number of unexpected passed test results. 320 UnexpectedPassedResults int64 `protobuf:"varint,14,opt,name=unexpected_passed_results,json=unexpectedPassedResults,proto3" json:"unexpected_passed_results,omitempty"` 321 // The number of unexpected failed test results. 322 UnexpectedFailedResults int64 `protobuf:"varint,15,opt,name=unexpected_failed_results,json=unexpectedFailedResults,proto3" json:"unexpected_failed_results,omitempty"` 323 // The number of unexpected crashed test results. 324 UnexpectedCrashedResults int64 `protobuf:"varint,16,opt,name=unexpected_crashed_results,json=unexpectedCrashedResults,proto3" json:"unexpected_crashed_results,omitempty"` 325 // The number of unexpected aborted test results. 326 UnexpectedAbortedResults int64 `protobuf:"varint,17,opt,name=unexpected_aborted_results,json=unexpectedAbortedResults,proto3" json:"unexpected_aborted_results,omitempty"` 327 // The number of test runs which had an unexpected test result but were 328 // not retried. 329 UnexpectedUnretriedRuns int64 `protobuf:"varint,3,opt,name=unexpected_unretried_runs,json=unexpectedUnretriedRuns,proto3" json:"unexpected_unretried_runs,omitempty"` 330 // The number of test run which had an unexpected test result, were 331 // retried, and still contained only unexpected test results. 332 UnexpectedAfterRetryRuns int64 `protobuf:"varint,4,opt,name=unexpected_after_retry_runs,json=unexpectedAfterRetryRuns,proto3" json:"unexpected_after_retry_runs,omitempty"` 333 // The number of test runs which had an unexpected test result, were 334 // retried, and eventually recorded an expected test result. 335 FlakyRuns int64 `protobuf:"varint,5,opt,name=flaky_runs,json=flakyRuns,proto3" json:"flaky_runs,omitempty"` 336 // The total number of test runs. 337 TotalRuns int64 `protobuf:"varint,6,opt,name=total_runs,json=totalRuns,proto3" json:"total_runs,omitempty"` 338 // The following verdict statistics exclude the effect of exonerations, 339 // and skipped test results. Verdicts with only skipped results are not counted 340 // at all. 341 // The number of verdicts with only unexpected test results. 342 UnexpectedVerdicts int64 `protobuf:"varint,7,opt,name=unexpected_verdicts,json=unexpectedVerdicts,proto3" json:"unexpected_verdicts,omitempty"` 343 // The number of verdicts with a mix of expected and unexpected test results. 344 FlakyVerdicts int64 `protobuf:"varint,8,opt,name=flaky_verdicts,json=flakyVerdicts,proto3" json:"flaky_verdicts,omitempty"` 345 // The total number of verdicts. 346 TotalVerdicts int64 `protobuf:"varint,9,opt,name=total_verdicts,json=totalVerdicts,proto3" json:"total_verdicts,omitempty"` 347 } 348 349 func (x *Counts) Reset() { 350 *x = Counts{} 351 if protoimpl.UnsafeEnabled { 352 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[2] 353 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 354 ms.StoreMessageInfo(mi) 355 } 356 } 357 358 func (x *Counts) String() string { 359 return protoimpl.X.MessageStringOf(x) 360 } 361 362 func (*Counts) ProtoMessage() {} 363 364 func (x *Counts) ProtoReflect() protoreflect.Message { 365 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[2] 366 if protoimpl.UnsafeEnabled && x != nil { 367 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 368 if ms.LoadMessageInfo() == nil { 369 ms.StoreMessageInfo(mi) 370 } 371 return ms 372 } 373 return mi.MessageOf(x) 374 } 375 376 // Deprecated: Use Counts.ProtoReflect.Descriptor instead. 377 func (*Counts) Descriptor() ([]byte, []int) { 378 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescGZIP(), []int{2} 379 } 380 381 func (x *Counts) GetUnexpectedResults() int64 { 382 if x != nil { 383 return x.UnexpectedResults 384 } 385 return 0 386 } 387 388 func (x *Counts) GetTotalResults() int64 { 389 if x != nil { 390 return x.TotalResults 391 } 392 return 0 393 } 394 395 func (x *Counts) GetExpectedPassedResults() int64 { 396 if x != nil { 397 return x.ExpectedPassedResults 398 } 399 return 0 400 } 401 402 func (x *Counts) GetExpectedFailedResults() int64 { 403 if x != nil { 404 return x.ExpectedFailedResults 405 } 406 return 0 407 } 408 409 func (x *Counts) GetExpectedCrashedResults() int64 { 410 if x != nil { 411 return x.ExpectedCrashedResults 412 } 413 return 0 414 } 415 416 func (x *Counts) GetExpectedAbortedResults() int64 { 417 if x != nil { 418 return x.ExpectedAbortedResults 419 } 420 return 0 421 } 422 423 func (x *Counts) GetUnexpectedPassedResults() int64 { 424 if x != nil { 425 return x.UnexpectedPassedResults 426 } 427 return 0 428 } 429 430 func (x *Counts) GetUnexpectedFailedResults() int64 { 431 if x != nil { 432 return x.UnexpectedFailedResults 433 } 434 return 0 435 } 436 437 func (x *Counts) GetUnexpectedCrashedResults() int64 { 438 if x != nil { 439 return x.UnexpectedCrashedResults 440 } 441 return 0 442 } 443 444 func (x *Counts) GetUnexpectedAbortedResults() int64 { 445 if x != nil { 446 return x.UnexpectedAbortedResults 447 } 448 return 0 449 } 450 451 func (x *Counts) GetUnexpectedUnretriedRuns() int64 { 452 if x != nil { 453 return x.UnexpectedUnretriedRuns 454 } 455 return 0 456 } 457 458 func (x *Counts) GetUnexpectedAfterRetryRuns() int64 { 459 if x != nil { 460 return x.UnexpectedAfterRetryRuns 461 } 462 return 0 463 } 464 465 func (x *Counts) GetFlakyRuns() int64 { 466 if x != nil { 467 return x.FlakyRuns 468 } 469 return 0 470 } 471 472 func (x *Counts) GetTotalRuns() int64 { 473 if x != nil { 474 return x.TotalRuns 475 } 476 return 0 477 } 478 479 func (x *Counts) GetUnexpectedVerdicts() int64 { 480 if x != nil { 481 return x.UnexpectedVerdicts 482 } 483 return 0 484 } 485 486 func (x *Counts) GetFlakyVerdicts() int64 { 487 if x != nil { 488 return x.FlakyVerdicts 489 } 490 return 0 491 } 492 493 func (x *Counts) GetTotalVerdicts() int64 { 494 if x != nil { 495 return x.TotalVerdicts 496 } 497 return 0 498 } 499 500 // Store statistics about verdicts evicted from the input buffer in Spanner. 501 // 502 // Purpose is described in go/luci-analysis-test-variant-analysis-in-clusters. 503 // 504 // Statistics about verdicts not yet evicted from the input buffer are not 505 // stored here because they can be computed directly from the input buffer. 506 // This means this proto only needs to be updated in Spanner when 507 // verdicts are evicted from the input buffer (approximately every 1/100 508 // verdict ingestions), rather than on every verdict ingestion, reducing the 509 // number of writes required. 510 type Statistics struct { 511 state protoimpl.MessageState 512 sizeCache protoimpl.SizeCache 513 unknownFields protoimpl.UnknownFields 514 515 // Statistics by partition time hour. Stored in ascending order (oldest 516 // hour first). 517 // 518 // Retained for 11 days (as 1 + 3 + 7 days): 519 // - 1 day to support the functional requirement of calculating flakiness 520 // using data from up to the last 24 hours. 521 // - 3 days to account for the fact that some builds may be long-running 522 // and could take up to 3 days to complete, so we need flakiness as at 523 // a partition time of up to 3 days ago. 524 // - 7 days to allow time to respond to operational incidents that involve 525 // delayed or stuck ingestion tasks, without losing data. 526 HourlyBuckets []*Statistics_HourBucket `protobuf:"bytes,1,rep,name=hourly_buckets,json=hourlyBuckets,proto3" json:"hourly_buckets,omitempty"` 527 } 528 529 func (x *Statistics) Reset() { 530 *x = Statistics{} 531 if protoimpl.UnsafeEnabled { 532 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[3] 533 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 534 ms.StoreMessageInfo(mi) 535 } 536 } 537 538 func (x *Statistics) String() string { 539 return protoimpl.X.MessageStringOf(x) 540 } 541 542 func (*Statistics) ProtoMessage() {} 543 544 func (x *Statistics) ProtoReflect() protoreflect.Message { 545 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[3] 546 if protoimpl.UnsafeEnabled && x != nil { 547 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 548 if ms.LoadMessageInfo() == nil { 549 ms.StoreMessageInfo(mi) 550 } 551 return ms 552 } 553 return mi.MessageOf(x) 554 } 555 556 // Deprecated: Use Statistics.ProtoReflect.Descriptor instead. 557 func (*Statistics) Descriptor() ([]byte, []int) { 558 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescGZIP(), []int{3} 559 } 560 561 func (x *Statistics) GetHourlyBuckets() []*Statistics_HourBucket { 562 if x != nil { 563 return x.HourlyBuckets 564 } 565 return nil 566 } 567 568 type Statistics_HourBucket struct { 569 state protoimpl.MessageState 570 sizeCache protoimpl.SizeCache 571 unknownFields protoimpl.UnknownFields 572 573 // The hour of the verdict's partition time. 574 // This is the partition time, as the number of seconds since January 1, 1970 UTC 575 // (i.e. as a unix timestamp), divided by 3600. 576 Hour int64 `protobuf:"varint,1,opt,name=hour,proto3" json:"hour,omitempty"` 577 // The number of verdicts with only unexpected test results (excluding skips). 578 UnexpectedVerdicts int64 `protobuf:"varint,2,opt,name=unexpected_verdicts,json=unexpectedVerdicts,proto3" json:"unexpected_verdicts,omitempty"` 579 // The number of verdicts with a mix of expected and unexpected test results 580 // (excluding skips.) 581 FlakyVerdicts int64 `protobuf:"varint,3,opt,name=flaky_verdicts,json=flakyVerdicts,proto3" json:"flaky_verdicts,omitempty"` 582 // The total number of verdicts. 583 TotalVerdicts int64 `protobuf:"varint,4,opt,name=total_verdicts,json=totalVerdicts,proto3" json:"total_verdicts,omitempty"` 584 } 585 586 func (x *Statistics_HourBucket) Reset() { 587 *x = Statistics_HourBucket{} 588 if protoimpl.UnsafeEnabled { 589 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[4] 590 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 591 ms.StoreMessageInfo(mi) 592 } 593 } 594 595 func (x *Statistics_HourBucket) String() string { 596 return protoimpl.X.MessageStringOf(x) 597 } 598 599 func (*Statistics_HourBucket) ProtoMessage() {} 600 601 func (x *Statistics_HourBucket) ProtoReflect() protoreflect.Message { 602 mi := &file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[4] 603 if protoimpl.UnsafeEnabled && x != nil { 604 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 605 if ms.LoadMessageInfo() == nil { 606 ms.StoreMessageInfo(mi) 607 } 608 return ms 609 } 610 return mi.MessageOf(x) 611 } 612 613 // Deprecated: Use Statistics_HourBucket.ProtoReflect.Descriptor instead. 614 func (*Statistics_HourBucket) Descriptor() ([]byte, []int) { 615 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescGZIP(), []int{3, 0} 616 } 617 618 func (x *Statistics_HourBucket) GetHour() int64 { 619 if x != nil { 620 return x.Hour 621 } 622 return 0 623 } 624 625 func (x *Statistics_HourBucket) GetUnexpectedVerdicts() int64 { 626 if x != nil { 627 return x.UnexpectedVerdicts 628 } 629 return 0 630 } 631 632 func (x *Statistics_HourBucket) GetFlakyVerdicts() int64 { 633 if x != nil { 634 return x.FlakyVerdicts 635 } 636 return 0 637 } 638 639 func (x *Statistics_HourBucket) GetTotalVerdicts() int64 { 640 if x != nil { 641 return x.TotalVerdicts 642 } 643 return 0 644 } 645 646 var File_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto protoreflect.FileDescriptor 647 648 var file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDesc = []byte{ 649 0x0a, 0x47, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 650 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 651 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 652 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x61, 0x6e, 653 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x6c, 0x75, 0x63, 0x69, 0x2e, 654 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 655 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x1f, 656 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 657 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 658 0x54, 0x0a, 0x08, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x08, 0x73, 659 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 660 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69, 0x6e, 661 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 662 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 663 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x8e, 0x05, 0x0a, 0x07, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 664 0x74, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 665 0x32, 0x31, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 666 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 667 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 668 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x68, 0x61, 669 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 670 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x68, 0x61, 0x73, 0x53, 0x74, 671 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x25, 672 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 673 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x73, 674 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x68, 675 0x6f, 0x75, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 676 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 677 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x6f, 0x75, 0x72, 678 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 679 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 680 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 681 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 682 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 683 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x44, 0x0a, 0x1f, 0x73, 0x74, 684 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x77, 685 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x39, 0x39, 0x74, 0x68, 0x18, 0x07, 0x20, 686 0x01, 0x28, 0x03, 0x52, 0x1b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 687 0x6f, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x39, 0x39, 0x74, 0x68, 688 0x12, 0x44, 0x0a, 0x1f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 689 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x39, 690 0x39, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b, 0x73, 0x74, 0x61, 0x72, 0x74, 691 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 692 0x6e, 0x64, 0x39, 0x39, 0x74, 0x68, 0x12, 0x66, 0x0a, 0x22, 0x6d, 0x6f, 0x73, 0x74, 0x5f, 0x72, 693 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 694 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x09, 0x20, 0x01, 695 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 696 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1e, 697 0x6d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 698 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x56, 699 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 700 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 701 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 702 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x43, 703 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x0f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 704 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xec, 0x06, 0x0a, 0x06, 0x43, 0x6f, 0x75, 0x6e, 0x74, 705 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 706 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x75, 707 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 708 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 709 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 710 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 711 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 712 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 713 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x36, 0x0a, 714 0x17, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 715 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 716 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 717 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 718 0x64, 0x5f, 0x63, 0x72, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 719 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 720 0x64, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 721 0x38, 0x0a, 0x18, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x62, 0x6f, 0x72, 722 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 723 0x03, 0x52, 0x16, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x62, 0x6f, 0x72, 0x74, 724 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x75, 0x6e, 0x65, 725 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x72, 726 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 727 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x65, 728 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 729 0x74, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 730 0x74, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 731 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 732 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 733 0x63, 0x72, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 734 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 735 0x64, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 736 0x3c, 0x0a, 0x1a, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x62, 737 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x11, 0x20, 738 0x01, 0x28, 0x03, 0x52, 0x18, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 739 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3a, 0x0a, 740 0x19, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x72, 0x65, 741 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 742 0x52, 0x17, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x55, 0x6e, 0x72, 0x65, 743 0x74, 0x72, 0x69, 0x65, 0x64, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x75, 0x6e, 0x65, 744 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 745 0x74, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 746 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x66, 0x74, 0x65, 0x72, 0x52, 747 0x65, 0x74, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6c, 0x61, 0x6b, 748 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x6c, 749 0x61, 0x6b, 0x79, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 750 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 751 0x61, 0x6c, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 752 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x18, 0x07, 0x20, 753 0x01, 0x28, 0x03, 0x52, 0x12, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, 754 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6c, 0x61, 0x6b, 0x79, 755 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 756 0x0d, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x12, 0x25, 757 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 758 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x65, 0x72, 759 0x64, 0x69, 0x63, 0x74, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 760 0x74, 0x69, 0x63, 0x73, 0x12, 0x61, 0x0a, 0x0e, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x62, 761 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6c, 762 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x69, 0x6e, 0x74, 763 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 0x6e, 764 0x74, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x48, 0x6f, 765 0x75, 0x72, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0d, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 766 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x9f, 0x01, 0x0a, 0x0a, 0x48, 0x6f, 0x75, 0x72, 767 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 768 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x75, 0x6e, 769 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 770 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 771 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 772 0x6c, 0x61, 0x6b, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 773 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 774 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x64, 775 0x69, 0x63, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 776 0x6c, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x73, 0x2a, 0x58, 0x0a, 0x0c, 0x53, 0x65, 0x67, 777 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x47, 778 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 779 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 780 0x56, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x49, 781 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 782 0x44, 0x10, 0x03, 0x42, 0x4a, 0x5a, 0x48, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 783 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 784 0x79, 0x73, 0x69, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x63, 0x68, 785 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 786 0x3b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x70, 0x62, 0x62, 787 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 788 } 789 790 var ( 791 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescOnce sync.Once 792 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescData = file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDesc 793 ) 794 795 func file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescGZIP() []byte { 796 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescOnce.Do(func() { 797 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescData) 798 }) 799 return file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDescData 800 } 801 802 var file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 803 var file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes = make([]protoimpl.MessageInfo, 5) 804 var file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_goTypes = []interface{}{ 805 (SegmentState)(0), // 0: luci.analysis.internal.changepoints.SegmentState 806 (*Segments)(nil), // 1: luci.analysis.internal.changepoints.Segments 807 (*Segment)(nil), // 2: luci.analysis.internal.changepoints.Segment 808 (*Counts)(nil), // 3: luci.analysis.internal.changepoints.Counts 809 (*Statistics)(nil), // 4: luci.analysis.internal.changepoints.Statistics 810 (*Statistics_HourBucket)(nil), // 5: luci.analysis.internal.changepoints.Statistics.HourBucket 811 (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp 812 } 813 var file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_depIdxs = []int32{ 814 2, // 0: luci.analysis.internal.changepoints.Segments.segments:type_name -> luci.analysis.internal.changepoints.Segment 815 0, // 1: luci.analysis.internal.changepoints.Segment.state:type_name -> luci.analysis.internal.changepoints.SegmentState 816 6, // 2: luci.analysis.internal.changepoints.Segment.start_hour:type_name -> google.protobuf.Timestamp 817 6, // 3: luci.analysis.internal.changepoints.Segment.end_hour:type_name -> google.protobuf.Timestamp 818 6, // 4: luci.analysis.internal.changepoints.Segment.most_recent_unexpected_result_hour:type_name -> google.protobuf.Timestamp 819 3, // 5: luci.analysis.internal.changepoints.Segment.finalized_counts:type_name -> luci.analysis.internal.changepoints.Counts 820 5, // 6: luci.analysis.internal.changepoints.Statistics.hourly_buckets:type_name -> luci.analysis.internal.changepoints.Statistics.HourBucket 821 7, // [7:7] is the sub-list for method output_type 822 7, // [7:7] is the sub-list for method input_type 823 7, // [7:7] is the sub-list for extension type_name 824 7, // [7:7] is the sub-list for extension extendee 825 0, // [0:7] is the sub-list for field type_name 826 } 827 828 func init() { file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_init() } 829 func file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_init() { 830 if File_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto != nil { 831 return 832 } 833 if !protoimpl.UnsafeEnabled { 834 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 835 switch v := v.(*Segments); i { 836 case 0: 837 return &v.state 838 case 1: 839 return &v.sizeCache 840 case 2: 841 return &v.unknownFields 842 default: 843 return nil 844 } 845 } 846 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 847 switch v := v.(*Segment); i { 848 case 0: 849 return &v.state 850 case 1: 851 return &v.sizeCache 852 case 2: 853 return &v.unknownFields 854 default: 855 return nil 856 } 857 } 858 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 859 switch v := v.(*Counts); i { 860 case 0: 861 return &v.state 862 case 1: 863 return &v.sizeCache 864 case 2: 865 return &v.unknownFields 866 default: 867 return nil 868 } 869 } 870 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 871 switch v := v.(*Statistics); i { 872 case 0: 873 return &v.state 874 case 1: 875 return &v.sizeCache 876 case 2: 877 return &v.unknownFields 878 default: 879 return nil 880 } 881 } 882 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 883 switch v := v.(*Statistics_HourBucket); i { 884 case 0: 885 return &v.state 886 case 1: 887 return &v.sizeCache 888 case 2: 889 return &v.unknownFields 890 default: 891 return nil 892 } 893 } 894 } 895 type x struct{} 896 out := protoimpl.TypeBuilder{ 897 File: protoimpl.DescBuilder{ 898 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 899 RawDescriptor: file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDesc, 900 NumEnums: 1, 901 NumMessages: 5, 902 NumExtensions: 0, 903 NumServices: 0, 904 }, 905 GoTypes: file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_goTypes, 906 DependencyIndexes: file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_depIdxs, 907 EnumInfos: file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_enumTypes, 908 MessageInfos: file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_msgTypes, 909 }.Build() 910 File_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto = out.File 911 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_rawDesc = nil 912 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_goTypes = nil 913 file_go_chromium_org_luci_analysis_internal_changepoints_proto_spanner_proto_depIdxs = nil 914 }