106 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  * @file bug469 bug469 regression test case ("rwsplit counts every connection twice in master - counnection
 | |
|  * counts leak")
 | |
|  * - use maxadmin command "show server server1" and check "Current no. of conns" and "Number of connections" -
 | |
|  * both should be 0
 | |
|  * - execute simple query against RWSplit
 | |
|  * - use maxadmin command "show server server1" and check "Current no. of conns" (should be 0) and "Number of
 | |
|  * connections" (should be 1)
 | |
|  */
 | |
| 
 | |
| 
 | |
| /*
 | |
|  *  Vilho Raatikka 2014-08-05 12:28:21 UTC
 | |
|  *  Every connection is counted twice in master and decremented only once. As a result master seems always to
 | |
|  * have active connections after first connection is established.
 | |
|  *
 | |
|  *  Server 0x21706e0 (server1)
 | |
|  *       Server:                         127.0.0.1
 | |
|  *       Status:                         Master, Running
 | |
|  *       Protocol:                       MySQLBackend
 | |
|  *       Port:                           3000
 | |
|  *       Server Version:                 5.5.37-MariaDB-debug-log
 | |
|  *       Node Id:                        3000
 | |
|  *       Master Id:                      -1
 | |
|  *       Slave Ids:                      3001, 3002 , 3003
 | |
|  *       Repl Depth:                     0
 | |
|  *       Number of connections:          6
 | |
|  *       Current no. of conns:           3
 | |
|  *       Current no. of operations:      0
 | |
|  *  Server 0x21705e0 (server2)
 | |
|  *       Server:                         127.0.0.1
 | |
|  *       Status:                         Slave, Running
 | |
|  *       Protocol:                       MySQLBackend
 | |
|  *       Port:                           3001
 | |
|  *       Server Version:                 5.5.37-MariaDB-debug-log
 | |
|  *       Node Id:                        3001
 | |
|  *       Master Id:                      3000
 | |
|  *       Slave Ids:
 | |
|  *       Repl Depth:                     1
 | |
|  *       Number of connections:          3
 | |
|  *       Current no. of conns:           0
 | |
|  *       Current no. of operations:      0
 | |
|  *
 | |
|  */
 | |
| 
 | |
| 
 | |
| #include <iostream>
 | |
| #include "testconnections.h"
 | |
| #include "maxadmin_operations.h"
 | |
| 
 | |
| int main(int argc, char* argv[])
 | |
| {
 | |
|     TestConnections* Test = new TestConnections(argc, argv);
 | |
|     char res[1024];
 | |
|     int res_d;
 | |
|     Test->set_timeout(10);
 | |
| 
 | |
|     Test->maxscales->get_maxadmin_param(0,
 | |
|                                         (char*) "show server server1",
 | |
|                                         (char*) "Current no. of conns:",
 | |
|                                         res);
 | |
|     sscanf(res, "%d", &res_d);
 | |
|     Test->tprintf("Before: Current num of conn %d\n", res_d);
 | |
|     Test->add_result(res_d, "curr num of conn is not 0\n");
 | |
|     Test->maxscales->get_maxadmin_param(0,
 | |
|                                         (char*) "show server server1",
 | |
|                                         (char*) "Number of connections:",
 | |
|                                         res);
 | |
|     sscanf(res, "%d", &res_d);
 | |
|     Test->tprintf("Before: num of conn %d\n", res_d);
 | |
|     Test->add_result(res_d, "num of conn is not 0");
 | |
| 
 | |
|     Test->maxscales->connect_rwsplit(0);
 | |
|     Test->try_query(Test->maxscales->conn_rwsplit[0], (char*) "select 1");
 | |
|     Test->maxscales->close_rwsplit(0);
 | |
| 
 | |
|     Test->stop_timeout();
 | |
|     sleep(10);
 | |
| 
 | |
|     Test->set_timeout(10);
 | |
| 
 | |
|     Test->maxscales->get_maxadmin_param(0,
 | |
|                                         (char*) "show server server1",
 | |
|                                         (char*) "Current no. of conns:",
 | |
|                                         res);
 | |
|     sscanf(res, "%d", &res_d);
 | |
|     Test->tprintf("After: Current num of conn %d\n", res_d);
 | |
|     Test->add_result(res_d, "curr num of conn is not 0\n");
 | |
|     Test->maxscales->get_maxadmin_param(0,
 | |
|                                         (char*) "show server server1",
 | |
|                                         (char*) "Number of connections:",
 | |
|                                         res);
 | |
|     sscanf(res, "%d", &res_d);
 | |
|     Test->tprintf("After: num of conn %d\n", res_d);
 | |
|     if (res_d != 1)
 | |
|     {
 | |
|         Test->add_result(1, "num of conn is not 1");
 | |
|     }
 | |
| 
 | |
|     Test->check_maxscale_alive(0);
 | |
| 
 | |
|     int rval = Test->global_result;
 | |
|     delete Test;
 | |
|     return rval;
 | |
| }
 | 
