MaxScale/maxscale-system-test/mxs1323_retry_read.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

52 lines
1.3 KiB
C++

/**
* Test for MXS-1323.
* - Check that retried reads work with persistent connections
*/
#include "testconnections.h"
void* async_block(void* data)
{
TestConnections* test = (TestConnections*)data;
sleep(5);
test->tprintf("Blocking slave");
test->repl->block_node(1);
return NULL;
}
std::string do_query(TestConnections& test)
{
MYSQL* conn = test.maxscales->open_rwsplit_connection(0);
const char* query = "SELECT SLEEP(15), @@server_id";
char output[512] = "";
find_field(conn, query, "@@server_id", output);
mysql_close(conn);
return std::string(output);
}
int main(int argc, char* argv[])
{
TestConnections test(argc, argv);
test.repl->connect();
std::string master = test.repl->get_server_id_str(0);
std::string slave = test.repl->get_server_id_str(1);
test.repl->close_connections();
test.set_timeout(60);
std::string res = do_query(test);
test.add_result(res != slave, "The slave should respond to the first query: %s", res.c_str());
pthread_t thr;
pthread_create(&thr, NULL, async_block, &test);
res = do_query(test);
test.add_result(res != master, "The master should respond to the second query: %s", res.c_str());
pthread_join(thr, NULL);
test.repl->unblock_node(1);
return test.global_result;
}