 eafb7ac5f1
			
		
	
	eafb7ac5f1
	
	
	
		
			
			Basic tests can be executed with 15 machines Master/slave backend. Tests have label BIG_REPL_BACKEND Default template modified to support big backend. Tests temporaraly labeled as UNSTABLE to prevent their execution nightly
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <iostream>
 | |
| #include <unistd.h>
 | |
| #include "testconnections.h"
 | |
| 
 | |
| using namespace std;
 | |
| 
 | |
| char* create_event_size(unsigned long size)
 | |
| {
 | |
|     char* prefix = (char*) "insert into test.large_event values (1, '";
 | |
|     unsigned long prefix_size = strlen(prefix);
 | |
|     char* postfix = (char*) "');";
 | |
|     char* event = (char*)malloc(size + 1);
 | |
|     strcpy(event, prefix);
 | |
| 
 | |
|     unsigned long max = size - 55 - 45;
 | |
| 
 | |
| 
 | |
|     // printf("BLOB data size %lu\n", max);
 | |
| 
 | |
|     for (unsigned long i = 0; i < max; i++)
 | |
|     {
 | |
|         event[i + prefix_size] = 'a';
 | |
|     }
 | |
| 
 | |
|     strcpy((char*) event + max + prefix_size, postfix);
 | |
|     return event;
 | |
| }
 | |
| 
 | |
| MYSQL* connect_to_serv(TestConnections* Test, bool binlog)
 | |
| {
 | |
|     MYSQL* conn;
 | |
|     if (binlog)
 | |
|     {
 | |
|         conn = open_conn(Test->repl->port[0],
 | |
|                          Test->repl->IP[0],
 | |
|                          Test->repl->user_name,
 | |
|                          Test->repl->password,
 | |
|                          Test->ssl);
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         conn = Test->maxscales->open_rwsplit_connection(0);
 | |
|     }
 | |
|     return conn;
 | |
| }
 | |
| 
 | |
| void set_max_packet(TestConnections* Test, bool binlog, char* cmd)
 | |
| {
 | |
|     Test->tprintf("Setting maximum packet size ...");
 | |
|     if (binlog)
 | |
|     {
 | |
|         Test->repl->connect();
 | |
|         Test->try_query(Test->repl->nodes[0], "%s", cmd);
 | |
|         Test->repl->close_connections();
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         Test->maxscales->connect_maxscale(0);
 | |
|         Test->try_query(Test->maxscales->conn_rwsplit[0], "%s", cmd);
 | |
|         Test->maxscales->close_maxscale_connections(0);
 | |
|     }
 | |
|     Test->tprintf(".. done\n");
 | |
| }
 | |
| 
 | |
| void different_packet_size(TestConnections* Test, bool binlog)
 | |
| {
 | |
|     Test->set_timeout(180);
 | |
|     Test->tprintf("Set big max_allowed_packet\n");
 | |
|     set_max_packet(Test, binlog, (char*) "set global max_allowed_packet = 200000000;");
 | |
| 
 | |
|     Test->set_timeout(120);
 | |
|     Test->tprintf("Create table\n");
 | |
|     MYSQL* conn = connect_to_serv(Test, binlog);
 | |
|     Test->try_query(conn,
 | |
|                     "DROP TABLE IF EXISTS test.large_event;"
 | |
|                     "CREATE TABLE test.large_event(id INT, data LONGBLOB);");
 | |
|     mysql_close(conn);
 | |
| 
 | |
|     const int loops = 3;
 | |
|     const int range = 2;
 | |
| 
 | |
|     for (int i = 1; i <= loops; i++)
 | |
|     {
 | |
|         for (int j = -range; j <= range; j++)
 | |
|         {
 | |
|             size_t size = 0x0ffffff * i + j;
 | |
|             Test->tprintf("Trying event app. %lu bytes", size);
 | |
|             Test->set_timeout(1000);
 | |
| 
 | |
|             char* event = create_event_size(size);
 | |
|             conn = connect_to_serv(Test, binlog);
 | |
|             Test->expect(execute_query_silent(conn, event) == 0, "Query should succeed");
 | |
|             free(event);
 | |
|             execute_query_silent(conn, (char*) "DELETE FROM test.large_event");
 | |
|             mysql_close(conn);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     Test->set_timeout(120);
 | |
|     Test->tprintf("Restoring max_allowed_packet");
 | |
|     set_max_packet(Test, binlog, (char*) "set global max_allowed_packet = 1048576;");
 | |
| 
 | |
|     Test->set_timeout(1000);
 | |
|     conn = connect_to_serv(Test, binlog);
 | |
|     Test->try_query(conn, "DROP TABLE test.large_event");
 | |
|     mysql_close(conn);
 | |
| }
 |