Add various build script documents
Added documents that were left over from the build scripts repo.
This commit is contained in:
312
maxscale-system-test/Documentation/BUILD_TEST_DEBUG.md
Normal file
312
maxscale-system-test/Documentation/BUILD_TEST_DEBUG.md
Normal file
@ -0,0 +1,312 @@
|
|||||||
|
# Maxscale Continuous Integration and Test Automation
|
||||||
|
|
||||||
|
## Basics
|
||||||
|
|
||||||
|
Jenkins at http://max-tst-01.mariadb.com:8089/
|
||||||
|
is the main tool for providing build and test services for Maxscale,
|
||||||
|
but note that it _cannot_ be accessed directly (see further down).
|
||||||
|
|
||||||
|
A set of virtual machines (VMs) is in use for all building and testing.
|
||||||
|
The VMs are controlled by [Vagrant](https://www.vagrantup.com/)
|
||||||
|
and [MDBCI](https://github.com/OSLL/mdbci/).
|
||||||
|
|
||||||
|
3 types of VMs are supported:
|
||||||
|
* Libvirt/qemu
|
||||||
|
* AWS
|
||||||
|
* Docker containers
|
||||||
|
|
||||||
|
All Jenkins jobs are in
|
||||||
|
[Jenkins job Builder](https://docs.openstack.org/infra/jenkins-job-builder/)
|
||||||
|
YAML format and are available
|
||||||
|
[here](https://github.com/mariadb-corporation/maxscale-jenkins-jobs).
|
||||||
|
|
||||||
|
VMs for every build or test run are created from clean Vagrant box.
|
||||||
|
|
||||||
|
To speed up regular builds and tests there are a set of constantly running VMs:
|
||||||
|
* Build machine _centos\_7\_libvirt\_build_
|
||||||
|
* Test VMs set _centos\_7\_libvirt-mariadb-10.0-permanent_
|
||||||
|
|
||||||
|
Build and test Jenkins jobs generate e-mails with results report.
|
||||||
|
In addition, test run logs are stored [here](http://max-tst-01.mariadb.com/LOGS/).
|
||||||
|
|
||||||
|
## Accessing _max-tst-01_
|
||||||
|
|
||||||
|
Jenkins running on _max-tst-01_ can only be accessed from localhost. In order
|
||||||
|
to be able to access it from your computer, an ssh tunnel needs to be setup.
|
||||||
|
|
||||||
|
* Ensure that your public key is available on _max-tst-01_.
|
||||||
|
* Then setup the ssh tunnel:
|
||||||
|
```
|
||||||
|
$ ssh -f -N -L 8089:127.0.0.1:8089 vagrant@max-tst-01.mariadb.com
|
||||||
|
```
|
||||||
|
After that, Jenkins on _max-tst-01_ can be accessed by browsing to
|
||||||
|
http://localhost:8089.
|
||||||
|
|
||||||
|
In the following it is assumed that the above has been done.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
* [Build](http://localhost:8089/job/build/) builds Maxscale
|
||||||
|
and creates a binary repository for one Linux distribution.
|
||||||
|
|
||||||
|
* [Build_all](http://localhost:8089/job/build_all/) builds
|
||||||
|
Maxscale and creates binary repository for _all_ supported Linux
|
||||||
|
distributions.
|
||||||
|
|
||||||
|
The list of supported distributions (Vagrant boxes) is
|
||||||
|
[here](https://github.com/mariadb-corporation/maxscale-jenkins-jobs/blob/master/maxscale_jobs/include/boxes.yaml).
|
||||||
|
|
||||||
|
### Main _Build_ and _Build_all_ jobs parameters
|
||||||
|
|
||||||
|
To start a build, click on _Build with Parameters_ to the left in
|
||||||
|
the Jenkins panel.
|
||||||
|
|
||||||
|
#### scm_source
|
||||||
|
The place in Maxscale source code.
|
||||||
|
* for branch - put branch name here
|
||||||
|
* for commit ID - put Git Commit ID here
|
||||||
|
* for tag - put `refs/tags/<tagName>` here
|
||||||
|
|
||||||
|
#### box
|
||||||
|
The name of Vagrant box to create VM.
|
||||||
|
Box name consists of the name of distribution, distribution version and the name of VM provider.
|
||||||
|
Whole list of supported boxes can be found [here](https://github.com/mariadb-corporation/maxscale-jenkins-jobs/blob/master/maxscale_jobs/include/boxes_all.yaml)
|
||||||
|
|
||||||
|
#### target
|
||||||
|
Then name of binary repository. Ensure that the name is reasonably
|
||||||
|
unique so that there can be no unintended overwrites. If you are
|
||||||
|
building a personal branch, then using the same value for _target_
|
||||||
|
as is the value for _scm_source_ should be fine.
|
||||||
|
|
||||||
|
Binaries will go to:
|
||||||
|
`http://max-tst-01.mariadb.com/ci-repository/<target>/mariadb-maxscale/<distribution_name>/<version>`
|
||||||
|
|
||||||
|
#### cmake_flags
|
||||||
|
|
||||||
|
Debug build:
|
||||||
|
```
|
||||||
|
-DBUILD_TESTS=Y -DCMAKE_BUILD_TYPE=Debug -DFAKE_CODE=Y -DBUILD_MMMON=Y -DBUILD_AVRO=Y -DBUILD_CDC=Y
|
||||||
|
```
|
||||||
|
|
||||||
|
Release build:
|
||||||
|
```
|
||||||
|
-DBUILD_TESTS=N -DFAKE_CODE=N -DBUILD_MMMON=Y -DBUILD_AVRO=Y -DBUILD_CDC=Y
|
||||||
|
```
|
||||||
|
|
||||||
|
Build scripts automatically add all other necessary flags (e.g. -DPACKAGE=Y)
|
||||||
|
|
||||||
|
#### do_not_destroy_vm
|
||||||
|
|
||||||
|
If `yes`, then the VM will not be destroyed after the build. Choose that **if** you,
|
||||||
|
for some specific reason (e.g. debugging), intend to log into the VM later.
|
||||||
|
|
||||||
|
#### repo_path
|
||||||
|
|
||||||
|
The location for binary repositories on _max-tst-01_. Usually no need to change.
|
||||||
|
|
||||||
|
#### try_alrady_running
|
||||||
|
If `yes` constantly running VM will be used for build instead of bringing clean
|
||||||
|
machines from scratch. The name of VM is `<box_name>_build`.
|
||||||
|
|
||||||
|
If this VM is not running it will be created from clean box. If new build
|
||||||
|
dependency is introduced and new package have to be installed (and build
|
||||||
|
script is modified to do it) before the build it is necessary to destroy
|
||||||
|
constantly running VM - in this case a new VM will be created and all stuff
|
||||||
|
will be installed.
|
||||||
|
|
||||||
|
#### run_upgrade_test
|
||||||
|
|
||||||
|
If `yes` upgrade test will be executed after build.
|
||||||
|
|
||||||
|
Upgrade test is executed on a separate VM.
|
||||||
|
|
||||||
|
* First, old version of Maxsale is installed (parameter **old_target**),
|
||||||
|
* then upgrade to recently built version is executed,
|
||||||
|
* then Maxscale is started with minimum configuration (only CLI service is
|
||||||
|
configured, no backend at all), and
|
||||||
|
* finally, _maxadmin_ is executed to check that Maxscale is running and available.
|
||||||
|
|
||||||
|
### Regular automatic builds
|
||||||
|
|
||||||
|
File `~/jobs_branches/build_all_branches.list` on _max-tst-02.mariadb.com contains
|
||||||
|
a list of regexes. If branch name matches one of the regex from this file
|
||||||
|
_build_all_ job will be executed for this branch every night.
|
||||||
|
|
||||||
|
Regular builds are executed with _run\_upgrade\_test=yes_
|
||||||
|
|
||||||
|
## Test execution
|
||||||
|
|
||||||
|
* [run_test](http://localhost:8089/view/test/job/run_test/) creates a set of
|
||||||
|
VMs: 1 VM for Maxscale, 4 VMs for Master/Slave setup and VMs for Galera cluster.
|
||||||
|
|
||||||
|
### Main _Run_test_ parameters
|
||||||
|
|
||||||
|
Before this job can be run, a
|
||||||
|
[build](#build)
|
||||||
|
job must have been executed first.
|
||||||
|
|
||||||
|
#### target
|
||||||
|
The name of Maxscale binary repository.
|
||||||
|
|
||||||
|
The value used here, should be the same as the value used in [target](#target).
|
||||||
|
|
||||||
|
#### box
|
||||||
|
The name of Vagrant box to create VM.
|
||||||
|
|
||||||
|
The value used here, must be the same as the value used in
|
||||||
|
[box](#box)
|
||||||
|
when the used **target** was built.
|
||||||
|
|
||||||
|
#### product
|
||||||
|
MariaDB or MySQL to be installed to all backend machines.
|
||||||
|
|
||||||
|
#### version
|
||||||
|
Version of MariaDB or MySQL to be installed on all MariaDB machines.
|
||||||
|
The list of versions contains all MariaDB and MySQL major version.
|
||||||
|
Selecting wrong version (e.g. 5.7 for MariaDB or 10.0 for MySQL) causes
|
||||||
|
VM creation error and job failure.
|
||||||
|
|
||||||
|
#### do_not_destroy_vm
|
||||||
|
If `yes` all VMs will run until manually destoroy by **Destroy** job.
|
||||||
|
It can be used for debugging. **Do not forget to destroy** VMs after debugging
|
||||||
|
is finished.
|
||||||
|
|
||||||
|
#### name
|
||||||
|
The name of test run. The names of the VMs will be:
|
||||||
|
|
||||||
|
* `<name>_maxscale`,
|
||||||
|
* `<name>_node_000`, ..., `<name>_node_003` and
|
||||||
|
* `<name>_galera_000`, ..., `<name>_galera_003`-
|
||||||
|
|
||||||
|
The **name** can be used to access VMs:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/set_env_vagrant.sh <name>
|
||||||
|
ssh -i $<vm_name>_keyfile $<vm_name>_whoami@$<vm_name>_network
|
||||||
|
```
|
||||||
|
where `<vm_name>` can be 'maxscale', 'node_XXX' or 'galera_XXX'.
|
||||||
|
|
||||||
|
#### test_branch
|
||||||
|
The name of _MaxScale_ repository branch to be used in the test run.
|
||||||
|
|
||||||
|
It is usually the same as the one used in [scm_source](#scm_source).
|
||||||
|
|
||||||
|
#### slave_name
|
||||||
|
Host server to for VMs and _maxscale-system-test_ execution
|
||||||
|
|
||||||
|
|Name|Server|
|
||||||
|
|-------|:---------------------|
|
||||||
|
|master |localhost|
|
||||||
|
|maxtst2|max-tst-02.mariadb.com|
|
||||||
|
|maxtst3|max-tst-03.mariadb.com|
|
||||||
|
|
||||||
|
#### test_set
|
||||||
|
Defines tests to be run. See ctest documentation
|
||||||
|
https://cmake.org/cmake/help/v3.7/manual/ctest.1.html
|
||||||
|
for details.
|
||||||
|
|
||||||
|
Most common cases:
|
||||||
|
|
||||||
|
|Arguments|Description|
|
||||||
|
|-------------|:--------------------------------------------------|
|
||||||
|
|-I 1,5,,45,77| Execute tests from 1 to 5 and tests 45 and 77|
|
||||||
|
|-L HEAVY|Execute all tests with 'HEAVY' label|
|
||||||
|
|-LE UNSTABLE|Execute all tests except tests with 'UNSTABLE' label|
|
||||||
|
|
||||||
|
|
||||||
|
### Run_test_snapshot
|
||||||
|
|
||||||
|
This job uses already running VMs. The set of VMs have to have snapshot
|
||||||
|
(by default snapshot name is 'clean').
|
||||||
|
Instead of bringing up all VMs from scratch this job only reverts VMs to
|
||||||
|
the 'clean' state.
|
||||||
|
|
||||||
|
The name of running VMs set should be:
|
||||||
|
|
||||||
|
`<box>-<product>-<version>-permanent`
|
||||||
|
|
||||||
|
If there is no VMs set with such name it will be created automatically.
|
||||||
|
|
||||||
|
If case of broken VMs it can be destroyd with help of **Destroy** job
|
||||||
|
and **Run_test_snapshot** should be restarted after it to create a new
|
||||||
|
VMs set.
|
||||||
|
|
||||||
|
Only one VMs set on every server can be started for particular **box**,
|
||||||
|
**product** and **version** combination.
|
||||||
|
If two **Run_test_snapshot** jobs are runnig for the same
|
||||||
|
**box**, **product** and **version**
|
||||||
|
the second one will be waiting until the first job run ios finished.
|
||||||
|
(job sets 'snapshot_lock').
|
||||||
|
|
||||||
|
If case if locak is not removed automatically (for example
|
||||||
|
due to Jenkins crash) it can be removed manually:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm ~/mdbci/centos_7_libvirt-mariadb-10.0-permanent_snapshot_lock
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run_test_labels and Run_test_snapshot_labels
|
||||||
|
|
||||||
|
The only difference from **Run_test** and
|
||||||
|
**Run_test_snapshot** is the way to define set of tests to execute.
|
||||||
|
**\*_labels** jobs use checkboxes list of test labels.
|
||||||
|
|
||||||
|
Labels list have to be maintained manually.
|
||||||
|
It can be created by
|
||||||
|
https://github.com/mariadb-corporation/maxscale-jenkins-jobs/blob/master/create_labels_jobs.sh
|
||||||
|
script.
|
||||||
|
|
||||||
|
### Regular test runs
|
||||||
|
|
||||||
|
#### Test runs by timer
|
||||||
|
|
||||||
|
File
|
||||||
|
```
|
||||||
|
~/jobs_branches/run_test_branches.list
|
||||||
|
```
|
||||||
|
on max-tst-02.mariadb.com
|
||||||
|
contains a list of regexes. If branch name matches one of regexes
|
||||||
|
tests are executed for this branch every day.
|
||||||
|
|
||||||
|
The test set is defined also in this file.
|
||||||
|
|
||||||
|
Job **print_branches_which_matches_regex_in_file**
|
||||||
|
http://localhost:8089/view/All/job/print\_branches\_which\_matches\_regex\_in\_file/build
|
||||||
|
can be used to check the list of branches that match
|
||||||
|
regexes.
|
||||||
|
|
||||||
|
|
||||||
|
Job **weekly_smoke_run_test_matrix** triggers **build_regular**
|
||||||
|
and **run_test_matrix**
|
||||||
|
http://localhost:8089/view/test/job/run_test_matrix/
|
||||||
|
every week for 'develop' branch
|
||||||
|
with test set '-L LIGHT' (all tests with label 'LIGHT')
|
||||||
|
|
||||||
|
|
||||||
|
#### Test runs by GIT push
|
||||||
|
File
|
||||||
|
```
|
||||||
|
~/jobs_branches/on_push_maxscale_branches.list
|
||||||
|
```
|
||||||
|
on max-tst-02.mariadb.com
|
||||||
|
contains a list of regexes. If branch name matches one of regexes
|
||||||
|
tests are executed for this branch after every push.
|
||||||
|
|
||||||
|
Job **print_branches_which_matches_regex_in_file**
|
||||||
|
http://localhost:8089/view/All/job/print\_branches\_which\_matches\_regex\_in\_file/build
|
||||||
|
can be used to check the list of branches that match
|
||||||
|
regexes (select _on\_push\_maxscale\_branches.list_
|
||||||
|
file for _branches\_list_ parameter)
|
||||||
|
|
||||||
|
|
||||||
|
## Debugging
|
||||||
|
|
||||||
|
For regular debugging contsntly running set of VMs is recommended.
|
||||||
|
See [documentation here](DEBUG_ENVIRONMENT.md).
|
||||||
|
|
||||||
|
Another way is to use **do_not_destroy=yes** parameter of **run_test** job.
|
||||||
|
After **run_test** job executing VMs stay running and
|
||||||
|
can be accessed from the host server. See [here](LOCAL_DEPLOYMENT.md#accessing-vms)
|
||||||
|
for details.
|
||||||
|
|
||||||
|
|
113
maxscale-system-test/Documentation/DEBUG_ENVIRONMENT.md
Normal file
113
maxscale-system-test/Documentation/DEBUG_ENVIRONMENT.md
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
# Debug environment
|
||||||
|
|
||||||
|
## Create ssh tunnel to Jenkins server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -f -N -L 8089:127.0.0.1:8089 vagrant@max-tst-01.mariadb.com
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create environment for debugging
|
||||||
|
|
||||||
|
To create virtual machines for debugging please
|
||||||
|
use Jenkins job 'create_env'
|
||||||
|
http://127.0.0.1:8089/view/env/job/create_env/build
|
||||||
|
|
||||||
|
This Jenkins job creates backend VMs
|
||||||
|
(4 Master/Slave and 4 Galera) and
|
||||||
|
Maxscale development machine.
|
||||||
|
|
||||||
|
Maxscale development machine will contain all
|
||||||
|
build tools and build dependencies as well as
|
||||||
|
Maxscale source Git.
|
||||||
|
|
||||||
|
Source is located in:
|
||||||
|
```
|
||||||
|
~/MaxScale/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Environmental variables setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/set_env_vagrant.sh <name>
|
||||||
|
```
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/set_env_vagrant.sh debug_env
|
||||||
|
```
|
||||||
|
|
||||||
|
## Access to Maxscale VM
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -i $maxscale_sshkey $maxscale_whoami@maxscale_network
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp -i $maxscale_sshkey <stuff_to_copy> $maxscale_whoami@maxscale_network:/home/$maxscale_whoami/
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp -i $maxscale_sshkey $maxscale_whoami@maxscale_network:/home/$maxscale_whoami/<stuff_to_copy> .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Executing tests
|
||||||
|
|
||||||
|
Clone https://github.com/mariadb-corporation/maxscale
|
||||||
|
|
||||||
|
and build tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd MaxScale/maxscale-system/test
|
||||||
|
cmake .
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
and then run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ctest -VV
|
||||||
|
```
|
||||||
|
|
||||||
|
or manually any test executable from _maxscale-system-test_
|
||||||
|
|
||||||
|
It is recommended to run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./check_backend
|
||||||
|
```
|
||||||
|
|
||||||
|
before manual testing to be sure Master/Slave and Galera setups are
|
||||||
|
in order (_check_backend_ also fixes broken replication or Galera)
|
||||||
|
|
||||||
|
## Restoring broken setup
|
||||||
|
|
||||||
|
Just use http://127.0.0.1:8089/view/snapshot/job/restore_snapshot/build
|
||||||
|
|
||||||
|
Manual snapshot reverting:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
~/mdbci/mdbci snapshot revert --path-to-nodes debug_env --snapshot-name clean
|
||||||
|
```
|
||||||
|
|
||||||
|
## Destroying
|
||||||
|
|
||||||
|
Use http://127.0.0.1:8089/view/axilary/job/destroy/build
|
||||||
|
with _name=debug_env_
|
||||||
|
|
||||||
|
or _clean_vms.sh_ script
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/mdbci/scripts
|
||||||
|
./clean_vms.sh debug_env
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
Please check _slave_name_ parameter when executing any Jenkins job.
|
||||||
|
All jobs are executed only for defined slave (or for master).
|
||||||
|
|
||||||
|
i.e. VM set with the same name can be running on different slaves at the same time.
|
||||||
|
|
||||||
|
|
173
maxscale-system-test/Documentation/LOCAL_DEPLOYMENT.md
Normal file
173
maxscale-system-test/Documentation/LOCAL_DEPLOYMENT.md
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
# Local deployment
|
||||||
|
|
||||||
|
## Prepare MDBCI environment
|
||||||
|
|
||||||
|
_Libvirt_, _Docker_ and _Vagrant_, with a set of plugins, are needed for MDBCI.
|
||||||
|
|
||||||
|
Please follow the instructions [here](https://github.com/mariadb-corporation/mdbci/blob/integration/PREPARATION_FOR_MDBCI.md).
|
||||||
|
|
||||||
|
## Creating VMs for local tests
|
||||||
|
|
||||||
|
[test/create_local_config.sh](test/create_local_config.sh) script creates a set of virtual machines
|
||||||
|
(1 maxscale VM, 4 Master/Slave and 4 Galera).
|
||||||
|
|
||||||
|
Direct execution of create_local_config.sh requires manuall paramters setting.
|
||||||
|
It is easiler to ese create_local_config_libvirt.sh and create_local_config_docker.sh
|
||||||
|
|
||||||
|
Script usage:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/create_local_config.sh <target> <name>
|
||||||
|
```
|
||||||
|
where
|
||||||
|
|
||||||
|
target - Maxscale binary repository name
|
||||||
|
|
||||||
|
name - name of virtual machines set
|
||||||
|
|
||||||
|
Note: '.' before command allows script to load all environmental variables (needed for 'maxscale-system-test').
|
||||||
|
|
||||||
|
|
||||||
|
All other parameters have to be defined as environmental variables before executing the script.
|
||||||
|
|
||||||
|
Examples of parameters definition can be found in the following scripts:
|
||||||
|
|
||||||
|
[test/create_local_config_libvirt.sh](test/create_local_config_libvirt.sh)
|
||||||
|
|
||||||
|
[test/create_local_config_docker.sh](test/create_local_config_docker.sh)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/create_local_config_libvirt.sh <target> <name>
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/create_local_config_docker.sh <target> <name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Execute test
|
||||||
|
|
||||||
|
Clone and compile https://github.com/mariadb-corporation/MaxScale
|
||||||
|
|
||||||
|
Build tests:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd Maxscale/maxscale-system-test
|
||||||
|
cmake .
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
if environmental variables are not set:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/set_env_vagrant.sh <name>
|
||||||
|
```
|
||||||
|
|
||||||
|
Execute single test by starting test binary or use ctest to run all or selected tests (see https://cmake.org/cmake/help/v3.8/manual/ctest.1.html)
|
||||||
|
|
||||||
|
To see test output:
|
||||||
|
```bash
|
||||||
|
ctest -VV
|
||||||
|
```
|
||||||
|
|
||||||
|
## Destroying VMs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/mdbci/scripts
|
||||||
|
./clean_vms.sh <name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reverting default snapshot
|
||||||
|
|
||||||
|
create_local_config.sh script takes one snapshot of recently created set of VMs. Snapshot name is 'clean'
|
||||||
|
|
||||||
|
If VMs are damaged during testing process it is easy to restore them:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
~/mdbci/mdbci snapshot revert --path-to-nodes <name> --snapshot-name clean
|
||||||
|
```
|
||||||
|
|
||||||
|
If needed, more snapshots can be created:
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/mdbci
|
||||||
|
./mdbci snapshot take --path-to-nodes <name> --snapshot-name <snapshot_name>
|
||||||
|
```
|
||||||
|
## Accessing VMs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/mdbci/<name>
|
||||||
|
vagrant ssh <vm_name>
|
||||||
|
```
|
||||||
|
where <vm_name> can be 'maxscale', 'node_XXX' or 'galera_XXX'.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
. ~/build-scripts/test/set_env_vagrant.sh <name>
|
||||||
|
ssh -i $<vm_name>_keyfile $<vm_name>_whoami@$<vm_name>_network
|
||||||
|
```
|
||||||
|
|
||||||
|
examples:
|
||||||
|
```bash
|
||||||
|
ssh -i $node_002_keyfile $node_002_whoami@$node_002_network
|
||||||
|
|
||||||
|
ssh -i $maxscale_keyfile $maxscale_whoami@$maxscale_network
|
||||||
|
```
|
||||||
|
|
||||||
|
### Own VM configuration template
|
||||||
|
|
||||||
|
By default scripts use
|
||||||
|
~/build-scripts/test/template.libvirt.json
|
||||||
|
and
|
||||||
|
~/build-scripts/test/template.docker.json
|
||||||
|
|
||||||
|
These templates can be used as examples to create your own templates.
|
||||||
|
|
||||||
|
To use own template:
|
||||||
|
|
||||||
|
put your template file to ~/build-scripts/test/templates/
|
||||||
|
|
||||||
|
and define 'template_name' variable
|
||||||
|
```bash
|
||||||
|
export template_name=<your_template_filename>
|
||||||
|
. ~/build-scripts/test/create_local_config_libvirt.sh <target> <name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### More info about libvirt and vagrant-libvirt plugin
|
||||||
|
|
||||||
|
https://help.ubuntu.com/lts/serverguide/libvirt.html
|
||||||
|
|
||||||
|
https://github.com/vagrant-libvirt/vagrant-libvirt#installation
|
||||||
|
|
||||||
|
|
||||||
|
### vagrant is locked, waiting ...
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm ~/vagrant_lock
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Random VM creation failures
|
||||||
|
|
||||||
|
Plese check the amount of free memory and amount of running VMs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
virsh list
|
||||||
|
docker ps
|
||||||
|
```
|
||||||
|
and remove all VMs and containers you do not need
|
||||||
|
|
||||||
|
### Wrong time on host server
|
||||||
|
|
||||||
|
If server time is wrong it can cause random problems. Please do time sync: use ntp or
|
||||||
|
```bash
|
||||||
|
sudo date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Info from OSLL wiki
|
||||||
|
|
||||||
|
#### Libvirt DNS resolving problem quick fix
|
||||||
|
|
||||||
|
https://dev.osll.ru/projects/mdbci/wiki/Libvirt_DNS_resolving_problem_quick_fix
|
||||||
|
|
91
maxscale-system-test/Documentation/README.md
Normal file
91
maxscale-system-test/Documentation/README.md
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
# 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](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](test-setup-scripts/setup_repl.sh)|Prepares repl_XXX machines to be configured into Master/Slave
|
||||||
|
[test-setup-scripts/galera/setup_galera.sh](test-setup-scripts/galera/setup_galera.sh)|Prepares galera_XXX machines to be configured into Galera cluster
|
||||||
|
[test-setup-scripts/cnf/](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](test/run_test.sh)|Creates test environment, build maxscale-system-tests from source and execute tests using ctest
|
||||||
|
[test/set_env_vagrant.sh](test/set_env_vagrant.sh)|set all environment variables for existing test machines using MDBCI to get all values
|
||||||
|
[test/create_env.sh](test/create_env.sh)|Creates test environment, copy Maxscale source code to 'maxscale' machine in this environment, build Maxscale
|
||||||
|
|
||||||
|
## [prepare_and_build.sh](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](https://github.com/OSLL/mdbci#terminology))|
|
||||||
|
|$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-<current data and time>.json, bringing it up (the directory build_$box-<current data and time> 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](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](https://github.com/OSLL/mdbci#terminology))|
|
||||||
|
|$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
|
||||||
|
<pre>
|
||||||
|
cd $MDBCI_VM_PATH/$name/
|
||||||
|
vagrant ssh $node_name
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
where $node_name - 'maxscale', 'node0', ..., 'node3', ..., 'nodeN', 'galera0', ..., 'galera3', ..., 'galeraN'
|
||||||
|
|
||||||
|
### Getting IP address and access keys
|
||||||
|
<pre>
|
||||||
|
~/mdbci/mdbci show network $name
|
||||||
|
~/mdbci/mdbci show network $name/$node_name
|
||||||
|
~/mdbci/mdbci show keyfile $name/$node_name
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
### Destroying environemnt
|
||||||
|
<pre>
|
||||||
|
cd $MDBCI_VM_PATH/$name/
|
||||||
|
vagrant destroy -f
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
### Set variables by [test/set_env_vagrant.sh](test/set_env_vagrant.sh)
|
||||||
|
<pre>
|
||||||
|
. ../build-scripts/test/set_env_vagrant.sh $name
|
||||||
|
</pre>
|
268
maxscale-system-test/Documentation/RELEASE.md
Normal file
268
maxscale-system-test/Documentation/RELEASE.md
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
# Release process
|
||||||
|
|
||||||
|
## Pre-release Checklist
|
||||||
|
|
||||||
|
* Create new release notes and add all fixed bugs, use a previous one as a template
|
||||||
|
* Update the link to the latest release notes in Documentation-Contents.md
|
||||||
|
* Add link to release notes and document major changes in Changelog.md
|
||||||
|
* Add link to release notes in the Upgrading guide
|
||||||
|
|
||||||
|
## 1. Tag
|
||||||
|
|
||||||
|
Release builds are always made using a tag. However, the used
|
||||||
|
tag is a _tentative_ tag, to ensure that there never is a need
|
||||||
|
to _move_ any tag, should the release have to be modified after
|
||||||
|
it has been tagged. All that is needed is to create a new
|
||||||
|
tentative tag.
|
||||||
|
|
||||||
|
The source for release `x.y.z` is tagged with `maxscale-x.y.z-ttN`
|
||||||
|
where `N` is 1 for the first attempt and incremented in case the
|
||||||
|
`x.y.z` source still needs to be modified and the release rebuilt.
|
||||||
|
|
||||||
|
The final tag `maxscale-x.y.z` is created _after_ the packages have
|
||||||
|
been published and we are certain they will not be rebuilt, without
|
||||||
|
also the version number being changed.
|
||||||
|
|
||||||
|
So, ensure that the `maxscale-x.y.z-ttN` has been created and pushed
|
||||||
|
to the repository.
|
||||||
|
|
||||||
|
**NOTE** The tentative suffix - `-ttN` - is **only** used when
|
||||||
|
specifying the tag for the build, it must **not** be present in
|
||||||
|
any other names or paths.
|
||||||
|
|
||||||
|
## 2. Build and upgrade test
|
||||||
|
|
||||||
|
The Jenkins
|
||||||
|
[Build_all](http://localhost:8089/job/build_all/)
|
||||||
|
job should be used for building the packages.
|
||||||
|
|
||||||
|
Note that the above will not work unless you have set up an
|
||||||
|
ssh tunnel to Jenkins:
|
||||||
|
```
|
||||||
|
$ ssh -f -N -L 8089:127.0.0.1:8089 vagrant@max-tst-01.mariadb.com
|
||||||
|
```
|
||||||
|
|
||||||
|
Usually two runs are done: one for _release_ and one for _debug_ packages.
|
||||||
|
|
||||||
|
### Parameters to define
|
||||||
|
|
||||||
|
Use defaults for all other parameters.
|
||||||
|
|
||||||
|
#### source
|
||||||
|
```
|
||||||
|
refs/tags/maxscale-x.y.z-ttN
|
||||||
|
```
|
||||||
|
|
||||||
|
#### target
|
||||||
|
Debug build:
|
||||||
|
```
|
||||||
|
maxscale-x.y.z-debug
|
||||||
|
```
|
||||||
|
|
||||||
|
Release build:
|
||||||
|
```
|
||||||
|
maxscale-x.y.z-release
|
||||||
|
```
|
||||||
|
|
||||||
|
#### cmake_flags
|
||||||
|
|
||||||
|
Debug build:
|
||||||
|
```
|
||||||
|
-DBUILD_TESTS=Y -DCMAKE_BUILD_TYPE=Debug -DBUILD_MMMON=Y -DBUILD_CDC=Y
|
||||||
|
```
|
||||||
|
|
||||||
|
Release build:
|
||||||
|
```
|
||||||
|
-DBUILD_TESTS=N -DBUILD_MMMON=Y -DBUILD_CDC=Y
|
||||||
|
```
|
||||||
|
|
||||||
|
#### run_upgrade_test
|
||||||
|
|
||||||
|
```
|
||||||
|
yes
|
||||||
|
```
|
||||||
|
|
||||||
|
#### old_target
|
||||||
|
|
||||||
|
Name of some existing Maxscale repository
|
||||||
|
(please check http://max-tst-01.mariadb.com/ci-repository/
|
||||||
|
before build).
|
||||||
|
|
||||||
|
```
|
||||||
|
maxscale-x'.y'.z'-release
|
||||||
|
```
|
||||||
|
|
||||||
|
### Options for 1.4.x build
|
||||||
|
|
||||||
|
For `1.4` builds the default values of the following parameters
|
||||||
|
should be changed:
|
||||||
|
|
||||||
|
#### use_mariadbd
|
||||||
|
|
||||||
|
```
|
||||||
|
yes
|
||||||
|
```
|
||||||
|
|
||||||
|
#### cnf_file
|
||||||
|
|
||||||
|
```
|
||||||
|
maxscale.cnf.minimum.1.4.4
|
||||||
|
```
|
||||||
|
|
||||||
|
#### maxadmin_command
|
||||||
|
|
||||||
|
```
|
||||||
|
maxadmin -pmariadb show services
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Copying to code.mariadb.com
|
||||||
|
|
||||||
|
ssh to `code.mariadb.com` with your LDAP credentials.
|
||||||
|
|
||||||
|
Create directories and copy repositories files:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/mariadb-repos/mariadb-maxscale/
|
||||||
|
mkdir x.y.z
|
||||||
|
mkdir x.y.z-debug
|
||||||
|
cd x.y.z
|
||||||
|
rsync -avz --progress --delete -e ssh vagrant@max-tst-01.mariadb.com:/home/vagrant/repository/maxscale-x.y.z-release/mariadb-maxscale/ .
|
||||||
|
cd ../x.y.z-debug
|
||||||
|
rsync -avz --progress --delete -e ssh vagrant@max-tst-01.mariadb.com:/home/vagrant/repository/maxscale-x.y.z-debug/mariadb-maxscale/ .
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Email webops-requests@mariadb.com
|
||||||
|
|
||||||
|
Email example:
|
||||||
|
|
||||||
|
Subject: `MaxScale x.y.z release`
|
||||||
|
|
||||||
|
```
|
||||||
|
Hello,
|
||||||
|
|
||||||
|
Please publish Maxscale x.y.z binaries on web page.
|
||||||
|
Repos are on code.mariadb.com /home/mariadb-repos/mariadb-maxscale/x.y.z
|
||||||
|
|
||||||
|
symlink 'x.y' should be set to 'x.y.z'
|
||||||
|
symlink 'latest' [should|should NOT] be set to 'x.y.z'
|
||||||
|
|
||||||
|
Also please make sure that debug binaries are not visible from
|
||||||
|
https://mariadb.com/my_portal/download/maxscale
|
||||||
|
```
|
||||||
|
Replace `x.y.z` with the correct version.
|
||||||
|
|
||||||
|
**NOTE** Sometimes - especially at _big_ releases when the exact release
|
||||||
|
date is fixed in advance - the following steps 5, 6 and 7 are done right
|
||||||
|
after the packages have been uploaded, to ensure that the steps 4 and 8
|
||||||
|
can be done at the same time.
|
||||||
|
|
||||||
|
## 5. Create the final tag
|
||||||
|
|
||||||
|
Once the packages have been made available for download, create
|
||||||
|
the final tag
|
||||||
|
```
|
||||||
|
$ git checkout maxscale-x.y.z-ttN
|
||||||
|
$ git tag -a -m "Tag for MaxScale x.y.z" maxscale-x.y.z
|
||||||
|
$ git push --tags origin
|
||||||
|
```
|
||||||
|
and remove the tentative tag(s)
|
||||||
|
```
|
||||||
|
$ git tag -d maxscale-x.y.z-ttN
|
||||||
|
$ git push origin :refs/tags/maxscale-x.y.z-ttN
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Create the branch
|
||||||
|
|
||||||
|
Release `x.y.z` is typically developed in the branch `x.y`.
|
||||||
|
Once `x.y.z` has been released, the branch `x.y.z` also needs
|
||||||
|
to be created.
|
||||||
|
```
|
||||||
|
$ git checkout maxscale-x.y.z
|
||||||
|
$ git checkout -b x.y.z
|
||||||
|
$ git push origin x.y.z
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Update the release date
|
||||||
|
|
||||||
|
Once the branch `x.y.z` has been created and the actual release
|
||||||
|
date of the release is known, update the release date in the
|
||||||
|
release notes.
|
||||||
|
```
|
||||||
|
$ git checkout x.y.z
|
||||||
|
$ # Update release date in .../MaxScale-x.y.z-Release-Notes.md
|
||||||
|
$ git add .../MaxScale-x.y.z-Release-Notes.md
|
||||||
|
$ git commit -m "Update release date"
|
||||||
|
$ git push origin x.y.z
|
||||||
|
```
|
||||||
|
|
||||||
|
**NOTE** The `maxscale-x.y.z` tag is **not** moved. That is, the
|
||||||
|
release date is _not_ available in the documentation marked with
|
||||||
|
the tag `maxscale-x.y.z` but _is_ available in the branch marked
|
||||||
|
with `x.y.z`.
|
||||||
|
|
||||||
|
Merge `x.y.z` to `x.y`.
|
||||||
|
```
|
||||||
|
$ git checkout x.y
|
||||||
|
$ git merge x.y.z
|
||||||
|
```
|
||||||
|
|
||||||
|
At this point, the last commits on branches `x.y` and `x.y.z`
|
||||||
|
should be the same and the commit should be the one containing the
|
||||||
|
update of the release date. Further, that commit should be the only
|
||||||
|
difference between the branches and the tag `maxscale-x.y.z`.
|
||||||
|
**Check that indeed is the case**.
|
||||||
|
|
||||||
|
## 8. Update documentation
|
||||||
|
|
||||||
|
Email webops-requests@mariadb.com with a mail containing the
|
||||||
|
following.
|
||||||
|
```
|
||||||
|
subject: Please update MaxScale x.y knowledge base
|
||||||
|
body:
|
||||||
|
---
|
||||||
|
Hi,
|
||||||
|
|
||||||
|
Please update https://mariadb.com/kb/en/mariadb-enterprise/mariadb-maxscale-XY/
|
||||||
|
|
||||||
|
from https://github.com/mariadb-corporation/MaxScale/tree/x.y.z/Documentation
|
||||||
|
|
||||||
|
using the "new" algorithm that does not honor single line-breaks.
|
||||||
|
|
||||||
|
Br,
|
||||||
|
Your Name
|
||||||
|
```
|
||||||
|
## 9. Send release email to mailing list
|
||||||
|
|
||||||
|
Email maxscale@googlegroups.com with a mail containing the following.
|
||||||
|
```
|
||||||
|
subject: MariaDB MaxScale x.y.z available for download
|
||||||
|
body:
|
||||||
|
---
|
||||||
|
Hi,
|
||||||
|
|
||||||
|
We are happy to announce that MariaDB MaxScale x.y.z GA is now available for download. This is a bugfix release.
|
||||||
|
|
||||||
|
The Jira list of fixed issues can be found here(ADD LINK HERE).
|
||||||
|
|
||||||
|
* [MXS-XYZ] BUG FIX DESCRIPTION HERE
|
||||||
|
|
||||||
|
Binaries:
|
||||||
|
https://mariadb.com/downloads/maxscale
|
||||||
|
https://mariadb.com/my_portal/download
|
||||||
|
|
||||||
|
Documentation:
|
||||||
|
LINK TO KB DOCUMENTATION HERE
|
||||||
|
|
||||||
|
Release notes:
|
||||||
|
LINK TO RELEASE NOTES HERE
|
||||||
|
|
||||||
|
Source code:
|
||||||
|
LINK TO maxscale-x.y.z TAG HERE
|
||||||
|
|
||||||
|
Please report any issues on Jira:
|
||||||
|
https://jira.mariadb.org/projects/MXS/issues
|
||||||
|
|
||||||
|
On behalf of the entire MaxScale team,
|
||||||
|
|
||||||
|
YOUR NAME HERE
|
||||||
|
```
|
105
maxscale-system-test/Documentation/RUN_TEST.md
Normal file
105
maxscale-system-test/Documentation/RUN_TEST.md
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
# How to run test
|
||||||
|
|
||||||
|
## Prerequirements
|
||||||
|
|
||||||
|
Installed [MDBCI](https://github.com/mariadb-corporation/mdbci) (with dependencies, see
|
||||||
|
[MDBCI doc](https://github.com/mariadb-corporation/mdbci#mariadb-continuous-integration-infrastructure-mdbci)),
|
||||||
|
[build-scripts](https://github.com/mariadb-corporation/build-scripts-vagrant)
|
||||||
|
|
||||||
|
Componets should be in the following directories:
|
||||||
|
|
||||||
|
[build-scripts](https://github.com/mariadb-corporation/build-scripts-vagrant) - in ~/build-scripts/
|
||||||
|
|
||||||
|
[mdbci](https://github.com/mariadb-corporation/mdbci) - in ~/mdbci/
|
||||||
|
|
||||||
|
## Creating test environment and running tests
|
||||||
|
|
||||||
|
[run_test.sh](test/run_test.sh) generates MDBCI description of configuration, bring all VMs up, setup DB on all backends,
|
||||||
|
prapare DB for creating Master/Slave and Galera setups, build [maxscale-system-test](https://github.com/mariadb-corporation/MaxScale/tree/develop#maxscale-system-test)
|
||||||
|
package, execute ctest. Source code of
|
||||||
|
[maxscale-system-test](https://github.com/mariadb-corporation/MaxScale/tree/develop/maxscale-system-test#maxscale-system-test)
|
||||||
|
have to be in current directory before execution [run_test.sh](test/run_test.sh)
|
||||||
|
|
||||||
|
Environmental variables have to be defined before executing [run_test.sh](test/run_test.sh)
|
||||||
|
For details see [description](README.md#run_testsh)
|
||||||
|
|
||||||
|
Example:
|
||||||
|
<pre>
|
||||||
|
export export MDBCI_VM_PATH=$HOME/vms
|
||||||
|
export name="my-centos7-release-1.3.0-test"
|
||||||
|
export box="centos7"
|
||||||
|
export product="mariadb"
|
||||||
|
export version="5.5"
|
||||||
|
export target="develop"
|
||||||
|
export ci_url="http://max-tst-01.mariadb.com/ci-repository/"
|
||||||
|
export do_not_destroy_vm="yes"
|
||||||
|
export test_set="1,10,,20,30,95"
|
||||||
|
~/build-scripts/test/run_test.sh
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
After the test, all machines can be accessed:
|
||||||
|
<pre>
|
||||||
|
cd $MDBCI_VM_PATH/$name
|
||||||
|
vagrant ssh \<machine_name\>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
where \<machine_name\> is 'maxscale', 'node0', ..., 'node3', ..., 'nodeN', 'galera0', ..., 'galera3', ..., 'galeraN'
|
||||||
|
|
||||||
|
http://max-tst-01.mariadb.com/ci-repository/develop/mariadb-maxscale/ have to contain Maxscale repository
|
||||||
|
|
||||||
|
## Running tests with existing test environment
|
||||||
|
|
||||||
|
[set_env_vagrant.sh](test/set_env_vagrant.sh) script sets all needed environmental variables for
|
||||||
|
[maxscale-system-test](https://github.com/mariadb-corporation/MaxScale/tree/develop/maxscale-system-test)
|
||||||
|
|
||||||
|
See [maxscale-system-test documentation](https://github.com/mariadb-corporation/MaxScale/tree/develop/maxscale-system-test#environmental-variables) for details regarding variables.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
<pre>
|
||||||
|
export name="running_conf_name"
|
||||||
|
. ../build-scripts/test/set_env_vagrant.sh $name
|
||||||
|
set +x
|
||||||
|
git clone https://github.com/mariadb-corporation/maxscale.git
|
||||||
|
cd MaxScale/maxscale-system-test
|
||||||
|
cmake .
|
||||||
|
make
|
||||||
|
./test_executable_name
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
or use ctest to run several tests
|
||||||
|
|
||||||
|
## Creating environment for Maxscale debugging
|
||||||
|
|
||||||
|
[create_env.sh](test/create_env.sh) script generates MDBCI description of configuration, bring all VMs up,
|
||||||
|
setup DB on all backends, prapare DB for creating Master/Slave and Galera setups, copy source code of
|
||||||
|
[Maxscale](https://github.com/mariadb-corporation/MaxScale) to 'maxscale' VM and build it.
|
||||||
|
|
||||||
|
Note: script does not install Maxscale, it have to be done manually.
|
||||||
|
|
||||||
|
Following variables have to be defined:
|
||||||
|
|
||||||
|
'name', 'box', 'product', 'version'
|
||||||
|
(see [run_test.sh documentation](https://github.com/mariadb-corporation/build-scripts-vagrant/blob/master/README.md#run_testsh))
|
||||||
|
|
||||||
|
'source', 'value'
|
||||||
|
(see
|
||||||
|
[prepare_and_build.sh documentation](https://github.com/mariadb-corporation/build-scripts-vagrant/blob/master/README.md#prepare_and_buildsh))
|
||||||
|
|
||||||
|
Example:
|
||||||
|
<pre>
|
||||||
|
export MDBCI_VM_PATH=$HOME/vms
|
||||||
|
export name="my-centos7-release-1.3.0-test"
|
||||||
|
export box="centos7"
|
||||||
|
export product="mariadb"
|
||||||
|
export version="5.5"
|
||||||
|
export source="BRANCH"
|
||||||
|
export value="develop"
|
||||||
|
~/build-scripts/test/create_env.sh
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
**Note**: do not forget to destroy test environment by vagrant destroy:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
cd $MDBCI_VM_PATH/$name/
|
||||||
|
vagrant destroy -f
|
||||||
|
</pre>
|
Reference in New Issue
Block a user