FLAME Cross Layer Management and Control
Version: 1.0.0
About this document
Authors
Authors | Organisation |
---|---|
Michael Boniface | University of Southampton, IT Innovation Centre |
Simon Crowle | University of Southampton, IT Innovation Centre |
Contents
Documentation
Implementation documentation and discussion can be found in the docs directory.
Testing
Testing is implemented using pytest using the following convention:
- The testing environment is Vagrant/Virtualbox for a base VM with LXC is installed for specific containers.
- Tests are written in python using pytest
- Related tests are stored in a python module
src/test/clmctest/<testmodule>
to create a suite of tests. All tests are stored in files test_*.py, there can be many tests per file, and many files per module - Tests are executed against a set of LXC containers described in
src/test/clmctest/rspec.json
. - Tests are executed from the test-runner container on the VM using install python modules
Here's the instructions
vagrant up
This will create a single VM with LXC installed and configured with lxcbr0 configured for the network 172.40.231.0/24
SSH into the VM
vagrant ssh
The containers are controlled using a script called /vagrant/scripts/test/fixtures.sh
Usage: fixturs.sh create|start|stop|destroy [-f config_file] [-r repo_root] [-c service_name]"
To create all the services needed for integration tests
sudo su
/vagrant/scripts/test/fixtures.sh create -f /vagrant/src/test/clmctest/rspec.json
The containers created are defined an rspec.json file, there's an example here /vagrant/src/test/clmctest/rspec.json
The fixtures.sh
script defaults to look for a rspec.json in the current directory, you can specify a specific rspec.json file using the -f option
To create|start|stop|destroy specific services use the -c option e.g.
/vagrant/scripts/test/fixtures.sh create -f /vagrant/src/test/clmctest/rspec.json -c clmc-service
Attach to the test-runner to run the tests
lxc-attach -n test-runner
Here we need to define a make file but for now the commands are manual
cd /vagrant/src/test
python setup.py sdist --dist-dir=../../build
cd ../../src/service
python setup.py sdist --dist-dir=../../build
pip3 install /vagrant/build/clmctest-SNAPSHOT.tar.gz
pip3 install /vagrant/build/clmcservice-SNAPSHOT.tar.gz
The following modules are unit tests
pytest -s --pyargs clmctest.scripts
pytest -s --pyargs clmcservice.tests
The following modules are integration tests
pytest -s --pyargs clmctest.inputs
pytest -s --pyargs clmctest.monitoring