Testing OpenStack Projects
Projects generally have three categories of tests that commits are must pass before being ready for review:
- Unit Tests
- Self contained in each project
- Style Checks
- Integration Tests
- Part of tempest
`[apt-get | yum] install python-pip`
`pip install tox` (`pip install --upgrade tox` - upgrades tox)
Sample tox.ini file https://github.com/openstack/nova/blob/master/tox.ini
There will be a tox.ini file in the root directory of every project.
Within the tox.ini file you might see any of the following envlist options:
envlist = py26,py27,py33,pep8,pylint
Why does tox take so long to run? The reason tox takes a long time is two-fold: On the first run it has to create a virtual environment, which can take anywhere from 5 to 30+ minutes depending on the project and the system. The other reason is that it just takes a long time to run all of the test cases in some of the projects.
Style checks can be run via tox with `tox -epep8` or manually using `flake8`.
Running Swift Tests
Swift has functional tests, functional nose tests, and unit tests available in the source in the test directory. At Rackspace we test several environments including a staging area with 36 storage nodes.
Running Nova Tests
As a prerequisite to running tests for OpenStack Compute (Nova), redis must be installed and running.
To run tests, run the run_tests.sh script in the Nova source code directory. Nose tests in Nova will not work in the Austin release but will work in the Bexar release. Look at ./test/functionalnosetests/swift_testing.py for an explanation on how the test script decides whether functional tests are skipped or not based on the availability of configuration information.
If the tests are successfully running, you see a series of periods (.). Typically the tests take just a minute or two to run. If there is an Error, you see an E. When errors occur, check either /var/log/syslog or /var/log/messages to see if there are any errors in those logs.