Backport to 2.2: Simplify mxs1743_rconn_bitmask

The test now uses maxctrl to count how many connections there are. This
helps avoid creating new users on the database and works around the slave
syncing problems.
This commit is contained in:
Markus Mäkelä 2018-11-27 09:02:00 +02:00
parent 9284e8e64c
commit bec33be672
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19

View File

@ -39,53 +39,33 @@ int main(int argc, char** argv)
test.tprintf("Checking that both the master and slave are used");
std::vector<MYSQL*> connections;
test.set_timeout(60);
test.repl->connect();
execute_query_silent(test.repl->nodes[0], "DROP USER IF EXISTS 'mxs1743'@'%'");
test.try_query(test.repl->nodes[0], "%s", "CREATE USER 'mxs1743'@'%' IDENTIFIED BY 'mxs1743'");
test.try_query(test.repl->nodes[0], "%s", "GRANT ALL ON *.* TO 'mxs1743'@'%'");
test.tprintf("Syncing slaves");
test.stop_timeout();
test.repl->fix_replication();
test.repl->sync_slaves();
test.set_timeout(60);
test.tprintf("Opening new connections to verify readconnroute works");
for (int i = 0; i < 20; i++)
{
// Open a connection and make sure it works
test.set_timeout(20);
MYSQL* conn = open_conn(test.maxscales->readconn_master_port[0], test.maxscales->IP[0],
"mxs1743", "mxs1743", false);
MYSQL* conn = test.maxscales->open_readconn_master_connection();
test.try_query(conn, "SELECT 1");
connections.push_back(conn);
test.stop_timeout();
}
// Give the connections a few seconds to establish
sleep(5);
int rc;
char* s1 = test.maxscales->ssh_node_output(0, "maxctrl --tsv list servers|grep server1|cut -f 4", true, &rc);
char* s2 = test.maxscales->ssh_node_output(0, "maxctrl --tsv list servers|grep server2|cut -f 4", true, &rc);
test.tprintf("Checking the number of connections");
std::string query = "SELECT COUNT(*) AS connections FROM information_schema.processlist WHERE user = 'mxs1743'";
char master_connections[1024];
char slave_connections[1024];
test.set_timeout(60);
find_field(test.repl->nodes[0], query.c_str(), "connections", master_connections);
find_field(test.repl->nodes[1], query.c_str(), "connections", slave_connections);
test.expect(strcmp(master_connections, slave_connections) == 0,
test.expect(strcmp(s1, s2) == 0,
"Master and slave shoud have the same amount of connections: %s != %s",
master_connections, slave_connections);
s1, s2);
for (auto a: connections)
free(s1);
free(s2);
for (auto a : connections)
{
mysql_close(a);
}
execute_query_silent(test.repl->nodes[0], "DROP USER 'mxs1743'@'%'");
test.repl->disconnect();
return test.global_result;
}