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