
Take almost all warnings into use except `format-overflow` and `unused-function`. format-overflow needs to be handled in a separate commit.
52 lines
1.3 KiB
C++
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;
|
|
}
|