diff options
author | Muxi Yan <mxyan@google.com> | 2016-10-30 23:49:39 -0700 |
---|---|---|
committer | Muxi Yan <mxyan@google.com> | 2016-10-30 23:49:39 -0700 |
commit | 43944082daf3e8f63328ba7c18685b0df3cf212a (patch) | |
tree | f91d8de96683179e39a90f654339968cb7b6dff1 /test/cpp/qps/server_async.cc | |
parent | ea3b568b8fef498f6aeec4349702c588afe709da (diff) | |
parent | 1c55919ece40ec0cf7baa280c55273ab7fbea83f (diff) |
Merge remote-tracking branch 'upstream/master' into core-end2end-tests-cronet-update
Diffstat (limited to 'test/cpp/qps/server_async.cc')
-rw-r--r-- | test/cpp/qps/server_async.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc index 082b4bc72f..bc4c896d83 100644 --- a/test/cpp/qps/server_async.cc +++ b/test/cpp/qps/server_async.cc @@ -38,6 +38,7 @@ #include <thread> #include <grpc++/generic/async_generic_service.h> +#include <grpc++/resource_quota.h> #include <grpc++/security/server_credentials.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> @@ -57,7 +58,7 @@ namespace testing { template <class RequestType, class ResponseType, class ServiceType, class ServerContextType> -class AsyncQpsServerTest : public Server { +class AsyncQpsServerTest GRPC_FINAL : public grpc::testing::Server { public: AsyncQpsServerTest( const ServerConfig &config, @@ -95,6 +96,11 @@ class AsyncQpsServerTest : public Server { srv_cqs_.emplace_back(builder.AddCompletionQueue()); } + if (config.resource_quota_size() > 0) { + builder.SetResourceQuota(ResourceQuota("AsyncQpsServerTest") + .Resize(config.resource_quota_size())); + } + server_ = builder.BuildAndStart(); using namespace std::placeholders; @@ -131,9 +137,7 @@ class AsyncQpsServerTest : public Server { std::lock_guard<std::mutex> lock((*ss)->mutex); (*ss)->shutdown = true; } - // TODO (vpai): Remove this deadline and allow Shutdown to finish properly - auto deadline = std::chrono::system_clock::now() + std::chrono::seconds(3); - server_->Shutdown(deadline); + std::thread shutdown_thread(&AsyncQpsServerTest::ShutdownThreadFunc, this); for (auto cq = srv_cqs_.begin(); cq != srv_cqs_.end(); ++cq) { (*cq)->Shutdown(); } @@ -146,9 +150,16 @@ class AsyncQpsServerTest : public Server { while ((*cq)->Next(&got_tag, &ok)) ; } + shutdown_thread.join(); } private: + void ShutdownThreadFunc() { + // TODO (vpai): Remove this deadline and allow Shutdown to finish properly + auto deadline = std::chrono::system_clock::now() + std::chrono::seconds(3); + server_->Shutdown(deadline); + } + void ThreadFunc(int thread_idx) { // Wait until work is available or we are shutting down bool ok; |