MXS-2243_labels Maxscale system tests prepare environment by themselves
maxscale-system-test changed in order to control test environment by itself. Every test checks which machines are running, compare with list of needed machines and start new VMs is they are missing in the running machines list. Tests are executiong MDBCI commands, MDBCI executable should be in the PATH
This commit is contained in:
@ -1,14 +1,19 @@
|
||||
#include "maxscales.h"
|
||||
#include <sstream>
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
|
||||
Maxscales::Maxscales(const char *pref, const char *test_cwd, bool verbose, bool use_valgrind)
|
||||
#include "envv.h"
|
||||
|
||||
Maxscales::Maxscales(const char *pref, const char *test_cwd, bool verbose, bool use_valgrind,
|
||||
std::string network_config)
|
||||
{
|
||||
strcpy(prefix, pref);
|
||||
this->verbose = verbose;
|
||||
this->use_valgrind = use_valgrind;
|
||||
valgring_log_num = 0;
|
||||
strcpy(test_dir, test_cwd);
|
||||
this->network_config = network_config;
|
||||
read_env();
|
||||
if (use_valgrind)
|
||||
{
|
||||
@ -24,7 +29,6 @@ Maxscales::Maxscales(const char *pref, const char *test_cwd, bool verbose, bool
|
||||
|
||||
int Maxscales::read_env()
|
||||
{
|
||||
char * env;
|
||||
char env_name[64];
|
||||
|
||||
read_basic_env();
|
||||
@ -34,69 +38,16 @@ int Maxscales::read_env()
|
||||
for (int i = 0; i < N; i++)
|
||||
{
|
||||
sprintf(env_name, "%s_%03d_cnf", prefix, i);
|
||||
env = getenv(env_name);
|
||||
if (env == NULL)
|
||||
{
|
||||
sprintf(env_name, "%s_cnf", prefix);
|
||||
env = getenv(env_name);
|
||||
}
|
||||
if (env != NULL)
|
||||
{
|
||||
sprintf(maxscale_cnf[i], "%s", env);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(maxscale_cnf[i], "/etc/maxscale.cnf");
|
||||
}
|
||||
maxscale_cnf[i] = readenv(env_name, DEFAULT_MAXSCALE_CNF);
|
||||
|
||||
sprintf(env_name, "%s_%03d_log_dir", prefix, i);
|
||||
env = getenv(env_name);
|
||||
if (env == NULL)
|
||||
{
|
||||
sprintf(env_name, "%s_log_dir", prefix);
|
||||
env = getenv(env_name);
|
||||
}
|
||||
|
||||
if (env != NULL)
|
||||
{
|
||||
sprintf(maxscale_log_dir[i], "%s", env);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(maxscale_log_dir[i], "/var/log/maxscale/");
|
||||
}
|
||||
maxscale_log_dir[i] = readenv(env_name, DEFAULT_MAXSCALE_LOG_DIR);
|
||||
|
||||
sprintf(env_name, "%s_%03d_binlog_dir", prefix, i);
|
||||
env = getenv(env_name);
|
||||
if (env == NULL)
|
||||
{
|
||||
sprintf(env_name, "%s_binlog_dir", prefix);
|
||||
env = getenv(env_name);
|
||||
}
|
||||
if (env != NULL)
|
||||
{
|
||||
sprintf(maxscale_binlog_dir[i], "%s", env);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(maxscale_binlog_dir[i], "/var/lib/maxscale/Binlog_Service/");
|
||||
}
|
||||
maxscale_binlog_dir[i] = readenv(env_name, DEFAULT_MAXSCALE_BINLOG_DIR);
|
||||
|
||||
sprintf(env_name, "%s_%03d_maxadmin_password", prefix, i);
|
||||
env = getenv(env_name);
|
||||
if (env == NULL)
|
||||
{
|
||||
sprintf(env_name, "%s_maxadmin_password", prefix);
|
||||
env = getenv(env_name);
|
||||
}
|
||||
if (env != NULL)
|
||||
{
|
||||
sprintf(maxadmin_password[i], "%s", env);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(maxadmin_password[i], "mariadb");
|
||||
}
|
||||
maxadmin_password[i] = readenv(env_name, DEFAULT_MAXADMIN_PASSWORD);
|
||||
|
||||
rwsplit_port[i] = 4006;
|
||||
readconn_master_port[i] = 4008;
|
||||
@ -115,7 +66,6 @@ int Maxscales::read_env()
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int Maxscales::connect_rwsplit(int m)
|
||||
{
|
||||
if (use_ipv6)
|
||||
@ -228,7 +178,7 @@ int Maxscales::restart_maxscale(int m)
|
||||
}
|
||||
else
|
||||
{
|
||||
res =ssh_node(m, "service maxscale restart", true);
|
||||
res = ssh_node(m, "service maxscale restart", true);
|
||||
}
|
||||
fflush(stdout);
|
||||
return res;
|
||||
@ -240,9 +190,9 @@ int Maxscales::start_maxscale(int m)
|
||||
if (use_valgrind)
|
||||
{
|
||||
res = ssh_node_f(m, false,
|
||||
"sudo --user=maxscale valgrind --leak-check=full --show-leak-kinds=all "
|
||||
"--log-file=/%s/valgrind%02d.log --trace-children=yes "
|
||||
"--track-origins=yes /usr/bin/maxscale", maxscale_log_dir[m], valgring_log_num);
|
||||
"sudo --user=maxscale valgrind --leak-check=full --show-leak-kinds=all "
|
||||
"--log-file=/%s/valgrind%02d.log --trace-children=yes "
|
||||
"--track-origins=yes /usr/bin/maxscale", maxscale_log_dir[m], valgring_log_num);
|
||||
valgring_log_num++;
|
||||
}
|
||||
else
|
||||
@ -485,7 +435,8 @@ void Maxscales::wait_for_monitor(int intervals, int m)
|
||||
auto get_ticks = [&](std::string name)
|
||||
{
|
||||
int rc;
|
||||
char* ticks = ssh_node_output_f(m, false, &rc, "maxctrl api get monitors/%s data.attributes.ticks", name.c_str());
|
||||
char* ticks = ssh_node_output_f(m, false, &rc, "maxctrl api get monitors/%s data.attributes.ticks",
|
||||
name.c_str());
|
||||
char* ptr;
|
||||
int rval = strtol(ticks, &ptr, 10);
|
||||
|
||||
@ -515,7 +466,7 @@ void Maxscales::wait_for_monitor(int intervals, int m)
|
||||
ticks[name] = get_ticks(name);
|
||||
}
|
||||
|
||||
for (auto a: ticks)
|
||||
for (auto a : ticks)
|
||||
{
|
||||
// Wait a maximum of 60 seconds for a single monitor interval
|
||||
for (int i = 0; i < 60; i++)
|
||||
|
Reference in New Issue
Block a user