- Resolve compilation errors by moving variable declarations to the top of main.
- Add detailed diagnostic headers and connection context.
- Implement self-configuration logic to ensure Hostgroup 1/0 availability and correct routing.
- Add granular step-by-step debug information.
diag("Failed to get the required environmental variables.");
diag("ERROR: Failed to get the required environmental variables.");
return-1;
}
diag("Connection Context:");
diag(" - Target Host: %s",cl.host);
diag(" - Admin Port: %d",cl.admin_port);
diag(" - Main Port: %d",cl.port);
diag(" - User: %s",cl.username);
plan(4*3);
// Initialize Admin connection
MYSQL*proxysql_admin=mysql_init(NULL);
proxysql_admin =mysql_init(NULL);
if(!proxysql_admin){
fprintf(stderr,"File %s, line %d, Error: %s\n",__FILE__,__LINE__,mysql_error(proxysql_admin));
return-1;
@ -68,9 +94,23 @@ int main(int argc, char** argv) {
fprintf(stderr,"File %s, line %d, Error: %s\n",__FILE__,__LINE__,mysql_error(proxysql_admin));
return-1;
}
diag("Successfully connected to ProxySQL Admin.");
// SELF-CONFIGURATION: Ensure Hostgroup 1 and 0 are usable and isolated
diag("Configuring ProxySQL environment for the test...");
MYSQL_QUERY__(proxysql_admin,"DELETE FROM mysql_query_rules");
// Ensure at least one server is in HG 1 and HG 0
MYSQL_QUERY__(proxysql_admin,"INSERT INTO mysql_servers (hostgroup_id, hostname, port) SELECT 1, hostname, port FROM mysql_servers WHERE status='ONLINE' LIMIT 3");
MYSQL_QUERY__(proxysql_admin,"INSERT INTO mysql_servers (hostgroup_id, hostname, port) SELECT 0, hostname, port FROM mysql_servers WHERE hostgroup_id=1 LIMIT 1");