Skip to content

Commit 32bdce3

Browse files
authored
test: deflaking mysql_integration_test (#6056)
Risk Level: n/a (test only) Testing: 1k runs pass cleanly Docs Changes: n/a Release Notes: n/a Fixes #6051 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
1 parent 2e6bd24 commit 32bdce3

2 files changed

Lines changed: 7 additions & 51 deletions

File tree

test/extensions/filters/network/mysql_proxy/mysql_integration_test.cc

Lines changed: 6 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,6 @@ class MySQLIntegrationTest : public testing::TestWithParam<Network::Address::IpV
4747
}
4848
};
4949

50-
int mysqlGetCounterValueFromStats(const std::string& msg, const std::string& mysql_stat,
51-
int& counter) {
52-
Json::ObjectSharedPtr stats = Json::Factory::loadFromString(msg);
53-
for (const Json::ObjectSharedPtr& stat : stats->getObjectArray("stats")) {
54-
std::string entry = stat->getString("name");
55-
if (!entry.compare(mysql_stat)) {
56-
counter = stat->getInteger("value");
57-
return 0;
58-
}
59-
}
60-
return -1;
61-
}
62-
6350
INSTANTIATE_TEST_SUITE_P(IpVersions, MySQLIntegrationTest,
6451
testing::ValuesIn(TestEnvironment::getIpVersionsForTest()));
6552

@@ -77,16 +64,7 @@ TEST_P(MySQLIntegrationTest, MySQLStatsNewSessionTest) {
7764
ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());
7865
}
7966

80-
BufferingStreamDecoderPtr response =
81-
IntegrationUtil::makeSingleRequest(lookupPort("admin"), "GET", "/stats?format=json", "",
82-
Http::CodecClient::Type::HTTP1, version_);
83-
84-
int ret = 0;
85-
int counter = 0;
86-
std::string mysql_stat = "mysql.mysql_stats.sessions";
87-
ret = mysqlGetCounterValueFromStats(response->body(), mysql_stat, counter);
88-
EXPECT_EQ(ret, 0);
89-
EXPECT_EQ(counter, SESSIONS);
67+
test_server_->waitForCounterGe("mysql.mysql_stats.sessions", SESSIONS);
9068
}
9169

9270
/**
@@ -124,20 +102,8 @@ TEST_P(MySQLIntegrationTest, MysqLoginTest) {
124102
tcp_client->close();
125103
ASSERT_TRUE(fake_upstream_connection->waitForDisconnect());
126104

127-
// Verify counters
128-
BufferingStreamDecoderPtr response =
129-
IntegrationUtil::makeSingleRequest(lookupPort("admin"), "GET", "/stats?format=json", "",
130-
Http::CodecClient::Type::HTTP1, version_);
131-
int ret = 0;
132-
int counter = 0;
133-
std::string mysql_stat = "mysql.mysql_stats.login_attempts";
134-
ret = mysqlGetCounterValueFromStats(response->body(), mysql_stat, counter);
135-
EXPECT_EQ(ret, 0);
136-
EXPECT_EQ(counter, 1);
137-
mysql_stat = "mysql.mysql_stats.login_failures";
138-
ret = mysqlGetCounterValueFromStats(response->body(), mysql_stat, counter);
139-
EXPECT_EQ(ret, 0);
140-
EXPECT_EQ(counter, 0);
105+
test_server_->waitForCounterGe("mysql.mysql_stats.login_attempts", 1);
106+
EXPECT_EQ(test_server_->counter("mysql.mysql_stats.login_failures")->value(), 0);
141107
}
142108

143109
/**
@@ -181,19 +147,9 @@ TEST_P(MySQLIntegrationTest, MySQLUnitTestMultiClientsLoop) {
181147
}
182148

183149
// Verify counters: CLIENT_NUM login attempts, no failures
184-
BufferingStreamDecoderPtr response =
185-
IntegrationUtil::makeSingleRequest(lookupPort("admin"), "GET", "/stats?format=json", "",
186-
Http::CodecClient::Type::HTTP1, version_);
187-
int ret = 0;
188-
int counter = 0;
189-
std::string mysql_stat = "mysql.mysql_stats.login_attempts";
190-
ret = mysqlGetCounterValueFromStats(response->body(), mysql_stat, counter);
191-
EXPECT_EQ(ret, 0);
192-
EXPECT_EQ(counter, CLIENT_NUM);
193-
mysql_stat = "mysql.mysql_stats.login_failures";
194-
ret = mysqlGetCounterValueFromStats(response->body(), mysql_stat, counter);
195-
EXPECT_EQ(ret, 0);
196-
EXPECT_EQ(counter, 0);
150+
test_server_->waitForCounterGe("mysql.mysql_stats.login_attempts", CLIENT_NUM);
151+
EXPECT_EQ(test_server_->counter("mysql.mysql_stats.login_attempts")->value(), CLIENT_NUM);
152+
EXPECT_EQ(test_server_->counter("mysql.mysql_stats.login_failures")->value(), 0);
197153
}
198154

199155
} // namespace MySQLProxy

test/extensions/filters/network/mysql_proxy/mysql_test_config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ static_resources:
1818
address:
1919
socket_address:
2020
address: 0.0.0.0
21-
port_value: 3307
21+
port_value: 0
2222
filter_chains:
2323
- filters:
2424
- name: envoy.filters.network.mysql_proxy

0 commit comments

Comments
 (0)