diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index df9aae7436f..ce8e4d2a109 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -1365,25 +1365,42 @@ 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))); - -INSTANTIATE_TEST_CASE_P( - End2endServerTryCancel, End2endServerTryCancelTest, - ::testing::Values(TestScenario(false, kInsecureCredentialsType))); - -INSTANTIATE_TEST_CASE_P( - ProxyEnd2end, ProxyEnd2endTest, - ::testing::Values(TestScenario(false, kInsecureCredentialsType), - TestScenario(false, kTlsCredentialsType), - TestScenario(true, kInsecureCredentialsType), - TestScenario(true, kTlsCredentialsType))); +std::vector CreateTestScenarios(bool use_proxy, + bool test_insecure, + bool test_secure) { + std::vector scenarios; + std::vector credentials_types; + if (test_secure) { + credentials_types = GetSecureCredentialsTypeList(); + } + if (test_insecure) { + credentials_types.push_back(kInsecureCredentialsType); + } + for (auto it = credentials_types.begin(); it != credentials_types.end(); + ++it) { + scenarios.push_back(TestScenario(false, *it)); + if (use_proxy) { + scenarios.push_back(TestScenario(true, *it)); + } + } + return scenarios; +} + +INSTANTIATE_TEST_CASE_P(End2end, End2endTest, + ::testing::ValuesIn(CreateTestScenarios(false, true, + true))); + +INSTANTIATE_TEST_CASE_P(End2endServerTryCancel, End2endServerTryCancelTest, + ::testing::ValuesIn(CreateTestScenarios(false, true, + false))); + +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 f8380cdb65a..69651700feb 100644 --- a/test/cpp/util/test_credentials_provider.cc +++ b/test/cpp/util/test_credentials_provider.cc @@ -70,5 +70,11 @@ std::shared_ptr GetServerCredentials( return nullptr; } +std::vector GetSecureCredentialsTypeList() { + std::vector types; + types.push_back(kTlsCredentialsType); + return types; +} + } // namespace testing } // namespace grpc diff --git a/test/cpp/util/test_credentials_provider.h b/test/cpp/util/test_credentials_provider.h index 4f25e3be66d..f4105d94b83 100644 --- a/test/cpp/util/test_credentials_provider.h +++ b/test/cpp/util/test_credentials_provider.h @@ -55,6 +55,9 @@ std::shared_ptr GetChannelCredentials( std::shared_ptr GetServerCredentials( const grpc::string& type); +// Provide a list of secure credentials type. +std::vector GetSecureCredentialsTypeList(); + } // namespace testing } // namespace grpc