aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/util/test_credentials_provider.cc
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-11-29 12:31:14 -0800
committerGravatar GitHub <noreply@github.com>2016-11-29 12:31:14 -0800
commit3b45b8d60b9f0a1678f5f497345e21f7bc71675a (patch)
tree5d4f24b130613123358609bbcf742c0a7d6940a8 /test/cpp/util/test_credentials_provider.cc
parent3b04e7e3795f9f5e339ae7dfc40babb19485cfaf (diff)
Revert "Test credentials provider update"
Diffstat (limited to 'test/cpp/util/test_credentials_provider.cc')
-rw-r--r--test/cpp/util/test_credentials_provider.cc52
1 files changed, 42 insertions, 10 deletions
diff --git a/test/cpp/util/test_credentials_provider.cc b/test/cpp/util/test_credentials_provider.cc
index 909b02a701..0456b96667 100644
--- a/test/cpp/util/test_credentials_provider.cc
+++ b/test/cpp/util/test_credentials_provider.cc
@@ -43,9 +43,25 @@
#include "test/core/end2end/data/ssl_test_data.h"
namespace grpc {
-namespace testing {
namespace {
+using grpc::testing::CredentialTypeProvider;
+
+// Provide test credentials. Thread-safe.
+class CredentialsProvider {
+ public:
+ virtual ~CredentialsProvider() {}
+
+ virtual void AddSecureType(
+ const grpc::string& type,
+ std::unique_ptr<CredentialTypeProvider> type_provider) = 0;
+ virtual std::shared_ptr<ChannelCredentials> GetChannelCredentials(
+ const grpc::string& type, ChannelArguments* args) = 0;
+ virtual std::shared_ptr<ServerCredentials> GetServerCredentials(
+ const grpc::string& type) = 0;
+ virtual std::vector<grpc::string> GetSecureCredentialsTypeList() = 0;
+};
+
class DefaultCredentialsProvider : public CredentialsProvider {
public:
~DefaultCredentialsProvider() override {}
@@ -129,21 +145,37 @@ class DefaultCredentialsProvider : public CredentialsProvider {
added_secure_type_providers_;
};
+gpr_once g_once_init_provider = GPR_ONCE_INIT;
CredentialsProvider* g_provider = nullptr;
-} // namespace
+void CreateDefaultProvider() { g_provider = new DefaultCredentialsProvider; }
-CredentialsProvider* GetCredentialsProvider() {
- if (g_provider == nullptr) {
- g_provider = new DefaultCredentialsProvider;
- }
+CredentialsProvider* GetProvider() {
+ gpr_once_init(&g_once_init_provider, &CreateDefaultProvider);
return g_provider;
}
-void SetCredentialsProvider(CredentialsProvider* provider) {
- // For now, forbids overriding provider.
- GPR_ASSERT(g_provider == nullptr);
- g_provider = provider;
+} // namespace
+
+namespace testing {
+
+void AddSecureType(const grpc::string& type,
+ std::unique_ptr<CredentialTypeProvider> type_provider) {
+ GetProvider()->AddSecureType(type, std::move(type_provider));
+}
+
+std::shared_ptr<ChannelCredentials> GetChannelCredentials(
+ const grpc::string& type, ChannelArguments* args) {
+ return GetProvider()->GetChannelCredentials(type, args);
+}
+
+std::shared_ptr<ServerCredentials> GetServerCredentials(
+ const grpc::string& type) {
+ return GetProvider()->GetServerCredentials(type);
+}
+
+std::vector<grpc::string> GetSecureCredentialsTypeList() {
+ return GetProvider()->GetSecureCredentialsTypeList();
}
} // namespace testing