X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=test%2Fcpp%2Fend2end%2Fservice_config_end2end_test.cc;h=bd64e1722f8a2874bee5f261c70638720eb37e38;hb=2cbdc95f7308919f1c0019c7edced2f114c46703;hp=67e02bc72a1dc92046e7157d6f4f5fae76ccf727;hpb=4d0bc5f8c99f35d02356a8a7506b743d1cf126a6;p=platform%2Fupstream%2Fgrpc.git diff --git a/test/cpp/end2end/service_config_end2end_test.cc b/test/cpp/end2end/service_config_end2end_test.cc index 67e02bc..bd64e17 100644 --- a/test/cpp/end2end/service_config_end2end_test.cc +++ b/test/cpp/end2end/service_config_end2end_test.cc @@ -24,6 +24,9 @@ #include #include +#include +#include + #include "absl/memory/memory.h" #include "absl/strings/str_cat.h" @@ -54,16 +57,12 @@ #include "src/core/lib/security/credentials/fake/fake_credentials.h" #include "src/cpp/client/secure_credentials.h" #include "src/cpp/server/secure_server_credentials.h" - #include "src/proto/grpc/testing/echo.grpc.pb.h" #include "test/core/util/port.h" #include "test/core/util/resolve_localhost_ip46.h" #include "test/core/util/test_config.h" #include "test/cpp/end2end/test_service_impl.h" -#include -#include - using grpc::testing::EchoRequest; using grpc::testing::EchoResponse; @@ -300,32 +299,33 @@ class ServiceConfigEnd2endTest : public ::testing::Test { } struct ServerData { - int port_; + const int port_; std::unique_ptr server_; MyTestServiceImpl service_; std::unique_ptr thread_; - bool server_ready_ = false; - bool started_ = false; - explicit ServerData(int port = 0) { - port_ = port > 0 ? port : grpc_pick_unused_port_or_die(); - } + grpc::internal::Mutex mu_; + grpc::internal::CondVar cond_; + bool server_ready_ ABSL_GUARDED_BY(mu_) = false; + bool started_ ABSL_GUARDED_BY(mu_) = false; + + explicit ServerData(int port = 0) + : port_(port > 0 ? port : grpc_pick_unused_port_or_die()) {} void Start(const std::string& server_host) { gpr_log(GPR_INFO, "starting server on port %d", port_); + grpc::internal::MutexLock lock(&mu_); started_ = true; - grpc::internal::Mutex mu; - grpc::internal::MutexLock lock(&mu); - grpc::internal::CondVar cond; thread_ = absl::make_unique( - std::bind(&ServerData::Serve, this, server_host, &mu, &cond)); - grpc::internal::WaitUntil(&cond, &mu, [this] { return server_ready_; }); + std::bind(&ServerData::Serve, this, server_host)); + while (!server_ready_) { + cond_.Wait(&mu_); + } server_ready_ = false; gpr_log(GPR_INFO, "server startup complete"); } - void Serve(const std::string& server_host, grpc::internal::Mutex* mu, - grpc::internal::CondVar* cond) { + void Serve(const std::string& server_host) { std::ostringstream server_address; server_address << server_host << ":" << port_; ServerBuilder builder; @@ -334,12 +334,13 @@ class ServiceConfigEnd2endTest : public ::testing::Test { builder.AddListeningPort(server_address.str(), std::move(creds)); builder.RegisterService(&service_); server_ = builder.BuildAndStart(); - grpc::internal::MutexLock lock(mu); + grpc::internal::MutexLock lock(&mu_); server_ready_ = true; - cond->Signal(); + cond_.Signal(); } void Shutdown() { + grpc::internal::MutexLock lock(&mu_); if (!started_) return; server_->Shutdown(grpc_timeout_milliseconds_to_deadline(0)); thread_->join();