test: Fix reg_test_4556-ssl_error_queue-t by using correct backend port and adding diagnostics

- Use cl.mysql_host and cl.mysql_port for direct backend connections.
- Add descriptive diagnostic summary at the start of the test.
- Improve logging in connection creation and warmup phases.
- Prometheus endpoint updated to proxysql:6070 (already in file).
pull/5435/head
Rene Cannao 2 months ago
parent 076a71bc8a
commit 140ca03c9b

@ -350,6 +350,7 @@ void* force_ssl_pre_handshake_failure(void* arg) {
MYSQL* create_server_conn(CommandLine& cl) {
MYSQL* server = mysql_init(NULL);
diag("Connecting to backend MySQL at %s:%d as %s", cl.mysql_host, cl.mysql_port, cl.mysql_username);
if (
!mysql_real_connect(
server,
@ -363,8 +364,8 @@ MYSQL* create_server_conn(CommandLine& cl) {
)
) {
diag(
"Failed to create conn to MySQL error=%s port=%d",
mysql_error(server), cl.mysql_port
"Failed to create direct backend conn to MySQL host=%s port=%d error=%s",
cl.mysql_host, cl.mysql_port, mysql_error(server)
);
return NULL;
}
@ -412,9 +413,12 @@ pair<uint32_t,vector<MYSQL*>> warmup_conn_pool(CommandLine& cl, uint32_t CONNS_T
for (int i = 0; i < CONNS_TOTAL; i++) {
MYSQL* myconn = mysql_init(NULL);
if (i % 20 == 0) {
diag("Connecting to ProxySQL frontend for warmup at %s:%d as %s (Conn %d/%d)", cl.host, cl.port, cl.username, i+1, CONNS_TOTAL);
}
if (!mysql_real_connect(myconn, cl.host, cl.username, cl.password, NULL, cl.port, NULL, 0)) {
diag(
"Failed to connect addr=%s port=%d user=%s pass=%s err=%s",
"Failed to connect to ProxySQL frontend addr=%s port=%d user=%s pass=%s err=%s",
cl.host, cl.port, cl.username, cl.password, mysql_error(myconn)
);
return { EXIT_FAILURE, {} };
@ -575,7 +579,7 @@ const uint32_t PING_INTV_MS { 1000 };
pair<int,double> fetch_metric_val(CommandLine& cl, const string& metric_id) {
uint64_t curl_res_code = 0;
string curl_res_data {};
const char URL[] { "http://localhost:6070/metrics/" };
const char URL[] { "http://proxysql:6070/metrics/" };
diag("Fetching metric values via RESTAPI URL=%s", URL);
CURLcode code = perform_simple_get(URL, curl_res_code, curl_res_data);
@ -738,17 +742,29 @@ int main(int argc, char** argv) {
return EXIT_FAILURE;
}
diag("=== Regression Test #4556: SSL Error Queue Cleanup ===");
diag("This test verifies that SSL errors do not pollute the OpenSSL error queue");
diag("for either frontend or backend connections, which could lead to");
diag("spurious failures on subsequent, unrelated connections.");
diag("The test covers:");
diag("1. Frontend SSL failures (handshake, cert errors, socket closure).");
diag("2. Backend SSL failures (killed connections during PING/traffic).");
diag("3. Verification that other connections handled by the same thread remain healthy.");
diag("=======================================================");
diag("Init rand seed with current time");
srand(time(NULL));
MYSQL* admin = mysql_init(NULL);
diag("Connecting to ProxySQL Admin at %s:%d as %s", cl.host, cl.admin_port, cl.admin_username);
if (!mysql_real_connect(admin, cl.host, cl.admin_username, cl.admin_password, NULL, cl.admin_port, NULL, 0)) {
fprintf(stderr, "File %s, line %d, Error: %s\n", __FILE__, __LINE__, mysql_error(admin));
return EXIT_FAILURE;
}
// Disable query retry; required for further tests
diag("Disabling mysql-query_retries_on_failure and enabling REST API");
MYSQL_QUERY_T(admin, "SET mysql-query_retries_on_failure=0");
MYSQL_QUERY_T(admin, "LOAD MYSQL VARIABLES TO RUNTIME");
@ -757,6 +773,7 @@ int main(int argc, char** argv) {
MYSQL_QUERY_T(admin, "LOAD ADMIN VARIABLES TO RUNTIME");
// Update default hostgroup for user with target hostgroup
diag("Configuring user %s with default_hostgroup=%d", cl.username, HG_ID);
MYSQL_QUERY_T(admin,
("UPDATE mysql_users SET default_hostgroup=" + std::to_string(HG_ID) +
" WHERE username='" + cl.username + "'").c_str()
@ -764,10 +781,12 @@ int main(int argc, char** argv) {
MYSQL_QUERY_T(admin, "LOAD MYSQL USERS TO RUNTIME");
// Disable all queries rules if present; not required
diag("Disabling all query rules");
MYSQL_QUERY_T(admin, "UPDATE mysql_query_rules SET active=0");
MYSQL_QUERY_T(admin, "LOAD MYSQL QUERY RULES TO RUNTIME");
// Update MySQL servers config
diag("Enabling SSL for HG_ID=%d in mysql_servers", HG_ID);
MYSQL_QUERY_T(admin,
("UPDATE mysql_servers SET use_ssl=1 WHERE hostgroup_id=" + std::to_string(HG_ID)).c_str()
);

Loading…
Cancel
Save