Add proper cluster testing scripts
The scripts start MaxScale processes on two different servers. The support framework for the tests is in place but the tests themselves still need to be modified to allow the use of non-localhost addresses.
This commit is contained in:
@ -20,7 +20,7 @@ module.exports = function() {
|
|||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
child_process.execFile("./start_maxscale.sh", function(err, stdout, stderr) {
|
child_process.execFile("./start_maxscale.sh", function(err, stdout, stderr) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject()
|
reject(err)
|
||||||
} else {
|
} else {
|
||||||
resolve()
|
resolve()
|
||||||
}
|
}
|
||||||
@ -33,7 +33,7 @@ module.exports = function() {
|
|||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
child_process.execFile("./start_double_maxscale.sh", function(err, stdout, stderr) {
|
child_process.execFile("./start_double_maxscale.sh", function(err, stdout, stderr) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject()
|
reject(err)
|
||||||
} else {
|
} else {
|
||||||
resolve()
|
resolve()
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ module.exports = function() {
|
|||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
child_process.execFile("./stop_maxscale.sh", function(err, stdout, stderr) {
|
child_process.execFile("./stop_maxscale.sh", function(err, stdout, stderr) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject()
|
reject(err)
|
||||||
} else {
|
} else {
|
||||||
resolve()
|
resolve()
|
||||||
}
|
}
|
||||||
@ -59,7 +59,7 @@ module.exports = function() {
|
|||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
child_process.execFile("./stop_double_maxscale.sh", function(err, stdout, stderr) {
|
child_process.execFile("./stop_double_maxscale.sh", function(err, stdout, stderr) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject()
|
reject(err)
|
||||||
} else {
|
} else {
|
||||||
resolve()
|
resolve()
|
||||||
}
|
}
|
||||||
|
|||||||
47
maxscale-system-test/maxctrl_scripts.sh.in
Normal file
47
maxscale-system-test/maxctrl_scripts.sh.in
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cat <<EOF > start_maxscale.sh
|
||||||
|
#!/bin/bash
|
||||||
|
sudo systemctl start maxscale
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >stop_maxscale.sh
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
sudo systemctl stop maxscale
|
||||||
|
|
||||||
|
sudo rm -rf /var/lib/maxscale/*
|
||||||
|
sudo rm -rf /var/cache/maxscale/*
|
||||||
|
sudo rm -rf /var/run/maxscale/*
|
||||||
|
|
||||||
|
if [ -f /tmp/maxadmin.sock ]
|
||||||
|
then
|
||||||
|
sudo rm /tmp/maxadmin.sock
|
||||||
|
fi
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >start_double_maxscale.sh
|
||||||
|
#!/bin/bash
|
||||||
|
sudo systemctl start maxscale
|
||||||
|
ssh -i ~/maxscale_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $galera_003_whoami@$galera_003_network "sudo systemctl start maxscale"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >stop_double_maxscale.sh
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
sudo systemctl stop maxscale
|
||||||
|
sudo rm -rf /var/lib/maxscale/*
|
||||||
|
sudo rm -rf /var/cache/maxscale/*
|
||||||
|
sudo rm -rf /var/run/maxscale/*
|
||||||
|
test ! -f /tmp/maxadmin.sock || sudo rm /tmp/maxadmin.sock
|
||||||
|
|
||||||
|
ssh -i ~/maxscale_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $galera_003_whoami@$galera_003_network "sudo systemctl stop maxscale"
|
||||||
|
ssh -i ~/maxscale_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $galera_003_whoami@$galera_003_network "sudo rm -rf /var/lib/maxscale/*"
|
||||||
|
ssh -i ~/maxscale_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $galera_003_whoami@$galera_003_network "sudo rm -rf /var/cache/maxscale/*"
|
||||||
|
ssh -i ~/maxscale_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $galera_003_whoami@$galera_003_network "sudo rm -rf /var/run/maxscale/*"
|
||||||
|
ssh -i ~/maxscale_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $galera_003_whoami@$galera_003_network "sudo rm -rf /tmp/maxadmin.sock"
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x *.sh
|
||||||
@ -6,9 +6,19 @@
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
// Use galera_003 as the secondary MaxScale node
|
||||||
|
TestConnections::set_secondary_maxscale("galera_003_network", "galera_003_network6");
|
||||||
TestConnections test(argc, argv);
|
TestConnections test(argc, argv);
|
||||||
|
|
||||||
|
// This is not very nice as it's a bit too intrusive
|
||||||
|
system("envsubst < maxctrl_scripts.sh.in > maxctrl_scripts.sh");
|
||||||
|
system("chmod +x maxctrl_scripts.sh");
|
||||||
test.copy_to_maxscale("test_maxctrl.sh", "~");
|
test.copy_to_maxscale("test_maxctrl.sh", "~");
|
||||||
|
test.copy_to_maxscale("maxctrl_scripts.sh", "~");
|
||||||
|
test.ssh_maxscale(true,"ssh-keygen -f maxscale_key -P \"\"");
|
||||||
|
test.copy_from_maxscale((char*)"~/maxscale_key.pub", (char*)".");
|
||||||
|
test.galera->copy_to_node("./maxscale_key.pub", "~", 3);
|
||||||
|
test.galera->ssh_node(3, false, "cat ~/maxscale_key.pub >> ~/.ssh/authorized_keys");
|
||||||
|
|
||||||
// TODO: Don't handle test dependencies in tests
|
// TODO: Don't handle test dependencies in tests
|
||||||
test.tprintf("Installing NPM");
|
test.tprintf("Installing NPM");
|
||||||
|
|||||||
@ -18,49 +18,10 @@ cd MaxScale
|
|||||||
git checkout $ref
|
git checkout $ref
|
||||||
cd maxctrl
|
cd maxctrl
|
||||||
|
|
||||||
cat <<EOF > start_maxscale.sh
|
# Create the scripts that start and stop MaxScale
|
||||||
#!/bin/sh
|
~/maxctrl_scripts.sh
|
||||||
sudo systemctl start maxscale
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >start_double_maxscale.sh
|
|
||||||
#!/bin/sh
|
|
||||||
exit 1
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >stop_maxscale.sh
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
sudo systemctl stop maxscale
|
|
||||||
|
|
||||||
sudo rm -rf /var/lib/maxscale/*
|
|
||||||
sudo rm -rf /var/cache/maxscale/*
|
|
||||||
sudo rm -rf /var/run/maxscale/*
|
|
||||||
|
|
||||||
if [ -f /tmp/maxadmin.sock ]
|
|
||||||
then
|
|
||||||
sudo rm /tmp/maxadmin.sock
|
|
||||||
fi
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >stop_double_maxscale.sh
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
sudo systemctl stop maxscale
|
|
||||||
|
|
||||||
sudo rm -rf /var/lib/maxscale/*
|
|
||||||
sudo rm -rf /var/cache/maxscale/*
|
|
||||||
sudo rm -rf /var/run/maxscale/*
|
|
||||||
|
|
||||||
if [ -f /tmp/maxadmin.sock ]
|
|
||||||
then
|
|
||||||
sudo rm /tmp/maxadmin.sock
|
|
||||||
fi
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x *.sh
|
chmod +x *.sh
|
||||||
|
|
||||||
npm i
|
npm i
|
||||||
|
|
||||||
# Export the value for --basedir where maxscale binaries are located
|
# Export the value for --basedir where maxscale binaries are located
|
||||||
|
|||||||
@ -68,6 +68,25 @@ void TestConnections::multiple_maxscales(bool value)
|
|||||||
maxscale::multiple_maxscales = value;
|
maxscale::multiple_maxscales = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestConnections::set_secondary_maxscale(const char* ip_var, const char* ip6_var)
|
||||||
|
{
|
||||||
|
const char* ip = getenv(ip_var);
|
||||||
|
const char* ip6 = getenv(ip6_var);
|
||||||
|
|
||||||
|
if (ip || ip6)
|
||||||
|
{
|
||||||
|
TestConnections::multiple_maxscales(true);
|
||||||
|
if (ip)
|
||||||
|
{
|
||||||
|
setenv("maxscale2_IP", ip, 1);
|
||||||
|
}
|
||||||
|
if (ip6)
|
||||||
|
{
|
||||||
|
setenv("maxscale2_network6", ip6, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TestConnections::TestConnections(int argc, char *argv[]):
|
TestConnections::TestConnections(int argc, char *argv[]):
|
||||||
enable_timeouts(true),
|
enable_timeouts(true),
|
||||||
global_result(0),
|
global_result(0),
|
||||||
|
|||||||
@ -338,7 +338,10 @@ public:
|
|||||||
static void require_galera_version(const char *version);
|
static void require_galera_version(const char *version);
|
||||||
|
|
||||||
/** Initialize multiple MaxScale instances */
|
/** Initialize multiple MaxScale instances */
|
||||||
void multiple_maxscales(bool value);
|
static void multiple_maxscales(bool value);
|
||||||
|
|
||||||
|
/** Set secondary MaxScale address */
|
||||||
|
static void set_secondary_maxscale(const char* ip_var, const char* ip6_var);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief add_result adds result to global_result and prints error message if result is not 0
|
* @brief add_result adds result to global_result and prints error message if result is not 0
|
||||||
|
|||||||
Reference in New Issue
Block a user