Run REST API and MaxCtrl unit tests

Install Docker when building on CentOS 7. This allows the REST API and
MaxCtrl unit tests to be run.
This commit is contained in:
Markus Mäkelä
2018-08-11 22:42:22 +03:00
parent f90b8cdafb
commit 1572e088bf
5 changed files with 50 additions and 14 deletions

View File

@ -16,6 +16,22 @@ if [[ "$cmake_flags" =~ "BUILD_TESTS" ]]
then then
# All tests must pass otherwise the build is considered a failure # All tests must pass otherwise the build is considered a failure
ctest --output-on-failure || exit 1 ctest --output-on-failure || exit 1
# See if docker is installed and run REST API and MaxCtrl tests if it is
command -v docker
if [ $? -eq 0 ]
then
export SKIP_SHUTDOWN=Y
make test_rest_api && make test_maxctrl
rc=$?
#docker ps -aq|xargs docker rm -vf
if [ $rc -ne 0 ]
then
cat maxscale_test/*.output maxscale_test/log/maxscale/*.log
exit 1
fi
fi
fi fi
# Never strip binaries # Never strip binaries

View File

@ -86,6 +86,14 @@ else
# Enable it by default # Enable it by default
echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc
else
# Installed for REST API and MaxCtrl unit tests
sudo yum -y install docker epel-release
sudo yum -y install docker-compose
sudo groupadd docker
sudo usermod -a -G docker `whoami`
sudo sed -i 's/--selinux-enabled/--selinux-enabled=false/' /etc/sysconfig/docker
sudo systemctl start docker
fi fi
fi fi

View File

@ -84,7 +84,17 @@ do
docker exec -i $node mysql -umaxuser -pmaxpwd -e "select 1" >& /dev/null && break docker exec -i $node mysql -umaxuser -pmaxpwd -e "select 1" >& /dev/null && break
sleep 1 sleep 1
done done
echo "Done!"
docker exec -i $node mysql -umaxuser -pmaxpwd -e "select 1" >& /dev/null
if [ $? -ne 0 ]
then
echo "failed to start $node, error is:"
docker exec -i $node mysql -umaxuser -pmaxpwd -e "select 1"
exit 1
else
echo "Done!"
fi
done done
# Go to the test directory # Go to the test directory

View File

@ -35,21 +35,20 @@ then
fi fi
# Start MaxScale # Start MaxScale
$maxscaledir/bin/maxscale $user_opt -f $maxscaledir/maxscale.cnf &>> $maxscaledir/maxscale1.output $maxscaledir/bin/maxscale $user_opt -f $maxscaledir/maxscale.cnf &>> $maxscaledir/maxscale1.output || exit 1
# Wait for the first MaxScale to start
for ((i=0;i<150;i++))
do
$maxscaledir/bin/maxctrl list servers >& /dev/null && break
sleep 0.1
done
# Start a second maxscale # Start a second maxscale
$maxscaledir/bin/maxscale $user_opt -f $maxscaledir/maxscale_secondary.cnf &>> $maxscaledir/maxscale2.output $maxscaledir/bin/maxscale $user_opt -f $maxscaledir/maxscale_secondary.cnf &>> $maxscaledir/maxscale2.output || exit 1
# Wait for the MaxScales to start
# Wait for the second MaxScale to start
for ((i=0;i<150;i++)) for ((i=0;i<150;i++))
do do
$maxscaledir/bin/maxctrl --hosts 127.0.0.1:8990 list servers >& /dev/null && break $maxscaledir/bin/maxctrl list servers >& /dev/null && \
$maxscaledir/bin/maxctrl --hosts 127.0.0.1:8990 list servers >& /dev/null && \
exit 0
sleep 0.1 sleep 0.1
done done
# MaxScales failed to start, exit with an error
exit 1

View File

@ -25,11 +25,14 @@ then
fi fi
# Start MaxScale # Start MaxScale
$maxscaledir/bin/maxscale $user_opt -f $maxscaledir/maxscale.cnf &>> $maxscaledir/maxscale.output $maxscaledir/bin/maxscale $user_opt -f $maxscaledir/maxscale.cnf &>> $maxscaledir/maxscale.output || exit 1
# Wait for MaxScale to start # Wait for MaxScale to start
for ((i=0;i<150;i++)) for ((i=0;i<150;i++))
do do
$maxscaledir/bin/maxctrl list servers >& /dev/null && break $maxscaledir/bin/maxctrl list servers >& /dev/null && exit 0
sleep 0.1 sleep 0.1
done done
# MaxScale failed to start, exit with an error
exit 1