146 lines
4.6 KiB
INI
Raw Normal View History

[tox]
minversion = 1.6
skipsdist = True
envlist = py27,py34,functional,py34-functional,pep8
[testenv]
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
install_command = pip install -U {opts} {packages}
usedevelop = True
setenv = VIRTUAL_ENV={envdir}
EVENTLET_NO_GREENDNS=yes
OS_TEST_PATH=ceilometer/tests/unit
commands =
python setup.py testr --slowest --testr-args="{posargs}"
whitelist_externals = bash
# TODO(ityaptin): With separation tests to unit and functional folders we need
# set environment variable OS_TEST_PATH=./ceilometer/tests/functional
# in "py-<backend>" jobs
[testenv:py-mongodb]
setenv = OS_TEST_PATH=ceilometer/tests/functional/
commands =
bash -x {toxinidir}/setup-test-env-mongodb.sh python setup.py testr --slowest --testr-args="{posargs}"
[testenv:py-mysql]
setenv = OS_TEST_PATH=ceilometer/tests/functional/
commands =
bash -x {toxinidir}/setup-test-env-mysql.sh python setup.py testr --slowest --testr-args="{posargs}"
[testenv:py-pgsql]
setenv = OS_TEST_PATH=ceilometer/tests/functional/
commands =
bash -x {toxinidir}/setup-test-env-postgresql.sh python setup.py testr --slowest --testr-args="{posargs}"
# Functional tests for elastic search
[testenv:py-elastic]
setenv = OS_TEST_PATH=ceilometer/tests/functional/
commands =
bash -x {toxinidir}/setup-test-env-es.sh python setup.py testr --slowest --testr-args="{posargs}"
[testenv:functional]
setenv = VIRTUAL_ENV={envdir}
EVENTLET_NO_GREENDNS=yes
OS_TEST_PATH=ceilometer/tests/functional/
passenv = CEILOMETER_*
commands =
bash -x {toxinidir}/run-functional-tests.sh "{posargs}"
[testenv:py34-functional]
setenv = VIRTUAL_ENV={envdir}
EVENTLET_NO_GREENDNS=yes
OS_TEST_PATH=ceilometer/tests/functional/
basepython = python3.4
passenv = CEILOMETER_*
commands =
bash -x {toxinidir}/run-functional-tests.sh "{posargs}"
[testenv:integration]
setenv = VIRTUAL_ENV={envdir}
EVENTLET_NO_GREENDNS=yes
OS_TEST_PATH=./ceilometer/tests/integration
OS_TEST_TIMEOUT=2400
GABBI_LIVE_FAIL_IF_NO_TEST=1
passenv = HEAT_* CEILOMETER_* GNOCCHI_* AODH_* GLANCE_* NOVA_* ADMIN_*
# FIXME(sileht): run gabbi-run to failfast in case of error because testr
# doesn't support --failfast, but we loose the testr report.
commands =
bash -c 'cd ceilometer/tests/integration/gabbi/gabbits-live && gabbi-run -x < autoscaling.yaml'
# bash -x {toxinidir}/tools/pretty_tox.sh "{posargs}"
# NOTE(chdent): The gabbi tests are also run under the other functional
# tox targets. This target simply provides a target to directly run just
# gabbi tests without needing to do discovery across the entire body of
Declarative HTTP testing for the Ceilometer API A 'gabbi' tox target is added which runs a declarative HTTP tests described in YAML files in 'ceilometer/tests/gabbi/gabbits' and loaded by 'ceilometer/tests/gabbi/test_gabbi.py'. These are driven by the 'gabbi' python package (available from PyPI). tox and testr are configured to start and run the tests efficiently: * a mongodb server, using multiple databases, is made available * the API wsgi application is used directly via 'wsgi-intercept', no web server required * each YAML file is run as a sequence and where number of processors allows, in a different test process * individual tests can be requested in the usual way: tox -egabbi -- <test pattern> If this is done, all the tests prior to the one requested, from its YAML file, will be run as ordered prerequisites. * tox targets that already run the tests in ceilometer/tests will also discover gabbi tests. If there is no mongodb, they will be skipped. A ConfigFixture does the necessary work of adjusting the configuration and pipeline to use the mongodb database and nothing else. An internal InterceptFixture uses wsgi-intercept to access the ceilometer API. Each yaml file has its own intercepted host. Fixtures are implemented as nested context managers that are declared per YAML file, see ceilometer/gabbi/fixtures.py and fixtures-samples.yaml for an example of how they can be used. Every yaml file uses at least ConfigFixture. YAML files can use a variety of strategies for formatting requests and evaluating the correctness of response. See: http://gabbi.readthedocs.org/en/latest/format.html The YAML files included here test simple API features for creating and retrieving samples. Subsequent patches can (and should) create additional YAML files to describe more complex scenarios that cover the entire API (for example alarms are not touched at all by this patch). Change-Id: I52551f88bc3beac4bf8a92afa45ac70cd97ffcec Implements: blueprint declarative-http-tests
2015-01-09 19:32:55 +00:00
# tests.
[testenv:gabbi]
setenv = OS_TEST_PATH=ceilometer/tests/functional/gabbi
passenv = CEILOMETER_*
Declarative HTTP testing for the Ceilometer API A 'gabbi' tox target is added which runs a declarative HTTP tests described in YAML files in 'ceilometer/tests/gabbi/gabbits' and loaded by 'ceilometer/tests/gabbi/test_gabbi.py'. These are driven by the 'gabbi' python package (available from PyPI). tox and testr are configured to start and run the tests efficiently: * a mongodb server, using multiple databases, is made available * the API wsgi application is used directly via 'wsgi-intercept', no web server required * each YAML file is run as a sequence and where number of processors allows, in a different test process * individual tests can be requested in the usual way: tox -egabbi -- <test pattern> If this is done, all the tests prior to the one requested, from its YAML file, will be run as ordered prerequisites. * tox targets that already run the tests in ceilometer/tests will also discover gabbi tests. If there is no mongodb, they will be skipped. A ConfigFixture does the necessary work of adjusting the configuration and pipeline to use the mongodb database and nothing else. An internal InterceptFixture uses wsgi-intercept to access the ceilometer API. Each yaml file has its own intercepted host. Fixtures are implemented as nested context managers that are declared per YAML file, see ceilometer/gabbi/fixtures.py and fixtures-samples.yaml for an example of how they can be used. Every yaml file uses at least ConfigFixture. YAML files can use a variety of strategies for formatting requests and evaluating the correctness of response. See: http://gabbi.readthedocs.org/en/latest/format.html The YAML files included here test simple API features for creating and retrieving samples. Subsequent patches can (and should) create additional YAML files to describe more complex scenarios that cover the entire API (for example alarms are not touched at all by this patch). Change-Id: I52551f88bc3beac4bf8a92afa45ac70cd97ffcec Implements: blueprint declarative-http-tests
2015-01-09 19:32:55 +00:00
commands =
bash -x {toxinidir}/setup-test-env-mongodb.sh \
python setup.py testr --testr-args="{posargs}"
[testenv:cover]
setenv = OS_TEST_PATH=ceilometer/tests
commands =
python setup.py testr --slowest --coverage --testr-args="{posargs}"
[testenv:pep8]
commands =
flake8
# Check that .po and .pot files are valid:
bash -c "find ceilometer -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null"
[testenv:genconfig]
commands =
oslo-config-generator --output-file etc/ceilometer/ceilometer.conf \
--namespace ceilometer \
--namespace oslo.concurrency \
--namespace oslo.db \
--namespace oslo.log \
--namespace oslo.messaging \
--namespace oslo.policy \
--namespace oslo.service.service \
--namespace keystonemiddleware.auth_token
[testenv:docs]
commands = python setup.py build_sphinx
setenv = PYTHONHASHSEED=0
[testenv:pylint]
commands = bash tools/lintstack.sh
[testenv:venv]
commands = {posargs}
setenv = PYTHONHASHSEED=0
[testenv:debug]
commands = bash -x oslo_debug_helper {posargs}
[testenv:debug-mongodb]
setenv = OS_TEST_PATH=ceilometer/tests/functional
commands = bash -x {toxinidir}/setup-test-env-mongodb.sh oslo_debug_helper {posargs}
[testenv:debug-mysql]
setenv = OS_TEST_PATH=ceilometer/tests/functional
commands = bash -x {toxinidir}/setup-test-env-mysql.sh oslo_debug_helper {posargs}
[testenv:debug-pgsql]
setenv = OS_TEST_PATH=ceilometer/tests/functional
commands = bash -x {toxinidir}/setup-test-env-pgsql.sh oslo_debug_helper {posargs}
[testenv:debug-elastic]
setenv = OS_TEST_PATH=ceilometer/tests/functional
commands = bash -x {toxinidir}/setup-test-env-elastic.sh oslo_debug_helper {posargs}
[flake8]
ignore =
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
show-source = True
[hacking]
import_exceptions =
ceilometer.i18n
local-check-factory = ceilometer.hacking.checks.factory