Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions source/common/config/config_provider_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ ImmutableConfigProviderBase::ImmutableConfigProviderBase(
: last_updated_(factory_context.timeSource().systemTime()),
config_provider_manager_(config_provider_manager), instance_type_(instance_type),
api_type_(api_type) {
ASSERT(instance_type_ == ConfigProviderInstanceType::Static ||
instance_type_ == ConfigProviderInstanceType::Inline);
config_provider_manager_.bindImmutableConfigProvider(this);
}

Expand Down Expand Up @@ -118,8 +120,6 @@ ConfigProviderManagerImplBase::immutableConfigProviders(ConfigProviderInstanceTy

void ConfigProviderManagerImplBase::bindImmutableConfigProvider(
ImmutableConfigProviderBase* provider) {
ASSERT(provider->instanceType() == ConfigProviderInstanceType::Static ||
provider->instanceType() == ConfigProviderInstanceType::Inline);
ConfigProviderMap::iterator it;
if ((it = immutable_config_providers_map_.find(provider->instanceType())) ==
immutable_config_providers_map_.end()) {
Expand All @@ -133,8 +133,6 @@ void ConfigProviderManagerImplBase::bindImmutableConfigProvider(

void ConfigProviderManagerImplBase::unbindImmutableConfigProvider(
ImmutableConfigProviderBase* provider) {
ASSERT(provider->instanceType() == ConfigProviderInstanceType::Static ||
provider->instanceType() == ConfigProviderInstanceType::Inline);
auto it = immutable_config_providers_map_.find(provider->instanceType());
ASSERT(it != immutable_config_providers_map_.end());
it->second->erase(provider);
Expand Down
27 changes: 27 additions & 0 deletions test/common/config/config_provider_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,33 @@ TEST_F(ConfigProviderImplTest, DuplicateConfigProto) {
subscription.onConfigUpdate(untyped_dummy_configs, "1");
}

// An empty config provider tests on base class' constructor.
class InlineDummyConfigProvider : public ImmutableConfigProviderBase {
public:
InlineDummyConfigProvider(Server::Configuration::FactoryContext& factory_context,
DummyConfigProviderManager& config_provider_manager,
ConfigProviderInstanceType instance_type)
: ImmutableConfigProviderBase(factory_context, config_provider_manager, instance_type,
ApiType::Full) {}
ConfigConstSharedPtr getConfig() const override { return nullptr; }
std::string getConfigVersion() const override { return ""; }
const Protobuf::Message* getConfigProto() const override { return nullptr; }
};

class ConfigProviderImplDeathTest : public ConfigProviderImplTest {};

TEST_F(ConfigProviderImplDeathTest, AssertionFailureOnIncorrectInstanceType) {
initialize();

InlineDummyConfigProvider foo(factory_context_, *provider_manager_,
ConfigProviderInstanceType::Inline);
InlineDummyConfigProvider bar(factory_context_, *provider_manager_,
ConfigProviderInstanceType::Static);
EXPECT_DEATH(InlineDummyConfigProvider(factory_context_, *provider_manager_,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to use EXPECT_DEBUG_DEATH().

@stevenzzzz stevenzzzz May 16, 2019

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right

ConfigProviderInstanceType::Xds),
"");
}

// Tests that the base ConfigProvider*s are handling registration with the
// /config_dump admin handler as well as generic bookkeeping such as timestamp
// updates.
Expand Down