diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index df9aae7436fc454214583f992da2d6465e512dc6..2169afb8169bc1e68389aa2c3459fd9730ded791 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -191,14 +191,14 @@ class TestServiceImplDupPkg class TestScenario { public: - TestScenario(bool proxy, const grpc::string& creds_type) - : use_proxy(proxy), credentials_type(creds_type) {} + TestScenario(bool proxy, TestCredentialsType type) + : use_proxy(proxy), credentials_type(type) {} void Log() const { gpr_log(GPR_INFO, "Scenario: proxy %d, credentials %s", use_proxy, - credentials_type.c_str()); + TestCredentialsTypeToString(credentials_type).c_str()); } bool use_proxy; - const grpc::string credentials_type; + TestCredentialsType credentials_type; }; class End2endTest : public ::testing::TestWithParam<TestScenario> { @@ -223,7 +223,7 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> { // Setup server ServerBuilder builder; auto server_creds = GetServerCredentials(GetParam().credentials_type); - if (GetParam().credentials_type != kInsecureCredentialsType) { + if (GetParam().credentials_type != INSECURE_CREDENTIALS) { server_creds->SetAuthMetadataProcessor(processor); } builder.AddListeningPort(server_address_.str(), server_creds); @@ -933,7 +933,7 @@ TEST_P(End2endTest, ChannelState) { // Takes 10s. TEST_P(End2endTest, ChannelStateTimeout) { - if (GetParam().credentials_type != kInsecureCredentialsType) { + if (GetParam().credentials_type != INSECURE_CREDENTIALS) { return; } int port = grpc_pick_unused_port_or_die(); @@ -1142,7 +1142,7 @@ class SecureEnd2endTest : public End2endTest { protected: SecureEnd2endTest() { GPR_ASSERT(!GetParam().use_proxy); - GPR_ASSERT(GetParam().credentials_type != kInsecureCredentialsType); + GPR_ASSERT(GetParam().credentials_type != INSECURE_CREDENTIALS); } }; @@ -1365,25 +1365,43 @@ TEST_P(SecureEnd2endTest, ClientAuthContext) { EXPECT_EQ("*.test.youtube.com", ToString(auth_ctx->GetPeerIdentity()[2])); } -INSTANTIATE_TEST_CASE_P( - End2end, End2endTest, - ::testing::Values(TestScenario(false, kInsecureCredentialsType), - TestScenario(false, kTlsCredentialsType))); +std::vector<TestScenario> CreateTestScenarios(bool use_proxy, + bool test_insecure, + bool test_secure) { + std::vector<TestScenario> scenarios; + for (int i = INSECURE_CREDENTIALS; i < MAX_CREDENTIALS_TYPE; i++) { + if (i == INSECURE_CREDENTIALS && !test_insecure) { + continue; + } + if (i != INSECURE_CREDENTIALS && !test_secure) { + continue; + } + if (use_proxy) { + scenarios.push_back( + TestScenario(true, static_cast<TestCredentialsType>(i))); + } + scenarios.push_back( + TestScenario(false, static_cast<TestCredentialsType>(i))); + } + GPR_ASSERT(!scenarios.empty()); + return scenarios; +} + +INSTANTIATE_TEST_CASE_P(End2end, End2endTest, + ::testing::ValuesIn(CreateTestScenarios(false, true, + true))); -INSTANTIATE_TEST_CASE_P( - End2endServerTryCancel, End2endServerTryCancelTest, - ::testing::Values(TestScenario(false, kInsecureCredentialsType))); +INSTANTIATE_TEST_CASE_P(End2endServerTryCancel, End2endServerTryCancelTest, + ::testing::ValuesIn(CreateTestScenarios(false, true, + false))); -INSTANTIATE_TEST_CASE_P( - ProxyEnd2end, ProxyEnd2endTest, - ::testing::Values(TestScenario(false, kInsecureCredentialsType), - TestScenario(false, kTlsCredentialsType), - TestScenario(true, kInsecureCredentialsType), - TestScenario(true, kTlsCredentialsType))); +INSTANTIATE_TEST_CASE_P(ProxyEnd2end, ProxyEnd2endTest, + ::testing::ValuesIn(CreateTestScenarios(true, true, + true))); INSTANTIATE_TEST_CASE_P(SecureEnd2end, SecureEnd2endTest, - ::testing::Values(TestScenario(false, - kTlsCredentialsType))); + ::testing::ValuesIn(CreateTestScenarios(false, false, + true))); } // namespace } // namespace testing diff --git a/test/cpp/util/test_credentials_provider.cc b/test/cpp/util/test_credentials_provider.cc index f8380cdb65a47bf2ded0c2f41a88537fd62e7208..9746ca692a7419cc1c3d4b1f0a92056e541951af 100644 --- a/test/cpp/util/test_credentials_provider.cc +++ b/test/cpp/util/test_credentials_provider.cc @@ -40,24 +40,24 @@ namespace grpc { namespace testing { std::shared_ptr<ChannelCredentials> GetChannelCredentials( - const grpc::string& type, ChannelArguments* args) { - if (type == kInsecureCredentialsType) { + TestCredentialsType type, ChannelArguments* args) { + if (type == INSECURE_CREDENTIALS) { return InsecureChannelCredentials(); - } else if (type == kTlsCredentialsType) { + } else if (type == TLS_CREDENTIALS) { SslCredentialsOptions ssl_opts = {test_root_cert, "", ""}; args->SetSslTargetNameOverride("foo.test.google.fr"); return SslCredentials(ssl_opts); } else { - gpr_log(GPR_ERROR, "Unsupported credentials type %s.", type.c_str()); + gpr_log(GPR_ERROR, "Unsupported credentials type %d.", type); } return nullptr; } std::shared_ptr<ServerCredentials> GetServerCredentials( - const grpc::string& type) { - if (type == kInsecureCredentialsType) { + TestCredentialsType type) { + if (type == INSECURE_CREDENTIALS) { return InsecureServerCredentials(); - } else if (type == kTlsCredentialsType) { + } else if (type == TLS_CREDENTIALS) { SslServerCredentialsOptions::PemKeyCertPair pkcp = {test_server1_key, test_server1_cert}; SslServerCredentialsOptions ssl_opts; @@ -65,10 +65,22 @@ std::shared_ptr<ServerCredentials> GetServerCredentials( ssl_opts.pem_key_cert_pairs.push_back(pkcp); return SslServerCredentials(ssl_opts); } else { - gpr_log(GPR_ERROR, "Unsupported credentials type %s.", type.c_str()); + gpr_log(GPR_ERROR, "Unsupported credentials type %d.", type); } return nullptr; } +grpc::string TestCredentialsTypeToString(TestCredentialsType type) { + switch (type) { + case INSECURE_CREDENTIALS: + return "INSECURE_CREDENTIALS"; + case TLS_CREDENTIALS: + return "TLS_CREDENTIALS"; + default: + break; + } + return "UNKNOWN"; +} + } // namespace testing } // namespace grpc diff --git a/test/cpp/util/test_credentials_provider.h b/test/cpp/util/test_credentials_provider.h index 4f25e3be66d30bb9248686991a8e6b99e3f9eaae..005254a652137abc30363677b57c65670b366d47 100644 --- a/test/cpp/util/test_credentials_provider.h +++ b/test/cpp/util/test_credentials_provider.h @@ -43,17 +43,22 @@ namespace grpc { namespace testing { -const char kInsecureCredentialsType[] = "INSECURE_CREDENTIALS"; -const char kTlsCredentialsType[] = "TLS_CREDENTIALS"; +enum TestCredentialsType { + INSECURE_CREDENTIALS = 0, + TLS_CREDENTIALS, + MAX_CREDENTIALS_TYPE +}; // Provide channel credentials according to the given type. Alter the channel // arguments if needed. std::shared_ptr<ChannelCredentials> GetChannelCredentials( - const grpc::string& type, ChannelArguments* args); + TestCredentialsType type, ChannelArguments* args); // Provide server credentials according to the given type. std::shared_ptr<ServerCredentials> GetServerCredentials( - const grpc::string& type); + TestCredentialsType type); + +grpc::string TestCredentialsTypeToString(TestCredentialsType type); } // namespace testing } // namespace grpc