diff --git a/BUILD/mdbci/build.sh b/BUILD/mdbci/build.sh index 8fa5c82d4..7437a8ff0 100755 --- a/BUILD/mdbci/build.sh +++ b/BUILD/mdbci/build.sh @@ -136,3 +136,7 @@ if [ $build_result -ne 0 ] ; then exit $build_result fi +if [ ${run_upgrade_test} == "yes" ] ; then + ${script_dir}/upgrade_test.sh +fi + diff --git a/BUILD/mdbci/cnf/maxscale.cnf.minimum b/BUILD/mdbci/cnf/maxscale.cnf.minimum new file mode 100644 index 000000000..7f98211b6 --- /dev/null +++ b/BUILD/mdbci/cnf/maxscale.cnf.minimum @@ -0,0 +1,15 @@ +[maxscale] +threads=4 +log_warning=1 + +[CLI] +type=service +router=cli + +[CLI Listener] +type=listener +service=CLI +protocol=maxscaled +#address=localhost +socket=default + diff --git a/BUILD/mdbci/cnf/maxscale.cnf.minimum.1.4.4 b/BUILD/mdbci/cnf/maxscale.cnf.minimum.1.4.4 new file mode 100644 index 000000000..1ae204cc2 --- /dev/null +++ b/BUILD/mdbci/cnf/maxscale.cnf.minimum.1.4.4 @@ -0,0 +1,16 @@ +[maxscale] +threads=4 +log_warning=1 + +[CLI] +type=service +router=cli + +[CLI Listener] +type=listener +service=CLI +protocol=maxscaled +#address=localhost +port=6603 + + diff --git a/BUILD/mdbci/configure_log_dir.sh b/BUILD/mdbci/configure_log_dir.sh new file mode 100644 index 000000000..568c298b7 --- /dev/null +++ b/BUILD/mdbci/configure_log_dir.sh @@ -0,0 +1,15 @@ +set -x +LOGS_DIR=${logs_dir:-$HOME/LOGS} +echo $JOB_NAME | grep "/" +if [ $? == 0 ] ; then + export job_name_buildID=`echo $JOB_NAME | sed "s|/|-$BUILD_NUMBER/|"` + export logs_publish_dir="${LOGS_DIR}/${job_name_buildID}/" +else + export logs_publish_dir="${LOGS_DIR}/${JOB_NAME}-${BUILD_NUMBER}" +fi + +export job_name_buildID=`echo ${JOB_NAME} | sed "s|/|-${BUILD_NUMBER}/|"` +export logs_publish_dir="${LOGS_DIR}/${job_name_buildID}-${BUILD_NUMBER}" +echo "Logs go to ${logs_publish_dir}" +mkdir -p ${logs_publish_dir} + diff --git a/BUILD/mdbci/local_rep.sh b/BUILD/mdbci/local_rep.sh new file mode 100644 index 000000000..0cb6626aa --- /dev/null +++ b/BUILD/mdbci/local_rep.sh @@ -0,0 +1 @@ +export ci_url="http://192.168.122.1/repository" diff --git a/BUILD/mdbci/set_build_variables.sh b/BUILD/mdbci/set_build_variables.sh index 069d40197..8c4dd8b02 100644 --- a/BUILD/mdbci/set_build_variables.sh +++ b/BUILD/mdbci/set_build_variables.sh @@ -76,3 +76,7 @@ export ci_url=${ci_url:-"http://max-tst-01.mariadb.com/ci-repository/"} export deb_repo_key=${deb_repo_key:-"135659e928c12247"} export rpm_repo_key=${rpm_repo_key:-"$ci_url/MariaDBMaxscale-GPG-KEY.public"} + +export run_upgrade_test=${run_upgrade_test:-"no"} + +export production_url=${production_url:-"https://downloads.mariadb.com/MaxScale/"} diff --git a/BUILD/mdbci/templates/install.json.template b/BUILD/mdbci/templates/install.json.template new file mode 100644 index 000000000..81db5a9de --- /dev/null +++ b/BUILD/mdbci/templates/install.json.template @@ -0,0 +1,11 @@ +{ + "maxscale" : + { + "hostname" : "maxscale", + "box" : "$box", + "product" : { + "name": "maxscale" + } + + } +} diff --git a/BUILD/mdbci/upgrade_test.sh b/BUILD/mdbci/upgrade_test.sh new file mode 100755 index 000000000..c446a0de9 --- /dev/null +++ b/BUILD/mdbci/upgrade_test.sh @@ -0,0 +1,138 @@ +#!/bin/bash + +set -x + +# read the name of build scripts directory +export script_dir="$(dirname $(readlink -f $0))" + +# load all needed variables +. ${script_dir}/set_build_variables.sh + +export maxadmin_command=${maxadmin_command:-"sudo maxadmin show services"} + +export old_target=${old_target:-"2.1.9"} +export old_target=`echo $old_target | sed "s/?//g"` + +provider=`${mdbci_dir}/mdbci show provider $box --silent 2> /dev/null` +name=$box-${JOB_NAME}-${BUILD_NUMBER}_upgradetest +name=`echo $name | sed "s|/|-|g"` + + +cp ${script_dir}/install.json.template ${MDBCI_VM_PATH}/$name.json + + eval "cat < /dev/null > $MDBCI_VM_PATH/${name}.json + + +while [ -f ~/vagrant_lock ] +do + sleep 5 +done +touch ~/vagrant_lock +echo $JOB_NAME-$BUILD_NUMBER >> ~/vagrant_lock + +# destroying existing box +if [ -d "install_$box" ]; then + cd $MDBCI_VM_PATH/$name + vagrant destroy -f + cd $dir +fi + +${mdbci_dir}/repository-config/generate_all.sh repo.d +${mdbci_dir}/repository-config/maxscale-release.sh $old_target repo.d + +# starting VM for build +${mdbci_dir}/mdbci --override --template $MDBCI_VM_PATH/$name.json --repo-dir $dir/repo.d generate $name +${mdbci_dir}/mdbci up $name --attempts=1 +if [ $? != 0 ] ; then + if [ $? != 0 ] ; then + echo "Error starting VM" + cd ${MDBCI_VM_PATH}/$name + if [ "x$do_not_destroy_vm" != "xyes" ] ; then + vagrant destroy -f + fi + cd $dir + rm ~/vagrant_lock + exit 1 + fi +fi + +rm ~/vagrant_lock + +# get VM info +export sshuser=`${mdbci_dir}/mdbci ssh --command 'whoami' --silent $name/maxscale 2> /dev/null | tr -d '\r'` +export IP=`${mdbci_dir}/mdbci show network $name/maxscale --silent 2> /dev/null` +export sshkey=`${mdbci_dir}/mdbci show keyfile $name/maxscale --silent 2> /dev/null | sed 's/"//g'` +export scpopt="-i $sshkey -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=120 " +export sshopt="$scpopt $sshuser@$IP" + +old_version=`ssh $sshopt "maxscale --version" ` + +rm -rf repo.d +${mdbci_dir}/repository-config/generate_all.sh repo.d +${mdbci_dir}/repository-config/maxscale-ci.sh $target repo.d + +${mdbci_dir}/mdbci setup_repo --product maxscale --repo-dir $dir/repo.d $name/maxscale +${mdbci_dir}/mdbci install_product --product maxscale $name/maxscale + +res=$? + +new_version=`ssh $sshopt "maxscale --version" ` + +echo "old version: '${old_version}', new version: '${new_version}'" +if [ "${old_version}" == "${new_version}" ]; then + echo "Upgrde was not done!" + res=1 +fi + +export cnf_file=${cnf_file:-"maxscale.cnf.minimum"} + +scp $scpopt ${script_dir}/cnf/$cnf_file $sshuser@$IP:~/ + +. ${script_dir}/configure_log_dir.sh + +${mdbci_dir}/mdbci ssh --command 'service --help' $name/maxscale +if [ $? == 0 ] ; then + maxscale_start_cmd="sudo service maxscale start" +else + ${mdbci_dir}/mdbci ssh --command 'echo \"/usr/bin/maxscale 2> /dev/null &\" > maxscale_start.sh; echo \"disown\" >> maxscale_start.sh; chmod a+x maxscale_start.sh' $name/maxscale --silent + maxscale_start_cmd="sudo ./maxscale_start.sh 2> /dev/null &" +fi + + + +ssh $sshopt "sudo cp $cnf_file /etc/maxscale.cnf" +ssh $sshopt "$maxscale_start_cmd" & +pid_to_kill=$! + +sleep 10 + +ssh $sshopt $maxadmin_command +if [ $? != 0 ] ; then + echo "Maxadmin executing error" + res=1 +fi +maxadmin_out=`ssh $sshopt $maxadmin_command` +echo $maxadmin_out | grep "CLI" +if [ $? != 0 ] ; then + echo "CLI service is not found in maxadmin output" + res=1 +fi +echo $maxadmin_out | grep "Started" +if [ $? != 0 ] ; then + echo "'Started' is not found in the CLI service description" + res=1 +fi + +mkdir -p $logs_publish_dir +scp $scpopt $sshuser@$IP:/var/log/maxscale/* $logs_publish_dir +chmod a+r $logs_publish_dir/* + +if [ "x$do_not_destroy_vm" != "xyes" ] ; then + cd $MDBCI_VM_PATH/$name + vagrant destroy -f + cd $dir +fi +kill $pid_to_kill +exit $res