tox: Integrate tox-docker
This allows us to start a zookeeper instance via docker as part of the standard tox process, avoiding issues like those described in [1]. It's exposed as a separate target, to ensure users can use local installations if necessary. This requires bumping the minimum version of tox to 3.2 so we can make use of the 'requires' config option [2]. [1] https://review.openstack.org/#/c/648399/ [2] https://tox.readthedocs.io/en/latest/config.html#conf-requires Change-Id: Ie848d409533b2a53523cd930299acf21ac10e13c Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
parent
1cbaa2969b
commit
390f071563
|
@ -14,11 +14,13 @@ Detailed information on testing can be found here: https://wiki.openstack.org/wi
|
||||||
|
|
||||||
More information on pip here: http://www.pip-installer.org/en/latest/
|
More information on pip here: http://www.pip-installer.org/en/latest/
|
||||||
|
|
||||||
*Use pip to install tox*::
|
*Use pip to install tox and tox-docker*::
|
||||||
|
|
||||||
pip install tox
|
pip install tox tox-docker
|
||||||
|
|
||||||
As of zuul v3, a running zookeeper is required to execute tests.
|
As of zuul v3, a running zookeeper is required to execute tests. Using the
|
||||||
|
``-docker`` suffixed commands will ensure this is started automatically by tox,
|
||||||
|
but if you do not wish to use this:
|
||||||
|
|
||||||
*Install zookeeper*::
|
*Install zookeeper*::
|
||||||
|
|
||||||
|
|
|
@ -2047,7 +2047,20 @@ class ChrootedKazooFixture(fixtures.Fixture):
|
||||||
def __init__(self, test_id):
|
def __init__(self, test_id):
|
||||||
super(ChrootedKazooFixture, self).__init__()
|
super(ChrootedKazooFixture, self).__init__()
|
||||||
|
|
||||||
zk_host = os.environ.get('NODEPOOL_ZK_HOST', 'localhost')
|
if 'ZOOKEEPER_2181_TCP' in os.environ:
|
||||||
|
# prevent any nasty hobbits^H^H^H suprises
|
||||||
|
if 'NODEPOOL_ZK_HOST' in os.environ:
|
||||||
|
raise Exception(
|
||||||
|
'Looks like tox-docker is being used but you have also '
|
||||||
|
'configured NODEPOOL_ZK_HOST. Either avoid using the '
|
||||||
|
'docker environment or unset NODEPOOL_ZK_HOST.')
|
||||||
|
|
||||||
|
zk_host = 'localhost:' + os.environ['ZOOKEEPER_2181_TCP']
|
||||||
|
elif 'NODEPOOL_ZK_HOST' in os.environ:
|
||||||
|
zk_host = os.environ['NODEPOOL_ZK_HOST']
|
||||||
|
else:
|
||||||
|
zk_host = 'localhost'
|
||||||
|
|
||||||
if ':' in zk_host:
|
if ':' in zk_host:
|
||||||
host, port = zk_host.split(':')
|
host, port = zk_host.split(':')
|
||||||
else:
|
else:
|
||||||
|
|
9
tox.ini
9
tox.ini
|
@ -1,8 +1,11 @@
|
||||||
[tox]
|
[tox]
|
||||||
minversion = 3.1
|
minversion = 3.2
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
envlist = pep8,py35
|
envlist = pep8,py35{-docker}
|
||||||
ignore_basepython_conflict = True
|
ignore_basepython_conflict = True
|
||||||
|
# TODO(stephenfin): It would be good to set 'requires = tox-docker', but doing
|
||||||
|
# so borks the tools/pip.sh wrapper we're using here and probably isn't what
|
||||||
|
# we want in the gate :(
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
|
@ -28,6 +31,8 @@ whitelist_externals = bash
|
||||||
deps =
|
deps =
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
|
docker =
|
||||||
|
docker: zookeeper:3.4
|
||||||
commands =
|
commands =
|
||||||
stestr run {posargs}
|
stestr run {posargs}
|
||||||
stestr slowest
|
stestr slowest
|
||||||
|
|
Loading…
Reference in New Issue