diff --git a/src/proto/grpc/testing/control.proto b/src/proto/grpc/testing/control.proto index acee86678db..cb35032c6d5 100644 --- a/src/proto/grpc/testing/control.proto +++ b/src/proto/grpc/testing/control.proto @@ -158,6 +158,8 @@ message ServerConfig { // Buffer pool size (no buffer pool specified if unset) int32 resource_quota_size = 1001; + + repeated ChannelArg channel_args = 1002; } message ServerArgs { diff --git a/test/cpp/qps/server.h b/test/cpp/qps/server.h index 8fbf37a0957..d411d356e17 100644 --- a/test/cpp/qps/server.h +++ b/test/cpp/qps/server.h @@ -34,8 +34,11 @@ #ifndef TEST_QPS_SERVER_H #define TEST_QPS_SERVER_H +#include #include +#include #include +#include #include #include "src/proto/grpc/testing/control.pb.h" @@ -106,6 +109,28 @@ class Server { } } + static void ApplyServerConfig(const ServerConfig& config, + ServerBuilder* builder) { + if (config.resource_quota_size() > 0) { + builder->SetResourceQuota( + ResourceQuota("QpsServerTest").Resize(config.resource_quota_size())); + } + + for (auto arg : config.channel_args()) { + switch (arg.value_case()) { + case ChannelArg::kStrValue: + builder->AddChannelArgument(arg.name(), arg.str_value()); + break; + case ChannelArg::kIntValue: + builder->AddChannelArgument(arg.name(), arg.int_value()); + break; + default: + gpr_log(GPR_ERROR, "Channel arg '%s' ignored due to unknown type", + arg.name().c_str()); + } + } + } + private: int port_; int cores_; diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc index b499b82091e..3ddc5707cbb 100644 --- a/test/cpp/qps/server_async.cc +++ b/test/cpp/qps/server_async.cc @@ -96,10 +96,7 @@ class AsyncQpsServerTest final : public grpc::testing::Server { srv_cqs_.emplace_back(builder.AddCompletionQueue()); } - if (config.resource_quota_size() > 0) { - builder.SetResourceQuota(ResourceQuota("AsyncQpsServerTest") - .Resize(config.resource_quota_size())); - } + ApplyServerConfig(config, &builder); server_ = builder.BuildAndStart(); diff --git a/test/cpp/qps/server_sync.cc b/test/cpp/qps/server_sync.cc index f79284d2254..9fe26e85ae1 100644 --- a/test/cpp/qps/server_sync.cc +++ b/test/cpp/qps/server_sync.cc @@ -94,10 +94,7 @@ class SynchronousServer final : public grpc::testing::Server { Server::CreateServerCredentials(config)); gpr_free(server_address); - if (config.resource_quota_size() > 0) { - builder.SetResourceQuota(ResourceQuota("AsyncQpsServerTest") - .Resize(config.resource_quota_size())); - } + ApplyServerConfig(config, &builder); builder.RegisterService(&service_);