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:
parent
9617b55905
commit
47b1004134
@ -20,7 +20,7 @@ module.exports = function() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
child_process.execFile("./start_maxscale.sh", function(err, stdout, stderr) {
|
||||
if (err) {
|
||||
reject()
|
||||
reject(err)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
@ -33,7 +33,7 @@ module.exports = function() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
child_process.execFile("./start_double_maxscale.sh", function(err, stdout, stderr) {
|
||||
if (err) {
|
||||
reject()
|
||||
reject(err)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
@ -46,7 +46,7 @@ module.exports = function() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
child_process.execFile("./stop_maxscale.sh", function(err, stdout, stderr) {
|
||||
if (err) {
|
||||
reject()
|
||||
reject(err)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
@ -59,7 +59,7 @@ module.exports = function() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
child_process.execFile("./stop_double_maxscale.sh", function(err, stdout, stderr) {
|
||||
if (err) {
|
||||
reject()
|
||||
reject(err)
|
||||
} else {
|
||||
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[])
|
||||
{
|
||||
// Use galera_003 as the secondary MaxScale node
|
||||
TestConnections::set_secondary_maxscale("galera_003_network", "galera_003_network6");
|
||||
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("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
|
||||
test.tprintf("Installing NPM");
|
||||
|
@ -18,49 +18,10 @@ cd MaxScale
|
||||
git checkout $ref
|
||||
cd maxctrl
|
||||
|
||||
cat <<EOF > start_maxscale.sh
|
||||
#!/bin/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
|
||||
|
||||
# Create the scripts that start and stop MaxScale
|
||||
~/maxctrl_scripts.sh
|
||||
chmod +x *.sh
|
||||
|
||||
npm i
|
||||
|
||||
# Export the value for --basedir where maxscale binaries are located
|
||||
|
@ -68,6 +68,25 @@ void TestConnections::multiple_maxscales(bool 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[]):
|
||||
enable_timeouts(true),
|
||||
global_result(0),
|
||||
|
@ -338,7 +338,10 @@ public:
|
||||
static void require_galera_version(const char *version);
|
||||
|
||||
/** 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
|
||||
|
Loading…
x
Reference in New Issue
Block a user