Files
MaxScale/maxscale-system-test/slave_failover.cpp
Niclas Antti c447e5cf15 Uncrustify maxscale
See script directory for method. The script to run in the top level
MaxScale directory is called maxscale-uncrustify.sh, which uses
another script, list-src, from the same directory (so you need to set
your PATH). The uncrustify version was 0.66.
2018-09-09 22:26:19 +03:00

54 lines
1.7 KiB
C++

/**
* @file slave_failover.cpp Check how Maxscale works in case of one slave failure, only one slave is
*configured
*
* - Connect to RWSplit
* - find which backend slave is used for connection
* - blocm mariadb on the slave with firewall
* - wait 60 seconds
* - check which slave is used for connection now, expecting any other slave
* - check warning in the error log about broken slave
* - unblock mariadb backend (restore slave firewall settings)
* - check if Maxscale still alive
*/
#include "testconnections.h"
int main(int argc, char* argv[])
{
TestConnections test(argc, argv);
printf("Connecting to RWSplit");
test.set_timeout(60);
test.add_result(test.maxscales->connect_rwsplit(0), "Error connection to RWSplit! Exiting");
sleep(5);
test.tprintf("Checking current slave");
int res = 0;
int old_slave = test.find_connected_slave(0, &res);
test.add_result(res, "no current slave");
test.tprintf("Setup firewall to block mysql on old slave (oldslave is node %d)", old_slave);
test.add_result((old_slave < 0) || (old_slave >= test.repl->N), "Active slave is not found");
test.repl->block_node(old_slave);
test.tprintf("Waiting for MaxScale to find a new slave");
test.stop_timeout();
sleep(10);
test.set_timeout(20);
int current_slave = test.find_connected_slave(0, &res);
test.add_result((current_slave == old_slave) || (current_slave < 0), "No failover happened");
test.tprintf("Unblock old node");
test.repl->unblock_node(old_slave);
test.maxscales->close_rwsplit(0);
test.check_maxscale_alive(0);
test.stop_timeout();
test.repl->fix_replication();
return test.global_result;
}