pb/summary/summary.pb.go (1,083 lines of code) (raw):
/*
Copyright The TestGrid Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Summary info for TestGrid tests, dashboard tabs, and dashboards.
// Stored in GCS as "dashboard-<normalized dashboard name>".
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v3.21.1
// source: summary.proto
package summary
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type TestInfo_Trend int32
const (
TestInfo_UNKNOWN TestInfo_Trend = 0
TestInfo_NO_CHANGE TestInfo_Trend = 1
TestInfo_UP TestInfo_Trend = 2
TestInfo_DOWN TestInfo_Trend = 3
)
// Enum value maps for TestInfo_Trend.
var (
TestInfo_Trend_name = map[int32]string{
0: "UNKNOWN",
1: "NO_CHANGE",
2: "UP",
3: "DOWN",
}
TestInfo_Trend_value = map[string]int32{
"UNKNOWN": 0,
"NO_CHANGE": 1,
"UP": 2,
"DOWN": 3,
}
)
func (x TestInfo_Trend) Enum() *TestInfo_Trend {
p := new(TestInfo_Trend)
*p = x
return p
}
func (x TestInfo_Trend) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TestInfo_Trend) Descriptor() protoreflect.EnumDescriptor {
return file_summary_proto_enumTypes[0].Descriptor()
}
func (TestInfo_Trend) Type() protoreflect.EnumType {
return &file_summary_proto_enumTypes[0]
}
func (x TestInfo_Trend) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TestInfo_Trend.Descriptor instead.
func (TestInfo_Trend) EnumDescriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{1, 0}
}
type DashboardTabSummary_TabStatus int32
const (
DashboardTabSummary_NOT_SET DashboardTabSummary_TabStatus = 0
DashboardTabSummary_UNKNOWN DashboardTabSummary_TabStatus = 1
DashboardTabSummary_PASS DashboardTabSummary_TabStatus = 2
DashboardTabSummary_FAIL DashboardTabSummary_TabStatus = 3
DashboardTabSummary_FLAKY DashboardTabSummary_TabStatus = 4
DashboardTabSummary_STALE DashboardTabSummary_TabStatus = 5
DashboardTabSummary_BROKEN DashboardTabSummary_TabStatus = 6
DashboardTabSummary_PENDING DashboardTabSummary_TabStatus = 7
DashboardTabSummary_ACCEPTABLE DashboardTabSummary_TabStatus = 8
)
// Enum value maps for DashboardTabSummary_TabStatus.
var (
DashboardTabSummary_TabStatus_name = map[int32]string{
0: "NOT_SET",
1: "UNKNOWN",
2: "PASS",
3: "FAIL",
4: "FLAKY",
5: "STALE",
6: "BROKEN",
7: "PENDING",
8: "ACCEPTABLE",
}
DashboardTabSummary_TabStatus_value = map[string]int32{
"NOT_SET": 0,
"UNKNOWN": 1,
"PASS": 2,
"FAIL": 3,
"FLAKY": 4,
"STALE": 5,
"BROKEN": 6,
"PENDING": 7,
"ACCEPTABLE": 8,
}
)
func (x DashboardTabSummary_TabStatus) Enum() *DashboardTabSummary_TabStatus {
p := new(DashboardTabSummary_TabStatus)
*p = x
return p
}
func (x DashboardTabSummary_TabStatus) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (DashboardTabSummary_TabStatus) Descriptor() protoreflect.EnumDescriptor {
return file_summary_proto_enumTypes[1].Descriptor()
}
func (DashboardTabSummary_TabStatus) Type() protoreflect.EnumType {
return &file_summary_proto_enumTypes[1]
}
func (x DashboardTabSummary_TabStatus) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use DashboardTabSummary_TabStatus.Descriptor instead.
func (DashboardTabSummary_TabStatus) EnumDescriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{4, 0}
}
// Summary of a failing test.
type FailingTestSummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Display name of the test.
DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Name of the test. E.g., the target for tests in Sponge.
TestName string `protobuf:"bytes,2,opt,name=test_name,json=testName,proto3" json:"test_name,omitempty"`
// First build ID at which the test failed.
FailBuildId string `protobuf:"bytes,3,opt,name=fail_build_id,json=failBuildId,proto3" json:"fail_build_id,omitempty"`
// Timestamp for the first cycle in which the test failed.
FailTimestamp float64 `protobuf:"fixed64,4,opt,name=fail_timestamp,json=failTimestamp,proto3" json:"fail_timestamp,omitempty"`
// Last build ID at which the test passed.
PassBuildId string `protobuf:"bytes,5,opt,name=pass_build_id,json=passBuildId,proto3" json:"pass_build_id,omitempty"`
// Timestamp for the last cycle in which the test passed.
PassTimestamp float64 `protobuf:"fixed64,6,opt,name=pass_timestamp,json=passTimestamp,proto3" json:"pass_timestamp,omitempty"`
// Number of times the test has failed.
FailCount int32 `protobuf:"varint,7,opt,name=fail_count,json=failCount,proto3" json:"fail_count,omitempty"`
// Link to search for build changes.
BuildLink string `protobuf:"bytes,8,opt,name=build_link,json=buildLink,proto3" json:"build_link,omitempty"`
// Text for option to search for build changes.
BuildLinkText string `protobuf:"bytes,9,opt,name=build_link_text,json=buildLinkText,proto3" json:"build_link_text,omitempty"`
// Text to display for link to search for build changes.
BuildUrlText string `protobuf:"bytes,10,opt,name=build_url_text,json=buildUrlText,proto3" json:"build_url_text,omitempty"`
// Text for failure statuses associated with this test.
FailureMessage string `protobuf:"bytes,11,opt,name=failure_message,json=failureMessage,proto3" json:"failure_message,omitempty"`
// List of bug IDs for bugs associated with this test.
LinkedBugs []string `protobuf:"bytes,12,rep,name=linked_bugs,json=linkedBugs,proto3" json:"linked_bugs,omitempty"`
// A link to the first build in which the test failed.
FailTestLink string `protobuf:"bytes,13,opt,name=fail_test_link,json=failTestLink,proto3" json:"fail_test_link,omitempty"`
// A link to the latest build in which the test failed.
LatestFailTestLink string `protobuf:"bytes,17,opt,name=latest_fail_test_link,json=latestFailTestLink,proto3" json:"latest_fail_test_link,omitempty"`
// The test ID for the latest test failure. (Does not indicate the failure is
// 'over', just the latest test failure we found.)
LatestFailBuildId string `protobuf:"bytes,14,opt,name=latest_fail_build_id,json=latestFailBuildId,proto3" json:"latest_fail_build_id,omitempty"`
// Maps (property name):(property value) for arbitrary alert properties.
Properties map[string]string `protobuf:"bytes,15,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// A list of IDs for issue hotlists related to this failure.
HotlistIds []string `protobuf:"bytes,16,rep,name=hotlist_ids,json=hotlistIds,proto3" json:"hotlist_ids,omitempty"`
// Dynamic email list, route email alerts to these instead of the configured
// defaults.
EmailAddresses []string `protobuf:"bytes,18,rep,name=email_addresses,json=emailAddresses,proto3" json:"email_addresses,omitempty"`
// map of custom column headers
CustomColumnHeaders map[string]string `protobuf:"bytes,19,rep,name=custom_column_headers,json=customColumnHeaders,proto3" json:"custom_column_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *FailingTestSummary) Reset() {
*x = FailingTestSummary{}
if protoimpl.UnsafeEnabled {
mi := &file_summary_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FailingTestSummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FailingTestSummary) ProtoMessage() {}
func (x *FailingTestSummary) ProtoReflect() protoreflect.Message {
mi := &file_summary_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FailingTestSummary.ProtoReflect.Descriptor instead.
func (*FailingTestSummary) Descriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{0}
}
func (x *FailingTestSummary) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *FailingTestSummary) GetTestName() string {
if x != nil {
return x.TestName
}
return ""
}
func (x *FailingTestSummary) GetFailBuildId() string {
if x != nil {
return x.FailBuildId
}
return ""
}
func (x *FailingTestSummary) GetFailTimestamp() float64 {
if x != nil {
return x.FailTimestamp
}
return 0
}
func (x *FailingTestSummary) GetPassBuildId() string {
if x != nil {
return x.PassBuildId
}
return ""
}
func (x *FailingTestSummary) GetPassTimestamp() float64 {
if x != nil {
return x.PassTimestamp
}
return 0
}
func (x *FailingTestSummary) GetFailCount() int32 {
if x != nil {
return x.FailCount
}
return 0
}
func (x *FailingTestSummary) GetBuildLink() string {
if x != nil {
return x.BuildLink
}
return ""
}
func (x *FailingTestSummary) GetBuildLinkText() string {
if x != nil {
return x.BuildLinkText
}
return ""
}
func (x *FailingTestSummary) GetBuildUrlText() string {
if x != nil {
return x.BuildUrlText
}
return ""
}
func (x *FailingTestSummary) GetFailureMessage() string {
if x != nil {
return x.FailureMessage
}
return ""
}
func (x *FailingTestSummary) GetLinkedBugs() []string {
if x != nil {
return x.LinkedBugs
}
return nil
}
func (x *FailingTestSummary) GetFailTestLink() string {
if x != nil {
return x.FailTestLink
}
return ""
}
func (x *FailingTestSummary) GetLatestFailTestLink() string {
if x != nil {
return x.LatestFailTestLink
}
return ""
}
func (x *FailingTestSummary) GetLatestFailBuildId() string {
if x != nil {
return x.LatestFailBuildId
}
return ""
}
func (x *FailingTestSummary) GetProperties() map[string]string {
if x != nil {
return x.Properties
}
return nil
}
func (x *FailingTestSummary) GetHotlistIds() []string {
if x != nil {
return x.HotlistIds
}
return nil
}
func (x *FailingTestSummary) GetEmailAddresses() []string {
if x != nil {
return x.EmailAddresses
}
return nil
}
func (x *FailingTestSummary) GetCustomColumnHeaders() map[string]string {
if x != nil {
return x.CustomColumnHeaders
}
return nil
}
// Metrics about a specific test, i.e. passes, fails, total runs, etc.
// Next ID: 12
type TestInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The display name of the test, typically what is shown for each row in
// TestGrid
DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// The total number of test runs not including runs failed due to
// infrastructure failures.
TotalNonInfraRuns int32 `protobuf:"varint,2,opt,name=total_non_infra_runs,json=totalNonInfraRuns,proto3" json:"total_non_infra_runs,omitempty"`
// The number of passed test runs not including runs failed due to
// infrastructure failures.
PassedNonInfraRuns int32 `protobuf:"varint,3,opt,name=passed_non_infra_runs,json=passedNonInfraRuns,proto3" json:"passed_non_infra_runs,omitempty"`
// The number of failed test runs not including runs failed due to
// infrastructure failures.
FailedNonInfraRuns int32 `protobuf:"varint,4,opt,name=failed_non_infra_runs,json=failedNonInfraRuns,proto3" json:"failed_non_infra_runs,omitempty"`
// The number of failed test runs specifically due to infrastructure
// failures.
FailedInfraRuns int32 `protobuf:"varint,5,opt,name=failed_infra_runs,json=failedInfraRuns,proto3" json:"failed_infra_runs,omitempty"`
// The total number of all runs, including failures due to infrastructure
TotalRunsWithInfra int32 `protobuf:"varint,6,opt,name=total_runs_with_infra,json=totalRunsWithInfra,proto3" json:"total_runs_with_infra,omitempty"`
// Any other type of runs not included above.
OtherRuns int32 `protobuf:"varint,7,opt,name=other_runs,json=otherRuns,proto3" json:"other_runs,omitempty"`
// The flakiness of the test, measured out of 100
Flakiness float32 `protobuf:"fixed32,8,opt,name=flakiness,proto3" json:"flakiness,omitempty"`
// The flakiness of the test from previous intervals
PreviousFlakiness []float32 `protobuf:"fixed32,10,rep,packed,name=previous_flakiness,json=previousFlakiness,proto3" json:"previous_flakiness,omitempty"`
// The change of flakiness based on the last interval's flakiness
// e.g. if last interval the flakiness was 50, and now it's 75, the
// trend is UP. A trend of NO_CHANGE means last week and this week were
// exactly the same. The interval is set by each tab's config, with
// a default of 7 days.
ChangeFromLastInterval TestInfo_Trend `protobuf:"varint,9,opt,name=change_from_last_interval,json=changeFromLastInterval,proto3,enum=testgrid.summary.TestInfo_Trend" json:"change_from_last_interval,omitempty"`
// A map of infra failure name to the count of that failure for the interval.
InfraFailures map[string]int32 `protobuf:"bytes,11,rep,name=infra_failures,json=infraFailures,proto3" json:"infra_failures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}
func (x *TestInfo) Reset() {
*x = TestInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_summary_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TestInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TestInfo) ProtoMessage() {}
func (x *TestInfo) ProtoReflect() protoreflect.Message {
mi := &file_summary_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TestInfo.ProtoReflect.Descriptor instead.
func (*TestInfo) Descriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{1}
}
func (x *TestInfo) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *TestInfo) GetTotalNonInfraRuns() int32 {
if x != nil {
return x.TotalNonInfraRuns
}
return 0
}
func (x *TestInfo) GetPassedNonInfraRuns() int32 {
if x != nil {
return x.PassedNonInfraRuns
}
return 0
}
func (x *TestInfo) GetFailedNonInfraRuns() int32 {
if x != nil {
return x.FailedNonInfraRuns
}
return 0
}
func (x *TestInfo) GetFailedInfraRuns() int32 {
if x != nil {
return x.FailedInfraRuns
}
return 0
}
func (x *TestInfo) GetTotalRunsWithInfra() int32 {
if x != nil {
return x.TotalRunsWithInfra
}
return 0
}
func (x *TestInfo) GetOtherRuns() int32 {
if x != nil {
return x.OtherRuns
}
return 0
}
func (x *TestInfo) GetFlakiness() float32 {
if x != nil {
return x.Flakiness
}
return 0
}
func (x *TestInfo) GetPreviousFlakiness() []float32 {
if x != nil {
return x.PreviousFlakiness
}
return nil
}
func (x *TestInfo) GetChangeFromLastInterval() TestInfo_Trend {
if x != nil {
return x.ChangeFromLastInterval
}
return TestInfo_UNKNOWN
}
func (x *TestInfo) GetInfraFailures() map[string]int32 {
if x != nil {
return x.InfraFailures
}
return nil
}
// Summary of the flakiness and overall healthiness of a dashboard tab
type HealthinessInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The start of the time frame that the analysis was run for.
// Represents the lower bound but does not guarantee that the earliest
// test occurred at start
Start *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"`
// The end of the time frame that the analysis was run for.
// Same caveat as above but for upper bound.
End *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"`
// A list of test entries associated with this tab + timeframe.
Tests []*TestInfo `protobuf:"bytes,3,rep,name=tests,proto3" json:"tests,omitempty"`
// The flakiness out of 100 (think percentage but drop the sign)
AverageFlakiness float32 `protobuf:"fixed32,4,opt,name=average_flakiness,json=averageFlakiness,proto3" json:"average_flakiness,omitempty"`
// The average flakiness for previous intervals
PreviousFlakiness []float32 `protobuf:"fixed32,5,rep,packed,name=previous_flakiness,json=previousFlakiness,proto3" json:"previous_flakiness,omitempty"`
}
func (x *HealthinessInfo) Reset() {
*x = HealthinessInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_summary_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HealthinessInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HealthinessInfo) ProtoMessage() {}
func (x *HealthinessInfo) ProtoReflect() protoreflect.Message {
mi := &file_summary_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use HealthinessInfo.ProtoReflect.Descriptor instead.
func (*HealthinessInfo) Descriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{2}
}
func (x *HealthinessInfo) GetStart() *timestamppb.Timestamp {
if x != nil {
return x.Start
}
return nil
}
func (x *HealthinessInfo) GetEnd() *timestamppb.Timestamp {
if x != nil {
return x.End
}
return nil
}
func (x *HealthinessInfo) GetTests() []*TestInfo {
if x != nil {
return x.Tests
}
return nil
}
func (x *HealthinessInfo) GetAverageFlakiness() float32 {
if x != nil {
return x.AverageFlakiness
}
return 0
}
func (x *HealthinessInfo) GetPreviousFlakiness() []float32 {
if x != nil {
return x.PreviousFlakiness
}
return nil
}
// Information about alerts that have been sent
type AlertingData struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Seconds since epoch at which an email was last sent
LastEmailTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=last_email_time,json=lastEmailTime,proto3" json:"last_email_time,omitempty"`
}
func (x *AlertingData) Reset() {
*x = AlertingData{}
if protoimpl.UnsafeEnabled {
mi := &file_summary_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AlertingData) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AlertingData) ProtoMessage() {}
func (x *AlertingData) ProtoReflect() protoreflect.Message {
mi := &file_summary_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AlertingData.ProtoReflect.Descriptor instead.
func (*AlertingData) Descriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{3}
}
func (x *AlertingData) GetLastEmailTime() *timestamppb.Timestamp {
if x != nil {
return x.LastEmailTime
}
return nil
}
// Summary of a dashboard tab.
type DashboardTabSummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the dashboard.
DashboardName string `protobuf:"bytes,1,opt,name=dashboard_name,json=dashboardName,proto3" json:"dashboard_name,omitempty"`
// The name of the dashboard tab.
DashboardTabName string `protobuf:"bytes,2,opt,name=dashboard_tab_name,json=dashboardTabName,proto3" json:"dashboard_tab_name,omitempty"`
// Any top-level alert on this dashboard tab.
Alert string `protobuf:"bytes,3,opt,name=alert,proto3" json:"alert,omitempty"`
// List of failing test summary information.
FailingTestSummaries []*FailingTestSummary `protobuf:"bytes,4,rep,name=failing_test_summaries,json=failingTestSummaries,proto3" json:"failing_test_summaries,omitempty"`
// Seconds since epoch at which the test group was last updated.
LastUpdateTimestamp float64 `protobuf:"fixed64,5,opt,name=last_update_timestamp,json=lastUpdateTimestamp,proto3" json:"last_update_timestamp,omitempty"`
// A summary of the status of this dashboard tab.
Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"`
// The overall status for this dashboard tab.
OverallStatus DashboardTabSummary_TabStatus `protobuf:"varint,7,opt,name=overall_status,json=overallStatus,proto3,enum=testgrid.summary.DashboardTabSummary_TabStatus" json:"overall_status,omitempty"`
// The ID for the latest passing build.
LatestGreen string `protobuf:"bytes,8,opt,name=latest_green,json=latestGreen,proto3" json:"latest_green,omitempty"`
// Seconds since epoch at which tests last ran.
LastRunTimestamp float64 `protobuf:"fixed64,9,opt,name=last_run_timestamp,json=lastRunTimestamp,proto3" json:"last_run_timestamp,omitempty"`
// String indicating the URL for linking to a bug.
BugUrl string `protobuf:"bytes,10,opt,name=bug_url,json=bugUrl,proto3" json:"bug_url,omitempty"`
// Metrics for the recent healthiness of a tab
Healthiness *HealthinessInfo `protobuf:"bytes,12,opt,name=healthiness,proto3" json:"healthiness,omitempty"`
// All the issue IDs linked to this tab.
LinkedIssues []string `protobuf:"bytes,13,rep,name=linked_issues,json=linkedIssues,proto3" json:"linked_issues,omitempty"`
// Metrics about alerts sent with respect to this summary
// Maintained by alerter; does not need to be populated by summarizer
AlertingData *AlertingData `protobuf:"bytes,14,opt,name=alerting_data,json=alertingData,proto3" json:"alerting_data,omitempty"`
// DEPRECATED: now part of the TabStatus.
//
// Deprecated: Do not use.
AcceptablyFlaky bool `protobuf:"varint,15,opt,name=acceptably_flaky,json=acceptablyFlaky,proto3" json:"acceptably_flaky,omitempty"`
// Additional metrics provided for the dashboard tab
SummaryMetrics *DashboardTabSummaryMetrics `protobuf:"bytes,16,opt,name=summary_metrics,json=summaryMetrics,proto3" json:"summary_metrics,omitempty"`
}
func (x *DashboardTabSummary) Reset() {
*x = DashboardTabSummary{}
if protoimpl.UnsafeEnabled {
mi := &file_summary_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DashboardTabSummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DashboardTabSummary) ProtoMessage() {}
func (x *DashboardTabSummary) ProtoReflect() protoreflect.Message {
mi := &file_summary_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DashboardTabSummary.ProtoReflect.Descriptor instead.
func (*DashboardTabSummary) Descriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{4}
}
func (x *DashboardTabSummary) GetDashboardName() string {
if x != nil {
return x.DashboardName
}
return ""
}
func (x *DashboardTabSummary) GetDashboardTabName() string {
if x != nil {
return x.DashboardTabName
}
return ""
}
func (x *DashboardTabSummary) GetAlert() string {
if x != nil {
return x.Alert
}
return ""
}
func (x *DashboardTabSummary) GetFailingTestSummaries() []*FailingTestSummary {
if x != nil {
return x.FailingTestSummaries
}
return nil
}
func (x *DashboardTabSummary) GetLastUpdateTimestamp() float64 {
if x != nil {
return x.LastUpdateTimestamp
}
return 0
}
func (x *DashboardTabSummary) GetStatus() string {
if x != nil {
return x.Status
}
return ""
}
func (x *DashboardTabSummary) GetOverallStatus() DashboardTabSummary_TabStatus {
if x != nil {
return x.OverallStatus
}
return DashboardTabSummary_NOT_SET
}
func (x *DashboardTabSummary) GetLatestGreen() string {
if x != nil {
return x.LatestGreen
}
return ""
}
func (x *DashboardTabSummary) GetLastRunTimestamp() float64 {
if x != nil {
return x.LastRunTimestamp
}
return 0
}
func (x *DashboardTabSummary) GetBugUrl() string {
if x != nil {
return x.BugUrl
}
return ""
}
func (x *DashboardTabSummary) GetHealthiness() *HealthinessInfo {
if x != nil {
return x.Healthiness
}
return nil
}
func (x *DashboardTabSummary) GetLinkedIssues() []string {
if x != nil {
return x.LinkedIssues
}
return nil
}
func (x *DashboardTabSummary) GetAlertingData() *AlertingData {
if x != nil {
return x.AlertingData
}
return nil
}
// Deprecated: Do not use.
func (x *DashboardTabSummary) GetAcceptablyFlaky() bool {
if x != nil {
return x.AcceptablyFlaky
}
return false
}
func (x *DashboardTabSummary) GetSummaryMetrics() *DashboardTabSummaryMetrics {
if x != nil {
return x.SummaryMetrics
}
return nil
}
// Most recent summary metrics for the tab calculated over columns (not individual tests)
type DashboardTabSummaryMetrics struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Number of total columns analyzed by summarizer
CompletedColumns int32 `protobuf:"varint,1,opt,name=completed_columns,json=completedColumns,proto3" json:"completed_columns,omitempty"`
// Number of columns with all tests passing
PassingColumns int32 `protobuf:"varint,2,opt,name=passing_columns,json=passingColumns,proto3" json:"passing_columns,omitempty"`
// Number of ignored columns
IgnoredColumns int32 `protobuf:"varint,3,opt,name=ignored_columns,json=ignoredColumns,proto3" json:"ignored_columns,omitempty"`
}
func (x *DashboardTabSummaryMetrics) Reset() {
*x = DashboardTabSummaryMetrics{}
if protoimpl.UnsafeEnabled {
mi := &file_summary_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DashboardTabSummaryMetrics) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DashboardTabSummaryMetrics) ProtoMessage() {}
func (x *DashboardTabSummaryMetrics) ProtoReflect() protoreflect.Message {
mi := &file_summary_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DashboardTabSummaryMetrics.ProtoReflect.Descriptor instead.
func (*DashboardTabSummaryMetrics) Descriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{5}
}
func (x *DashboardTabSummaryMetrics) GetCompletedColumns() int32 {
if x != nil {
return x.CompletedColumns
}
return 0
}
func (x *DashboardTabSummaryMetrics) GetPassingColumns() int32 {
if x != nil {
return x.PassingColumns
}
return 0
}
func (x *DashboardTabSummaryMetrics) GetIgnoredColumns() int32 {
if x != nil {
return x.IgnoredColumns
}
return 0
}
// Summary state of a dashboard.
type DashboardSummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Summary of a dashboard tab; see config.proto.
TabSummaries []*DashboardTabSummary `protobuf:"bytes,1,rep,name=tab_summaries,json=tabSummaries,proto3" json:"tab_summaries,omitempty"`
}
func (x *DashboardSummary) Reset() {
*x = DashboardSummary{}
if protoimpl.UnsafeEnabled {
mi := &file_summary_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DashboardSummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DashboardSummary) ProtoMessage() {}
func (x *DashboardSummary) ProtoReflect() protoreflect.Message {
mi := &file_summary_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DashboardSummary.ProtoReflect.Descriptor instead.
func (*DashboardSummary) Descriptor() ([]byte, []int) {
return file_summary_proto_rawDescGZIP(), []int{6}
}
func (x *DashboardSummary) GetTabSummaries() []*DashboardTabSummary {
if x != nil {
return x.TabSummaries
}
return nil
}
var File_summary_proto protoreflect.FileDescriptor
var file_summary_proto_rawDesc = []byte{
0x0a, 0x0d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x10, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xe4, 0x07, 0x0a, 0x12, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65,
0x73, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73,
0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09,
0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x61, 0x69,
0x6c, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a,
0x0e, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x69,
0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73,
0x73, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x73, 0x73,
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01,
0x52, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
0x1d, 0x0a, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d,
0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x26, 0x0a,
0x0f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74,
0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e,
0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x75,
0x72, 0x6c, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66,
0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x73,
0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x62,
0x75, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x65,
0x64, 0x42, 0x75, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x65,
0x73, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66,
0x61, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x31, 0x0a, 0x15, 0x6c,
0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f,
0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65,
0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2f,
0x0a, 0x14, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x62, 0x75,
0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61,
0x74, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12,
0x54, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0f, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73,
0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65,
0x73, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74,
0x5f, 0x69, 0x64, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x6c,
0x69, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f,
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52,
0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12,
0x71, 0x0a, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x6d,
0x6d, 0x61, 0x72, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x63,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65,
0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x1a, 0x46, 0x0a, 0x18, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbb, 0x05, 0x0a, 0x08, 0x54, 0x65,
0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69,
0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x74, 0x6f, 0x74,
0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x5f, 0x72, 0x75, 0x6e,
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f,
0x6e, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x70, 0x61,
0x73, 0x73, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x5f, 0x72,
0x75, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x61, 0x73, 0x73, 0x65,
0x64, 0x4e, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x31, 0x0a,
0x15, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x72,
0x61, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x66, 0x61,
0x69, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73,
0x12, 0x2a, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61,
0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, 0x69,
0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x15,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f,
0x69, 0x6e, 0x66, 0x72, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x74, 0x6f, 0x74,
0x61, 0x6c, 0x52, 0x75, 0x6e, 0x73, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x12,
0x1d, 0x0a, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x07, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x1c,
0x0a, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
0x02, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12,
0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65,
0x73, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x02, 0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
0x75, 0x73, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x5b, 0x0a, 0x19, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x72, 0x65, 0x6e, 0x64,
0x52, 0x16, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74,
0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x54, 0x0a, 0x0e, 0x69, 0x6e, 0x66, 0x72,
0x61, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x2d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x49, 0x6e, 0x66,
0x72, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x0d, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x40,
0x0a, 0x12, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x22, 0x35, 0x0a, 0x05, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x43, 0x48, 0x41,
0x4e, 0x47, 0x45, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x50, 0x10, 0x02, 0x12, 0x08, 0x0a,
0x04, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x22, 0xff, 0x01, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x05, 0x73,
0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a,
0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x74,
0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x65, 0x73,
0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x65,
0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2b, 0x0a,
0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65,
0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67,
0x65, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72,
0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73,
0x18, 0x05, 0x20, 0x03, 0x28, 0x02, 0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x52, 0x0a, 0x0c, 0x41, 0x6c, 0x65,
0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73,
0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d,
0x6c, 0x61, 0x73, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9f, 0x07,
0x0a, 0x13, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x53, 0x75,
0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64,
0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12,
0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x5f, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f,
0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c,
0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74,
0x12, 0x5a, 0x0a, 0x16, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74,
0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x53,
0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x14, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54,
0x65, 0x73, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15,
0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x6c, 0x61, 0x73,
0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72,
0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x2f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62,
0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e,
0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72,
0x65, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52,
0x10, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
0x70, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x75, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x68, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12,
0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73,
0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x73,
0x73, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67,
0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65,
0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x41,
0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x61, 0x6c, 0x65,
0x72, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x63, 0x63,
0x65, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x79, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x18, 0x0f, 0x20,
0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61,
0x62, 0x6c, 0x79, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x12, 0x55, 0x0a, 0x0f, 0x73, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d,
0x6d, 0x61, 0x72, 0x79, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61,
0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52,
0x0e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22,
0x78, 0x0a, 0x09, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07,
0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x02,
0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c,
0x41, 0x4b, 0x59, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x05,
0x12, 0x0a, 0x0a, 0x06, 0x42, 0x52, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07,
0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x43, 0x43,
0x45, 0x50, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22,
0x9b, 0x01, 0x0a, 0x1a, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62,
0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2b,
0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75,
0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70,
0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c,
0x75, 0x6d, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69,
0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x5e, 0x0a,
0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x12, 0x4a, 0x0a, 0x0d, 0x74, 0x61, 0x62, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69,
0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67,
0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x44, 0x61, 0x73, 0x68,
0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52,
0x0c, 0x74, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x34, 0x5a,
0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x73, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_summary_proto_rawDescOnce sync.Once
file_summary_proto_rawDescData = file_summary_proto_rawDesc
)
func file_summary_proto_rawDescGZIP() []byte {
file_summary_proto_rawDescOnce.Do(func() {
file_summary_proto_rawDescData = protoimpl.X.CompressGZIP(file_summary_proto_rawDescData)
})
return file_summary_proto_rawDescData
}
var file_summary_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_summary_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_summary_proto_goTypes = []interface{}{
(TestInfo_Trend)(0), // 0: testgrid.summary.TestInfo.Trend
(DashboardTabSummary_TabStatus)(0), // 1: testgrid.summary.DashboardTabSummary.TabStatus
(*FailingTestSummary)(nil), // 2: testgrid.summary.FailingTestSummary
(*TestInfo)(nil), // 3: testgrid.summary.TestInfo
(*HealthinessInfo)(nil), // 4: testgrid.summary.HealthinessInfo
(*AlertingData)(nil), // 5: testgrid.summary.AlertingData
(*DashboardTabSummary)(nil), // 6: testgrid.summary.DashboardTabSummary
(*DashboardTabSummaryMetrics)(nil), // 7: testgrid.summary.DashboardTabSummaryMetrics
(*DashboardSummary)(nil), // 8: testgrid.summary.DashboardSummary
nil, // 9: testgrid.summary.FailingTestSummary.PropertiesEntry
nil, // 10: testgrid.summary.FailingTestSummary.CustomColumnHeadersEntry
nil, // 11: testgrid.summary.TestInfo.InfraFailuresEntry
(*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp
}
var file_summary_proto_depIdxs = []int32{
9, // 0: testgrid.summary.FailingTestSummary.properties:type_name -> testgrid.summary.FailingTestSummary.PropertiesEntry
10, // 1: testgrid.summary.FailingTestSummary.custom_column_headers:type_name -> testgrid.summary.FailingTestSummary.CustomColumnHeadersEntry
0, // 2: testgrid.summary.TestInfo.change_from_last_interval:type_name -> testgrid.summary.TestInfo.Trend
11, // 3: testgrid.summary.TestInfo.infra_failures:type_name -> testgrid.summary.TestInfo.InfraFailuresEntry
12, // 4: testgrid.summary.HealthinessInfo.start:type_name -> google.protobuf.Timestamp
12, // 5: testgrid.summary.HealthinessInfo.end:type_name -> google.protobuf.Timestamp
3, // 6: testgrid.summary.HealthinessInfo.tests:type_name -> testgrid.summary.TestInfo
12, // 7: testgrid.summary.AlertingData.last_email_time:type_name -> google.protobuf.Timestamp
2, // 8: testgrid.summary.DashboardTabSummary.failing_test_summaries:type_name -> testgrid.summary.FailingTestSummary
1, // 9: testgrid.summary.DashboardTabSummary.overall_status:type_name -> testgrid.summary.DashboardTabSummary.TabStatus
4, // 10: testgrid.summary.DashboardTabSummary.healthiness:type_name -> testgrid.summary.HealthinessInfo
5, // 11: testgrid.summary.DashboardTabSummary.alerting_data:type_name -> testgrid.summary.AlertingData
7, // 12: testgrid.summary.DashboardTabSummary.summary_metrics:type_name -> testgrid.summary.DashboardTabSummaryMetrics
6, // 13: testgrid.summary.DashboardSummary.tab_summaries:type_name -> testgrid.summary.DashboardTabSummary
14, // [14:14] is the sub-list for method output_type
14, // [14:14] is the sub-list for method input_type
14, // [14:14] is the sub-list for extension type_name
14, // [14:14] is the sub-list for extension extendee
0, // [0:14] is the sub-list for field type_name
}
func init() { file_summary_proto_init() }
func file_summary_proto_init() {
if File_summary_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_summary_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FailingTestSummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_summary_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_summary_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HealthinessInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_summary_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AlertingData); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_summary_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DashboardTabSummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_summary_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DashboardTabSummaryMetrics); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_summary_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DashboardSummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_summary_proto_rawDesc,
NumEnums: 2,
NumMessages: 10,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_summary_proto_goTypes,
DependencyIndexes: file_summary_proto_depIdxs,
EnumInfos: file_summary_proto_enumTypes,
MessageInfos: file_summary_proto_msgTypes,
}.Build()
File_summary_proto = out.File
file_summary_proto_rawDesc = nil
file_summary_proto_goTypes = nil
file_summary_proto_depIdxs = nil
}