google.golang.org/grpc@v1.72.2/interop/grpc_testing/control.pb.go (about) 1 // Copyright 2015 gRPC authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by protoc-gen-go. DO NOT EDIT. 16 // versions: 17 // protoc-gen-go v1.36.5 18 // protoc v5.27.1 19 // source: grpc/testing/control.proto 20 21 package grpc_testing 22 23 import ( 24 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 25 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 26 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 27 reflect "reflect" 28 sync "sync" 29 unsafe "unsafe" 30 ) 31 32 const ( 33 // Verify that this generated code is sufficiently up-to-date. 34 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 35 // Verify that runtime/protoimpl is sufficiently up-to-date. 36 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 37 ) 38 39 type ClientType int32 40 41 const ( 42 // Many languages support a basic distinction between using 43 // sync or async client, and this allows the specification 44 ClientType_SYNC_CLIENT ClientType = 0 45 ClientType_ASYNC_CLIENT ClientType = 1 46 ClientType_OTHER_CLIENT ClientType = 2 // used for some language-specific variants 47 ClientType_CALLBACK_CLIENT ClientType = 3 48 ) 49 50 // Enum value maps for ClientType. 51 var ( 52 ClientType_name = map[int32]string{ 53 0: "SYNC_CLIENT", 54 1: "ASYNC_CLIENT", 55 2: "OTHER_CLIENT", 56 3: "CALLBACK_CLIENT", 57 } 58 ClientType_value = map[string]int32{ 59 "SYNC_CLIENT": 0, 60 "ASYNC_CLIENT": 1, 61 "OTHER_CLIENT": 2, 62 "CALLBACK_CLIENT": 3, 63 } 64 ) 65 66 func (x ClientType) Enum() *ClientType { 67 p := new(ClientType) 68 *p = x 69 return p 70 } 71 72 func (x ClientType) String() string { 73 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 74 } 75 76 func (ClientType) Descriptor() protoreflect.EnumDescriptor { 77 return file_grpc_testing_control_proto_enumTypes[0].Descriptor() 78 } 79 80 func (ClientType) Type() protoreflect.EnumType { 81 return &file_grpc_testing_control_proto_enumTypes[0] 82 } 83 84 func (x ClientType) Number() protoreflect.EnumNumber { 85 return protoreflect.EnumNumber(x) 86 } 87 88 // Deprecated: Use ClientType.Descriptor instead. 89 func (ClientType) EnumDescriptor() ([]byte, []int) { 90 return file_grpc_testing_control_proto_rawDescGZIP(), []int{0} 91 } 92 93 type ServerType int32 94 95 const ( 96 ServerType_SYNC_SERVER ServerType = 0 97 ServerType_ASYNC_SERVER ServerType = 1 98 ServerType_ASYNC_GENERIC_SERVER ServerType = 2 99 ServerType_OTHER_SERVER ServerType = 3 // used for some language-specific variants 100 ServerType_CALLBACK_SERVER ServerType = 4 101 ) 102 103 // Enum value maps for ServerType. 104 var ( 105 ServerType_name = map[int32]string{ 106 0: "SYNC_SERVER", 107 1: "ASYNC_SERVER", 108 2: "ASYNC_GENERIC_SERVER", 109 3: "OTHER_SERVER", 110 4: "CALLBACK_SERVER", 111 } 112 ServerType_value = map[string]int32{ 113 "SYNC_SERVER": 0, 114 "ASYNC_SERVER": 1, 115 "ASYNC_GENERIC_SERVER": 2, 116 "OTHER_SERVER": 3, 117 "CALLBACK_SERVER": 4, 118 } 119 ) 120 121 func (x ServerType) Enum() *ServerType { 122 p := new(ServerType) 123 *p = x 124 return p 125 } 126 127 func (x ServerType) String() string { 128 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 129 } 130 131 func (ServerType) Descriptor() protoreflect.EnumDescriptor { 132 return file_grpc_testing_control_proto_enumTypes[1].Descriptor() 133 } 134 135 func (ServerType) Type() protoreflect.EnumType { 136 return &file_grpc_testing_control_proto_enumTypes[1] 137 } 138 139 func (x ServerType) Number() protoreflect.EnumNumber { 140 return protoreflect.EnumNumber(x) 141 } 142 143 // Deprecated: Use ServerType.Descriptor instead. 144 func (ServerType) EnumDescriptor() ([]byte, []int) { 145 return file_grpc_testing_control_proto_rawDescGZIP(), []int{1} 146 } 147 148 type RpcType int32 149 150 const ( 151 RpcType_UNARY RpcType = 0 152 RpcType_STREAMING RpcType = 1 153 RpcType_STREAMING_FROM_CLIENT RpcType = 2 154 RpcType_STREAMING_FROM_SERVER RpcType = 3 155 RpcType_STREAMING_BOTH_WAYS RpcType = 4 156 ) 157 158 // Enum value maps for RpcType. 159 var ( 160 RpcType_name = map[int32]string{ 161 0: "UNARY", 162 1: "STREAMING", 163 2: "STREAMING_FROM_CLIENT", 164 3: "STREAMING_FROM_SERVER", 165 4: "STREAMING_BOTH_WAYS", 166 } 167 RpcType_value = map[string]int32{ 168 "UNARY": 0, 169 "STREAMING": 1, 170 "STREAMING_FROM_CLIENT": 2, 171 "STREAMING_FROM_SERVER": 3, 172 "STREAMING_BOTH_WAYS": 4, 173 } 174 ) 175 176 func (x RpcType) Enum() *RpcType { 177 p := new(RpcType) 178 *p = x 179 return p 180 } 181 182 func (x RpcType) String() string { 183 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 184 } 185 186 func (RpcType) Descriptor() protoreflect.EnumDescriptor { 187 return file_grpc_testing_control_proto_enumTypes[2].Descriptor() 188 } 189 190 func (RpcType) Type() protoreflect.EnumType { 191 return &file_grpc_testing_control_proto_enumTypes[2] 192 } 193 194 func (x RpcType) Number() protoreflect.EnumNumber { 195 return protoreflect.EnumNumber(x) 196 } 197 198 // Deprecated: Use RpcType.Descriptor instead. 199 func (RpcType) EnumDescriptor() ([]byte, []int) { 200 return file_grpc_testing_control_proto_rawDescGZIP(), []int{2} 201 } 202 203 // Parameters of poisson process distribution, which is a good representation 204 // of activity coming in from independent identical stationary sources. 205 type PoissonParams struct { 206 state protoimpl.MessageState `protogen:"open.v1"` 207 // The rate of arrivals (a.k.a. lambda parameter of the exp distribution). 208 OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"` 209 unknownFields protoimpl.UnknownFields 210 sizeCache protoimpl.SizeCache 211 } 212 213 func (x *PoissonParams) Reset() { 214 *x = PoissonParams{} 215 mi := &file_grpc_testing_control_proto_msgTypes[0] 216 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 217 ms.StoreMessageInfo(mi) 218 } 219 220 func (x *PoissonParams) String() string { 221 return protoimpl.X.MessageStringOf(x) 222 } 223 224 func (*PoissonParams) ProtoMessage() {} 225 226 func (x *PoissonParams) ProtoReflect() protoreflect.Message { 227 mi := &file_grpc_testing_control_proto_msgTypes[0] 228 if x != nil { 229 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 230 if ms.LoadMessageInfo() == nil { 231 ms.StoreMessageInfo(mi) 232 } 233 return ms 234 } 235 return mi.MessageOf(x) 236 } 237 238 // Deprecated: Use PoissonParams.ProtoReflect.Descriptor instead. 239 func (*PoissonParams) Descriptor() ([]byte, []int) { 240 return file_grpc_testing_control_proto_rawDescGZIP(), []int{0} 241 } 242 243 func (x *PoissonParams) GetOfferedLoad() float64 { 244 if x != nil { 245 return x.OfferedLoad 246 } 247 return 0 248 } 249 250 // Once an RPC finishes, immediately start a new one. 251 // No configuration parameters needed. 252 type ClosedLoopParams struct { 253 state protoimpl.MessageState `protogen:"open.v1"` 254 unknownFields protoimpl.UnknownFields 255 sizeCache protoimpl.SizeCache 256 } 257 258 func (x *ClosedLoopParams) Reset() { 259 *x = ClosedLoopParams{} 260 mi := &file_grpc_testing_control_proto_msgTypes[1] 261 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 262 ms.StoreMessageInfo(mi) 263 } 264 265 func (x *ClosedLoopParams) String() string { 266 return protoimpl.X.MessageStringOf(x) 267 } 268 269 func (*ClosedLoopParams) ProtoMessage() {} 270 271 func (x *ClosedLoopParams) ProtoReflect() protoreflect.Message { 272 mi := &file_grpc_testing_control_proto_msgTypes[1] 273 if x != nil { 274 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 275 if ms.LoadMessageInfo() == nil { 276 ms.StoreMessageInfo(mi) 277 } 278 return ms 279 } 280 return mi.MessageOf(x) 281 } 282 283 // Deprecated: Use ClosedLoopParams.ProtoReflect.Descriptor instead. 284 func (*ClosedLoopParams) Descriptor() ([]byte, []int) { 285 return file_grpc_testing_control_proto_rawDescGZIP(), []int{1} 286 } 287 288 type LoadParams struct { 289 state protoimpl.MessageState `protogen:"open.v1"` 290 // Types that are valid to be assigned to Load: 291 // 292 // *LoadParams_ClosedLoop 293 // *LoadParams_Poisson 294 Load isLoadParams_Load `protobuf_oneof:"load"` 295 unknownFields protoimpl.UnknownFields 296 sizeCache protoimpl.SizeCache 297 } 298 299 func (x *LoadParams) Reset() { 300 *x = LoadParams{} 301 mi := &file_grpc_testing_control_proto_msgTypes[2] 302 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 303 ms.StoreMessageInfo(mi) 304 } 305 306 func (x *LoadParams) String() string { 307 return protoimpl.X.MessageStringOf(x) 308 } 309 310 func (*LoadParams) ProtoMessage() {} 311 312 func (x *LoadParams) ProtoReflect() protoreflect.Message { 313 mi := &file_grpc_testing_control_proto_msgTypes[2] 314 if x != nil { 315 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 316 if ms.LoadMessageInfo() == nil { 317 ms.StoreMessageInfo(mi) 318 } 319 return ms 320 } 321 return mi.MessageOf(x) 322 } 323 324 // Deprecated: Use LoadParams.ProtoReflect.Descriptor instead. 325 func (*LoadParams) Descriptor() ([]byte, []int) { 326 return file_grpc_testing_control_proto_rawDescGZIP(), []int{2} 327 } 328 329 func (x *LoadParams) GetLoad() isLoadParams_Load { 330 if x != nil { 331 return x.Load 332 } 333 return nil 334 } 335 336 func (x *LoadParams) GetClosedLoop() *ClosedLoopParams { 337 if x != nil { 338 if x, ok := x.Load.(*LoadParams_ClosedLoop); ok { 339 return x.ClosedLoop 340 } 341 } 342 return nil 343 } 344 345 func (x *LoadParams) GetPoisson() *PoissonParams { 346 if x != nil { 347 if x, ok := x.Load.(*LoadParams_Poisson); ok { 348 return x.Poisson 349 } 350 } 351 return nil 352 } 353 354 type isLoadParams_Load interface { 355 isLoadParams_Load() 356 } 357 358 type LoadParams_ClosedLoop struct { 359 ClosedLoop *ClosedLoopParams `protobuf:"bytes,1,opt,name=closed_loop,json=closedLoop,proto3,oneof"` 360 } 361 362 type LoadParams_Poisson struct { 363 Poisson *PoissonParams `protobuf:"bytes,2,opt,name=poisson,proto3,oneof"` 364 } 365 366 func (*LoadParams_ClosedLoop) isLoadParams_Load() {} 367 368 func (*LoadParams_Poisson) isLoadParams_Load() {} 369 370 // presence of SecurityParams implies use of TLS 371 type SecurityParams struct { 372 state protoimpl.MessageState `protogen:"open.v1"` 373 UseTestCa bool `protobuf:"varint,1,opt,name=use_test_ca,json=useTestCa,proto3" json:"use_test_ca,omitempty"` 374 ServerHostOverride string `protobuf:"bytes,2,opt,name=server_host_override,json=serverHostOverride,proto3" json:"server_host_override,omitempty"` 375 CredType string `protobuf:"bytes,3,opt,name=cred_type,json=credType,proto3" json:"cred_type,omitempty"` 376 unknownFields protoimpl.UnknownFields 377 sizeCache protoimpl.SizeCache 378 } 379 380 func (x *SecurityParams) Reset() { 381 *x = SecurityParams{} 382 mi := &file_grpc_testing_control_proto_msgTypes[3] 383 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 384 ms.StoreMessageInfo(mi) 385 } 386 387 func (x *SecurityParams) String() string { 388 return protoimpl.X.MessageStringOf(x) 389 } 390 391 func (*SecurityParams) ProtoMessage() {} 392 393 func (x *SecurityParams) ProtoReflect() protoreflect.Message { 394 mi := &file_grpc_testing_control_proto_msgTypes[3] 395 if x != nil { 396 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 397 if ms.LoadMessageInfo() == nil { 398 ms.StoreMessageInfo(mi) 399 } 400 return ms 401 } 402 return mi.MessageOf(x) 403 } 404 405 // Deprecated: Use SecurityParams.ProtoReflect.Descriptor instead. 406 func (*SecurityParams) Descriptor() ([]byte, []int) { 407 return file_grpc_testing_control_proto_rawDescGZIP(), []int{3} 408 } 409 410 func (x *SecurityParams) GetUseTestCa() bool { 411 if x != nil { 412 return x.UseTestCa 413 } 414 return false 415 } 416 417 func (x *SecurityParams) GetServerHostOverride() string { 418 if x != nil { 419 return x.ServerHostOverride 420 } 421 return "" 422 } 423 424 func (x *SecurityParams) GetCredType() string { 425 if x != nil { 426 return x.CredType 427 } 428 return "" 429 } 430 431 type ChannelArg struct { 432 state protoimpl.MessageState `protogen:"open.v1"` 433 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 434 // Types that are valid to be assigned to Value: 435 // 436 // *ChannelArg_StrValue 437 // *ChannelArg_IntValue 438 Value isChannelArg_Value `protobuf_oneof:"value"` 439 unknownFields protoimpl.UnknownFields 440 sizeCache protoimpl.SizeCache 441 } 442 443 func (x *ChannelArg) Reset() { 444 *x = ChannelArg{} 445 mi := &file_grpc_testing_control_proto_msgTypes[4] 446 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 447 ms.StoreMessageInfo(mi) 448 } 449 450 func (x *ChannelArg) String() string { 451 return protoimpl.X.MessageStringOf(x) 452 } 453 454 func (*ChannelArg) ProtoMessage() {} 455 456 func (x *ChannelArg) ProtoReflect() protoreflect.Message { 457 mi := &file_grpc_testing_control_proto_msgTypes[4] 458 if x != nil { 459 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 460 if ms.LoadMessageInfo() == nil { 461 ms.StoreMessageInfo(mi) 462 } 463 return ms 464 } 465 return mi.MessageOf(x) 466 } 467 468 // Deprecated: Use ChannelArg.ProtoReflect.Descriptor instead. 469 func (*ChannelArg) Descriptor() ([]byte, []int) { 470 return file_grpc_testing_control_proto_rawDescGZIP(), []int{4} 471 } 472 473 func (x *ChannelArg) GetName() string { 474 if x != nil { 475 return x.Name 476 } 477 return "" 478 } 479 480 func (x *ChannelArg) GetValue() isChannelArg_Value { 481 if x != nil { 482 return x.Value 483 } 484 return nil 485 } 486 487 func (x *ChannelArg) GetStrValue() string { 488 if x != nil { 489 if x, ok := x.Value.(*ChannelArg_StrValue); ok { 490 return x.StrValue 491 } 492 } 493 return "" 494 } 495 496 func (x *ChannelArg) GetIntValue() int32 { 497 if x != nil { 498 if x, ok := x.Value.(*ChannelArg_IntValue); ok { 499 return x.IntValue 500 } 501 } 502 return 0 503 } 504 505 type isChannelArg_Value interface { 506 isChannelArg_Value() 507 } 508 509 type ChannelArg_StrValue struct { 510 StrValue string `protobuf:"bytes,2,opt,name=str_value,json=strValue,proto3,oneof"` 511 } 512 513 type ChannelArg_IntValue struct { 514 IntValue int32 `protobuf:"varint,3,opt,name=int_value,json=intValue,proto3,oneof"` 515 } 516 517 func (*ChannelArg_StrValue) isChannelArg_Value() {} 518 519 func (*ChannelArg_IntValue) isChannelArg_Value() {} 520 521 type ClientConfig struct { 522 state protoimpl.MessageState `protogen:"open.v1"` 523 // List of targets to connect to. At least one target needs to be specified. 524 ServerTargets []string `protobuf:"bytes,1,rep,name=server_targets,json=serverTargets,proto3" json:"server_targets,omitempty"` 525 ClientType ClientType `protobuf:"varint,2,opt,name=client_type,json=clientType,proto3,enum=grpc.testing.ClientType" json:"client_type,omitempty"` 526 SecurityParams *SecurityParams `protobuf:"bytes,3,opt,name=security_params,json=securityParams,proto3" json:"security_params,omitempty"` 527 // How many concurrent RPCs to start for each channel. 528 // For synchronous client, use a separate thread for each outstanding RPC. 529 OutstandingRpcsPerChannel int32 `protobuf:"varint,4,opt,name=outstanding_rpcs_per_channel,json=outstandingRpcsPerChannel,proto3" json:"outstanding_rpcs_per_channel,omitempty"` 530 // Number of independent client channels to create. 531 // i-th channel will connect to server_target[i % server_targets.size()] 532 ClientChannels int32 `protobuf:"varint,5,opt,name=client_channels,json=clientChannels,proto3" json:"client_channels,omitempty"` 533 // Only for async client. Number of threads to use to start/manage RPCs. 534 AsyncClientThreads int32 `protobuf:"varint,7,opt,name=async_client_threads,json=asyncClientThreads,proto3" json:"async_client_threads,omitempty"` 535 RpcType RpcType `protobuf:"varint,8,opt,name=rpc_type,json=rpcType,proto3,enum=grpc.testing.RpcType" json:"rpc_type,omitempty"` 536 // The requested load for the entire client (aggregated over all the threads). 537 LoadParams *LoadParams `protobuf:"bytes,10,opt,name=load_params,json=loadParams,proto3" json:"load_params,omitempty"` 538 PayloadConfig *PayloadConfig `protobuf:"bytes,11,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"` 539 HistogramParams *HistogramParams `protobuf:"bytes,12,opt,name=histogram_params,json=histogramParams,proto3" json:"histogram_params,omitempty"` 540 // Specify the cores we should run the client on, if desired 541 CoreList []int32 `protobuf:"varint,13,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"` 542 CoreLimit int32 `protobuf:"varint,14,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"` 543 // If we use an OTHER_CLIENT client_type, this string gives more detail 544 OtherClientApi string `protobuf:"bytes,15,opt,name=other_client_api,json=otherClientApi,proto3" json:"other_client_api,omitempty"` 545 ChannelArgs []*ChannelArg `protobuf:"bytes,16,rep,name=channel_args,json=channelArgs,proto3" json:"channel_args,omitempty"` 546 // Number of threads that share each completion queue 547 ThreadsPerCq int32 `protobuf:"varint,17,opt,name=threads_per_cq,json=threadsPerCq,proto3" json:"threads_per_cq,omitempty"` 548 // Number of messages on a stream before it gets finished/restarted 549 MessagesPerStream int32 `protobuf:"varint,18,opt,name=messages_per_stream,json=messagesPerStream,proto3" json:"messages_per_stream,omitempty"` 550 // Use coalescing API when possible. 551 UseCoalesceApi bool `protobuf:"varint,19,opt,name=use_coalesce_api,json=useCoalesceApi,proto3" json:"use_coalesce_api,omitempty"` 552 // If 0, disabled. Else, specifies the period between gathering latency 553 // medians in milliseconds. 554 MedianLatencyCollectionIntervalMillis int32 `protobuf:"varint,20,opt,name=median_latency_collection_interval_millis,json=medianLatencyCollectionIntervalMillis,proto3" json:"median_latency_collection_interval_millis,omitempty"` 555 // Number of client processes. 0 indicates no restriction. 556 ClientProcesses int32 `protobuf:"varint,21,opt,name=client_processes,json=clientProcesses,proto3" json:"client_processes,omitempty"` 557 unknownFields protoimpl.UnknownFields 558 sizeCache protoimpl.SizeCache 559 } 560 561 func (x *ClientConfig) Reset() { 562 *x = ClientConfig{} 563 mi := &file_grpc_testing_control_proto_msgTypes[5] 564 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 565 ms.StoreMessageInfo(mi) 566 } 567 568 func (x *ClientConfig) String() string { 569 return protoimpl.X.MessageStringOf(x) 570 } 571 572 func (*ClientConfig) ProtoMessage() {} 573 574 func (x *ClientConfig) ProtoReflect() protoreflect.Message { 575 mi := &file_grpc_testing_control_proto_msgTypes[5] 576 if x != nil { 577 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 578 if ms.LoadMessageInfo() == nil { 579 ms.StoreMessageInfo(mi) 580 } 581 return ms 582 } 583 return mi.MessageOf(x) 584 } 585 586 // Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead. 587 func (*ClientConfig) Descriptor() ([]byte, []int) { 588 return file_grpc_testing_control_proto_rawDescGZIP(), []int{5} 589 } 590 591 func (x *ClientConfig) GetServerTargets() []string { 592 if x != nil { 593 return x.ServerTargets 594 } 595 return nil 596 } 597 598 func (x *ClientConfig) GetClientType() ClientType { 599 if x != nil { 600 return x.ClientType 601 } 602 return ClientType_SYNC_CLIENT 603 } 604 605 func (x *ClientConfig) GetSecurityParams() *SecurityParams { 606 if x != nil { 607 return x.SecurityParams 608 } 609 return nil 610 } 611 612 func (x *ClientConfig) GetOutstandingRpcsPerChannel() int32 { 613 if x != nil { 614 return x.OutstandingRpcsPerChannel 615 } 616 return 0 617 } 618 619 func (x *ClientConfig) GetClientChannels() int32 { 620 if x != nil { 621 return x.ClientChannels 622 } 623 return 0 624 } 625 626 func (x *ClientConfig) GetAsyncClientThreads() int32 { 627 if x != nil { 628 return x.AsyncClientThreads 629 } 630 return 0 631 } 632 633 func (x *ClientConfig) GetRpcType() RpcType { 634 if x != nil { 635 return x.RpcType 636 } 637 return RpcType_UNARY 638 } 639 640 func (x *ClientConfig) GetLoadParams() *LoadParams { 641 if x != nil { 642 return x.LoadParams 643 } 644 return nil 645 } 646 647 func (x *ClientConfig) GetPayloadConfig() *PayloadConfig { 648 if x != nil { 649 return x.PayloadConfig 650 } 651 return nil 652 } 653 654 func (x *ClientConfig) GetHistogramParams() *HistogramParams { 655 if x != nil { 656 return x.HistogramParams 657 } 658 return nil 659 } 660 661 func (x *ClientConfig) GetCoreList() []int32 { 662 if x != nil { 663 return x.CoreList 664 } 665 return nil 666 } 667 668 func (x *ClientConfig) GetCoreLimit() int32 { 669 if x != nil { 670 return x.CoreLimit 671 } 672 return 0 673 } 674 675 func (x *ClientConfig) GetOtherClientApi() string { 676 if x != nil { 677 return x.OtherClientApi 678 } 679 return "" 680 } 681 682 func (x *ClientConfig) GetChannelArgs() []*ChannelArg { 683 if x != nil { 684 return x.ChannelArgs 685 } 686 return nil 687 } 688 689 func (x *ClientConfig) GetThreadsPerCq() int32 { 690 if x != nil { 691 return x.ThreadsPerCq 692 } 693 return 0 694 } 695 696 func (x *ClientConfig) GetMessagesPerStream() int32 { 697 if x != nil { 698 return x.MessagesPerStream 699 } 700 return 0 701 } 702 703 func (x *ClientConfig) GetUseCoalesceApi() bool { 704 if x != nil { 705 return x.UseCoalesceApi 706 } 707 return false 708 } 709 710 func (x *ClientConfig) GetMedianLatencyCollectionIntervalMillis() int32 { 711 if x != nil { 712 return x.MedianLatencyCollectionIntervalMillis 713 } 714 return 0 715 } 716 717 func (x *ClientConfig) GetClientProcesses() int32 { 718 if x != nil { 719 return x.ClientProcesses 720 } 721 return 0 722 } 723 724 type ClientStatus struct { 725 state protoimpl.MessageState `protogen:"open.v1"` 726 Stats *ClientStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` 727 unknownFields protoimpl.UnknownFields 728 sizeCache protoimpl.SizeCache 729 } 730 731 func (x *ClientStatus) Reset() { 732 *x = ClientStatus{} 733 mi := &file_grpc_testing_control_proto_msgTypes[6] 734 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 735 ms.StoreMessageInfo(mi) 736 } 737 738 func (x *ClientStatus) String() string { 739 return protoimpl.X.MessageStringOf(x) 740 } 741 742 func (*ClientStatus) ProtoMessage() {} 743 744 func (x *ClientStatus) ProtoReflect() protoreflect.Message { 745 mi := &file_grpc_testing_control_proto_msgTypes[6] 746 if x != nil { 747 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 748 if ms.LoadMessageInfo() == nil { 749 ms.StoreMessageInfo(mi) 750 } 751 return ms 752 } 753 return mi.MessageOf(x) 754 } 755 756 // Deprecated: Use ClientStatus.ProtoReflect.Descriptor instead. 757 func (*ClientStatus) Descriptor() ([]byte, []int) { 758 return file_grpc_testing_control_proto_rawDescGZIP(), []int{6} 759 } 760 761 func (x *ClientStatus) GetStats() *ClientStats { 762 if x != nil { 763 return x.Stats 764 } 765 return nil 766 } 767 768 // Request current stats 769 type Mark struct { 770 state protoimpl.MessageState `protogen:"open.v1"` 771 // if true, the stats will be reset after taking their snapshot. 772 Reset_ bool `protobuf:"varint,1,opt,name=reset,proto3" json:"reset,omitempty"` 773 unknownFields protoimpl.UnknownFields 774 sizeCache protoimpl.SizeCache 775 } 776 777 func (x *Mark) Reset() { 778 *x = Mark{} 779 mi := &file_grpc_testing_control_proto_msgTypes[7] 780 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 781 ms.StoreMessageInfo(mi) 782 } 783 784 func (x *Mark) String() string { 785 return protoimpl.X.MessageStringOf(x) 786 } 787 788 func (*Mark) ProtoMessage() {} 789 790 func (x *Mark) ProtoReflect() protoreflect.Message { 791 mi := &file_grpc_testing_control_proto_msgTypes[7] 792 if x != nil { 793 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 794 if ms.LoadMessageInfo() == nil { 795 ms.StoreMessageInfo(mi) 796 } 797 return ms 798 } 799 return mi.MessageOf(x) 800 } 801 802 // Deprecated: Use Mark.ProtoReflect.Descriptor instead. 803 func (*Mark) Descriptor() ([]byte, []int) { 804 return file_grpc_testing_control_proto_rawDescGZIP(), []int{7} 805 } 806 807 func (x *Mark) GetReset_() bool { 808 if x != nil { 809 return x.Reset_ 810 } 811 return false 812 } 813 814 type ClientArgs struct { 815 state protoimpl.MessageState `protogen:"open.v1"` 816 // Types that are valid to be assigned to Argtype: 817 // 818 // *ClientArgs_Setup 819 // *ClientArgs_Mark 820 Argtype isClientArgs_Argtype `protobuf_oneof:"argtype"` 821 unknownFields protoimpl.UnknownFields 822 sizeCache protoimpl.SizeCache 823 } 824 825 func (x *ClientArgs) Reset() { 826 *x = ClientArgs{} 827 mi := &file_grpc_testing_control_proto_msgTypes[8] 828 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 829 ms.StoreMessageInfo(mi) 830 } 831 832 func (x *ClientArgs) String() string { 833 return protoimpl.X.MessageStringOf(x) 834 } 835 836 func (*ClientArgs) ProtoMessage() {} 837 838 func (x *ClientArgs) ProtoReflect() protoreflect.Message { 839 mi := &file_grpc_testing_control_proto_msgTypes[8] 840 if x != nil { 841 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 842 if ms.LoadMessageInfo() == nil { 843 ms.StoreMessageInfo(mi) 844 } 845 return ms 846 } 847 return mi.MessageOf(x) 848 } 849 850 // Deprecated: Use ClientArgs.ProtoReflect.Descriptor instead. 851 func (*ClientArgs) Descriptor() ([]byte, []int) { 852 return file_grpc_testing_control_proto_rawDescGZIP(), []int{8} 853 } 854 855 func (x *ClientArgs) GetArgtype() isClientArgs_Argtype { 856 if x != nil { 857 return x.Argtype 858 } 859 return nil 860 } 861 862 func (x *ClientArgs) GetSetup() *ClientConfig { 863 if x != nil { 864 if x, ok := x.Argtype.(*ClientArgs_Setup); ok { 865 return x.Setup 866 } 867 } 868 return nil 869 } 870 871 func (x *ClientArgs) GetMark() *Mark { 872 if x != nil { 873 if x, ok := x.Argtype.(*ClientArgs_Mark); ok { 874 return x.Mark 875 } 876 } 877 return nil 878 } 879 880 type isClientArgs_Argtype interface { 881 isClientArgs_Argtype() 882 } 883 884 type ClientArgs_Setup struct { 885 Setup *ClientConfig `protobuf:"bytes,1,opt,name=setup,proto3,oneof"` 886 } 887 888 type ClientArgs_Mark struct { 889 Mark *Mark `protobuf:"bytes,2,opt,name=mark,proto3,oneof"` 890 } 891 892 func (*ClientArgs_Setup) isClientArgs_Argtype() {} 893 894 func (*ClientArgs_Mark) isClientArgs_Argtype() {} 895 896 type ServerConfig struct { 897 state protoimpl.MessageState `protogen:"open.v1"` 898 ServerType ServerType `protobuf:"varint,1,opt,name=server_type,json=serverType,proto3,enum=grpc.testing.ServerType" json:"server_type,omitempty"` 899 SecurityParams *SecurityParams `protobuf:"bytes,2,opt,name=security_params,json=securityParams,proto3" json:"security_params,omitempty"` 900 // Port on which to listen. Zero means pick unused port. 901 Port int32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"` 902 // Only for async server. Number of threads used to serve the requests. 903 AsyncServerThreads int32 `protobuf:"varint,7,opt,name=async_server_threads,json=asyncServerThreads,proto3" json:"async_server_threads,omitempty"` 904 // Specify the number of cores to limit server to, if desired 905 CoreLimit int32 `protobuf:"varint,8,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"` 906 // payload config, used in generic server. 907 // Note this must NOT be used in proto (non-generic) servers. For proto servers, 908 // 'response sizes' must be configured from the 'response_size' field of the 909 // 'SimpleRequest' objects in RPC requests. 910 PayloadConfig *PayloadConfig `protobuf:"bytes,9,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"` 911 // Specify the cores we should run the server on, if desired 912 CoreList []int32 `protobuf:"varint,10,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"` 913 // If we use an OTHER_SERVER client_type, this string gives more detail 914 OtherServerApi string `protobuf:"bytes,11,opt,name=other_server_api,json=otherServerApi,proto3" json:"other_server_api,omitempty"` 915 // Number of threads that share each completion queue 916 ThreadsPerCq int32 `protobuf:"varint,12,opt,name=threads_per_cq,json=threadsPerCq,proto3" json:"threads_per_cq,omitempty"` 917 // Buffer pool size (no buffer pool specified if unset) 918 ResourceQuotaSize int32 `protobuf:"varint,1001,opt,name=resource_quota_size,json=resourceQuotaSize,proto3" json:"resource_quota_size,omitempty"` 919 ChannelArgs []*ChannelArg `protobuf:"bytes,1002,rep,name=channel_args,json=channelArgs,proto3" json:"channel_args,omitempty"` 920 // Number of server processes. 0 indicates no restriction. 921 ServerProcesses int32 `protobuf:"varint,21,opt,name=server_processes,json=serverProcesses,proto3" json:"server_processes,omitempty"` 922 unknownFields protoimpl.UnknownFields 923 sizeCache protoimpl.SizeCache 924 } 925 926 func (x *ServerConfig) Reset() { 927 *x = ServerConfig{} 928 mi := &file_grpc_testing_control_proto_msgTypes[9] 929 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 930 ms.StoreMessageInfo(mi) 931 } 932 933 func (x *ServerConfig) String() string { 934 return protoimpl.X.MessageStringOf(x) 935 } 936 937 func (*ServerConfig) ProtoMessage() {} 938 939 func (x *ServerConfig) ProtoReflect() protoreflect.Message { 940 mi := &file_grpc_testing_control_proto_msgTypes[9] 941 if x != nil { 942 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 943 if ms.LoadMessageInfo() == nil { 944 ms.StoreMessageInfo(mi) 945 } 946 return ms 947 } 948 return mi.MessageOf(x) 949 } 950 951 // Deprecated: Use ServerConfig.ProtoReflect.Descriptor instead. 952 func (*ServerConfig) Descriptor() ([]byte, []int) { 953 return file_grpc_testing_control_proto_rawDescGZIP(), []int{9} 954 } 955 956 func (x *ServerConfig) GetServerType() ServerType { 957 if x != nil { 958 return x.ServerType 959 } 960 return ServerType_SYNC_SERVER 961 } 962 963 func (x *ServerConfig) GetSecurityParams() *SecurityParams { 964 if x != nil { 965 return x.SecurityParams 966 } 967 return nil 968 } 969 970 func (x *ServerConfig) GetPort() int32 { 971 if x != nil { 972 return x.Port 973 } 974 return 0 975 } 976 977 func (x *ServerConfig) GetAsyncServerThreads() int32 { 978 if x != nil { 979 return x.AsyncServerThreads 980 } 981 return 0 982 } 983 984 func (x *ServerConfig) GetCoreLimit() int32 { 985 if x != nil { 986 return x.CoreLimit 987 } 988 return 0 989 } 990 991 func (x *ServerConfig) GetPayloadConfig() *PayloadConfig { 992 if x != nil { 993 return x.PayloadConfig 994 } 995 return nil 996 } 997 998 func (x *ServerConfig) GetCoreList() []int32 { 999 if x != nil { 1000 return x.CoreList 1001 } 1002 return nil 1003 } 1004 1005 func (x *ServerConfig) GetOtherServerApi() string { 1006 if x != nil { 1007 return x.OtherServerApi 1008 } 1009 return "" 1010 } 1011 1012 func (x *ServerConfig) GetThreadsPerCq() int32 { 1013 if x != nil { 1014 return x.ThreadsPerCq 1015 } 1016 return 0 1017 } 1018 1019 func (x *ServerConfig) GetResourceQuotaSize() int32 { 1020 if x != nil { 1021 return x.ResourceQuotaSize 1022 } 1023 return 0 1024 } 1025 1026 func (x *ServerConfig) GetChannelArgs() []*ChannelArg { 1027 if x != nil { 1028 return x.ChannelArgs 1029 } 1030 return nil 1031 } 1032 1033 func (x *ServerConfig) GetServerProcesses() int32 { 1034 if x != nil { 1035 return x.ServerProcesses 1036 } 1037 return 0 1038 } 1039 1040 type ServerArgs struct { 1041 state protoimpl.MessageState `protogen:"open.v1"` 1042 // Types that are valid to be assigned to Argtype: 1043 // 1044 // *ServerArgs_Setup 1045 // *ServerArgs_Mark 1046 Argtype isServerArgs_Argtype `protobuf_oneof:"argtype"` 1047 unknownFields protoimpl.UnknownFields 1048 sizeCache protoimpl.SizeCache 1049 } 1050 1051 func (x *ServerArgs) Reset() { 1052 *x = ServerArgs{} 1053 mi := &file_grpc_testing_control_proto_msgTypes[10] 1054 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1055 ms.StoreMessageInfo(mi) 1056 } 1057 1058 func (x *ServerArgs) String() string { 1059 return protoimpl.X.MessageStringOf(x) 1060 } 1061 1062 func (*ServerArgs) ProtoMessage() {} 1063 1064 func (x *ServerArgs) ProtoReflect() protoreflect.Message { 1065 mi := &file_grpc_testing_control_proto_msgTypes[10] 1066 if x != nil { 1067 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1068 if ms.LoadMessageInfo() == nil { 1069 ms.StoreMessageInfo(mi) 1070 } 1071 return ms 1072 } 1073 return mi.MessageOf(x) 1074 } 1075 1076 // Deprecated: Use ServerArgs.ProtoReflect.Descriptor instead. 1077 func (*ServerArgs) Descriptor() ([]byte, []int) { 1078 return file_grpc_testing_control_proto_rawDescGZIP(), []int{10} 1079 } 1080 1081 func (x *ServerArgs) GetArgtype() isServerArgs_Argtype { 1082 if x != nil { 1083 return x.Argtype 1084 } 1085 return nil 1086 } 1087 1088 func (x *ServerArgs) GetSetup() *ServerConfig { 1089 if x != nil { 1090 if x, ok := x.Argtype.(*ServerArgs_Setup); ok { 1091 return x.Setup 1092 } 1093 } 1094 return nil 1095 } 1096 1097 func (x *ServerArgs) GetMark() *Mark { 1098 if x != nil { 1099 if x, ok := x.Argtype.(*ServerArgs_Mark); ok { 1100 return x.Mark 1101 } 1102 } 1103 return nil 1104 } 1105 1106 type isServerArgs_Argtype interface { 1107 isServerArgs_Argtype() 1108 } 1109 1110 type ServerArgs_Setup struct { 1111 Setup *ServerConfig `protobuf:"bytes,1,opt,name=setup,proto3,oneof"` 1112 } 1113 1114 type ServerArgs_Mark struct { 1115 Mark *Mark `protobuf:"bytes,2,opt,name=mark,proto3,oneof"` 1116 } 1117 1118 func (*ServerArgs_Setup) isServerArgs_Argtype() {} 1119 1120 func (*ServerArgs_Mark) isServerArgs_Argtype() {} 1121 1122 type ServerStatus struct { 1123 state protoimpl.MessageState `protogen:"open.v1"` 1124 Stats *ServerStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` 1125 // the port bound by the server 1126 Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` 1127 // Number of cores available to the server 1128 Cores int32 `protobuf:"varint,3,opt,name=cores,proto3" json:"cores,omitempty"` 1129 unknownFields protoimpl.UnknownFields 1130 sizeCache protoimpl.SizeCache 1131 } 1132 1133 func (x *ServerStatus) Reset() { 1134 *x = ServerStatus{} 1135 mi := &file_grpc_testing_control_proto_msgTypes[11] 1136 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1137 ms.StoreMessageInfo(mi) 1138 } 1139 1140 func (x *ServerStatus) String() string { 1141 return protoimpl.X.MessageStringOf(x) 1142 } 1143 1144 func (*ServerStatus) ProtoMessage() {} 1145 1146 func (x *ServerStatus) ProtoReflect() protoreflect.Message { 1147 mi := &file_grpc_testing_control_proto_msgTypes[11] 1148 if x != nil { 1149 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1150 if ms.LoadMessageInfo() == nil { 1151 ms.StoreMessageInfo(mi) 1152 } 1153 return ms 1154 } 1155 return mi.MessageOf(x) 1156 } 1157 1158 // Deprecated: Use ServerStatus.ProtoReflect.Descriptor instead. 1159 func (*ServerStatus) Descriptor() ([]byte, []int) { 1160 return file_grpc_testing_control_proto_rawDescGZIP(), []int{11} 1161 } 1162 1163 func (x *ServerStatus) GetStats() *ServerStats { 1164 if x != nil { 1165 return x.Stats 1166 } 1167 return nil 1168 } 1169 1170 func (x *ServerStatus) GetPort() int32 { 1171 if x != nil { 1172 return x.Port 1173 } 1174 return 0 1175 } 1176 1177 func (x *ServerStatus) GetCores() int32 { 1178 if x != nil { 1179 return x.Cores 1180 } 1181 return 0 1182 } 1183 1184 type CoreRequest struct { 1185 state protoimpl.MessageState `protogen:"open.v1"` 1186 unknownFields protoimpl.UnknownFields 1187 sizeCache protoimpl.SizeCache 1188 } 1189 1190 func (x *CoreRequest) Reset() { 1191 *x = CoreRequest{} 1192 mi := &file_grpc_testing_control_proto_msgTypes[12] 1193 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1194 ms.StoreMessageInfo(mi) 1195 } 1196 1197 func (x *CoreRequest) String() string { 1198 return protoimpl.X.MessageStringOf(x) 1199 } 1200 1201 func (*CoreRequest) ProtoMessage() {} 1202 1203 func (x *CoreRequest) ProtoReflect() protoreflect.Message { 1204 mi := &file_grpc_testing_control_proto_msgTypes[12] 1205 if x != nil { 1206 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1207 if ms.LoadMessageInfo() == nil { 1208 ms.StoreMessageInfo(mi) 1209 } 1210 return ms 1211 } 1212 return mi.MessageOf(x) 1213 } 1214 1215 // Deprecated: Use CoreRequest.ProtoReflect.Descriptor instead. 1216 func (*CoreRequest) Descriptor() ([]byte, []int) { 1217 return file_grpc_testing_control_proto_rawDescGZIP(), []int{12} 1218 } 1219 1220 type CoreResponse struct { 1221 state protoimpl.MessageState `protogen:"open.v1"` 1222 // Number of cores available on the server 1223 Cores int32 `protobuf:"varint,1,opt,name=cores,proto3" json:"cores,omitempty"` 1224 unknownFields protoimpl.UnknownFields 1225 sizeCache protoimpl.SizeCache 1226 } 1227 1228 func (x *CoreResponse) Reset() { 1229 *x = CoreResponse{} 1230 mi := &file_grpc_testing_control_proto_msgTypes[13] 1231 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1232 ms.StoreMessageInfo(mi) 1233 } 1234 1235 func (x *CoreResponse) String() string { 1236 return protoimpl.X.MessageStringOf(x) 1237 } 1238 1239 func (*CoreResponse) ProtoMessage() {} 1240 1241 func (x *CoreResponse) ProtoReflect() protoreflect.Message { 1242 mi := &file_grpc_testing_control_proto_msgTypes[13] 1243 if x != nil { 1244 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1245 if ms.LoadMessageInfo() == nil { 1246 ms.StoreMessageInfo(mi) 1247 } 1248 return ms 1249 } 1250 return mi.MessageOf(x) 1251 } 1252 1253 // Deprecated: Use CoreResponse.ProtoReflect.Descriptor instead. 1254 func (*CoreResponse) Descriptor() ([]byte, []int) { 1255 return file_grpc_testing_control_proto_rawDescGZIP(), []int{13} 1256 } 1257 1258 func (x *CoreResponse) GetCores() int32 { 1259 if x != nil { 1260 return x.Cores 1261 } 1262 return 0 1263 } 1264 1265 type Void struct { 1266 state protoimpl.MessageState `protogen:"open.v1"` 1267 unknownFields protoimpl.UnknownFields 1268 sizeCache protoimpl.SizeCache 1269 } 1270 1271 func (x *Void) Reset() { 1272 *x = Void{} 1273 mi := &file_grpc_testing_control_proto_msgTypes[14] 1274 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1275 ms.StoreMessageInfo(mi) 1276 } 1277 1278 func (x *Void) String() string { 1279 return protoimpl.X.MessageStringOf(x) 1280 } 1281 1282 func (*Void) ProtoMessage() {} 1283 1284 func (x *Void) ProtoReflect() protoreflect.Message { 1285 mi := &file_grpc_testing_control_proto_msgTypes[14] 1286 if x != nil { 1287 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1288 if ms.LoadMessageInfo() == nil { 1289 ms.StoreMessageInfo(mi) 1290 } 1291 return ms 1292 } 1293 return mi.MessageOf(x) 1294 } 1295 1296 // Deprecated: Use Void.ProtoReflect.Descriptor instead. 1297 func (*Void) Descriptor() ([]byte, []int) { 1298 return file_grpc_testing_control_proto_rawDescGZIP(), []int{14} 1299 } 1300 1301 // A single performance scenario: input to qps_json_driver 1302 type Scenario struct { 1303 state protoimpl.MessageState `protogen:"open.v1"` 1304 // Human readable name for this scenario 1305 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1306 // Client configuration 1307 ClientConfig *ClientConfig `protobuf:"bytes,2,opt,name=client_config,json=clientConfig,proto3" json:"client_config,omitempty"` 1308 // Number of clients to start for the test 1309 NumClients int32 `protobuf:"varint,3,opt,name=num_clients,json=numClients,proto3" json:"num_clients,omitempty"` 1310 // Server configuration 1311 ServerConfig *ServerConfig `protobuf:"bytes,4,opt,name=server_config,json=serverConfig,proto3" json:"server_config,omitempty"` 1312 // Number of servers to start for the test 1313 NumServers int32 `protobuf:"varint,5,opt,name=num_servers,json=numServers,proto3" json:"num_servers,omitempty"` 1314 // Warmup period, in seconds 1315 WarmupSeconds int32 `protobuf:"varint,6,opt,name=warmup_seconds,json=warmupSeconds,proto3" json:"warmup_seconds,omitempty"` 1316 // Benchmark time, in seconds 1317 BenchmarkSeconds int32 `protobuf:"varint,7,opt,name=benchmark_seconds,json=benchmarkSeconds,proto3" json:"benchmark_seconds,omitempty"` 1318 // Number of workers to spawn locally (usually zero) 1319 SpawnLocalWorkerCount int32 `protobuf:"varint,8,opt,name=spawn_local_worker_count,json=spawnLocalWorkerCount,proto3" json:"spawn_local_worker_count,omitempty"` 1320 unknownFields protoimpl.UnknownFields 1321 sizeCache protoimpl.SizeCache 1322 } 1323 1324 func (x *Scenario) Reset() { 1325 *x = Scenario{} 1326 mi := &file_grpc_testing_control_proto_msgTypes[15] 1327 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1328 ms.StoreMessageInfo(mi) 1329 } 1330 1331 func (x *Scenario) String() string { 1332 return protoimpl.X.MessageStringOf(x) 1333 } 1334 1335 func (*Scenario) ProtoMessage() {} 1336 1337 func (x *Scenario) ProtoReflect() protoreflect.Message { 1338 mi := &file_grpc_testing_control_proto_msgTypes[15] 1339 if x != nil { 1340 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1341 if ms.LoadMessageInfo() == nil { 1342 ms.StoreMessageInfo(mi) 1343 } 1344 return ms 1345 } 1346 return mi.MessageOf(x) 1347 } 1348 1349 // Deprecated: Use Scenario.ProtoReflect.Descriptor instead. 1350 func (*Scenario) Descriptor() ([]byte, []int) { 1351 return file_grpc_testing_control_proto_rawDescGZIP(), []int{15} 1352 } 1353 1354 func (x *Scenario) GetName() string { 1355 if x != nil { 1356 return x.Name 1357 } 1358 return "" 1359 } 1360 1361 func (x *Scenario) GetClientConfig() *ClientConfig { 1362 if x != nil { 1363 return x.ClientConfig 1364 } 1365 return nil 1366 } 1367 1368 func (x *Scenario) GetNumClients() int32 { 1369 if x != nil { 1370 return x.NumClients 1371 } 1372 return 0 1373 } 1374 1375 func (x *Scenario) GetServerConfig() *ServerConfig { 1376 if x != nil { 1377 return x.ServerConfig 1378 } 1379 return nil 1380 } 1381 1382 func (x *Scenario) GetNumServers() int32 { 1383 if x != nil { 1384 return x.NumServers 1385 } 1386 return 0 1387 } 1388 1389 func (x *Scenario) GetWarmupSeconds() int32 { 1390 if x != nil { 1391 return x.WarmupSeconds 1392 } 1393 return 0 1394 } 1395 1396 func (x *Scenario) GetBenchmarkSeconds() int32 { 1397 if x != nil { 1398 return x.BenchmarkSeconds 1399 } 1400 return 0 1401 } 1402 1403 func (x *Scenario) GetSpawnLocalWorkerCount() int32 { 1404 if x != nil { 1405 return x.SpawnLocalWorkerCount 1406 } 1407 return 0 1408 } 1409 1410 // A set of scenarios to be run with qps_json_driver 1411 type Scenarios struct { 1412 state protoimpl.MessageState `protogen:"open.v1"` 1413 Scenarios []*Scenario `protobuf:"bytes,1,rep,name=scenarios,proto3" json:"scenarios,omitempty"` 1414 unknownFields protoimpl.UnknownFields 1415 sizeCache protoimpl.SizeCache 1416 } 1417 1418 func (x *Scenarios) Reset() { 1419 *x = Scenarios{} 1420 mi := &file_grpc_testing_control_proto_msgTypes[16] 1421 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1422 ms.StoreMessageInfo(mi) 1423 } 1424 1425 func (x *Scenarios) String() string { 1426 return protoimpl.X.MessageStringOf(x) 1427 } 1428 1429 func (*Scenarios) ProtoMessage() {} 1430 1431 func (x *Scenarios) ProtoReflect() protoreflect.Message { 1432 mi := &file_grpc_testing_control_proto_msgTypes[16] 1433 if x != nil { 1434 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1435 if ms.LoadMessageInfo() == nil { 1436 ms.StoreMessageInfo(mi) 1437 } 1438 return ms 1439 } 1440 return mi.MessageOf(x) 1441 } 1442 1443 // Deprecated: Use Scenarios.ProtoReflect.Descriptor instead. 1444 func (*Scenarios) Descriptor() ([]byte, []int) { 1445 return file_grpc_testing_control_proto_rawDescGZIP(), []int{16} 1446 } 1447 1448 func (x *Scenarios) GetScenarios() []*Scenario { 1449 if x != nil { 1450 return x.Scenarios 1451 } 1452 return nil 1453 } 1454 1455 // Basic summary that can be computed from ClientStats and ServerStats 1456 // once the scenario has finished. 1457 type ScenarioResultSummary struct { 1458 state protoimpl.MessageState `protogen:"open.v1"` 1459 // Total number of operations per second over all clients. What is counted as 1 'operation' depends on the benchmark scenarios: 1460 // For unary benchmarks, an operation is processing of a single unary RPC. 1461 // For streaming benchmarks, an operation is processing of a single ping pong of request and response. 1462 Qps float64 `protobuf:"fixed64,1,opt,name=qps,proto3" json:"qps,omitempty"` 1463 // QPS per server core. 1464 QpsPerServerCore float64 `protobuf:"fixed64,2,opt,name=qps_per_server_core,json=qpsPerServerCore,proto3" json:"qps_per_server_core,omitempty"` 1465 // The total server cpu load based on system time across all server processes, expressed as percentage of a single cpu core. 1466 // For example, 85 implies 85% of a cpu core, 125 implies 125% of a cpu core. Since we are accumulating the cpu load across all the server 1467 // processes, the value could > 100 when there are multiple servers or a single server using multiple threads and cores. 1468 // Same explanation for the total client cpu load below. 1469 ServerSystemTime float64 `protobuf:"fixed64,3,opt,name=server_system_time,json=serverSystemTime,proto3" json:"server_system_time,omitempty"` 1470 // The total server cpu load based on user time across all server processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%) 1471 ServerUserTime float64 `protobuf:"fixed64,4,opt,name=server_user_time,json=serverUserTime,proto3" json:"server_user_time,omitempty"` 1472 // The total client cpu load based on system time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%) 1473 ClientSystemTime float64 `protobuf:"fixed64,5,opt,name=client_system_time,json=clientSystemTime,proto3" json:"client_system_time,omitempty"` 1474 // The total client cpu load based on user time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%) 1475 ClientUserTime float64 `protobuf:"fixed64,6,opt,name=client_user_time,json=clientUserTime,proto3" json:"client_user_time,omitempty"` 1476 // X% latency percentiles (in nanoseconds) 1477 Latency_50 float64 `protobuf:"fixed64,7,opt,name=latency_50,json=latency50,proto3" json:"latency_50,omitempty"` 1478 Latency_90 float64 `protobuf:"fixed64,8,opt,name=latency_90,json=latency90,proto3" json:"latency_90,omitempty"` 1479 Latency_95 float64 `protobuf:"fixed64,9,opt,name=latency_95,json=latency95,proto3" json:"latency_95,omitempty"` 1480 Latency_99 float64 `protobuf:"fixed64,10,opt,name=latency_99,json=latency99,proto3" json:"latency_99,omitempty"` 1481 Latency_999 float64 `protobuf:"fixed64,11,opt,name=latency_999,json=latency999,proto3" json:"latency_999,omitempty"` 1482 // server cpu usage percentage 1483 ServerCpuUsage float64 `protobuf:"fixed64,12,opt,name=server_cpu_usage,json=serverCpuUsage,proto3" json:"server_cpu_usage,omitempty"` 1484 // Number of requests that succeeded/failed 1485 SuccessfulRequestsPerSecond float64 `protobuf:"fixed64,13,opt,name=successful_requests_per_second,json=successfulRequestsPerSecond,proto3" json:"successful_requests_per_second,omitempty"` 1486 FailedRequestsPerSecond float64 `protobuf:"fixed64,14,opt,name=failed_requests_per_second,json=failedRequestsPerSecond,proto3" json:"failed_requests_per_second,omitempty"` 1487 // Number of polls called inside completion queue per request 1488 ClientPollsPerRequest float64 `protobuf:"fixed64,15,opt,name=client_polls_per_request,json=clientPollsPerRequest,proto3" json:"client_polls_per_request,omitempty"` 1489 ServerPollsPerRequest float64 `protobuf:"fixed64,16,opt,name=server_polls_per_request,json=serverPollsPerRequest,proto3" json:"server_polls_per_request,omitempty"` 1490 // Queries per CPU-sec over all servers or clients 1491 ServerQueriesPerCpuSec float64 `protobuf:"fixed64,17,opt,name=server_queries_per_cpu_sec,json=serverQueriesPerCpuSec,proto3" json:"server_queries_per_cpu_sec,omitempty"` 1492 ClientQueriesPerCpuSec float64 `protobuf:"fixed64,18,opt,name=client_queries_per_cpu_sec,json=clientQueriesPerCpuSec,proto3" json:"client_queries_per_cpu_sec,omitempty"` 1493 // Start and end time for the test scenario 1494 StartTime *timestamppb.Timestamp `protobuf:"bytes,19,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 1495 EndTime *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 1496 unknownFields protoimpl.UnknownFields 1497 sizeCache protoimpl.SizeCache 1498 } 1499 1500 func (x *ScenarioResultSummary) Reset() { 1501 *x = ScenarioResultSummary{} 1502 mi := &file_grpc_testing_control_proto_msgTypes[17] 1503 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1504 ms.StoreMessageInfo(mi) 1505 } 1506 1507 func (x *ScenarioResultSummary) String() string { 1508 return protoimpl.X.MessageStringOf(x) 1509 } 1510 1511 func (*ScenarioResultSummary) ProtoMessage() {} 1512 1513 func (x *ScenarioResultSummary) ProtoReflect() protoreflect.Message { 1514 mi := &file_grpc_testing_control_proto_msgTypes[17] 1515 if x != nil { 1516 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1517 if ms.LoadMessageInfo() == nil { 1518 ms.StoreMessageInfo(mi) 1519 } 1520 return ms 1521 } 1522 return mi.MessageOf(x) 1523 } 1524 1525 // Deprecated: Use ScenarioResultSummary.ProtoReflect.Descriptor instead. 1526 func (*ScenarioResultSummary) Descriptor() ([]byte, []int) { 1527 return file_grpc_testing_control_proto_rawDescGZIP(), []int{17} 1528 } 1529 1530 func (x *ScenarioResultSummary) GetQps() float64 { 1531 if x != nil { 1532 return x.Qps 1533 } 1534 return 0 1535 } 1536 1537 func (x *ScenarioResultSummary) GetQpsPerServerCore() float64 { 1538 if x != nil { 1539 return x.QpsPerServerCore 1540 } 1541 return 0 1542 } 1543 1544 func (x *ScenarioResultSummary) GetServerSystemTime() float64 { 1545 if x != nil { 1546 return x.ServerSystemTime 1547 } 1548 return 0 1549 } 1550 1551 func (x *ScenarioResultSummary) GetServerUserTime() float64 { 1552 if x != nil { 1553 return x.ServerUserTime 1554 } 1555 return 0 1556 } 1557 1558 func (x *ScenarioResultSummary) GetClientSystemTime() float64 { 1559 if x != nil { 1560 return x.ClientSystemTime 1561 } 1562 return 0 1563 } 1564 1565 func (x *ScenarioResultSummary) GetClientUserTime() float64 { 1566 if x != nil { 1567 return x.ClientUserTime 1568 } 1569 return 0 1570 } 1571 1572 func (x *ScenarioResultSummary) GetLatency_50() float64 { 1573 if x != nil { 1574 return x.Latency_50 1575 } 1576 return 0 1577 } 1578 1579 func (x *ScenarioResultSummary) GetLatency_90() float64 { 1580 if x != nil { 1581 return x.Latency_90 1582 } 1583 return 0 1584 } 1585 1586 func (x *ScenarioResultSummary) GetLatency_95() float64 { 1587 if x != nil { 1588 return x.Latency_95 1589 } 1590 return 0 1591 } 1592 1593 func (x *ScenarioResultSummary) GetLatency_99() float64 { 1594 if x != nil { 1595 return x.Latency_99 1596 } 1597 return 0 1598 } 1599 1600 func (x *ScenarioResultSummary) GetLatency_999() float64 { 1601 if x != nil { 1602 return x.Latency_999 1603 } 1604 return 0 1605 } 1606 1607 func (x *ScenarioResultSummary) GetServerCpuUsage() float64 { 1608 if x != nil { 1609 return x.ServerCpuUsage 1610 } 1611 return 0 1612 } 1613 1614 func (x *ScenarioResultSummary) GetSuccessfulRequestsPerSecond() float64 { 1615 if x != nil { 1616 return x.SuccessfulRequestsPerSecond 1617 } 1618 return 0 1619 } 1620 1621 func (x *ScenarioResultSummary) GetFailedRequestsPerSecond() float64 { 1622 if x != nil { 1623 return x.FailedRequestsPerSecond 1624 } 1625 return 0 1626 } 1627 1628 func (x *ScenarioResultSummary) GetClientPollsPerRequest() float64 { 1629 if x != nil { 1630 return x.ClientPollsPerRequest 1631 } 1632 return 0 1633 } 1634 1635 func (x *ScenarioResultSummary) GetServerPollsPerRequest() float64 { 1636 if x != nil { 1637 return x.ServerPollsPerRequest 1638 } 1639 return 0 1640 } 1641 1642 func (x *ScenarioResultSummary) GetServerQueriesPerCpuSec() float64 { 1643 if x != nil { 1644 return x.ServerQueriesPerCpuSec 1645 } 1646 return 0 1647 } 1648 1649 func (x *ScenarioResultSummary) GetClientQueriesPerCpuSec() float64 { 1650 if x != nil { 1651 return x.ClientQueriesPerCpuSec 1652 } 1653 return 0 1654 } 1655 1656 func (x *ScenarioResultSummary) GetStartTime() *timestamppb.Timestamp { 1657 if x != nil { 1658 return x.StartTime 1659 } 1660 return nil 1661 } 1662 1663 func (x *ScenarioResultSummary) GetEndTime() *timestamppb.Timestamp { 1664 if x != nil { 1665 return x.EndTime 1666 } 1667 return nil 1668 } 1669 1670 // Results of a single benchmark scenario. 1671 type ScenarioResult struct { 1672 state protoimpl.MessageState `protogen:"open.v1"` 1673 // Inputs used to run the scenario. 1674 Scenario *Scenario `protobuf:"bytes,1,opt,name=scenario,proto3" json:"scenario,omitempty"` 1675 // Histograms from all clients merged into one histogram. 1676 Latencies *HistogramData `protobuf:"bytes,2,opt,name=latencies,proto3" json:"latencies,omitempty"` 1677 // Client stats for each client 1678 ClientStats []*ClientStats `protobuf:"bytes,3,rep,name=client_stats,json=clientStats,proto3" json:"client_stats,omitempty"` 1679 // Server stats for each server 1680 ServerStats []*ServerStats `protobuf:"bytes,4,rep,name=server_stats,json=serverStats,proto3" json:"server_stats,omitempty"` 1681 // Number of cores available to each server 1682 ServerCores []int32 `protobuf:"varint,5,rep,packed,name=server_cores,json=serverCores,proto3" json:"server_cores,omitempty"` 1683 // An after-the-fact computed summary 1684 Summary *ScenarioResultSummary `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"` 1685 // Information on success or failure of each worker 1686 ClientSuccess []bool `protobuf:"varint,7,rep,packed,name=client_success,json=clientSuccess,proto3" json:"client_success,omitempty"` 1687 ServerSuccess []bool `protobuf:"varint,8,rep,packed,name=server_success,json=serverSuccess,proto3" json:"server_success,omitempty"` 1688 // Number of failed requests (one row per status code seen) 1689 RequestResults []*RequestResultCount `protobuf:"bytes,9,rep,name=request_results,json=requestResults,proto3" json:"request_results,omitempty"` 1690 unknownFields protoimpl.UnknownFields 1691 sizeCache protoimpl.SizeCache 1692 } 1693 1694 func (x *ScenarioResult) Reset() { 1695 *x = ScenarioResult{} 1696 mi := &file_grpc_testing_control_proto_msgTypes[18] 1697 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1698 ms.StoreMessageInfo(mi) 1699 } 1700 1701 func (x *ScenarioResult) String() string { 1702 return protoimpl.X.MessageStringOf(x) 1703 } 1704 1705 func (*ScenarioResult) ProtoMessage() {} 1706 1707 func (x *ScenarioResult) ProtoReflect() protoreflect.Message { 1708 mi := &file_grpc_testing_control_proto_msgTypes[18] 1709 if x != nil { 1710 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1711 if ms.LoadMessageInfo() == nil { 1712 ms.StoreMessageInfo(mi) 1713 } 1714 return ms 1715 } 1716 return mi.MessageOf(x) 1717 } 1718 1719 // Deprecated: Use ScenarioResult.ProtoReflect.Descriptor instead. 1720 func (*ScenarioResult) Descriptor() ([]byte, []int) { 1721 return file_grpc_testing_control_proto_rawDescGZIP(), []int{18} 1722 } 1723 1724 func (x *ScenarioResult) GetScenario() *Scenario { 1725 if x != nil { 1726 return x.Scenario 1727 } 1728 return nil 1729 } 1730 1731 func (x *ScenarioResult) GetLatencies() *HistogramData { 1732 if x != nil { 1733 return x.Latencies 1734 } 1735 return nil 1736 } 1737 1738 func (x *ScenarioResult) GetClientStats() []*ClientStats { 1739 if x != nil { 1740 return x.ClientStats 1741 } 1742 return nil 1743 } 1744 1745 func (x *ScenarioResult) GetServerStats() []*ServerStats { 1746 if x != nil { 1747 return x.ServerStats 1748 } 1749 return nil 1750 } 1751 1752 func (x *ScenarioResult) GetServerCores() []int32 { 1753 if x != nil { 1754 return x.ServerCores 1755 } 1756 return nil 1757 } 1758 1759 func (x *ScenarioResult) GetSummary() *ScenarioResultSummary { 1760 if x != nil { 1761 return x.Summary 1762 } 1763 return nil 1764 } 1765 1766 func (x *ScenarioResult) GetClientSuccess() []bool { 1767 if x != nil { 1768 return x.ClientSuccess 1769 } 1770 return nil 1771 } 1772 1773 func (x *ScenarioResult) GetServerSuccess() []bool { 1774 if x != nil { 1775 return x.ServerSuccess 1776 } 1777 return nil 1778 } 1779 1780 func (x *ScenarioResult) GetRequestResults() []*RequestResultCount { 1781 if x != nil { 1782 return x.RequestResults 1783 } 1784 return nil 1785 } 1786 1787 var File_grpc_testing_control_proto protoreflect.FileDescriptor 1788 1789 var file_grpc_testing_control_proto_rawDesc = string([]byte{ 1790 0x0a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63, 1791 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 1792 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x1b, 0x67, 0x72, 0x70, 0x63, 1793 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 1794 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 1795 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 1796 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 1797 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 1798 0x74, 0x6f, 0x22, 0x32, 0x0a, 0x0d, 0x50, 0x6f, 0x69, 0x73, 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x72, 1799 0x61, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6c, 1800 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x65, 0x72, 1801 0x65, 0x64, 0x4c, 0x6f, 0x61, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 1802 0x4c, 0x6f, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x4c, 1803 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 1804 0x73, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 1805 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 1806 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 1807 0x52, 0x0a, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x37, 0x0a, 0x07, 1808 0x70, 0x6f, 0x69, 0x73, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 1809 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x6f, 0x69, 1810 0x73, 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x07, 0x70, 0x6f, 1811 0x69, 0x73, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x7f, 0x0a, 1812 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 1813 0x1e, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x01, 1814 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x75, 0x73, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x12, 1815 0x30, 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 1816 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 1817 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 1818 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 1819 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x67, 1820 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x12, 0x12, 0x0a, 0x04, 1821 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 1822 0x12, 0x1d, 0x0a, 0x09, 0x73, 0x74, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 1823 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 1824 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 1825 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 1826 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf6, 0x07, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 1827 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 1828 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 1829 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 1830 0x39, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 1831 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 1832 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 1833 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x73, 0x65, 1834 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 1835 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 1836 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 1837 0x73, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 1838 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 1839 0x5f, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 1840 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 1841 0x64, 0x69, 0x6e, 0x67, 0x52, 0x70, 0x63, 0x73, 0x50, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 1842 0x65, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 1843 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6c, 0x69, 1844 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x61, 1845 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 1846 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x73, 0x79, 0x6e, 0x63, 1847 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x30, 0x0a, 1848 0x08, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 1849 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 1850 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 1851 0x39, 0x0a, 0x0b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 1852 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 1853 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0a, 1854 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x61, 1855 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 1856 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 1857 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 1858 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 1859 0x0a, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x61, 1860 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 1861 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 1862 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 1863 0x61, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x72, 0x65, 1864 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x72, 1865 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 1866 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x4c, 1867 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x6c, 1868 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 1869 0x6f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x69, 0x12, 0x3b, 1870 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x10, 1871 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 1872 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x52, 0x0b, 1873 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x74, 1874 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x71, 0x18, 0x11, 0x20, 1875 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x50, 0x65, 0x72, 0x43, 1876 0x71, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x70, 0x65, 1877 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 1878 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 1879 0x6d, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 1880 0x65, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x75, 0x73, 0x65, 1881 0x43, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x41, 0x70, 0x69, 0x12, 0x58, 0x0a, 0x29, 0x6d, 1882 0x65, 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x63, 0x6f, 1883 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 1884 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x25, 1885 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x6c, 1886 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 1887 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 1888 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 1889 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 1890 0x22, 0x3f, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 1891 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 1892 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 1893 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 1894 0x73, 0x22, 0x1c, 0x0a, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 1895 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 1896 0x75, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 1897 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 1898 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 1899 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 1900 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 1901 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 1902 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 1903 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc0, 0x04, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 1904 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 1905 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 1906 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 1907 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 1908 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 1909 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 1910 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 1911 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 1912 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 1913 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, 1914 0x14, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x68, 1915 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x73, 0x79, 1916 0x6e, 0x63, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 1917 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 1918 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x42, 1919 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 1920 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 1921 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 1922 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 1923 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 1924 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 1925 0x28, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 1926 0x61, 0x70, 0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 1927 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x70, 0x69, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x68, 0x72, 1928 0x65, 0x61, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 1929 0x05, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x50, 0x65, 0x72, 0x43, 0x71, 0x12, 1930 0x2f, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x74, 1931 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 1932 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 1933 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 1934 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 1935 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 1936 0x67, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x72, 0x67, 0x73, 0x12, 0x29, 1937 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 1938 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 1939 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x75, 0x0a, 0x0a, 0x53, 0x65, 0x72, 1940 0x76, 0x65, 0x72, 0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 1941 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 1942 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 1943 0x69, 0x67, 0x48, 0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6d, 1944 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 1945 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 1946 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 1947 0x22, 0x69, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 1948 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 1949 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 1950 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 1951 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 1952 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 1953 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 1954 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x24, 0x0a, 0x0c, 0x43, 0x6f, 1955 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 1956 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 1957 0x22, 0x06, 0x0a, 0x04, 0x56, 0x6f, 0x69, 0x64, 0x22, 0xef, 0x02, 0x0a, 0x08, 0x53, 0x63, 0x65, 1958 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 1959 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 1960 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 1961 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 1962 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x6c, 1963 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 1964 0x6d, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 1965 0x0a, 0x6e, 0x75, 0x6d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 1966 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 1967 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 1968 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 1969 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 1970 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 1971 0x05, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 1972 0x0e, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 1973 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x53, 0x65, 0x63, 1974 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 1975 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 1976 0x10, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 1977 0x73, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 1978 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 1979 0x01, 0x28, 0x05, 0x52, 0x15, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x57, 1980 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x09, 0x53, 0x63, 1981 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 1982 0x72, 0x69, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 1983 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 1984 0x69, 0x6f, 0x52, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x22, 0xad, 0x07, 1985 0x0a, 0x15, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 1986 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x70, 0x73, 0x18, 0x01, 1987 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x71, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x71, 0x70, 0x73, 1988 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, 1989 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x71, 0x70, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 1990 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 1991 0x65, 0x72, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 1992 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x79, 0x73, 0x74, 1993 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 1994 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 1995 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 1996 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 1997 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x6c, 1998 0x69, 0x65, 0x6e, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 1999 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 2000 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 2001 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 2002 0x6e, 0x63, 0x79, 0x5f, 0x35, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 2003 0x74, 0x65, 0x6e, 0x63, 0x79, 0x35, 0x30, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 2004 0x63, 0x79, 0x5f, 0x39, 0x30, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 0x74, 2005 0x65, 0x6e, 0x63, 0x79, 0x39, 0x30, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 2006 0x79, 0x5f, 0x39, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 2007 0x6e, 0x63, 0x79, 0x39, 0x35, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 2008 0x5f, 0x39, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 2009 0x63, 0x79, 0x39, 0x39, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 2010 0x39, 0x39, 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x6e, 2011 0x63, 0x79, 0x39, 0x39, 0x39, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 2012 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 2013 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 2014 0x43, 0x0a, 0x1e, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x72, 0x65, 2015 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 2016 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 2017 0x66, 0x75, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 2018 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 2019 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 2020 0x6e, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 2021 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 2022 0x64, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 2023 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0f, 0x20, 2024 0x01, 0x28, 0x01, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x73, 2025 0x50, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x65, 2026 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 2027 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x73, 0x65, 2028 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 2029 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x71, 0x75, 2030 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x65, 2031 0x63, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x51, 2032 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x65, 0x72, 0x43, 0x70, 0x75, 0x53, 0x65, 0x63, 0x12, 2033 0x3a, 0x0a, 0x1a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 2034 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x12, 0x20, 2035 0x01, 0x28, 0x01, 0x52, 0x16, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x69, 2036 0x65, 0x73, 0x50, 0x65, 0x72, 0x43, 0x70, 0x75, 0x53, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x0a, 0x73, 2037 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 2038 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2039 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 2040 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 2041 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2042 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 2043 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf6, 0x03, 2044 0x0a, 0x0e, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 2045 0x12, 0x32, 0x0a, 0x08, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 2046 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 2047 0x67, 0x2e, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52, 0x08, 0x73, 0x63, 0x65, 0x6e, 2048 0x61, 0x72, 0x69, 0x6f, 0x12, 0x39, 0x0a, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65, 2049 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 2050 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 2051 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 2052 0x3c, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 2053 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 2054 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 2055 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3c, 0x0a, 2056 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 2057 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 2058 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0b, 2059 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 2060 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 2061 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3d, 2062 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 2063 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 2064 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x6d, 2065 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x0a, 2066 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 2067 0x07, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x63, 2068 0x63, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 2069 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x65, 2070 0x72, 0x76, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x72, 2071 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x09, 2072 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 2073 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 2074 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 2075 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2a, 0x56, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 2076 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x49, 2077 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 2078 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x54, 0x48, 0x45, 0x52, 2079 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x4c, 2080 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x2a, 0x70, 2081 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 2082 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 2083 0x0c, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 2084 0x18, 0x0a, 0x14, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 2085 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x54, 0x48, 2086 0x45, 0x52, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x43, 2087 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x04, 2088 0x2a, 0x72, 0x0a, 0x07, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 2089 0x4e, 0x41, 0x52, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 2090 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 2091 0x4e, 0x47, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x02, 2092 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x52, 2093 0x4f, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x53, 2094 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x5f, 0x57, 0x41, 2095 0x59, 0x53, 0x10, 0x04, 0x42, 0x21, 0x0a, 0x0f, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 2096 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 2097 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2098 }) 2099 2100 var ( 2101 file_grpc_testing_control_proto_rawDescOnce sync.Once 2102 file_grpc_testing_control_proto_rawDescData []byte 2103 ) 2104 2105 func file_grpc_testing_control_proto_rawDescGZIP() []byte { 2106 file_grpc_testing_control_proto_rawDescOnce.Do(func() { 2107 file_grpc_testing_control_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_grpc_testing_control_proto_rawDesc), len(file_grpc_testing_control_proto_rawDesc))) 2108 }) 2109 return file_grpc_testing_control_proto_rawDescData 2110 } 2111 2112 var file_grpc_testing_control_proto_enumTypes = make([]protoimpl.EnumInfo, 3) 2113 var file_grpc_testing_control_proto_msgTypes = make([]protoimpl.MessageInfo, 19) 2114 var file_grpc_testing_control_proto_goTypes = []any{ 2115 (ClientType)(0), // 0: grpc.testing.ClientType 2116 (ServerType)(0), // 1: grpc.testing.ServerType 2117 (RpcType)(0), // 2: grpc.testing.RpcType 2118 (*PoissonParams)(nil), // 3: grpc.testing.PoissonParams 2119 (*ClosedLoopParams)(nil), // 4: grpc.testing.ClosedLoopParams 2120 (*LoadParams)(nil), // 5: grpc.testing.LoadParams 2121 (*SecurityParams)(nil), // 6: grpc.testing.SecurityParams 2122 (*ChannelArg)(nil), // 7: grpc.testing.ChannelArg 2123 (*ClientConfig)(nil), // 8: grpc.testing.ClientConfig 2124 (*ClientStatus)(nil), // 9: grpc.testing.ClientStatus 2125 (*Mark)(nil), // 10: grpc.testing.Mark 2126 (*ClientArgs)(nil), // 11: grpc.testing.ClientArgs 2127 (*ServerConfig)(nil), // 12: grpc.testing.ServerConfig 2128 (*ServerArgs)(nil), // 13: grpc.testing.ServerArgs 2129 (*ServerStatus)(nil), // 14: grpc.testing.ServerStatus 2130 (*CoreRequest)(nil), // 15: grpc.testing.CoreRequest 2131 (*CoreResponse)(nil), // 16: grpc.testing.CoreResponse 2132 (*Void)(nil), // 17: grpc.testing.Void 2133 (*Scenario)(nil), // 18: grpc.testing.Scenario 2134 (*Scenarios)(nil), // 19: grpc.testing.Scenarios 2135 (*ScenarioResultSummary)(nil), // 20: grpc.testing.ScenarioResultSummary 2136 (*ScenarioResult)(nil), // 21: grpc.testing.ScenarioResult 2137 (*PayloadConfig)(nil), // 22: grpc.testing.PayloadConfig 2138 (*HistogramParams)(nil), // 23: grpc.testing.HistogramParams 2139 (*ClientStats)(nil), // 24: grpc.testing.ClientStats 2140 (*ServerStats)(nil), // 25: grpc.testing.ServerStats 2141 (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp 2142 (*HistogramData)(nil), // 27: grpc.testing.HistogramData 2143 (*RequestResultCount)(nil), // 28: grpc.testing.RequestResultCount 2144 } 2145 var file_grpc_testing_control_proto_depIdxs = []int32{ 2146 4, // 0: grpc.testing.LoadParams.closed_loop:type_name -> grpc.testing.ClosedLoopParams 2147 3, // 1: grpc.testing.LoadParams.poisson:type_name -> grpc.testing.PoissonParams 2148 0, // 2: grpc.testing.ClientConfig.client_type:type_name -> grpc.testing.ClientType 2149 6, // 3: grpc.testing.ClientConfig.security_params:type_name -> grpc.testing.SecurityParams 2150 2, // 4: grpc.testing.ClientConfig.rpc_type:type_name -> grpc.testing.RpcType 2151 5, // 5: grpc.testing.ClientConfig.load_params:type_name -> grpc.testing.LoadParams 2152 22, // 6: grpc.testing.ClientConfig.payload_config:type_name -> grpc.testing.PayloadConfig 2153 23, // 7: grpc.testing.ClientConfig.histogram_params:type_name -> grpc.testing.HistogramParams 2154 7, // 8: grpc.testing.ClientConfig.channel_args:type_name -> grpc.testing.ChannelArg 2155 24, // 9: grpc.testing.ClientStatus.stats:type_name -> grpc.testing.ClientStats 2156 8, // 10: grpc.testing.ClientArgs.setup:type_name -> grpc.testing.ClientConfig 2157 10, // 11: grpc.testing.ClientArgs.mark:type_name -> grpc.testing.Mark 2158 1, // 12: grpc.testing.ServerConfig.server_type:type_name -> grpc.testing.ServerType 2159 6, // 13: grpc.testing.ServerConfig.security_params:type_name -> grpc.testing.SecurityParams 2160 22, // 14: grpc.testing.ServerConfig.payload_config:type_name -> grpc.testing.PayloadConfig 2161 7, // 15: grpc.testing.ServerConfig.channel_args:type_name -> grpc.testing.ChannelArg 2162 12, // 16: grpc.testing.ServerArgs.setup:type_name -> grpc.testing.ServerConfig 2163 10, // 17: grpc.testing.ServerArgs.mark:type_name -> grpc.testing.Mark 2164 25, // 18: grpc.testing.ServerStatus.stats:type_name -> grpc.testing.ServerStats 2165 8, // 19: grpc.testing.Scenario.client_config:type_name -> grpc.testing.ClientConfig 2166 12, // 20: grpc.testing.Scenario.server_config:type_name -> grpc.testing.ServerConfig 2167 18, // 21: grpc.testing.Scenarios.scenarios:type_name -> grpc.testing.Scenario 2168 26, // 22: grpc.testing.ScenarioResultSummary.start_time:type_name -> google.protobuf.Timestamp 2169 26, // 23: grpc.testing.ScenarioResultSummary.end_time:type_name -> google.protobuf.Timestamp 2170 18, // 24: grpc.testing.ScenarioResult.scenario:type_name -> grpc.testing.Scenario 2171 27, // 25: grpc.testing.ScenarioResult.latencies:type_name -> grpc.testing.HistogramData 2172 24, // 26: grpc.testing.ScenarioResult.client_stats:type_name -> grpc.testing.ClientStats 2173 25, // 27: grpc.testing.ScenarioResult.server_stats:type_name -> grpc.testing.ServerStats 2174 20, // 28: grpc.testing.ScenarioResult.summary:type_name -> grpc.testing.ScenarioResultSummary 2175 28, // 29: grpc.testing.ScenarioResult.request_results:type_name -> grpc.testing.RequestResultCount 2176 30, // [30:30] is the sub-list for method output_type 2177 30, // [30:30] is the sub-list for method input_type 2178 30, // [30:30] is the sub-list for extension type_name 2179 30, // [30:30] is the sub-list for extension extendee 2180 0, // [0:30] is the sub-list for field type_name 2181 } 2182 2183 func init() { file_grpc_testing_control_proto_init() } 2184 func file_grpc_testing_control_proto_init() { 2185 if File_grpc_testing_control_proto != nil { 2186 return 2187 } 2188 file_grpc_testing_payloads_proto_init() 2189 file_grpc_testing_stats_proto_init() 2190 file_grpc_testing_control_proto_msgTypes[2].OneofWrappers = []any{ 2191 (*LoadParams_ClosedLoop)(nil), 2192 (*LoadParams_Poisson)(nil), 2193 } 2194 file_grpc_testing_control_proto_msgTypes[4].OneofWrappers = []any{ 2195 (*ChannelArg_StrValue)(nil), 2196 (*ChannelArg_IntValue)(nil), 2197 } 2198 file_grpc_testing_control_proto_msgTypes[8].OneofWrappers = []any{ 2199 (*ClientArgs_Setup)(nil), 2200 (*ClientArgs_Mark)(nil), 2201 } 2202 file_grpc_testing_control_proto_msgTypes[10].OneofWrappers = []any{ 2203 (*ServerArgs_Setup)(nil), 2204 (*ServerArgs_Mark)(nil), 2205 } 2206 type x struct{} 2207 out := protoimpl.TypeBuilder{ 2208 File: protoimpl.DescBuilder{ 2209 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2210 RawDescriptor: unsafe.Slice(unsafe.StringData(file_grpc_testing_control_proto_rawDesc), len(file_grpc_testing_control_proto_rawDesc)), 2211 NumEnums: 3, 2212 NumMessages: 19, 2213 NumExtensions: 0, 2214 NumServices: 0, 2215 }, 2216 GoTypes: file_grpc_testing_control_proto_goTypes, 2217 DependencyIndexes: file_grpc_testing_control_proto_depIdxs, 2218 EnumInfos: file_grpc_testing_control_proto_enumTypes, 2219 MessageInfos: file_grpc_testing_control_proto_msgTypes, 2220 }.Build() 2221 File_grpc_testing_control_proto = out.File 2222 file_grpc_testing_control_proto_goTypes = nil 2223 file_grpc_testing_control_proto_depIdxs = nil 2224 }