Revert "Revert "CompositeChannelCredentials: Comparator implementation ( #28902)" (#28919)" (#28918)

* CompositeChannelCredentials: Comparator implementation retry

* Fix test
pull/28942/head
Yash Tibrewal 3 years ago committed by GitHub
parent 9e7453409a
commit 3f19e0cc02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/core/lib/security/credentials/composite/composite_credentials.cc
  2. 13
      src/core/lib/security/credentials/composite/composite_credentials.h
  3. 48
      test/core/security/credentials_test.cc

@ -35,6 +35,10 @@
#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/surface/api_trace.h"
namespace grpc_core {
const char kCredentialsTypeComposite[] = "composite";
} // namespace grpc_core
/* -- Composite call credentials. -- */
static void composite_call_metadata_cb(void* arg, grpc_error_handle error);

@ -30,12 +30,16 @@
/* -- Composite channel credentials. -- */
namespace grpc_core {
extern const char kCredentialsTypeComposite[];
}
class grpc_composite_channel_credentials : public grpc_channel_credentials {
public:
grpc_composite_channel_credentials(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds)
: grpc_channel_credentials(channel_creds->type()),
: grpc_channel_credentials(grpc_core::kCredentialsTypeComposite),
inner_creds_(std::move(channel_creds)),
call_creds_(std::move(call_creds)) {}
@ -64,9 +68,10 @@ class grpc_composite_channel_credentials : 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 grpc_core::QsortCompare(
static_cast<const grpc_channel_credentials*>(this), other);
auto* o = static_cast<const grpc_composite_channel_credentials*>(other);
int r = inner_creds_->cmp(o->inner_creds_.get());
if (r != 0) return r;
return call_creds_->cmp(o->call_creds_.get());
}
grpc_core::RefCountedPtr<grpc_channel_credentials> inner_creds_;

@ -3629,6 +3629,54 @@ TEST(CredentialsTest, TestHttpRequestSSLCredentialsSingleton) {
EXPECT_EQ(creds_1, creds_2);
}
TEST(CredentialsTest, TestCompositeChannelCredsCompareSuccess) {
auto* insecure_creds = grpc_insecure_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(
insecure_creds, fake_creds.get(), nullptr);
EXPECT_EQ(composite_creds_1->cmp(composite_creds_2), 0);
EXPECT_EQ(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_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(fake_channel_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