|
|
@ -49,6 +49,7 @@ |
|
|
|
#include "src/proto/grpc/testing/echo.grpc.pb.h" |
|
|
|
#include "src/proto/grpc/testing/echo.grpc.pb.h" |
|
|
|
#include "test/core/util/port.h" |
|
|
|
#include "test/core/util/port.h" |
|
|
|
#include "test/core/util/test_config.h" |
|
|
|
#include "test/core/util/test_config.h" |
|
|
|
|
|
|
|
#include "test/cpp/util/test_credentials_provider.h" |
|
|
|
|
|
|
|
|
|
|
|
using grpc::testing::EchoRequest; |
|
|
|
using grpc::testing::EchoRequest; |
|
|
|
using grpc::testing::EchoResponse; |
|
|
|
using grpc::testing::EchoResponse; |
|
|
@ -72,7 +73,7 @@ class TestServiceImpl : public ::grpc::testing::EchoTestService::Service { |
|
|
|
gpr_event* ev_; |
|
|
|
gpr_event* ev_; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class ShutdownTest : public ::testing::Test { |
|
|
|
class ShutdownTest : public ::testing::TestWithParam<string> { |
|
|
|
public: |
|
|
|
public: |
|
|
|
ShutdownTest() : shutdown_(false), service_(&ev_) { gpr_event_init(&ev_); } |
|
|
|
ShutdownTest() : shutdown_(false), service_(&ev_) { gpr_event_init(&ev_); } |
|
|
|
|
|
|
|
|
|
|
@ -85,7 +86,9 @@ class ShutdownTest : public ::testing::Test { |
|
|
|
grpc::string server_address = "localhost:" + to_string(port); |
|
|
|
grpc::string server_address = "localhost:" + to_string(port); |
|
|
|
|
|
|
|
|
|
|
|
ServerBuilder builder; |
|
|
|
ServerBuilder builder; |
|
|
|
builder.AddListeningPort(server_address, InsecureServerCredentials()); |
|
|
|
auto server_creds = |
|
|
|
|
|
|
|
GetCredentialsProvider()->GetServerCredentials(GetParam()); |
|
|
|
|
|
|
|
builder.AddListeningPort(server_address, server_creds); |
|
|
|
builder.RegisterService(&service_); |
|
|
|
builder.RegisterService(&service_); |
|
|
|
std::unique_ptr<Server> server = builder.BuildAndStart(); |
|
|
|
std::unique_ptr<Server> server = builder.BuildAndStart(); |
|
|
|
return server; |
|
|
|
return server; |
|
|
@ -95,7 +98,10 @@ class ShutdownTest : public ::testing::Test { |
|
|
|
|
|
|
|
|
|
|
|
void ResetStub() { |
|
|
|
void ResetStub() { |
|
|
|
string target = "dns:localhost:" + to_string(port_); |
|
|
|
string target = "dns:localhost:" + to_string(port_); |
|
|
|
channel_ = CreateChannel(target, InsecureChannelCredentials()); |
|
|
|
ChannelArguments args; |
|
|
|
|
|
|
|
auto channel_creds = |
|
|
|
|
|
|
|
GetCredentialsProvider()->GetChannelCredentials(GetParam(), &args); |
|
|
|
|
|
|
|
channel_ = CreateCustomChannel(target, channel_creds, args); |
|
|
|
stub_ = grpc::testing::EchoTestService::NewStub(channel_); |
|
|
|
stub_ = grpc::testing::EchoTestService::NewStub(channel_); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -125,8 +131,31 @@ class ShutdownTest : public ::testing::Test { |
|
|
|
TestServiceImpl service_; |
|
|
|
TestServiceImpl service_; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<string> GetAllCredentialsTypeList() { |
|
|
|
|
|
|
|
std::vector<grpc::string> credentials_types; |
|
|
|
|
|
|
|
if (GetCredentialsProvider()->GetChannelCredentials(kInsecureCredentialsType, |
|
|
|
|
|
|
|
nullptr) != nullptr) { |
|
|
|
|
|
|
|
credentials_types.push_back(kInsecureCredentialsType); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
auto sec_list = GetCredentialsProvider()->GetSecureCredentialsTypeList(); |
|
|
|
|
|
|
|
for (auto sec = sec_list.begin(); sec != sec_list.end(); sec++) { |
|
|
|
|
|
|
|
credentials_types.push_back(*sec); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
GPR_ASSERT(!credentials_types.empty()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string credentials_type_list("credentials types:"); |
|
|
|
|
|
|
|
for (const string& type : credentials_types) { |
|
|
|
|
|
|
|
credentials_type_list.append(" " + type); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
gpr_log(GPR_INFO, "%s", credentials_type_list.c_str()); |
|
|
|
|
|
|
|
return credentials_types; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INSTANTIATE_TEST_CASE_P(End2EndShutdown, ShutdownTest, |
|
|
|
|
|
|
|
::testing::ValuesIn(GetAllCredentialsTypeList())); |
|
|
|
|
|
|
|
|
|
|
|
// TODO(ctiller): leaked objects in this test
|
|
|
|
// TODO(ctiller): leaked objects in this test
|
|
|
|
TEST_F(ShutdownTest, ShutdownTest) { |
|
|
|
TEST_P(ShutdownTest, ShutdownTest) { |
|
|
|
ResetStub(); |
|
|
|
ResetStub(); |
|
|
|
|
|
|
|
|
|
|
|
// send the request in a background thread
|
|
|
|
// send the request in a background thread
|
|
|
|