add tests
This commit is contained in:

committed by
Markus Mäkelä

parent
dbfd631fed
commit
8c6ca38a8a
112
maxscale-system-test/mysqlmon_backup.cpp
Normal file
112
maxscale-system-test/mysqlmon_backup.cpp
Normal file
@ -0,0 +1,112 @@
|
||||
/**
|
||||
* MySQL Monitor crash safety test
|
||||
*
|
||||
* - Start MaxScale
|
||||
* - Kill slaves to trigger stale master status
|
||||
* - Kill MaxScale process and restart MaxScale
|
||||
* - Expect stale master status to still exist for the master
|
||||
*/
|
||||
|
||||
#include "testconnections.h"
|
||||
|
||||
void check_master(TestConnections& test)
|
||||
{
|
||||
test.add_result(test.find_master_maxadmin(test.repl) != 0, "Node 0 is not the master");
|
||||
|
||||
test.connect_maxscale();
|
||||
test.try_query(test.conn_rwsplit, "INSERT INTO test.t1 VALUES (1)");
|
||||
test.close_maxscale_connections();
|
||||
}
|
||||
|
||||
void check_slave(TestConnections& test)
|
||||
{
|
||||
test.add_result(test.find_slave_maxadmin(test.repl) == -1, "No slaves found");
|
||||
|
||||
test.connect_maxscale();
|
||||
test.try_query(test.conn_rwsplit, "SELECT * FROM test.t1");
|
||||
test.close_maxscale_connections();
|
||||
}
|
||||
|
||||
void kill_maxscale(TestConnections& test)
|
||||
{
|
||||
test.tprintf("Killing and restarting MaxScale");
|
||||
test.ssh_maxscale(true, "pkill -9 maxscale");
|
||||
test.start_maxscale();
|
||||
|
||||
test.tprintf("Waiting for MaxScale to start");
|
||||
sleep(10);
|
||||
}
|
||||
|
||||
void restart_maxscale(TestConnections& test)
|
||||
{
|
||||
test.restart_maxscale();
|
||||
test.tprintf("Waiting for MaxScale to start");
|
||||
sleep(10);
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
TestConnections test(argc, argv);
|
||||
|
||||
test.connect_maxscale();
|
||||
test.try_query(test.conn_rwsplit, "CREATE OR REPLACE TABLE test.t1(id int)");
|
||||
test.close_maxscale_connections();
|
||||
|
||||
test.tprintf("Checking that node 0 is the master and slaves are OK");
|
||||
check_master(test);
|
||||
check_slave(test);
|
||||
|
||||
test.tprintf("Blocking slaves to trigger stale master status");
|
||||
test.repl->block_node(1);
|
||||
test.repl->block_node(2);
|
||||
test.repl->block_node(3);
|
||||
sleep(5);
|
||||
|
||||
test.tprintf("Checking that master has stale status");
|
||||
check_master(test);
|
||||
|
||||
kill_maxscale(test);
|
||||
|
||||
test.tprintf("Checking that master still has stale status");
|
||||
check_master(test);
|
||||
|
||||
restart_maxscale(test);
|
||||
|
||||
test.tprintf("Checking that master has stale status after restart");
|
||||
check_master(test);
|
||||
|
||||
test.repl->unblock_node(1);
|
||||
test.repl->unblock_node(2);
|
||||
test.repl->unblock_node(3);
|
||||
sleep(5);
|
||||
|
||||
test.tprintf("Checking that node 0 is the master and slaves are OK");
|
||||
check_master(test);
|
||||
check_slave(test);
|
||||
|
||||
test.tprintf("Blocking master to trigger stale slave status");
|
||||
test.repl->block_node(0);
|
||||
sleep(5);
|
||||
|
||||
test.tprintf("Checking that slaves have stale status");
|
||||
check_slave(test);
|
||||
|
||||
kill_maxscale(test);
|
||||
|
||||
test.tprintf("Checking that slaves still have stale status");
|
||||
check_slave(test);
|
||||
|
||||
restart_maxscale(test);
|
||||
|
||||
test.tprintf("Checking that slaves have stale status after restart");
|
||||
check_slave(test);
|
||||
|
||||
test.repl->unblock_node(0);
|
||||
sleep(5);
|
||||
|
||||
test.tprintf("Checking that node 0 is the master and slaves are OK");
|
||||
check_master(test);
|
||||
check_slave(test);
|
||||
|
||||
return test.global_result;
|
||||
}
|
Reference in New Issue
Block a user