45 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/**
 | 
						|
 * MXS-2054: Test "hybrid" clusters with namedserverfilter
 | 
						|
 */
 | 
						|
 | 
						|
#include "testconnections.h"
 | 
						|
 | 
						|
int main(int argc, char** argv)
 | 
						|
{
 | 
						|
    TestConnections test(argc, argv);
 | 
						|
 | 
						|
    test.maxscales->ssh_node_f(0, true, "maxctrl set server server3 slave");
 | 
						|
    test.maxscales->ssh_node_f(0, true, "maxctrl set server server4 slave");
 | 
						|
 | 
						|
    test.repl->connect();
 | 
						|
    execute_query(test.repl->nodes[0], "CREATE OR REPLACE TABLE test.t1 AS SELECT 1 AS id");
 | 
						|
    execute_query(test.repl->nodes[0], "CREATE OR REPLACE TABLE test.t2 AS SELECT 2 AS id");
 | 
						|
    execute_query(test.repl->nodes[0], "CREATE OR REPLACE TABLE test.t3 AS SELECT 3 AS id");
 | 
						|
    execute_query(test.repl->nodes[0], "CREATE OR REPLACE TABLE test.t4 AS SELECT 4 AS id");
 | 
						|
    test.repl->sync_slaves();
 | 
						|
    test.repl->disconnect();
 | 
						|
 | 
						|
    test.maxscales->connect();
 | 
						|
 | 
						|
    Row server1 = get_row(test.maxscales->conn_rwsplit[0],
 | 
						|
                          "SELECT @@server_id, @@last_insert_id, id FROM test.t1");
 | 
						|
    Row server2 = get_row(test.maxscales->conn_rwsplit[0], "SELECT @@server_id, id FROM test.t2");
 | 
						|
    Row server3 = get_row(test.maxscales->conn_rwsplit[0], "SELECT @@server_id, id FROM test.t3");
 | 
						|
    Row server4 = get_row(test.maxscales->conn_rwsplit[0], "SELECT @@server_id, id FROM test.t4");
 | 
						|
 | 
						|
    test.maxscales->disconnect();
 | 
						|
 | 
						|
    test.repl->connect();
 | 
						|
    test.expect(server1[0] == test.repl->get_server_id_str(0),
 | 
						|
                "First query without hint should go to server1, the master");
 | 
						|
    test.expect(server2[0] == test.repl->get_server_id_str(1),
 | 
						|
                "Second query without hint should go to server2, the slave");
 | 
						|
    test.expect(server3[0] == test.repl->get_server_id_str(2),
 | 
						|
                "First query with hint should go to server3, the first unmonitored server");
 | 
						|
    test.expect(server4[0] == test.repl->get_server_id_str(3),
 | 
						|
                "Second query with hint should go to server4, the second unmonitored server");
 | 
						|
    test.repl->disconnect();
 | 
						|
 | 
						|
    return test.global_result;
 | 
						|
}
 |