Merge branch '2.3' into 2.4
This commit is contained in:
81
system-test/mxs1323_stress.cpp
Normal file
81
system-test/mxs1323_stress.cpp
Normal file
@ -0,0 +1,81 @@
|
||||
/**
|
||||
* Test for MXS-1323.
|
||||
* - Check that retried reads work with persistent connections
|
||||
*/
|
||||
|
||||
#include <maxtest/testconnections.hh>
|
||||
#include <sstream>
|
||||
|
||||
static bool running = true;
|
||||
|
||||
void* async_query(void* data)
|
||||
{
|
||||
TestConnections* test = (TestConnections*)data;
|
||||
|
||||
while (running && test->global_result == 0)
|
||||
{
|
||||
MYSQL* conn = test->maxscales->open_rwsplit_connection(0);
|
||||
|
||||
for (int i = 0; i < 50 && running && test->global_result == 0; i++)
|
||||
{
|
||||
const char* query = "SET @a = (SELECT SLEEP(1))";
|
||||
test->try_query(conn, "%s", query);
|
||||
}
|
||||
|
||||
mysql_close(conn);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define NUM_THR 5
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
TestConnections test(argc, argv);
|
||||
pthread_t query_thr[NUM_THR];
|
||||
std::stringstream ss;
|
||||
|
||||
ss << "CREATE OR REPLACE TABLE test.t1 (id INT)";
|
||||
test.maxscales->connect_maxscale(0);
|
||||
test.try_query(test.maxscales->conn_rwsplit[0], "%s", ss.str().c_str());
|
||||
|
||||
ss.str("");
|
||||
ss << "INSERT INTO test.t1 VALUES (0)";
|
||||
for (int i = 1; i <= 10000; i++)
|
||||
{
|
||||
ss << ",(" << i << ")";
|
||||
}
|
||||
test.try_query(test.maxscales->conn_rwsplit[0], "%s", ss.str().c_str());
|
||||
|
||||
test.maxscales->close_maxscale_connections(0);
|
||||
|
||||
if (test.global_result)
|
||||
{
|
||||
return test.global_result;
|
||||
}
|
||||
|
||||
for (int i = 0; i < NUM_THR; i++)
|
||||
{
|
||||
pthread_create(&query_thr[i], NULL, async_query, &test);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3 && test.global_result == 0; i++)
|
||||
{
|
||||
test.tprintf("Round %d", i + 1);
|
||||
test.repl->block_node(1);
|
||||
sleep(5);
|
||||
test.repl->unblock_node(1);
|
||||
sleep(5);
|
||||
}
|
||||
|
||||
running = false;
|
||||
|
||||
for (int i = 0; i < NUM_THR; i++)
|
||||
{
|
||||
test.set_timeout(10);
|
||||
pthread_join(query_thr[i], NULL);
|
||||
}
|
||||
|
||||
return test.global_result;
|
||||
}
|
||||
Reference in New Issue
Block a user