Add tests from develop
Added tests from develop. The test results need to be modified for 2.0.
This commit is contained in:
158
maxscale-system-test/server_weight.cpp
Normal file
158
maxscale-system-test/server_weight.cpp
Normal file
@ -0,0 +1,158 @@
|
||||
/**
|
||||
* @file server_weight.cpp Checks if 'weightby' parameter works
|
||||
* - use Galera setup, configure Maxscale
|
||||
* @verbatim
|
||||
[RW Split Router]
|
||||
type=service
|
||||
router=readwritesplit
|
||||
servers=server1,server2,server3,server4
|
||||
weightby=serversize_rws
|
||||
user=skysql
|
||||
passwd=skysql
|
||||
|
||||
[Read Connection Router]
|
||||
type=service
|
||||
router=readconnroute
|
||||
router_options=synced
|
||||
servers=server1,server2,server3,server4
|
||||
weightby=serversize
|
||||
user=skysql
|
||||
passwd=skysql
|
||||
|
||||
[server1]
|
||||
type=server
|
||||
address=###server_IP_1###
|
||||
port=###server_port_1###
|
||||
protocol=MySQLBackend
|
||||
serversize=1
|
||||
serversize_rws=1
|
||||
|
||||
[server2]
|
||||
type=server
|
||||
address=###server_IP_2###
|
||||
port=###server_port_2###
|
||||
protocol=MySQLBackend
|
||||
serversize=2
|
||||
serversize_rws=3000000
|
||||
|
||||
[server3]
|
||||
type=server
|
||||
address=###server_IP_3###
|
||||
port=###server_port_3###
|
||||
protocol=MySQLBackend
|
||||
serversize=3
|
||||
serversize_rws=2000000
|
||||
|
||||
[server4]
|
||||
type=server
|
||||
address=###server_IP_4###
|
||||
port=###server_port_4###
|
||||
protocol=MySQLBackend
|
||||
serversize=0
|
||||
serversize_rws=1000000
|
||||
@endverbatim
|
||||
* - create 60 connections to ReadConn master
|
||||
* - expect: node1 - 10, node2 - 20, node3 - 30, node4 - 0
|
||||
* - create 60 connections to RWSplit
|
||||
* - expect all connections on only one slave
|
||||
* - check error log, it should not contain "Unexpected parameter 'weightby'"
|
||||
*/
|
||||
|
||||
|
||||
#include "testconnections.h"
|
||||
|
||||
void check_conn_num(TestConnections* Test, int * Nc, unsigned int conn_num)
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
conn_num = get_conn_num(Test->galera->nodes[i], Test->maxscale_IP, Test->maxscale_hostname, (char *) "test");
|
||||
Test->tprintf("connections to node %d: %u (expected: %u)\n", i, conn_num, Nc[i]);
|
||||
if ((i < 4) && (Nc[i] != conn_num))
|
||||
{
|
||||
Test->add_result(1, "Read: Expected number of connections to node %d is %d\n", i, Nc[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int maxscale_conn_num = 60;
|
||||
MYSQL *conn_read[maxscale_conn_num];
|
||||
MYSQL *conn_rwsplit[maxscale_conn_num];
|
||||
TestConnections * Test = new TestConnections(argc, argv);
|
||||
Test->set_timeout(30);
|
||||
int i;
|
||||
|
||||
Test->galera->connect();
|
||||
|
||||
Test->tprintf("Connecting to ReadConnMaster on %s\n", Test->maxscale_IP);
|
||||
for (i = 0; i < maxscale_conn_num; i++)
|
||||
{
|
||||
conn_read[i] = Test->open_readconn_master_connection();
|
||||
}
|
||||
|
||||
Test->stop_timeout();
|
||||
Test->tprintf("Sleeping 15 seconds\n");
|
||||
sleep(15);
|
||||
|
||||
unsigned int conn_num;
|
||||
int Nc[4];
|
||||
|
||||
Nc[0] = maxscale_conn_num / 6;
|
||||
Nc[1] = maxscale_conn_num / 3;
|
||||
Nc[2] = maxscale_conn_num / 2;
|
||||
Nc[3] = 0;
|
||||
|
||||
Test->set_timeout(30);
|
||||
check_conn_num(Test, Nc, conn_num);
|
||||
|
||||
for (i = 0; i < maxscale_conn_num; i++)
|
||||
{
|
||||
mysql_close(conn_read[i]);
|
||||
}
|
||||
|
||||
Test->stop_timeout();
|
||||
Test->tprintf("Sleeping 15 seconds\n");
|
||||
sleep(15);
|
||||
|
||||
Test->set_timeout(30);
|
||||
Test->tprintf("Connecting to RWSplit on %s\n", Test->maxscale_IP);
|
||||
for (i = 0; i < maxscale_conn_num; i++)
|
||||
{
|
||||
conn_rwsplit[i] = Test->open_rwsplit_connection();
|
||||
}
|
||||
|
||||
Test->stop_timeout();
|
||||
Test->tprintf("Sleeping 15 seconds\n");
|
||||
sleep(15);
|
||||
|
||||
/** Readwritesplit should always create a connection to the master. For
|
||||
* this test we use the priority mechanism to force the first node as
|
||||
* the master since Galera clusters don't have a deterministic master node. */
|
||||
Nc[1] = maxscale_conn_num / 2;
|
||||
Nc[2] = maxscale_conn_num / 3;
|
||||
Nc[3] = maxscale_conn_num / 6;
|
||||
Nc[0] = maxscale_conn_num;
|
||||
|
||||
Test->set_timeout(30);
|
||||
check_conn_num(Test, Nc, conn_num);
|
||||
|
||||
|
||||
for (i = 0; i < maxscale_conn_num; i++)
|
||||
{
|
||||
mysql_close(conn_rwsplit[i]);
|
||||
}
|
||||
Test->galera->close_connections();
|
||||
|
||||
Test->check_log_err((char *) "Unexpected parameter 'weightby'", false);
|
||||
Test->check_log_err((char *)
|
||||
"Weighting parameter 'serversize' with a value of 0 for server 'server4' rounds down to zero", true);
|
||||
|
||||
// Pre-1.3.0 failure message
|
||||
//Test->check_log_err((char *) "Server 'server4' has no value for weighting parameter 'serversize', no queries will be routed to this server", true);
|
||||
|
||||
|
||||
int rval = Test->global_result;
|
||||
delete Test;
|
||||
return rval;
|
||||
}
|
Reference in New Issue
Block a user