Files
MaxScale/maxscale-system-test/config_operations.cpp
Timofey Turenko e1fc0b8734 Squashed commit of the following:
commit 48a0b902b67da46f1eed4afa687bdcb56b59d02f
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Mon Dec 16 15:35:07 2019 +0200

    Increase timouts in the mxs173_trottle_filter test

commit 81d8083a89421a8004b8024d480ae0f35d715b86
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Mon Dec 16 14:19:39 2019 +0200

    Increase timeouts in max1071_maxrow test

commit e1039c6132f0e9274b8801165f3f905ede7c9421
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Mon Dec 16 00:06:53 2019 +0200

    Remove hardcoded 'home/vagrant/' from all maxscale.cnf in system tests

commit 28c8029e060afdcf5159bf802b13dcd5e484d9f1
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sun Dec 15 21:31:34 2019 +0200

    Use private IP for Galera congiguration in maxscale-system-tests

commit 66dc36cbf43a5fb92465df31e1295e82865be1fc
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sun Dec 15 09:06:28 2019 +0200

    Fix typos in fwf_*.cpp

commit 44c7a4384ddf39596c0254c955aeb6c008a00a35
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sun Dec 15 09:05:26 2019 +0200

    Fix typos in fwf_*.cpp

commit 2649017611908a8b0d27090f49722947ac31c4f4
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sun Dec 15 09:03:41 2019 +0200

    Fix typos in fwf_*.cpp

commit 5cc87658523e8496eaab17700be8a821af5b0cde
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sat Dec 14 23:54:53 2019 +0200

    Fix typo in fwf_copy_rules.cpp

commit fb1accc36cb9d79691469f63cb4535f3bc38dedd
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sat Dec 14 23:52:51 2019 +0200

    More hardcoded 'vagrant' removals

commit 77e49d474b4abe767629ff87b01f08137773d761
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sat Dec 14 23:35:09 2019 +0200

    Fix hardcoded 'vagrant' user in fwf* tests

    Several firewall filter tests has hardcoded 'vagrant' as a user name for
    access user on the VM. Changed to node->access_user.

commit ed5ab1487f37822db6a7478f76c0f3652776c389
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sat Dec 14 22:50:35 2019 +0200

    Fix IP vs IP_private

    Many tests use IP instead of IP_private which makes them failed in the
    AWS or GCloud environment.
    The same applies to get_conn_num() etc functions.

commit 0558aac23d303a675dc12d05b1766e698753b444
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Thu Aug 15 12:02:01 2019 +0300

    fix IP -> IP_private for some mysqlmon* testst

commit 5d9c70970d970eb995c8774d0088bd1c54ab76fe
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Sat Dec 14 20:20:51 2019 +0200

    Replace IP to IP_private in the maxscale-system-tests

commit b06cf3329af59ff100748691991213fe639f29e6
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Tue Nov 19 11:52:33 2019 +0200

    Remove spaces from value which were read from *_network_config

    MDBCI can put spaces around values in the *_network_config file which
    can cause ssh connection failures in the tests. To fix it removing all
    spaces from all values which were read from *_network_config

commit b3904f019847ef1db9d4ec9714ad9ef869fa0b01
Author: Timofey Turenko <timofey.turenko@mariadb.com>
Date:   Thu Dec 12 23:36:31 2019 +0200

    Increate default timeout for all system tests
2019-12-16 15:41:52 +02:00

236 lines
7.3 KiB
C++

#include "config_operations.h"
// The configuration should use these names for the services, listeners and monitors
#define SERVICE_NAME1 "rwsplit-service"
#define SERVICE_NAME2 "read-connection-router-master"
#define SERVICE_NAME3 "read-connection-router-slave"
#define LISTENER_NAME1 "rwsplit-service-listener"
#define LISTENER_NAME2 "read-connection-router-master-listener"
#define LISTENER_NAME3 "read-connection-router-slave-listener"
struct
{
const char* service;
const char* listener;
int port;
} services[]
{
{SERVICE_NAME1, LISTENER_NAME1, 4006},
{SERVICE_NAME2, LISTENER_NAME2, 4008},
{SERVICE_NAME3, LISTENER_NAME3, 4009}
};
Config::Config(TestConnections* parent)
: test_(parent)
{
}
Config::~Config()
{
}
void Config::add_server(int num)
{
test_->tprintf("Adding the servers");
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0, true, "maxadmin add server server%d " SERVICE_NAME1, num);
test_->maxscales->ssh_node_f(0, true, "maxadmin add server server%d " SERVICE_NAME2, num);
test_->maxscales->ssh_node_f(0, true, "maxadmin add server server%d " SERVICE_NAME3, num);
for (auto& a : created_monitors_)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin add server server%d %s", num, a.c_str());
}
test_->stop_timeout();
}
void Config::remove_server(int num)
{
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0, true, "maxadmin remove server server%d " SERVICE_NAME1, num);
test_->maxscales->ssh_node_f(0, true, "maxadmin remove server server%d " SERVICE_NAME2, num);
test_->maxscales->ssh_node_f(0, true, "maxadmin remove server server%d " SERVICE_NAME3, num);
for (auto& a : created_monitors_)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin remove server server%d %s", num, a.c_str());
}
test_->stop_timeout();
}
void Config::add_created_servers(const char* object)
{
for (auto a : created_servers_)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin add server server%d %s", a, object);
}
}
void Config::destroy_server(int num)
{
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0, true, "maxadmin destroy server server%d", num);
created_servers_.erase(num);
test_->stop_timeout();
}
void Config::create_server(int num)
{
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0,
true,
"maxadmin create server server%d %s %d",
num,
test_->repl->IP_private[num],
test_->repl->port[num]);
created_servers_.insert(num);
test_->stop_timeout();
}
void Config::alter_server(int num, const char* key, const char* value)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin alter server server%d %s=%s", num, key, value);
}
void Config::alter_server(int num, const char* key, int value)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin alter server server%d %s=%d", num, key, value);
}
void Config::alter_server(int num, const char* key, float value)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin alter server server%d %s=%f", num, key, value);
}
void Config::create_monitor(const char* name, const char* module, int interval)
{
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0, true, "maxadmin create monitor %s %s", name, module);
alter_monitor(name, "monitor_interval", interval);
alter_monitor(name, "user", test_->maxscales->user_name);
alter_monitor(name, "password", test_->maxscales->password);
test_->maxscales->ssh_node_f(0, true, "maxadmin restart monitor %s", name);
test_->stop_timeout();
created_monitors_.insert(std::string(name));
}
void Config::alter_monitor(const char* name, const char* key, const char* value)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin alter monitor %s %s=%s", name, key, value);
}
void Config::alter_monitor(const char* name, const char* key, int value)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin alter monitor %s %s=%d", name, key, value);
}
void Config::alter_monitor(const char* name, const char* key, float value)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin alter monitor %s %s=%f", name, key, value);
}
void Config::start_monitor(const char* name)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin restart monitor %s", name);
}
void Config::destroy_monitor(const char* name)
{
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0, true, "maxadmin destroy monitor %s", name);
test_->stop_timeout();
created_monitors_.erase(std::string(name));
}
void Config::restart_monitors()
{
for (auto& a : created_monitors_)
{
test_->maxscales->ssh_node_f(0, true, "maxadmin shutdown monitor \"%s\"", a.c_str());
test_->maxscales->ssh_node_f(0, true, "maxadmin restart monitor \"%s\"", a.c_str());
}
}
void Config::create_listener(Config::Service service)
{
int i = static_cast<int>(service);
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0,
true,
"maxadmin create listener %s %s default %d",
services[i].service,
services[i].listener,
services[i].port);
test_->stop_timeout();
}
void Config::create_ssl_listener(Config::Service service)
{
int i = static_cast<int>(service);
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0,
true,
"maxadmin create listener %s %s default %d default default default "
"/home/vagrant/certs/server-key.pem "
"/home/vagrant/certs/server-cert.pem "
"/home/vagrant/certs/ca.pem ",
services[i].service,
services[i].listener,
services[i].port);
test_->stop_timeout();
}
void Config::destroy_listener(Config::Service service)
{
int i = static_cast<int>(service);
test_->set_timeout(120);
test_->maxscales->ssh_node_f(0,
true,
"maxadmin destroy listener %s %s",
services[i].service,
services[i].listener);
test_->stop_timeout();
}
void Config::create_all_listeners()
{
create_listener(SERVICE_RWSPLIT);
create_listener(SERVICE_RCONN_SLAVE);
create_listener(SERVICE_RCONN_MASTER);
}
void Config::reset()
{
/** Make sure the servers exist before checking that connectivity is OK */
for (int i = 0; i < test_->repl->N; i++)
{
if (created_servers_.find(i) == created_servers_.end())
{
create_server(i);
add_server(i);
}
}
}
bool Config::check_server_count(int expected)
{
bool rval = true;
if (test_->maxscales->ssh_node_f(0,
true,
"test \"`maxadmin list servers|grep 'server[0-9]'|wc -l`\" == \"%d\"",
expected))
{
test_->add_result(1, "Number of servers is not %d.", expected);
rval = false;
}
return rval;
}