refactored tests (#147)

This commit is contained in:
Timofey Turenko
2017-12-08 12:23:04 +02:00
committed by GitHub
parent c6daf8c26b
commit 3c88bf1ec6
253 changed files with 5265 additions and 3649 deletions

View File

@ -18,32 +18,35 @@ void test_all_ok(TestConnections *Test)
/** Insert should work */
Test->set_timeout(30);
Test->tprintf("Testing that writes and reads to all services work\n");
Test->add_result(execute_query_silent(Test->conn_rwsplit,
Test->add_result(execute_query_silent(Test->maxscales->conn_rwsplit[0],
"INSERT INTO test.readonly VALUES (1) -- fail_instantly"),
"Query to service with 'fail_instantly' should succeed\n");
Test->set_timeout(30);
Test->add_result(execute_query_silent(Test->conn_master,
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"INSERT INTO test.readonly VALUES (1) -- fail_on_write"),
"Query to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->add_result(execute_query_silent(Test->conn_slave,
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"INSERT INTO test.readonly VALUES (1) -- error_on_write"),
"Query to service with 'error_on_write' should succeed\n");
Test->set_timeout(30);
Test->add_result(execute_query_silent(Test->conn_rwsplit, "SELECT * FROM test.readonly -- fail_instantly"),
Test->add_result(execute_query_silent(Test->maxscales->conn_rwsplit[0],
"SELECT * FROM test.readonly -- fail_instantly"),
"Query to service with 'fail_instantly' should succeed\n");
Test->set_timeout(30);
Test->add_result(execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"Query to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"Query to service with 'error_on_write' should succeed\n");
}
void test_basic(TestConnections *Test)
{
/** Check that everything is OK before blocking the master */
Test->connect_maxscale();
Test->maxscales->connect_maxscale(0);
test_all_ok(Test);
/** Block master */
@ -54,76 +57,84 @@ void test_basic(TestConnections *Test)
/** Select to service with 'fail_instantly' should close the connection */
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_instantly'\n");
Test->add_result(!execute_query_silent(Test->conn_rwsplit, "SELECT * FROM test.readonly -- fail_instantly"),
Test->add_result(!execute_query_silent(Test->maxscales->conn_rwsplit[0],
"SELECT * FROM test.readonly -- fail_instantly"),
"SELECT to service with 'fail_instantly' should fail\n");
/** Other services should still work */
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'error_on_write' should succeed\n");
/** Insert to 'fail_on_write' should fail and close the connection */
Test->set_timeout(30);
Test->tprintf("INSERT to 'fail_on_write'\n");
Test->add_result(!execute_query_silent(Test->conn_master,
Test->add_result(!execute_query_silent(Test->maxscales->conn_master[0],
"INSERT INTO test.readonly VALUES (1) -- fail_on_write"),
"INSERT to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(!execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(!execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should fail after an INSERT\n");
/** Insert to 'error_on_write' should fail but subsequent SELECTs should work */
Test->set_timeout(30);
Test->tprintf("INSERT to 'error_on_write'\n");
Test->add_result(!execute_query_silent(Test->conn_slave,
Test->add_result(!execute_query_silent(Test->maxscales->conn_slave[0],
"INSERT INTO test.readonly VALUES (1) -- error_on_write"),
"INSERT to service with 'error_on_write' should fail\n");
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'fail_on_write' should succeed after an INSERT\n");
/** Close connections and try to create new ones */
Test->set_timeout(30);
Test->close_maxscale_connections();
Test->maxscales->close_maxscale_connections(0);
Test->tprintf("Opening connections while master is blocked\n");
Test->add_result(Test->connect_rwsplit() == 0, "Connection to 'fail_instantly' service should fail\n");
Test->add_result(Test->connect_readconn_master() != 0,
Test->add_result(Test->maxscales->connect_rwsplit(0) == 0,
"Connection to 'fail_instantly' service should fail\n");
Test->add_result(Test->maxscales->connect_readconn_master(0) != 0,
"Connection to 'fail_on_write' service should succeed\n");
Test->add_result(Test->connect_readconn_slave() != 0,
Test->add_result(Test->maxscales->connect_readconn_slave(0) != 0,
"Connection to 'error_on_write' service should succeed\n");
/** The {fail|error}_on_write services should work and allow reads */
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'error_on_write' should succeed\n");
Test->close_maxscale_connections();
Test->maxscales->close_maxscale_connections(0);
Test->stop_timeout();
Test->repl->unblock_node(0);
sleep(10);
/** Check that everything is OK after unblocking */
Test->connect_maxscale();
Test->maxscales->connect_maxscale(0);
test_all_ok(Test);
Test->close_maxscale_connections();
Test->maxscales->close_maxscale_connections(0);
}
void test_complex(TestConnections *Test)
{
/** Check that everything works before test */
Test->connect_maxscale();
Test->maxscales->connect_maxscale(0);
test_all_ok(Test);
/** Block master */
@ -134,17 +145,20 @@ void test_complex(TestConnections *Test)
/** Select to service with 'fail_instantly' should close the connection */
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_instantly'\n");
Test->add_result(!execute_query_silent(Test->conn_rwsplit, "SELECT * FROM test.readonly -- fail_instantly"),
Test->add_result(!execute_query_silent(Test->maxscales->conn_rwsplit[0],
"SELECT * FROM test.readonly -- fail_instantly"),
"SELECT to service with 'fail_instantly' should fail\n");
/** The {fail|error}_on_write services should allow reads */
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'error_on_write' should succeed\n");
/** Unblock node and try to read */
@ -154,16 +168,18 @@ void test_complex(TestConnections *Test)
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'error_on_write' should succeed\n");
/** Block slaves */
Test->stop_timeout();
Test->close_maxscale_connections();
Test->maxscales->close_maxscale_connections(0);
Test->repl->block_node(1);
Test->repl->block_node(2);
Test->repl->block_node(3);
@ -171,15 +187,17 @@ void test_complex(TestConnections *Test)
/** Reconnect to MaxScale */
Test->set_timeout(30);
Test->connect_maxscale();
Test->maxscales->connect_maxscale(0);
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'error_on_write' should succeed\n");
Test->stop_timeout();
@ -191,11 +209,13 @@ void test_complex(TestConnections *Test)
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should succeed\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'error_on_write' should succeed\n");
/** Block all nodes */
@ -209,11 +229,13 @@ void test_complex(TestConnections *Test)
/** SELECTs should fail*/
Test->set_timeout(30);
Test->tprintf("SELECT to 'fail_on_write'\n");
Test->add_result(!execute_query_silent(Test->conn_master, "SELECT * FROM test.readonly -- fail_on_write"),
Test->add_result(!execute_query_silent(Test->maxscales->conn_master[0],
"SELECT * FROM test.readonly -- fail_on_write"),
"SELECT to service with 'fail_on_write' should fail\n");
Test->set_timeout(30);
Test->tprintf("SELECT to 'error_on_write'\n");
Test->add_result(!execute_query_silent(Test->conn_slave, "SELECT * FROM test.readonly -- error_on_write"),
Test->add_result(!execute_query_silent(Test->maxscales->conn_slave[0],
"SELECT * FROM test.readonly -- error_on_write"),
"SELECT to service with 'error_on_write' should fail\n");
Test->stop_timeout();
Test->repl->unblock_node(0);
@ -223,10 +245,10 @@ void test_complex(TestConnections *Test)
sleep(10);
/** Reconnect and check that everything works after the test */
Test->close_maxscale_connections();
Test->connect_maxscale();
Test->maxscales->close_maxscale_connections(0);
Test->maxscales->connect_maxscale(0);
test_all_ok(Test);
Test->close_maxscale_connections();
Test->maxscales->close_maxscale_connections(0);
}
int main(int argc, char *argv[])
@ -236,10 +258,10 @@ int main(int argc, char *argv[])
/** Prepare for tests */
Test->stop_timeout();
Test->connect_maxscale();
execute_query_silent(Test->conn_rwsplit, "DROP TABLE IF EXISTS test.readonly\n");
execute_query_silent(Test->conn_rwsplit, "CREATE TABLE test.readonly(id int)\n");
Test->close_maxscale_connections();
Test->maxscales->connect_maxscale(0);
execute_query_silent(Test->maxscales->conn_rwsplit[0], "DROP TABLE IF EXISTS test.readonly\n");
execute_query_silent(Test->maxscales->conn_rwsplit[0], "CREATE TABLE test.readonly(id int)\n");
Test->maxscales->close_maxscale_connections(0);
/** Basic tests */
test_basic(Test);