nova/tox.ini
Roman Podoliaka 78d62186e5 Fix interprocess locks when running unit-tests
When running unit-tests concurrently using testr, we might
need to use interprocess file locks (e.g. for running various
tests using the same DB in MySQL/PostgreSQL).

At the same time file locks are only usable when they are placed
to one dir, and we have a test fixture that overrides the lock_path
config value for each test case with a new temporary directory.

The solution is to create the one temprorary directory for locks
to be used by all tests before running tests and then remove it
after running tests. The corresponding helper has been already
put to openstack.common.lockutils module, we just need to reuse
it properly, i.e. change the way unit tests are run in tox.ini.

Closes-Bug: #1261728

Change-Id: I76f95a9f7fdd31c15e6cf4fd6316c7569284f780
2013-12-19 18:08:29 +02:00

58 lines
1.6 KiB
INI

[tox]
minversion = 1.6
envlist = py26,py27,py33,pep8
skipsdist = True
[testenv]
sitepackages = True
usedevelop = True
install_command = pip install -U {opts} {packages}
setenv = VIRTUAL_ENV={envdir}
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_ALL=C
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
python -m nova.openstack.common.lockutils python setup.py test --slowest --testr-args='{posargs}'
[tox:jenkins]
sitepackages = True
downloadcache = ~/cache/pip
[testenv:pep8]
sitepackages = False
commands =
flake8 {posargs}
{toxinidir}/tools/config/check_uptodate.sh
[testenv:pylint]
setenv = VIRTUAL_ENV={envdir}
commands = bash tools/lintstack.sh
[testenv:cover]
# Also do not run test_coverage_ext tests while gathering coverage as those
# tests conflict with coverage.
setenv = VIRTUAL_ENV={envdir}
commands =
python setup.py testr --coverage \
--testr-args='^(?!.*test.*coverage).*$'
[testenv:venv]
commands = {posargs}
[flake8]
# E712 is ignored on purpose, since it is normal to use 'column == true'
# in sqlalchemy.
# H803 skipped on purpose per list discussion.
# TODO Hacking 0.6 checks to fix
# H102 Apache 2.0 license header not found
# E125 is deliberately excluded. See https://github.com/jcrocholl/pep8/issues/126
ignore = E121,E122,E123,E124,E125,E126,E127,E128,E711,E712,H102,H404,F403,F811,F841,H803
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools
[hacking]
local-check-factory = nova.hacking.checks.factory
import_exceptions = nova.openstack.common.gettextutils._