blob: 77e5f5c1131a68dd49cd02574ed4c876c6928a27 [file] [log] [blame]
// Copyright 2019 The LUCI 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.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.21.7
// source: go.chromium.org/luci/resultdb/proto/v1/resultdb.proto
package resultpb
import prpc "go.chromium.org/luci/grpc/prpc"
import (
context "context"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
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)
)
// A request message for GetInvocation RPC.
type GetInvocationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the invocation to request, see Invocation.name.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetInvocationRequest) Reset() {
*x = GetInvocationRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetInvocationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetInvocationRequest) ProtoMessage() {}
func (x *GetInvocationRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_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 GetInvocationRequest.ProtoReflect.Descriptor instead.
func (*GetInvocationRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{0}
}
func (x *GetInvocationRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// A request message for GetTestResult RPC.
type GetTestResultRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the test result to request, see TestResult.name.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetTestResultRequest) Reset() {
*x = GetTestResultRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetTestResultRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetTestResultRequest) ProtoMessage() {}
func (x *GetTestResultRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_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 GetTestResultRequest.ProtoReflect.Descriptor instead.
func (*GetTestResultRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{1}
}
func (x *GetTestResultRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// A request message for ListTestResults RPC.
type ListTestResultsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the invocation, e.g. "invocations/{id}".
Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
// The maximum number of test results to return.
//
// The service may return fewer than this value.
// If unspecified, at most 100 test results will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `ListTestResults` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `ListTestResults` MUST
// match the call that provided the page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
// Fields to include in the response.
// If not set, the default mask is used where summary_html and tags are
// excluded.
// Test result names will always be included even if "name" is not a part of
// the mask.
ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"`
}
func (x *ListTestResultsRequest) Reset() {
*x = ListTestResultsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListTestResultsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListTestResultsRequest) ProtoMessage() {}
func (x *ListTestResultsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_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 ListTestResultsRequest.ProtoReflect.Descriptor instead.
func (*ListTestResultsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{2}
}
func (x *ListTestResultsRequest) GetInvocation() string {
if x != nil {
return x.Invocation
}
return ""
}
func (x *ListTestResultsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListTestResultsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
func (x *ListTestResultsRequest) GetReadMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.ReadMask
}
return nil
}
// A response message for ListTestResults RPC.
type ListTestResultsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The test results from the specified invocation.
TestResults []*TestResult `protobuf:"bytes,1,rep,name=test_results,json=testResults,proto3" json:"test_results,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
// If the invocation is not finalized, more results may appear later.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListTestResultsResponse) Reset() {
*x = ListTestResultsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListTestResultsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListTestResultsResponse) ProtoMessage() {}
func (x *ListTestResultsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_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 ListTestResultsResponse.ProtoReflect.Descriptor instead.
func (*ListTestResultsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{3}
}
func (x *ListTestResultsResponse) GetTestResults() []*TestResult {
if x != nil {
return x.TestResults
}
return nil
}
func (x *ListTestResultsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A request message for GetTestExoneration RPC.
type GetTestExonerationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the test exoneration to request, see TestExoneration.name.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetTestExonerationRequest) Reset() {
*x = GetTestExonerationRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetTestExonerationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetTestExonerationRequest) ProtoMessage() {}
func (x *GetTestExonerationRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_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 GetTestExonerationRequest.ProtoReflect.Descriptor instead.
func (*GetTestExonerationRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{4}
}
func (x *GetTestExonerationRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// A request message for ListTestExonerations RPC.
type ListTestExonerationsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the invocation, e.g. "invocations/{id}".
Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
// The maximum number of test exonerations to return.
//
// The service may return fewer than this value.
// If unspecified, at most 100 test exonerations will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `ListTestExonerations` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `ListTestExonerations`
// MUST match the call that provided the page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListTestExonerationsRequest) Reset() {
*x = ListTestExonerationsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListTestExonerationsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListTestExonerationsRequest) ProtoMessage() {}
func (x *ListTestExonerationsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_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 ListTestExonerationsRequest.ProtoReflect.Descriptor instead.
func (*ListTestExonerationsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{5}
}
func (x *ListTestExonerationsRequest) GetInvocation() string {
if x != nil {
return x.Invocation
}
return ""
}
func (x *ListTestExonerationsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListTestExonerationsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// A response message for ListTestExonerations RPC.
type ListTestExonerationsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The test exonerations from the specified invocation.
TestExonerations []*TestExoneration `protobuf:"bytes,1,rep,name=test_exonerations,json=testExonerations,proto3" json:"test_exonerations,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
// If the invocation is not finalized, more results may appear later.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListTestExonerationsResponse) Reset() {
*x = ListTestExonerationsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListTestExonerationsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListTestExonerationsResponse) ProtoMessage() {}
func (x *ListTestExonerationsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_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 ListTestExonerationsResponse.ProtoReflect.Descriptor instead.
func (*ListTestExonerationsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{6}
}
func (x *ListTestExonerationsResponse) GetTestExonerations() []*TestExoneration {
if x != nil {
return x.TestExonerations
}
return nil
}
func (x *ListTestExonerationsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A request message for QueryTestResults RPC.
type QueryTestResultsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Retrieve test results included in these invocations, directly or indirectly
// (via Invocation.included_invocations).
//
// Specifying multiple invocations is equivalent to querying one invocation
// that includes these.
Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
// A test result in the response must satisfy this predicate.
Predicate *TestResultPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
// The maximum number of test results to return.
//
// The service may return fewer than this value.
// If unspecified, at most 100 test results will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `QueryTestResults` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `QueryTestResults` MUST
// match the call that provided the page token.
PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
// Fields to include in the response.
// If not set, the default mask is used where summary_html and tags are
// excluded.
// Test result names will always be included even if "name" is not a part of
// the mask.
ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"`
}
func (x *QueryTestResultsRequest) Reset() {
*x = QueryTestResultsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestResultsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestResultsRequest) ProtoMessage() {}
func (x *QueryTestResultsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[7]
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 QueryTestResultsRequest.ProtoReflect.Descriptor instead.
func (*QueryTestResultsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{7}
}
func (x *QueryTestResultsRequest) GetInvocations() []string {
if x != nil {
return x.Invocations
}
return nil
}
func (x *QueryTestResultsRequest) GetPredicate() *TestResultPredicate {
if x != nil {
return x.Predicate
}
return nil
}
func (x *QueryTestResultsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *QueryTestResultsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
func (x *QueryTestResultsRequest) GetReadMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.ReadMask
}
return nil
}
// A response message for QueryTestResults RPC.
type QueryTestResultsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Matched test results.
// Ordered by parent invocation ID, test ID and result ID.
TestResults []*TestResult `protobuf:"bytes,1,rep,name=test_results,json=testResults,proto3" json:"test_results,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *QueryTestResultsResponse) Reset() {
*x = QueryTestResultsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestResultsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestResultsResponse) ProtoMessage() {}
func (x *QueryTestResultsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[8]
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 QueryTestResultsResponse.ProtoReflect.Descriptor instead.
func (*QueryTestResultsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{8}
}
func (x *QueryTestResultsResponse) GetTestResults() []*TestResult {
if x != nil {
return x.TestResults
}
return nil
}
func (x *QueryTestResultsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A request message for QueryTestExonerations RPC.
type QueryTestExonerationsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Retrieve test exonerations included in these invocations, directly or
// indirectly (via Invocation.included_invocations).
//
// Specifying multiple invocations is equivalent to querying one invocation
// that includes these.
Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
// A test exoneration in the response must satisfy this predicate.
Predicate *TestExonerationPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
// The maximum number of test exonerations to return.
//
// The service may return fewer than this value.
// If unspecified, at most 100 test exonerations will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `QueryTestExonerations` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `QueryTestExonerations`
// MUST match the call that provided the page token.
PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *QueryTestExonerationsRequest) Reset() {
*x = QueryTestExonerationsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestExonerationsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestExonerationsRequest) ProtoMessage() {}
func (x *QueryTestExonerationsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[9]
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 QueryTestExonerationsRequest.ProtoReflect.Descriptor instead.
func (*QueryTestExonerationsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{9}
}
func (x *QueryTestExonerationsRequest) GetInvocations() []string {
if x != nil {
return x.Invocations
}
return nil
}
func (x *QueryTestExonerationsRequest) GetPredicate() *TestExonerationPredicate {
if x != nil {
return x.Predicate
}
return nil
}
func (x *QueryTestExonerationsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *QueryTestExonerationsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// A response message for QueryTestExonerations RPC.
type QueryTestExonerationsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The test exonerations matching the predicate.
// Ordered by parent invocation ID, test ID and exoneration ID.
TestExonerations []*TestExoneration `protobuf:"bytes,1,rep,name=test_exonerations,json=testExonerations,proto3" json:"test_exonerations,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *QueryTestExonerationsResponse) Reset() {
*x = QueryTestExonerationsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestExonerationsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestExonerationsResponse) ProtoMessage() {}
func (x *QueryTestExonerationsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[10]
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 QueryTestExonerationsResponse.ProtoReflect.Descriptor instead.
func (*QueryTestExonerationsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{10}
}
func (x *QueryTestExonerationsResponse) GetTestExonerations() []*TestExoneration {
if x != nil {
return x.TestExonerations
}
return nil
}
func (x *QueryTestExonerationsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A request message for QueryTestResultStatistics RPC.
type QueryTestResultStatisticsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Retrieve statistics of test result belong to these invocations,
// directly or indirectly (via Invocation.included_invocations).
//
// Specifying multiple invocations is equivalent to requesting one invocation
// that includes these.
Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
}
func (x *QueryTestResultStatisticsRequest) Reset() {
*x = QueryTestResultStatisticsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestResultStatisticsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestResultStatisticsRequest) ProtoMessage() {}
func (x *QueryTestResultStatisticsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[11]
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 QueryTestResultStatisticsRequest.ProtoReflect.Descriptor instead.
func (*QueryTestResultStatisticsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{11}
}
func (x *QueryTestResultStatisticsRequest) GetInvocations() []string {
if x != nil {
return x.Invocations
}
return nil
}
// A response message for QueryTestResultStatistics RPC.
type QueryTestResultStatisticsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Total number of test results.
TotalTestResults int64 `protobuf:"varint,1,opt,name=total_test_results,json=totalTestResults,proto3" json:"total_test_results,omitempty"`
}
func (x *QueryTestResultStatisticsResponse) Reset() {
*x = QueryTestResultStatisticsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestResultStatisticsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestResultStatisticsResponse) ProtoMessage() {}
func (x *QueryTestResultStatisticsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[12]
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 QueryTestResultStatisticsResponse.ProtoReflect.Descriptor instead.
func (*QueryTestResultStatisticsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{12}
}
func (x *QueryTestResultStatisticsResponse) GetTotalTestResults() int64 {
if x != nil {
return x.TotalTestResults
}
return 0
}
// A request message for GetArtifact RPC.
type GetArtifactRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the artifact to request, see Artifact.name.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetArtifactRequest) Reset() {
*x = GetArtifactRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetArtifactRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetArtifactRequest) ProtoMessage() {}
func (x *GetArtifactRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[13]
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 GetArtifactRequest.ProtoReflect.Descriptor instead.
func (*GetArtifactRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{13}
}
func (x *GetArtifactRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// A request message for ListArtifacts RPC.
type ListArtifactsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the parent, e.g. an invocation (see Invocation.name) or
// a test result (see TestResult.name).
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// The maximum number of artifacts to return.
//
// The service may return fewer than this value.
// If unspecified, at most 100 artifacts will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `ListArtifacts` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `ListArtifacts` MUST
// match the call that provided the page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListArtifactsRequest) Reset() {
*x = ListArtifactsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListArtifactsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListArtifactsRequest) ProtoMessage() {}
func (x *ListArtifactsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[14]
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 ListArtifactsRequest.ProtoReflect.Descriptor instead.
func (*ListArtifactsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{14}
}
func (x *ListArtifactsRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListArtifactsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListArtifactsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// A response message for ListArtifacts RPC.
type ListArtifactsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The artifacts from the specified parent.
Artifacts []*Artifact `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
// If the invocation is not finalized, more results may appear later.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListArtifactsResponse) Reset() {
*x = ListArtifactsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListArtifactsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListArtifactsResponse) ProtoMessage() {}
func (x *ListArtifactsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[15]
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 ListArtifactsResponse.ProtoReflect.Descriptor instead.
func (*ListArtifactsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{15}
}
func (x *ListArtifactsResponse) GetArtifacts() []*Artifact {
if x != nil {
return x.Artifacts
}
return nil
}
func (x *ListArtifactsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A request message for QueryArtifacts RPC.
type QueryArtifactsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Retrieve artifacts included in these invocations, directly or indirectly
// (via Invocation.included_invocations and via contained test results).
//
// Specifying multiple invocations is equivalent to querying one invocation
// that includes these.
Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
// An artifact in the response must satisfy this predicate.
Predicate *ArtifactPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
// The maximum number of artifacts to return.
//
// The service may return fewer than this value.
// If unspecified, at most 100 artifacts will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `QueryArtifacts` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `QueryArtifacts` MUST
// match the call that provided the page token.
PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *QueryArtifactsRequest) Reset() {
*x = QueryArtifactsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryArtifactsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryArtifactsRequest) ProtoMessage() {}
func (x *QueryArtifactsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[16]
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 QueryArtifactsRequest.ProtoReflect.Descriptor instead.
func (*QueryArtifactsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{16}
}
func (x *QueryArtifactsRequest) GetInvocations() []string {
if x != nil {
return x.Invocations
}
return nil
}
func (x *QueryArtifactsRequest) GetPredicate() *ArtifactPredicate {
if x != nil {
return x.Predicate
}
return nil
}
func (x *QueryArtifactsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *QueryArtifactsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// A response message for QueryArtifacts RPC.
type QueryArtifactsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Matched artifacts.
// First invocation-level artifacts, then test-result-level artifacts
// ordered by parent invocation ID, test ID and artifact ID.
Artifacts []*Artifact `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *QueryArtifactsResponse) Reset() {
*x = QueryArtifactsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryArtifactsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryArtifactsResponse) ProtoMessage() {}
func (x *QueryArtifactsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[17]
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 QueryArtifactsResponse.ProtoReflect.Descriptor instead.
func (*QueryArtifactsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{17}
}
func (x *QueryArtifactsResponse) GetArtifacts() []*Artifact {
if x != nil {
return x.Artifacts
}
return nil
}
func (x *QueryArtifactsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A request message for QueryTestVariants RPC.
// Next id: 9.
type QueryTestVariantsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Retrieve test variants included in these invocations, directly or indirectly
// (via Invocation.included_invocations).
//
// Specifying multiple invocations is equivalent to querying one invocation
// that includes these.
Invocations []string `protobuf:"bytes,2,rep,name=invocations,proto3" json:"invocations,omitempty"`
// A test variant must satisfy this predicate.
Predicate *TestVariantPredicate `protobuf:"bytes,6,opt,name=predicate,proto3" json:"predicate,omitempty"`
// The maximum number of test results to be included in a test variant.
//
// If a test variant has more results than the limit, the remaining results
// will not be returned.
// If unspecified, at most 10 results will be included in a test variant.
// The maximum value is 100; values above 100 will be coerced to 100.
ResultLimit int32 `protobuf:"varint,8,opt,name=result_limit,json=resultLimit,proto3" json:"result_limit,omitempty"`
// The maximum number of test variants to return.
//
// The service may return fewer than this value.
// If unspecified, at most 100 test variants will be returned.
// The maximum value is 10,000; values above 10,000 will be coerced to 10,000.
PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `QueryTestVariants` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `QueryTestVariants` MUST
// match the call that provided the page token.
PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
// Fields to include in the response.
// If not set, the default mask is used where all fields are included.
//
// The following fields in results.*.result will NEVER be included even when
// specified:
// * test_id
// * variant_hash
// * variant
// * test_metadata
// Those values can be found in the parent test variant objects.
//
// The following fields will ALWAYS be included even when NOT specified:
// * test_id
// * variant_hash
// * status
ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,7,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"`
}
func (x *QueryTestVariantsRequest) Reset() {
*x = QueryTestVariantsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestVariantsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestVariantsRequest) ProtoMessage() {}
func (x *QueryTestVariantsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[18]
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 QueryTestVariantsRequest.ProtoReflect.Descriptor instead.
func (*QueryTestVariantsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{18}
}
func (x *QueryTestVariantsRequest) GetInvocations() []string {
if x != nil {
return x.Invocations
}
return nil
}
func (x *QueryTestVariantsRequest) GetPredicate() *TestVariantPredicate {
if x != nil {
return x.Predicate
}
return nil
}
func (x *QueryTestVariantsRequest) GetResultLimit() int32 {
if x != nil {
return x.ResultLimit
}
return 0
}
func (x *QueryTestVariantsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *QueryTestVariantsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
func (x *QueryTestVariantsRequest) GetReadMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.ReadMask
}
return nil
}
// A response message for QueryTestVariants RPC.
type QueryTestVariantsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Matched test variants.
// Ordered by TestVariantStatus, test_id, then variant_hash
TestVariants []*TestVariant `protobuf:"bytes,1,rep,name=test_variants,json=testVariants,proto3" json:"test_variants,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
// The code sources tested by the returned test variants. The sources are keyed
// by an ID which allows them to be cross-referenced from TestVariant.sources_id.
//
// The sources are returned via this map instead of directly on the TestVariant
// to avoid excessive response size. Each source message could be up to a few
// kilobytes and there are usually no more than a handful of different sources
// tested in an invocation, so deduplicating them here reduces response size.
Sources map[string]*Sources `protobuf:"bytes,3,rep,name=sources,proto3" json:"sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *QueryTestVariantsResponse) Reset() {
*x = QueryTestVariantsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestVariantsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestVariantsResponse) ProtoMessage() {}
func (x *QueryTestVariantsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[19]
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 QueryTestVariantsResponse.ProtoReflect.Descriptor instead.
func (*QueryTestVariantsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{19}
}
func (x *QueryTestVariantsResponse) GetTestVariants() []*TestVariant {
if x != nil {
return x.TestVariants
}
return nil
}
func (x *QueryTestVariantsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
func (x *QueryTestVariantsResponse) GetSources() map[string]*Sources {
if x != nil {
return x.Sources
}
return nil
}
// A request message for BatchGetTestVariants RPC.
type BatchGetTestVariantsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the invocation that the test variants are in.
Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
// A list of test IDs and variant hashes, identifying the requested test
// variants. Size is limited to 500. Any request for more than 500 variants
// will return an error.
TestVariants []*BatchGetTestVariantsRequest_TestVariantIdentifier `protobuf:"bytes,2,rep,name=test_variants,json=testVariants,proto3" json:"test_variants,omitempty"`
// The maximum number of test results to be included in a test variant.
//
// If a test variant has more results than the limit, the remaining results
// will not be returned.
// If unspecified, at most 10 results will be included in a test variant.
// The maximum value is 100; values above 100 will be coerced to 100.
ResultLimit int32 `protobuf:"varint,3,opt,name=result_limit,json=resultLimit,proto3" json:"result_limit,omitempty"`
}
func (x *BatchGetTestVariantsRequest) Reset() {
*x = BatchGetTestVariantsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BatchGetTestVariantsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BatchGetTestVariantsRequest) ProtoMessage() {}
func (x *BatchGetTestVariantsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[20]
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 BatchGetTestVariantsRequest.ProtoReflect.Descriptor instead.
func (*BatchGetTestVariantsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{20}
}
func (x *BatchGetTestVariantsRequest) GetInvocation() string {
if x != nil {
return x.Invocation
}
return ""
}
func (x *BatchGetTestVariantsRequest) GetTestVariants() []*BatchGetTestVariantsRequest_TestVariantIdentifier {
if x != nil {
return x.TestVariants
}
return nil
}
func (x *BatchGetTestVariantsRequest) GetResultLimit() int32 {
if x != nil {
return x.ResultLimit
}
return 0
}
// A response message for BatchGetTestVariants RPC.
type BatchGetTestVariantsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Test variants matching the requests. Any variants that weren't found are
// omitted from the response. Clients shouldn't rely on the ordering of this
// field, as no particular order is guaranteed.
TestVariants []*TestVariant `protobuf:"bytes,1,rep,name=test_variants,json=testVariants,proto3" json:"test_variants,omitempty"`
// The code sources tested by the returned test variants. The sources are keyed
// by an ID which allows them to be cross-referenced from TestVariant.sources_id.
//
// The sources are returned via this map instead of directly on the TestVariant
// to avoid excessive response size. Each source message could be up to a few
// kilobytes and there are usually no more than a handful of different sources
// tested in an invocation, so deduplicating them here reduces response size.
Sources map[string]*Sources `protobuf:"bytes,2,rep,name=sources,proto3" json:"sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *BatchGetTestVariantsResponse) Reset() {
*x = BatchGetTestVariantsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BatchGetTestVariantsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BatchGetTestVariantsResponse) ProtoMessage() {}
func (x *BatchGetTestVariantsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[21]
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 BatchGetTestVariantsResponse.ProtoReflect.Descriptor instead.
func (*BatchGetTestVariantsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{21}
}
func (x *BatchGetTestVariantsResponse) GetTestVariants() []*TestVariant {
if x != nil {
return x.TestVariants
}
return nil
}
func (x *BatchGetTestVariantsResponse) GetSources() map[string]*Sources {
if x != nil {
return x.Sources
}
return nil
}
// A request message for QueryTestMetadata RPC.
type QueryTestMetadataRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The LUCI Project to query.
Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
// Filters to apply to the returned test metadata.
Predicate *TestMetadataPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
// The maximum number of test metadata entries to return.
//
// The service may return fewer than this value.
// If unspecified, at most 1000 test metadata entries will be returned.
// The maximum value is 100K; values above 100K will be coerced to 100K.
PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `QueryTestMetadata` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `QueryTestMetadata` MUST
// match the call that provided the page token.
PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *QueryTestMetadataRequest) Reset() {
*x = QueryTestMetadataRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestMetadataRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestMetadataRequest) ProtoMessage() {}
func (x *QueryTestMetadataRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[22]
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 QueryTestMetadataRequest.ProtoReflect.Descriptor instead.
func (*QueryTestMetadataRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{22}
}
func (x *QueryTestMetadataRequest) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
func (x *QueryTestMetadataRequest) GetPredicate() *TestMetadataPredicate {
if x != nil {
return x.Predicate
}
return nil
}
func (x *QueryTestMetadataRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *QueryTestMetadataRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// A response message for QueryTestMetadata RPC.
type QueryTestMetadataResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The matched testMetadata.
TestMetadata []*TestMetadataDetail `protobuf:"bytes,1,rep,name=testMetadata,proto3" json:"testMetadata,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there were no subsequent pages at the time of
// request.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *QueryTestMetadataResponse) Reset() {
*x = QueryTestMetadataResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryTestMetadataResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryTestMetadataResponse) ProtoMessage() {}
func (x *QueryTestMetadataResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[23]
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 QueryTestMetadataResponse.ProtoReflect.Descriptor instead.
func (*QueryTestMetadataResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{23}
}
func (x *QueryTestMetadataResponse) GetTestMetadata() []*TestMetadataDetail {
if x != nil {
return x.TestMetadata
}
return nil
}
func (x *QueryTestMetadataResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A request message for QueryNewTestVariants RPC.
// To use this RPC, callers need:
// - resultdb.baselines.get in the realm the <baseline_project>:@project, where
// baseline_project is the LUCI project that contains the baseline.
// - resultdb.testResults.list in the realm of the invocation which is being
// queried.
type QueryNewTestVariantsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the invocation, e.g. "invocations/{id}".
Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
// The baseline to compare test variants against, to determine if they are new.
// e.g. “projects/{project}/baselines/{baseline_id}”.
// For example, in the project "chromium", the baseline_id may be
// "try:linux-rel".
Baseline string `protobuf:"bytes,2,opt,name=baseline,proto3" json:"baseline,omitempty"`
}
func (x *QueryNewTestVariantsRequest) Reset() {
*x = QueryNewTestVariantsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryNewTestVariantsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryNewTestVariantsRequest) ProtoMessage() {}
func (x *QueryNewTestVariantsRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[24]
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 QueryNewTestVariantsRequest.ProtoReflect.Descriptor instead.
func (*QueryNewTestVariantsRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{24}
}
func (x *QueryNewTestVariantsRequest) GetInvocation() string {
if x != nil {
return x.Invocation
}
return ""
}
func (x *QueryNewTestVariantsRequest) GetBaseline() string {
if x != nil {
return x.Baseline
}
return ""
}
// A response message for QueryNewTestVariants RPC.
type QueryNewTestVariantsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Indicates whether the baseline has been populated with at least 72 hours
// of data and the results can be relied upon.
IsBaselineReady bool `protobuf:"varint,1,opt,name=is_baseline_ready,json=isBaselineReady,proto3" json:"is_baseline_ready,omitempty"`
// Test variants that are new, meaning that they have not been part of
// a submitted run prior.
NewTestVariants []*QueryNewTestVariantsResponse_NewTestVariant `protobuf:"bytes,2,rep,name=new_test_variants,json=newTestVariants,proto3" json:"new_test_variants,omitempty"`
}
func (x *QueryNewTestVariantsResponse) Reset() {
*x = QueryNewTestVariantsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryNewTestVariantsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryNewTestVariantsResponse) ProtoMessage() {}
func (x *QueryNewTestVariantsResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[25]
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 QueryNewTestVariantsResponse.ProtoReflect.Descriptor instead.
func (*QueryNewTestVariantsResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{25}
}
func (x *QueryNewTestVariantsResponse) GetIsBaselineReady() bool {
if x != nil {
return x.IsBaselineReady
}
return false
}
func (x *QueryNewTestVariantsResponse) GetNewTestVariants() []*QueryNewTestVariantsResponse_NewTestVariant {
if x != nil {
return x.NewTestVariants
}
return nil
}
type BatchGetTestVariantsRequest_TestVariantIdentifier struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The unique identifier of the test in a LUCI project. See the comment on
// TestResult.test_id for full documentation.
TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
// Hash of the variant. See the comment on TestResult.variant_hash for full
// documentation.
VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
}
func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) Reset() {
*x = BatchGetTestVariantsRequest_TestVariantIdentifier{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BatchGetTestVariantsRequest_TestVariantIdentifier) ProtoMessage() {}
func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[27]
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 BatchGetTestVariantsRequest_TestVariantIdentifier.ProtoReflect.Descriptor instead.
func (*BatchGetTestVariantsRequest_TestVariantIdentifier) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{20, 0}
}
func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) GetTestId() string {
if x != nil {
return x.TestId
}
return ""
}
func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) GetVariantHash() string {
if x != nil {
return x.VariantHash
}
return ""
}
// Represents a new test, which contains minimal information to uniquely identify a TestVariant.
type QueryNewTestVariantsResponse_NewTestVariant struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A unique identifier of the test in a LUCI project.
// Regex: ^[[::print::]]{1,256}$
//
// Refer to TestResult.test_id for details.
TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
// Hash of the variant.
// hex(sha256(sorted(”.join('%s:%s\n' for k, v in variant.items())))).
VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
}
func (x *QueryNewTestVariantsResponse_NewTestVariant) Reset() {
*x = QueryNewTestVariantsResponse_NewTestVariant{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryNewTestVariantsResponse_NewTestVariant) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryNewTestVariantsResponse_NewTestVariant) ProtoMessage() {}
func (x *QueryNewTestVariantsResponse_NewTestVariant) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[29]
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 QueryNewTestVariantsResponse_NewTestVariant.ProtoReflect.Descriptor instead.
func (*QueryNewTestVariantsResponse_NewTestVariant) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{25, 0}
}
func (x *QueryNewTestVariantsResponse_NewTestVariant) GetTestId() string {
if x != nil {
return x.TestId
}
return ""
}
func (x *QueryNewTestVariantsResponse_NewTestVariant) GetVariantHash() string {
if x != nil {
return x.VariantHash
}
return ""
}
var File_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc = []byte{
0x0a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61,
0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75,
0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x6f,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75,
0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73,
0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39,
0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69,
0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76,
0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73,
0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f,
0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65,
0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61,
0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x82, 0x01, 0x0a,
0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74,
0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x74, 0x65,
0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0x2f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78,
0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73,
0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45,
0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x6f, 0x6e,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65,
0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xf5, 0x01, 0x0a, 0x17,
0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e,
0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x70, 0x72, 0x65,
0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c,
0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63,
0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b,
0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65,
0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d,
0x61, 0x73, 0x6b, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73,
0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74,
0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xcb, 0x01, 0x0a, 0x1c, 0x51, 0x75,
0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e,
0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x09,
0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e,
0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02,
0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61,
0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72,
0x79, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x74, 0x65, 0x73,
0x74, 0x5f, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f,
0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0x44, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x51, 0x0a, 0x21, 0x51, 0x75, 0x65, 0x72, 0x79,
0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54,
0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x2d, 0x0a, 0x12, 0x47, 0x65,
0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6f, 0x0a, 0x14, 0x4c, 0x69, 0x73,
0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b,
0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x79, 0x0a, 0x15, 0x4c, 0x69,
0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a,
0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb8, 0x01, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41,
0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69,
0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x22, 0x7a, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x61, 0x72,
0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31,
0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66,
0x61, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67,
0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9a, 0x02, 0x0a,
0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b,
0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x70,
0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x65,
0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74,
0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69,
0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52,
0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb2, 0x02, 0x0a, 0x19, 0x51, 0x75,
0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f,
0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x0c, 0x74,
0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x12, 0x52, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73,
0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x55, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63,
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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa9,
0x02, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56,
0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e,
0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68,
0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65,
0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74,
0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x5d, 0x0a, 0x15, 0x54,
0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x66, 0x69, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74,
0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61,
0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x76,
0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x90, 0x02, 0x0a, 0x1c, 0x42,
0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x74,
0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
0x74, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12,
0x55, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x3b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74,
0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x55, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbc, 0x01,
0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x70, 0x72, 0x65,
0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c,
0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x65, 0x64,
0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65,
0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a,
0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8d, 0x01, 0x0a,
0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x65,
0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67,
0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x63, 0x0a, 0x1b,
0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69,
0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69,
0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x1f, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e,
0x65, 0x22, 0x83, 0x02, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65,
0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e,
0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69,
0x73, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x69,
0x0a, 0x11, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61,
0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6c, 0x75, 0x63, 0x69,
0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65,
0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73,
0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x65, 0x77, 0x54, 0x65, 0x73,
0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x1a, 0x4c, 0x0a, 0x0e, 0x4e, 0x65, 0x77,
0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f,
0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69,
0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x32, 0xe9, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x44, 0x42, 0x12, 0x57, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31,
0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x57, 0x0a,
0x0d, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26,
0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65,
0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69,
0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
0x12, 0x66, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73,
0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74,
0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x12, 0x2d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e,
0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x00, 0x12, 0x6b, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65,
0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a,
0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x19, 0x51,
0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74,
0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x32, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72,
0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69,
0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c,
0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53,
0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54,
0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x75,
0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51,
0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x75, 0x63,
0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75,
0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0b,
0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x6c, 0x75,
0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x22, 0x00, 0x12,
0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x74, 0x69,
0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72,
0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28,
0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x11, 0x51, 0x75,
0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12,
0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e,
0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69,
0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x75,
0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51,
0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x42, 0x61,
0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65,
0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73,
0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72,
0x79, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73,
0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData = file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc
)
func file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescOnce.Do(func() {
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData)
})
return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData
}
var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_goTypes = []interface{}{
(*GetInvocationRequest)(nil), // 0: luci.resultdb.v1.GetInvocationRequest
(*GetTestResultRequest)(nil), // 1: luci.resultdb.v1.GetTestResultRequest
(*ListTestResultsRequest)(nil), // 2: luci.resultdb.v1.ListTestResultsRequest
(*ListTestResultsResponse)(nil), // 3: luci.resultdb.v1.ListTestResultsResponse
(*GetTestExonerationRequest)(nil), // 4: luci.resultdb.v1.GetTestExonerationRequest
(*ListTestExonerationsRequest)(nil), // 5: luci.resultdb.v1.ListTestExonerationsRequest
(*ListTestExonerationsResponse)(nil), // 6: luci.resultdb.v1.ListTestExonerationsResponse
(*QueryTestResultsRequest)(nil), // 7: luci.resultdb.v1.QueryTestResultsRequest
(*QueryTestResultsResponse)(nil), // 8: luci.resultdb.v1.QueryTestResultsResponse
(*QueryTestExonerationsRequest)(nil), // 9: luci.resultdb.v1.QueryTestExonerationsRequest
(*QueryTestExonerationsResponse)(nil), // 10: luci.resultdb.v1.QueryTestExonerationsResponse
(*QueryTestResultStatisticsRequest)(nil), // 11: luci.resultdb.v1.QueryTestResultStatisticsRequest
(*QueryTestResultStatisticsResponse)(nil), // 12: luci.resultdb.v1.QueryTestResultStatisticsResponse
(*GetArtifactRequest)(nil), // 13: luci.resultdb.v1.GetArtifactRequest
(*ListArtifactsRequest)(nil), // 14: luci.resultdb.v1.ListArtifactsRequest
(*ListArtifactsResponse)(nil), // 15: luci.resultdb.v1.ListArtifactsResponse
(*QueryArtifactsRequest)(nil), // 16: luci.resultdb.v1.QueryArtifactsRequest
(*QueryArtifactsResponse)(nil), // 17: luci.resultdb.v1.QueryArtifactsResponse
(*QueryTestVariantsRequest)(nil), // 18: luci.resultdb.v1.QueryTestVariantsRequest
(*QueryTestVariantsResponse)(nil), // 19: luci.resultdb.v1.QueryTestVariantsResponse
(*BatchGetTestVariantsRequest)(nil), // 20: luci.resultdb.v1.BatchGetTestVariantsRequest
(*BatchGetTestVariantsResponse)(nil), // 21: luci.resultdb.v1.BatchGetTestVariantsResponse
(*QueryTestMetadataRequest)(nil), // 22: luci.resultdb.v1.QueryTestMetadataRequest
(*QueryTestMetadataResponse)(nil), // 23: luci.resultdb.v1.QueryTestMetadataResponse
(*QueryNewTestVariantsRequest)(nil), // 24: luci.resultdb.v1.QueryNewTestVariantsRequest
(*QueryNewTestVariantsResponse)(nil), // 25: luci.resultdb.v1.QueryNewTestVariantsResponse
nil, // 26: luci.resultdb.v1.QueryTestVariantsResponse.SourcesEntry
(*BatchGetTestVariantsRequest_TestVariantIdentifier)(nil), // 27: luci.resultdb.v1.BatchGetTestVariantsRequest.TestVariantIdentifier
nil, // 28: luci.resultdb.v1.BatchGetTestVariantsResponse.SourcesEntry
(*QueryNewTestVariantsResponse_NewTestVariant)(nil), // 29: luci.resultdb.v1.QueryNewTestVariantsResponse.NewTestVariant
(*fieldmaskpb.FieldMask)(nil), // 30: google.protobuf.FieldMask
(*TestResult)(nil), // 31: luci.resultdb.v1.TestResult
(*TestExoneration)(nil), // 32: luci.resultdb.v1.TestExoneration
(*TestResultPredicate)(nil), // 33: luci.resultdb.v1.TestResultPredicate
(*TestExonerationPredicate)(nil), // 34: luci.resultdb.v1.TestExonerationPredicate
(*Artifact)(nil), // 35: luci.resultdb.v1.Artifact
(*ArtifactPredicate)(nil), // 36: luci.resultdb.v1.ArtifactPredicate
(*TestVariantPredicate)(nil), // 37: luci.resultdb.v1.TestVariantPredicate
(*TestVariant)(nil), // 38: luci.resultdb.v1.TestVariant
(*TestMetadataPredicate)(nil), // 39: luci.resultdb.v1.TestMetadataPredicate
(*TestMetadataDetail)(nil), // 40: luci.resultdb.v1.TestMetadataDetail
(*Sources)(nil), // 41: luci.resultdb.v1.Sources
(*Invocation)(nil), // 42: luci.resultdb.v1.Invocation
}
var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_depIdxs = []int32{
30, // 0: luci.resultdb.v1.ListTestResultsRequest.read_mask:type_name -> google.protobuf.FieldMask
31, // 1: luci.resultdb.v1.ListTestResultsResponse.test_results:type_name -> luci.resultdb.v1.TestResult
32, // 2: luci.resultdb.v1.ListTestExonerationsResponse.test_exonerations:type_name -> luci.resultdb.v1.TestExoneration
33, // 3: luci.resultdb.v1.QueryTestResultsRequest.predicate:type_name -> luci.resultdb.v1.TestResultPredicate
30, // 4: luci.resultdb.v1.QueryTestResultsRequest.read_mask:type_name -> google.protobuf.FieldMask
31, // 5: luci.resultdb.v1.QueryTestResultsResponse.test_results:type_name -> luci.resultdb.v1.TestResult
34, // 6: luci.resultdb.v1.QueryTestExonerationsRequest.predicate:type_name -> luci.resultdb.v1.TestExonerationPredicate
32, // 7: luci.resultdb.v1.QueryTestExonerationsResponse.test_exonerations:type_name -> luci.resultdb.v1.TestExoneration
35, // 8: luci.resultdb.v1.ListArtifactsResponse.artifacts:type_name -> luci.resultdb.v1.Artifact
36, // 9: luci.resultdb.v1.QueryArtifactsRequest.predicate:type_name -> luci.resultdb.v1.ArtifactPredicate
35, // 10: luci.resultdb.v1.QueryArtifactsResponse.artifacts:type_name -> luci.resultdb.v1.Artifact
37, // 11: luci.resultdb.v1.QueryTestVariantsRequest.predicate:type_name -> luci.resultdb.v1.TestVariantPredicate
30, // 12: luci.resultdb.v1.QueryTestVariantsRequest.read_mask:type_name -> google.protobuf.FieldMask
38, // 13: luci.resultdb.v1.QueryTestVariantsResponse.test_variants:type_name -> luci.resultdb.v1.TestVariant
26, // 14: luci.resultdb.v1.QueryTestVariantsResponse.sources:type_name -> luci.resultdb.v1.QueryTestVariantsResponse.SourcesEntry
27, // 15: luci.resultdb.v1.BatchGetTestVariantsRequest.test_variants:type_name -> luci.resultdb.v1.BatchGetTestVariantsRequest.TestVariantIdentifier
38, // 16: luci.resultdb.v1.BatchGetTestVariantsResponse.test_variants:type_name -> luci.resultdb.v1.TestVariant
28, // 17: luci.resultdb.v1.BatchGetTestVariantsResponse.sources:type_name -> luci.resultdb.v1.BatchGetTestVariantsResponse.SourcesEntry
39, // 18: luci.resultdb.v1.QueryTestMetadataRequest.predicate:type_name -> luci.resultdb.v1.TestMetadataPredicate
40, // 19: luci.resultdb.v1.QueryTestMetadataResponse.testMetadata:type_name -> luci.resultdb.v1.TestMetadataDetail
29, // 20: luci.resultdb.v1.QueryNewTestVariantsResponse.new_test_variants:type_name -> luci.resultdb.v1.QueryNewTestVariantsResponse.NewTestVariant
41, // 21: luci.resultdb.v1.QueryTestVariantsResponse.SourcesEntry.value:type_name -> luci.resultdb.v1.Sources
41, // 22: luci.resultdb.v1.BatchGetTestVariantsResponse.SourcesEntry.value:type_name -> luci.resultdb.v1.Sources
0, // 23: luci.resultdb.v1.ResultDB.GetInvocation:input_type -> luci.resultdb.v1.GetInvocationRequest
1, // 24: luci.resultdb.v1.ResultDB.GetTestResult:input_type -> luci.resultdb.v1.GetTestResultRequest
2, // 25: luci.resultdb.v1.ResultDB.ListTestResults:input_type -> luci.resultdb.v1.ListTestResultsRequest
4, // 26: luci.resultdb.v1.ResultDB.GetTestExoneration:input_type -> luci.resultdb.v1.GetTestExonerationRequest
5, // 27: luci.resultdb.v1.ResultDB.ListTestExonerations:input_type -> luci.resultdb.v1.ListTestExonerationsRequest
7, // 28: luci.resultdb.v1.ResultDB.QueryTestResults:input_type -> luci.resultdb.v1.QueryTestResultsRequest
9, // 29: luci.resultdb.v1.ResultDB.QueryTestExonerations:input_type -> luci.resultdb.v1.QueryTestExonerationsRequest
11, // 30: luci.resultdb.v1.ResultDB.QueryTestResultStatistics:input_type -> luci.resultdb.v1.QueryTestResultStatisticsRequest
24, // 31: luci.resultdb.v1.ResultDB.QueryNewTestVariants:input_type -> luci.resultdb.v1.QueryNewTestVariantsRequest
13, // 32: luci.resultdb.v1.ResultDB.GetArtifact:input_type -> luci.resultdb.v1.GetArtifactRequest
14, // 33: luci.resultdb.v1.ResultDB.ListArtifacts:input_type -> luci.resultdb.v1.ListArtifactsRequest
16, // 34: luci.resultdb.v1.ResultDB.QueryArtifacts:input_type -> luci.resultdb.v1.QueryArtifactsRequest
18, // 35: luci.resultdb.v1.ResultDB.QueryTestVariants:input_type -> luci.resultdb.v1.QueryTestVariantsRequest
20, // 36: luci.resultdb.v1.ResultDB.BatchGetTestVariants:input_type -> luci.resultdb.v1.BatchGetTestVariantsRequest
22, // 37: luci.resultdb.v1.ResultDB.QueryTestMetadata:input_type -> luci.resultdb.v1.QueryTestMetadataRequest
42, // 38: luci.resultdb.v1.ResultDB.GetInvocation:output_type -> luci.resultdb.v1.Invocation
31, // 39: luci.resultdb.v1.ResultDB.GetTestResult:output_type -> luci.resultdb.v1.TestResult
3, // 40: luci.resultdb.v1.ResultDB.ListTestResults:output_type -> luci.resultdb.v1.ListTestResultsResponse
32, // 41: luci.resultdb.v1.ResultDB.GetTestExoneration:output_type -> luci.resultdb.v1.TestExoneration
6, // 42: luci.resultdb.v1.ResultDB.ListTestExonerations:output_type -> luci.resultdb.v1.ListTestExonerationsResponse
8, // 43: luci.resultdb.v1.ResultDB.QueryTestResults:output_type -> luci.resultdb.v1.QueryTestResultsResponse
10, // 44: luci.resultdb.v1.ResultDB.QueryTestExonerations:output_type -> luci.resultdb.v1.QueryTestExonerationsResponse
12, // 45: luci.resultdb.v1.ResultDB.QueryTestResultStatistics:output_type -> luci.resultdb.v1.QueryTestResultStatisticsResponse
25, // 46: luci.resultdb.v1.ResultDB.QueryNewTestVariants:output_type -> luci.resultdb.v1.QueryNewTestVariantsResponse
35, // 47: luci.resultdb.v1.ResultDB.GetArtifact:output_type -> luci.resultdb.v1.Artifact
15, // 48: luci.resultdb.v1.ResultDB.ListArtifacts:output_type -> luci.resultdb.v1.ListArtifactsResponse
17, // 49: luci.resultdb.v1.ResultDB.QueryArtifacts:output_type -> luci.resultdb.v1.QueryArtifactsResponse
19, // 50: luci.resultdb.v1.ResultDB.QueryTestVariants:output_type -> luci.resultdb.v1.QueryTestVariantsResponse
21, // 51: luci.resultdb.v1.ResultDB.BatchGetTestVariants:output_type -> luci.resultdb.v1.BatchGetTestVariantsResponse
23, // 52: luci.resultdb.v1.ResultDB.QueryTestMetadata:output_type -> luci.resultdb.v1.QueryTestMetadataResponse
38, // [38:53] is the sub-list for method output_type
23, // [23:38] is the sub-list for method input_type
23, // [23:23] is the sub-list for extension type_name
23, // [23:23] is the sub-list for extension extendee
0, // [0:23] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_init() }
func file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_init() {
if File_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto != nil {
return
}
file_go_chromium_org_luci_resultdb_proto_v1_artifact_proto_init()
file_go_chromium_org_luci_resultdb_proto_v1_invocation_proto_init()
file_go_chromium_org_luci_resultdb_proto_v1_predicate_proto_init()
file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_init()
file_go_chromium_org_luci_resultdb_proto_v1_test_variant_proto_init()
file_go_chromium_org_luci_resultdb_proto_v1_test_metadata_proto_init()
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetInvocationRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTestResultRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTestResultsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTestResultsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTestExonerationRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTestExonerationsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTestExonerationsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestResultsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestResultsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestExonerationsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestExonerationsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestResultStatisticsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestResultStatisticsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetArtifactRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListArtifactsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListArtifactsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryArtifactsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryArtifactsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestVariantsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestVariantsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BatchGetTestVariantsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BatchGetTestVariantsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestMetadataRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryTestMetadataResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryNewTestVariantsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryNewTestVariantsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BatchGetTestVariantsRequest_TestVariantIdentifier); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryNewTestVariantsResponse_NewTestVariant); 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_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc,
NumEnums: 0,
NumMessages: 30,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_depIdxs,
MessageInfos: file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto = out.File
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc = nil
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_goTypes = nil
file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// ResultDBClient is the client API for ResultDB service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ResultDBClient interface {
// Retrieves an invocation.
GetInvocation(ctx context.Context, in *GetInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
// Retrieves a test result.
GetTestResult(ctx context.Context, in *GetTestResultRequest, opts ...grpc.CallOption) (*TestResult, error)
// Retrieves test results for a parent invocation.
//
// Note: response does not contain test results of included invocations.
// Use QueryTestResults instead.
ListTestResults(ctx context.Context, in *ListTestResultsRequest, opts ...grpc.CallOption) (*ListTestResultsResponse, error)
// Retrieves a test exoneration.
GetTestExoneration(ctx context.Context, in *GetTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error)
// Retrieves test exonerations for a parent invocation.
//
// Note: response does not contain test results of included invocations.
// Use QueryTestExonerations instead.
ListTestExonerations(ctx context.Context, in *ListTestExonerationsRequest, opts ...grpc.CallOption) (*ListTestExonerationsResponse, error)
// Retrieves test results from an invocation, recursively.
// Supports invocation inclusions.
// Supports advanced filtering.
// Examples: go/resultdb-rpc#querytestresults
QueryTestResults(ctx context.Context, in *QueryTestResultsRequest, opts ...grpc.CallOption) (*QueryTestResultsResponse, error)
// Retrieves test exonerations from an invocation.
// Supports invocation inclusions.
// Supports advanced filtering.
QueryTestExonerations(ctx context.Context, in *QueryTestExonerationsRequest, opts ...grpc.CallOption) (*QueryTestExonerationsResponse, error)
// Retrieves the test result statistics of an invocation.
// Currently supports total number of test results belong to the invocation,
// directly and indirectly.
QueryTestResultStatistics(ctx context.Context, in *QueryTestResultStatisticsRequest, opts ...grpc.CallOption) (*QueryTestResultStatisticsResponse, error)
// Calculate new test variants by running the difference between the tests
// run in the given invocation against the submitted test history for the
// source.
QueryNewTestVariants(ctx context.Context, in *QueryNewTestVariantsRequest, opts ...grpc.CallOption) (*QueryNewTestVariantsResponse, error)
// Retrieves an artifact.
GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*Artifact, error)
// Retrieves artifacts for a parent invocation/testResult.
//
// Note: if the parent is an invocation, the response does not contain
// artifacts of included invocations. Use QueryArtifacts instead.
ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error)
// Retrieves artifacts from an invocation, recursively.
// Can retrieve artifacts of test results included in the invocation
// directly or indirectly.
// Supports invocation inclusions.
QueryArtifacts(ctx context.Context, in *QueryArtifactsRequest, opts ...grpc.CallOption) (*QueryArtifactsResponse, error)
// Retrieves test variants from an invocation, recursively.
// Supports invocation inclusions.
QueryTestVariants(ctx context.Context, in *QueryTestVariantsRequest, opts ...grpc.CallOption) (*QueryTestVariantsResponse, error)
// Retrieves test variants from a single invocation, matching the specified
// test IDs and hashes.
BatchGetTestVariants(ctx context.Context, in *BatchGetTestVariantsRequest, opts ...grpc.CallOption) (*BatchGetTestVariantsResponse, error)
// Retrieves test metadata from a LUCI project, matching the predicate.
QueryTestMetadata(ctx context.Context, in *QueryTestMetadataRequest, opts ...grpc.CallOption) (*QueryTestMetadataResponse, error)
}
type resultDBPRPCClient struct {
client *prpc.Client
}
func NewResultDBPRPCClient(client *prpc.Client) ResultDBClient {
return &resultDBPRPCClient{client}
}
func (c *resultDBPRPCClient) GetInvocation(ctx context.Context, in *GetInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
out := new(Invocation)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetInvocation", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) GetTestResult(ctx context.Context, in *GetTestResultRequest, opts ...grpc.CallOption) (*TestResult, error) {
out := new(TestResult)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetTestResult", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) ListTestResults(ctx context.Context, in *ListTestResultsRequest, opts ...grpc.CallOption) (*ListTestResultsResponse, error) {
out := new(ListTestResultsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "ListTestResults", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) GetTestExoneration(ctx context.Context, in *GetTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error) {
out := new(TestExoneration)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetTestExoneration", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) ListTestExonerations(ctx context.Context, in *ListTestExonerationsRequest, opts ...grpc.CallOption) (*ListTestExonerationsResponse, error) {
out := new(ListTestExonerationsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "ListTestExonerations", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) QueryTestResults(ctx context.Context, in *QueryTestResultsRequest, opts ...grpc.CallOption) (*QueryTestResultsResponse, error) {
out := new(QueryTestResultsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestResults", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) QueryTestExonerations(ctx context.Context, in *QueryTestExonerationsRequest, opts ...grpc.CallOption) (*QueryTestExonerationsResponse, error) {
out := new(QueryTestExonerationsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestExonerations", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) QueryTestResultStatistics(ctx context.Context, in *QueryTestResultStatisticsRequest, opts ...grpc.CallOption) (*QueryTestResultStatisticsResponse, error) {
out := new(QueryTestResultStatisticsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestResultStatistics", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) QueryNewTestVariants(ctx context.Context, in *QueryNewTestVariantsRequest, opts ...grpc.CallOption) (*QueryNewTestVariantsResponse, error) {
out := new(QueryNewTestVariantsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryNewTestVariants", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*Artifact, error) {
out := new(Artifact)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetArtifact", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error) {
out := new(ListArtifactsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "ListArtifacts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) QueryArtifacts(ctx context.Context, in *QueryArtifactsRequest, opts ...grpc.CallOption) (*QueryArtifactsResponse, error) {
out := new(QueryArtifactsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryArtifacts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) QueryTestVariants(ctx context.Context, in *QueryTestVariantsRequest, opts ...grpc.CallOption) (*QueryTestVariantsResponse, error) {
out := new(QueryTestVariantsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestVariants", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) BatchGetTestVariants(ctx context.Context, in *BatchGetTestVariantsRequest, opts ...grpc.CallOption) (*BatchGetTestVariantsResponse, error) {
out := new(BatchGetTestVariantsResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "BatchGetTestVariants", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBPRPCClient) QueryTestMetadata(ctx context.Context, in *QueryTestMetadataRequest, opts ...grpc.CallOption) (*QueryTestMetadataResponse, error) {
out := new(QueryTestMetadataResponse)
err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestMetadata", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
type resultDBClient struct {
cc grpc.ClientConnInterface
}
func NewResultDBClient(cc grpc.ClientConnInterface) ResultDBClient {
return &resultDBClient{cc}
}
func (c *resultDBClient) GetInvocation(ctx context.Context, in *GetInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
out := new(Invocation)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetInvocation", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) GetTestResult(ctx context.Context, in *GetTestResultRequest, opts ...grpc.CallOption) (*TestResult, error) {
out := new(TestResult)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetTestResult", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) ListTestResults(ctx context.Context, in *ListTestResultsRequest, opts ...grpc.CallOption) (*ListTestResultsResponse, error) {
out := new(ListTestResultsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/ListTestResults", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) GetTestExoneration(ctx context.Context, in *GetTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error) {
out := new(TestExoneration)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetTestExoneration", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) ListTestExonerations(ctx context.Context, in *ListTestExonerationsRequest, opts ...grpc.CallOption) (*ListTestExonerationsResponse, error) {
out := new(ListTestExonerationsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/ListTestExonerations", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) QueryTestResults(ctx context.Context, in *QueryTestResultsRequest, opts ...grpc.CallOption) (*QueryTestResultsResponse, error) {
out := new(QueryTestResultsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestResults", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) QueryTestExonerations(ctx context.Context, in *QueryTestExonerationsRequest, opts ...grpc.CallOption) (*QueryTestExonerationsResponse, error) {
out := new(QueryTestExonerationsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestExonerations", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) QueryTestResultStatistics(ctx context.Context, in *QueryTestResultStatisticsRequest, opts ...grpc.CallOption) (*QueryTestResultStatisticsResponse, error) {
out := new(QueryTestResultStatisticsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestResultStatistics", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) QueryNewTestVariants(ctx context.Context, in *QueryNewTestVariantsRequest, opts ...grpc.CallOption) (*QueryNewTestVariantsResponse, error) {
out := new(QueryNewTestVariantsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryNewTestVariants", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*Artifact, error) {
out := new(Artifact)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetArtifact", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error) {
out := new(ListArtifactsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/ListArtifacts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) QueryArtifacts(ctx context.Context, in *QueryArtifactsRequest, opts ...grpc.CallOption) (*QueryArtifactsResponse, error) {
out := new(QueryArtifactsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryArtifacts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) QueryTestVariants(ctx context.Context, in *QueryTestVariantsRequest, opts ...grpc.CallOption) (*QueryTestVariantsResponse, error) {
out := new(QueryTestVariantsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestVariants", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) BatchGetTestVariants(ctx context.Context, in *BatchGetTestVariantsRequest, opts ...grpc.CallOption) (*BatchGetTestVariantsResponse, error) {
out := new(BatchGetTestVariantsResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/BatchGetTestVariants", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resultDBClient) QueryTestMetadata(ctx context.Context, in *QueryTestMetadataRequest, opts ...grpc.CallOption) (*QueryTestMetadataResponse, error) {
out := new(QueryTestMetadataResponse)
err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestMetadata", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// ResultDBServer is the server API for ResultDB service.
type ResultDBServer interface {
// Retrieves an invocation.
GetInvocation(context.Context, *GetInvocationRequest) (*Invocation, error)
// Retrieves a test result.
GetTestResult(context.Context, *GetTestResultRequest) (*TestResult, error)
// Retrieves test results for a parent invocation.
//
// Note: response does not contain test results of included invocations.
// Use QueryTestResults instead.
ListTestResults(context.Context, *ListTestResultsRequest) (*ListTestResultsResponse, error)
// Retrieves a test exoneration.
GetTestExoneration(context.Context, *GetTestExonerationRequest) (*TestExoneration, error)
// Retrieves test exonerations for a parent invocation.
//
// Note: response does not contain test results of included invocations.
// Use QueryTestExonerations instead.
ListTestExonerations(context.Context, *ListTestExonerationsRequest) (*ListTestExonerationsResponse, error)
// Retrieves test results from an invocation, recursively.
// Supports invocation inclusions.
// Supports advanced filtering.
// Examples: go/resultdb-rpc#querytestresults
QueryTestResults(context.Context, *QueryTestResultsRequest) (*QueryTestResultsResponse, error)
// Retrieves test exonerations from an invocation.
// Supports invocation inclusions.
// Supports advanced filtering.
QueryTestExonerations(context.Context, *QueryTestExonerationsRequest) (*QueryTestExonerationsResponse, error)
// Retrieves the test result statistics of an invocation.
// Currently supports total number of test results belong to the invocation,
// directly and indirectly.
QueryTestResultStatistics(context.Context, *QueryTestResultStatisticsRequest) (*QueryTestResultStatisticsResponse, error)
// Calculate new test variants by running the difference between the tests
// run in the given invocation against the submitted test history for the
// source.
QueryNewTestVariants(context.Context, *QueryNewTestVariantsRequest) (*QueryNewTestVariantsResponse, error)
// Retrieves an artifact.
GetArtifact(context.Context, *GetArtifactRequest) (*Artifact, error)
// Retrieves artifacts for a parent invocation/testResult.
//
// Note: if the parent is an invocation, the response does not contain
// artifacts of included invocations. Use QueryArtifacts instead.
ListArtifacts(context.Context, *ListArtifactsRequest) (*ListArtifactsResponse, error)
// Retrieves artifacts from an invocation, recursively.
// Can retrieve artifacts of test results included in the invocation
// directly or indirectly.
// Supports invocation inclusions.
QueryArtifacts(context.Context, *QueryArtifactsRequest) (*QueryArtifactsResponse, error)
// Retrieves test variants from an invocation, recursively.
// Supports invocation inclusions.
QueryTestVariants(context.Context, *QueryTestVariantsRequest) (*QueryTestVariantsResponse, error)
// Retrieves test variants from a single invocation, matching the specified
// test IDs and hashes.
BatchGetTestVariants(context.Context, *BatchGetTestVariantsRequest) (*BatchGetTestVariantsResponse, error)
// Retrieves test metadata from a LUCI project, matching the predicate.
QueryTestMetadata(context.Context, *QueryTestMetadataRequest) (*QueryTestMetadataResponse, error)
}
// UnimplementedResultDBServer can be embedded to have forward compatible implementations.
type UnimplementedResultDBServer struct {
}
func (*UnimplementedResultDBServer) GetInvocation(context.Context, *GetInvocationRequest) (*Invocation, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetInvocation not implemented")
}
func (*UnimplementedResultDBServer) GetTestResult(context.Context, *GetTestResultRequest) (*TestResult, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTestResult not implemented")
}
func (*UnimplementedResultDBServer) ListTestResults(context.Context, *ListTestResultsRequest) (*ListTestResultsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListTestResults not implemented")
}
func (*UnimplementedResultDBServer) GetTestExoneration(context.Context, *GetTestExonerationRequest) (*TestExoneration, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTestExoneration not implemented")
}
func (*UnimplementedResultDBServer) ListTestExonerations(context.Context, *ListTestExonerationsRequest) (*ListTestExonerationsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListTestExonerations not implemented")
}
func (*UnimplementedResultDBServer) QueryTestResults(context.Context, *QueryTestResultsRequest) (*QueryTestResultsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryTestResults not implemented")
}
func (*UnimplementedResultDBServer) QueryTestExonerations(context.Context, *QueryTestExonerationsRequest) (*QueryTestExonerationsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryTestExonerations not implemented")
}
func (*UnimplementedResultDBServer) QueryTestResultStatistics(context.Context, *QueryTestResultStatisticsRequest) (*QueryTestResultStatisticsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryTestResultStatistics not implemented")
}
func (*UnimplementedResultDBServer) QueryNewTestVariants(context.Context, *QueryNewTestVariantsRequest) (*QueryNewTestVariantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryNewTestVariants not implemented")
}
func (*UnimplementedResultDBServer) GetArtifact(context.Context, *GetArtifactRequest) (*Artifact, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetArtifact not implemented")
}
func (*UnimplementedResultDBServer) ListArtifacts(context.Context, *ListArtifactsRequest) (*ListArtifactsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListArtifacts not implemented")
}
func (*UnimplementedResultDBServer) QueryArtifacts(context.Context, *QueryArtifactsRequest) (*QueryArtifactsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryArtifacts not implemented")
}
func (*UnimplementedResultDBServer) QueryTestVariants(context.Context, *QueryTestVariantsRequest) (*QueryTestVariantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryTestVariants not implemented")
}
func (*UnimplementedResultDBServer) BatchGetTestVariants(context.Context, *BatchGetTestVariantsRequest) (*BatchGetTestVariantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BatchGetTestVariants not implemented")
}
func (*UnimplementedResultDBServer) QueryTestMetadata(context.Context, *QueryTestMetadataRequest) (*QueryTestMetadataResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryTestMetadata not implemented")
}
func RegisterResultDBServer(s prpc.Registrar, srv ResultDBServer) {
s.RegisterService(&_ResultDB_serviceDesc, srv)
}
func _ResultDB_GetInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetInvocationRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).GetInvocation(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/GetInvocation",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).GetInvocation(ctx, req.(*GetInvocationRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_GetTestResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetTestResultRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).GetTestResult(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/GetTestResult",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).GetTestResult(ctx, req.(*GetTestResultRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_ListTestResults_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListTestResultsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).ListTestResults(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/ListTestResults",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).ListTestResults(ctx, req.(*ListTestResultsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_GetTestExoneration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetTestExonerationRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).GetTestExoneration(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/GetTestExoneration",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).GetTestExoneration(ctx, req.(*GetTestExonerationRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_ListTestExonerations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListTestExonerationsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).ListTestExonerations(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/ListTestExonerations",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).ListTestExonerations(ctx, req.(*ListTestExonerationsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_QueryTestResults_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTestResultsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).QueryTestResults(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestResults",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).QueryTestResults(ctx, req.(*QueryTestResultsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_QueryTestExonerations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTestExonerationsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).QueryTestExonerations(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestExonerations",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).QueryTestExonerations(ctx, req.(*QueryTestExonerationsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_QueryTestResultStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTestResultStatisticsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).QueryTestResultStatistics(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestResultStatistics",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).QueryTestResultStatistics(ctx, req.(*QueryTestResultStatisticsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_QueryNewTestVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryNewTestVariantsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).QueryNewTestVariants(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/QueryNewTestVariants",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).QueryNewTestVariants(ctx, req.(*QueryNewTestVariantsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_GetArtifact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetArtifactRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).GetArtifact(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/GetArtifact",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).GetArtifact(ctx, req.(*GetArtifactRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_ListArtifacts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListArtifactsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).ListArtifacts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/ListArtifacts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).ListArtifacts(ctx, req.(*ListArtifactsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_QueryArtifacts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryArtifactsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).QueryArtifacts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/QueryArtifacts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).QueryArtifacts(ctx, req.(*QueryArtifactsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_QueryTestVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTestVariantsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).QueryTestVariants(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestVariants",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).QueryTestVariants(ctx, req.(*QueryTestVariantsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_BatchGetTestVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BatchGetTestVariantsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).BatchGetTestVariants(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/BatchGetTestVariants",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).BatchGetTestVariants(ctx, req.(*BatchGetTestVariantsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResultDB_QueryTestMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTestMetadataRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResultDBServer).QueryTestMetadata(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestMetadata",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResultDBServer).QueryTestMetadata(ctx, req.(*QueryTestMetadataRequest))
}
return interceptor(ctx, in, info, handler)
}
var _ResultDB_serviceDesc = grpc.ServiceDesc{
ServiceName: "luci.resultdb.v1.ResultDB",
HandlerType: (*ResultDBServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetInvocation",
Handler: _ResultDB_GetInvocation_Handler,
},
{
MethodName: "GetTestResult",
Handler: _ResultDB_GetTestResult_Handler,
},
{
MethodName: "ListTestResults",
Handler: _ResultDB_ListTestResults_Handler,
},
{
MethodName: "GetTestExoneration",
Handler: _ResultDB_GetTestExoneration_Handler,
},
{
MethodName: "ListTestExonerations",
Handler: _ResultDB_ListTestExonerations_Handler,
},
{
MethodName: "QueryTestResults",
Handler: _ResultDB_QueryTestResults_Handler,
},
{
MethodName: "QueryTestExonerations",
Handler: _ResultDB_QueryTestExonerations_Handler,
},
{
MethodName: "QueryTestResultStatistics",
Handler: _ResultDB_QueryTestResultStatistics_Handler,
},
{
MethodName: "QueryNewTestVariants",
Handler: _ResultDB_QueryNewTestVariants_Handler,
},
{
MethodName: "GetArtifact",
Handler: _ResultDB_GetArtifact_Handler,
},
{
MethodName: "ListArtifacts",
Handler: _ResultDB_ListArtifacts_Handler,
},
{
MethodName: "QueryArtifacts",
Handler: _ResultDB_QueryArtifacts_Handler,
},
{
MethodName: "QueryTestVariants",
Handler: _ResultDB_QueryTestVariants_Handler,
},
{
MethodName: "BatchGetTestVariants",
Handler: _ResultDB_BatchGetTestVariants_Handler,
},
{
MethodName: "QueryTestMetadata",
Handler: _ResultDB_QueryTestMetadata_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "go.chromium.org/luci/resultdb/proto/v1/resultdb.proto",
}