Files
MaxScale/maxscale-system-test/Documentation
Timofey Turenko b0efcea3f6 Remove vagrant lock from build.sh and run_test.sh (#190)
vagrant_lock was created in order to prevent parallel execution of two 'Vagrant up' operations in parallel. Previously it was necessary due to Vagrant internal Chef issue. Now several bugs in Vagrant are fixed and MDBCI uses own Chef to provision nodes for builds and tests. There is no need to wait for previous Vagrant run finished, removing all waiting from all scripts.
'rm vagrant_lock is still present to remove locks created by previous versions of build and test scripts-
2019-02-25 14:22:32 +02:00
..
2018-03-13 11:37:10 +02:00
2019-01-03 13:07:05 +02:00
2018-03-13 11:37:10 +02:00

build-scripts-vagrant

Build and test scripts to work with Vagrant-controlled VMs do follwoing:

  • create VM for Maxscale build
  • create a set of VMs (test environment) for running Maxscale tests

Test environment consists of:

  • 'maxscale' machine
  • 'nodeN' machines for Master/Slave setup (node0, node1, node2, node3)
  • 'galeraN' machines for Galera cluster (galera0, galera1, galera2, galera3)

Main files

File Description
prepare_and_build.sh Create VM for build and execute build, publish resulting repository
build.<provider>.template.json templates of MDBCI configuration description (build environment description) of build machines
test-setup-scripts/setup_repl.sh Prepares repl_XXX machines to be configured into Master/Slave
test-setup-scripts/galera/setup_galera.sh Prepares galera_XXX machines to be configured into Galera cluster
test-setup-scripts/cnf/ my.cnf files for all backend machines
test/template.<provider>.json Templates of MDBCI configuration description (test environment description) of test machines
test/run_test.sh Creates test environment, build maxscale-system-tests from source and execute tests using ctest
test/set_env_vagrant.sh set all environment variables for existing test machines using MDBCI to get all values
test/create_env.sh Creates test environment, copy Maxscale source code to 'maxscale' machine in this environment, build Maxscale

prepare_and_build.sh

Following variables have to be defined before executing prepare_and_build.sh

Variable Meaning
$MDBCI_VM_PATH Path to duirectory to store VM info and Vagrant files (by default $HOME/vms)
$box name of MDBCI box (see MDBCI docs)
$target name of repository to put result of build
$scm_source reference to the place in Maxscale source GIT repo
$cmake_flags additional cmake flags
$do_not_destroy_vm if 'yes' build VM won't be destroyed after the build. NOTE: do not forget destroy it manually
$no_repo if 'yes' repository won't be built

Scripts creates MDBCI configuration build_$box-.json, bringing it up (the directory build_$box- is created)

Resulting DEB or RPM first go to ~/pre-repo/$target/$box

NOTE: if ~/pre-repo/$target/$box contains older version they will also go to repostory

Resulting repository goes to ~/repository/$target/mariadb-maxscale/

It is recommeneded to publish ~/repository/ directory on a web server

test/run_test.sh

Following variables have to be defined before executing run_test.sh

Variable Meaning
$box name of MDBCI box for Maxscale machine (see MDBCI docs)
$name unique name of test setup
$product 'mariadb' or 'mysql'
$version version of backend DB
$target name of Maxscale repository
$ci_url URL of repostory web site, Maxscale will be installed from $ci_url/$target/mariadb-maxscale/
$do_not_destroy_vm if 'yes' build VM won't be destroyed after the build. NOTE: do not forget to destroy it manually
$smoke if 'yes' all tests are executed in 'quick' mode (less iterations, skip heavy operations)
$test_set definition of set of tests to run in ctest notation
test_set_labels list of ctest labels. If it is not define 'test_set' will be used as a plain string

Test environment operations

Accessing nodes

cd $MDBCI_VM_PATH/$name/
vagrant ssh $node_name

where $node_name - 'maxscale', 'node0', ..., 'node3', ..., 'nodeN', 'galera0', ..., 'galera3', ..., 'galeraN'

Getting IP address and access keys

~/mdbci/mdbci show network $name
~/mdbci/mdbci show network $name/$node_name
~/mdbci/mdbci show keyfile $name/$node_name

Destroying environemnt

cd $MDBCI_VM_PATH/$name/
vagrant destroy -f

Set variables by test/set_env_vagrant.sh

. ../build-scripts/test/set_env_vagrant.sh $name