Awesome
CI tests for Software Collections @ CentOS
This repository includes various tests that will be run for verifying Software Collection packages, that are provided by SCLo SIG group in CentOS.
Warning: All scripts in this repo are expected to be run as root user, since they usually install packages and do other things where root permissions are expected. That said, do not run anything in this repo on a machine you care about, it might potentially break your system. All tests are considered potentially destructive.
To run all tests for a collection foo
on CentOS 7, run the ./run.sh
with name(s) of the collection(s):
./run.sh rh-python34
or run run.sh
script in particular collection directory:
./run.sh rh-python34
To run all tests for all collections, run the same command without arguments:
./run.sh
To run only particular test (e.g. package set validation in -candidate repository) for collection foo
on CentOS 7, go to the particular directory and run:
cd collections/rh-postgresql94-rh/validate-pkg-list
./run.sh
To run the test that verifies all the packages sets (it is possible to run it on any system, not only testing VM) for all the collections, run:
cd validate-pkg-list
./run-all.sh 7
Structure of tests
├── run.sh -- main entrypoint to run the tests
├── common -- contains files common for all tests
├── collections -- contains tests for all collections
│
├── ruby200-rh -- contains tests for the ruby200-rh collection
│ ├── enabled_tests -- sorted list of enabled tests for ruby200-rh collection
│ ├── run.sh -- runs all tests listed in enabled_tests file
│ ├── check-version -- a test for checking whether proper version is available
│ │ ├── run.sh -- the main script of the test
│ │ ├── err -- expected stderr (optional)
│ │ ├── out -- expected stdout (optional)
│ │ └── retcode -- expected return code (optional)
│ └── install -- a test for installation of the collection
│ └── run.sh -- the main script of the test
When "run.sh" is run, it compares stdout, stderr and return code with values specified in the test directory. Eg.
collections/ruby200-rh/tests/check-version/out
When no expected stdout or stderr defined, it compares just return code. When no return code is specified, the test is successful when it returns 0.
Results
Simple results (passed/failed) are written to stdout. Actual results (stdout, stderr and return code) can be found in the directory under /tmp, that is printed to the stdout:
Running tests for rh-python34-rh ...
[FAILED] install
[FAILED] check-version
[FAILED] uninstall
[PASSED] validate-pkg-list
1 tests passed, 3 tests failed.
Failed tests:
install check-version uninstall
Logs are stored in /tmp/sclo-results-s6Fhun
NOT ALL TESTS PASSED SUCCESSFULLY
Usage with remote machine
Make a virtual machine
You may use the "mkvirt" script to create a virtual machine. If you run it from the specific test directory you just need to specify the tree. Configuration of the virtual machine is taken from the "machine.conf" file.
cd vm
./mkvirt-sclo6.sh -s 3 http://mirror.centos.org/centos/6/os/x86_64/
Of course you may create the virtual machine yourself.
Run tests
You may use the run-remote-git.sh
script to run tests for the component
on remote machine. This script connects to the remote machine, downloads this
repository there and will execute the run.sh
script in the same location.
It uses SSH_HOST
(hostname or IP) or VM_NAME
(VM domain) environment
variables to identify the host and then SSH_PASS
environment variable to
connect to the machine. Variable SSH_USER
is optional and can be used to set
user that should be used in ssh
commands.
For example running rh-python34
tests on remote machine 192.168.122.24
where
we may identify as root
user with secret
as password, run:
export SSH_HOST=192.168.122.24
export SSH_PASS=secret
collections/rh-python34-rh/run-remote-git.sh
Required programs on guest machine
scl-utils
Required programs on host machine
libvirt
sshpass
html2text
virt-install