/** * @file bug643.cpp regression case for bugs 643 ("Hints, RWSplit: MaxScale goes into infinite loop and * crashes") and bug645 * - setup RWSplit in the following way for bug643 * @verbatim * [hints] * type=filter * module=hintfilter * * * [regex] * type=filter * module=regexfilter * match=fetch * replace=select * * [typo] * type=filter * module=regexfilter * match=[Ff][Oo0][Rr][Mm] * replace=from * * [qla] * type=filter * module=qlafilter * options=/tmp/QueryLog * * [duplicate] * type=filter * module=tee * service=RW Split2 * * [testfilter] * type=filter * module=foobar * * [RW Split Router] * type=service * router=readwritesplit * servers=server1,server2,server3,server4 #servers=server1,server2 * max_slave_connections=100% * use_sql_variables_in=all #use_sql_variables_in=master * user=skysql * passwd=skysql #filters=typo|qla|regex|hints|regex|hints #enable_root_user=1 * filters=duplicate * * [RW Split2] * type=service * router=readwritesplit * servers=server1,server2,server3,server4 * max_slave_connections=100% * use_sql_variables_in=all * user=skysql * passwd=skysql * filters=qla|tests|hints * * @endverbatim * - try to connect * - try simple query using all services * - check warnig in the log "Failed to start service 'RW Split2" * - check if Maxscale still alive */ #include #include "testconnections.h" int main(int argc, char* argv[]) { TestConnections* Test = new TestConnections(argc, argv); Test->set_timeout(10); Test->tprintf("Trying to connect to all Maxscale services\n"); fflush(stdout); Test->maxscales->connect_maxscale(0); Test->tprintf("Trying to send query to RWSplit\n"); fflush(stdout); execute_query(Test->maxscales->conn_rwsplit[0], (char*) "show processlist"); Test->tprintf("Trying to send query to ReadConn master\n"); fflush(stdout); execute_query(Test->maxscales->conn_master[0], (char*) "show processlist"); Test->tprintf("Trying to send query to ReadConn slave\n"); fflush(stdout); execute_query(Test->maxscales->conn_slave[0], (char*) "show processlist"); Test->maxscales->close_maxscale_connections(0); Test->check_log_err(0, (char*) "Unable to find filter 'tests' for service 'RW Split2'", true); int rval = Test->global_result; delete Test; return rval; }