diff --git a/test/extensions/clusters/aggregate/cluster_test.cc b/test/extensions/clusters/aggregate/cluster_test.cc index b0abba35e1323..f7931d9b8ea79 100644 --- a/test/extensions/clusters/aggregate/cluster_test.cc +++ b/test/extensions/clusters/aggregate/cluster_test.cc @@ -123,6 +123,9 @@ class AggregateClusterTest : public Event::TestUsingSimulatedTime, public testin setupPrioritySet(); + EXPECT_CALL(*primary_info_, resourceManager(Upstream::ResourcePriority::Default)).Times(0); + EXPECT_CALL(*secondary_info_, resourceManager(Upstream::ResourcePriority::Default)).Times(0); + ON_CALL(primary_, loadBalancer()).WillByDefault(ReturnRef(primary_load_balancer_)); ON_CALL(secondary_, loadBalancer()).WillByDefault(ReturnRef(secondary_load_balancer_)); @@ -131,6 +134,14 @@ class AggregateClusterTest : public Event::TestUsingSimulatedTime, public testin lb_ = lb_factory_->create(lb_params_); } + Stats::Gauge& getCircuitBreakersStatByPriority(std::string priority, std::string stat) { + std::string stat_name_ = "circuit_breakers." + priority + "." + stat; + Stats::StatNameManagedStorage statStore(stat_name_, + cluster_->info()->statsScope().symbolTable()); + return cluster_->info()->statsScope().gaugeFromStatName(statStore.statName(), + Stats::Gauge::ImportMode::Accumulate); + } + NiceMock server_context_; Ssl::MockContextManager ssl_context_manager_; @@ -169,7 +180,46 @@ class AggregateClusterTest : public Event::TestUsingSimulatedTime, public testin )EOF"; }; // namespace Aggregate -TEST_F(AggregateClusterTest, CircuitBreakerDefaultsTest) {} +TEST_F(AggregateClusterTest, CircuitBreakerDefaultsTest) { + initialize(default_yaml_config_); + + Upstream::ResourceManager& resource_manager = + cluster_->info()->resourceManager(Upstream::ResourcePriority::Default); + + // the default circuit breaker values are: + // max_connections : 1024 + // max_pending_requests : 1024 + // max_requests : 1024 + // max_retries : 3 + + EXPECT_EQ(1024U, resource_manager.connections().max()); + for (int i = 0; i < 1024; ++i) { + resource_manager.connections().inc(); + } + EXPECT_EQ(1024U, resource_manager.connections().count()); + EXPECT_FALSE(resource_manager.connections().canCreate()); + + EXPECT_EQ(1024U, resource_manager.pendingRequests().max()); + for (int i = 0; i < 1024; ++i) { + resource_manager.pendingRequests().inc(); + } + EXPECT_EQ(1024U, resource_manager.pendingRequests().count()); + EXPECT_FALSE(resource_manager.pendingRequests().canCreate()); + + EXPECT_EQ(1024U, resource_manager.requests().max()); + for (int i = 0; i < 1024; ++i) { + resource_manager.requests().inc(); + } + EXPECT_EQ(1024U, resource_manager.requests().count()); + EXPECT_FALSE(resource_manager.requests().canCreate()); + + EXPECT_EQ(3U, resource_manager.retries().max()); + for (int i = 0; i < 3; ++i) { + resource_manager.retries().inc(); + } + EXPECT_EQ(3U, resource_manager.retries().count()); + EXPECT_FALSE(resource_manager.retries().canCreate()); +} TEST_F(AggregateClusterTest, CircuitBreakerMaxConnectionsTest) {}