HttpRequestSSLCredentials: Comparator implementation (#28900)

* HttpRequestSSLCredentials: Comparator implementation

* Unused argument

* Singleton HttpRequestSSLCredentials
pull/28929/head
Yash Tibrewal 3 years ago committed by GitHub
parent a72c8ebb7d
commit 778ad437b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      src/core/lib/http/httpcli_security_connector.cc
  2. 63
      test/core/security/credentials_test.cc

@ -192,17 +192,20 @@ class HttpRequestSSLCredentials : public grpc_channel_credentials {
}
private:
int cmp_impl(const grpc_channel_credentials* other) const override {
// TODO(yashykt): Check if we can do something better here
return QsortCompare(static_cast<const grpc_channel_credentials*>(this),
other);
int cmp_impl(const grpc_channel_credentials* /* other */) const override {
// There's no differentiating factor between two HttpRequestSSLCredentials
// objects.
return 0;
}
};
} // namespace
RefCountedPtr<grpc_channel_credentials> CreateHttpRequestSSLCredentials() {
return MakeRefCounted<HttpRequestSSLCredentials>();
// Create a singleton object for HttpRequestSSLCredentials so that channels to
// the same target with HttpRequestSSLCredentials can reuse the subchannels.
static auto* creds = new HttpRequestSSLCredentials();
return creds->Ref();
}
} // namespace grpc_core

@ -45,6 +45,7 @@
#include "src/core/lib/gpr/tmpfile.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/http/httpcli.h"
#include "src/core/lib/http/httpcli_ssl_credentials.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/credentials/composite/composite_credentials.h"
#include "src/core/lib/security/credentials/external/aws_external_account_credentials.h"
@ -3615,6 +3616,68 @@ TEST(CredentialsTest, TestFakeCallCredentialsCompareFailure) {
grpc_call_credentials_release(md_creds);
}
TEST(CredentialsTest, TestHttpRequestSSLCredentialsCompare) {
auto creds_1 = grpc_core::CreateHttpRequestSSLCredentials();
auto creds_2 = grpc_core::CreateHttpRequestSSLCredentials();
EXPECT_EQ(creds_1->cmp(creds_2.get()), 0);
EXPECT_EQ(creds_2->cmp(creds_1.get()), 0);
}
TEST(CredentialsTest, TestHttpRequestSSLCredentialsSingleton) {
auto creds_1 = grpc_core::CreateHttpRequestSSLCredentials();
auto creds_2 = grpc_core::CreateHttpRequestSSLCredentials();
EXPECT_EQ(creds_1, creds_2);
}
TEST(CredentialsTest, TestCompositeChannelCredsCompareSuccess) {
auto* insecure_creds = grpc_insecure_credentials_create();
auto* fake_channel_creds = grpc_fake_transport_security_credentials_create();
auto fake_creds = grpc_core::MakeRefCounted<fake_call_creds>();
auto* composite_creds_1 = grpc_composite_channel_credentials_create(
insecure_creds, fake_creds.get(), nullptr);
auto* composite_creds_2 = grpc_composite_channel_credentials_create(
fake_channel_creds, fake_creds.get(), nullptr);
EXPECT_NE(composite_creds_1->cmp(composite_creds_2), 0);
EXPECT_NE(composite_creds_2->cmp(composite_creds_1), 0);
grpc_channel_credentials_release(insecure_creds);
grpc_channel_credentials_release(composite_creds_1);
grpc_channel_credentials_release(composite_creds_2);
}
TEST(CredentialsTest,
TestCompositeChannelCredsCompareFailureDifferentChannelCreds) {
auto* insecure_creds = grpc_insecure_credentials_create();
auto fake_creds = grpc_core::MakeRefCounted<fake_call_creds>();
auto* md_creds = grpc_md_only_test_credentials_create("key", "value", false);
auto* composite_creds_1 = grpc_composite_channel_credentials_create(
insecure_creds, fake_creds.get(), nullptr);
auto* composite_creds_2 = grpc_composite_channel_credentials_create(
insecure_creds, md_creds, nullptr);
EXPECT_NE(composite_creds_1->cmp(composite_creds_2), 0);
EXPECT_NE(composite_creds_2->cmp(composite_creds_1), 0);
grpc_channel_credentials_release(insecure_creds);
grpc_call_credentials_release(md_creds);
grpc_channel_credentials_release(composite_creds_1);
grpc_channel_credentials_release(composite_creds_2);
}
TEST(CredentialsTest,
TestCompositeChannelCredsCompareFailureDifferentCallCreds) {
auto* insecure_creds = grpc_insecure_credentials_create();
auto fake_creds = grpc_core::MakeRefCounted<fake_call_creds>();
auto* md_creds = grpc_md_only_test_credentials_create("key", "value", false);
auto* composite_creds_1 = grpc_composite_channel_credentials_create(
insecure_creds, fake_creds.get(), nullptr);
auto* composite_creds_2 = grpc_composite_channel_credentials_create(
insecure_creds, md_creds, nullptr);
EXPECT_NE(composite_creds_1->cmp(composite_creds_2), 0);
EXPECT_NE(composite_creds_2->cmp(composite_creds_1), 0);
grpc_channel_credentials_release(insecure_creds);
grpc_call_credentials_release(md_creds);
grpc_channel_credentials_release(composite_creds_1);
grpc_channel_credentials_release(composite_creds_2);
}
TEST(CredentialsTest, TestXdsCredentialsCompareSucces) {
auto* insecure_creds = grpc_insecure_credentials_create();
auto* xds_creds_1 = grpc_xds_credentials_create(insecure_creds);

Loading…
Cancel
Save