198 lines
6.4 KiB
INI
Raw Normal View History

[tox]
envlist = docs,py34,py27,pep8
minversion = 2.3.1
skipsdist = True
[testenv]
setenv = VIRTUAL_ENV={envdir}
passenv = TRACE_FAILONLY GENERATE_HASHES http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
usedevelop = True
install_command =
constraints: {[testenv:common-constraints]install_command}
pip install -U {opts} {packages}
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
whitelist_externals = sh
commands =
dsvm-functional: {toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin
{toxinidir}/tools/ostestr_compat_shim.sh {posargs}
# there is also secret magic in ostestr which lets you run in a fail only
# mode. To do this define the TRACE_FAILONLY environmental variable.
Add support for retargetable functional api testing This patch introduces the concept of a 'retargetable' functional api test. Such a test targets an abstract client class, and by varying the implementation of the client, the test can target multiple backends. The test added by this patch (test_network_lifecycle) can be run against the programmatic plugin api (for configured plugins) via both tox -e functional and tox -e dsvm-functional. The latter env is used by the gating neutron-dsvm-functional job. The test can also be run against a live Neutron service via 'tox -e api' which will soon be run as part of the check queue by the neutron-dsvm-api job [1]. Running this tox env requires devstack-deployed Neutron and Tempest. The intention is to refactor the existing plugin tests (e.g. NeutronDbPluginV2TestCase) to use this model. Functional tests don't have to isolate functionality - they just need to exercise it - so fewer tests will be required. The new tests will be able to target plugins directly rather than through the wsgi stack, so execution time will be decreased. The refactored tests should be easier to maintain and take less time to run. Perhaps best of all, since the same tests will be able to target a deployed service in the neutron-dsvm-api job, the deployed behaviour of api changes will finally be able to gate merges to the Neutron tree. Notable parts of the change: - tests/api - base_v2 - defines the client interface (BaseNeutronClient) and the base class (BaseTestApi) for the retargetable test (test_network_lifecycle) - test_v2_rest - implements the client interface for the tempest rest client and configures the retargetable test with scenarios for json serialization - tests/functional/api - test_v2_plugin - implements the client interface for the programmatic plugin api and configures the retargetable test with scenarios targeting the linuxbridge and openvswitch plugins - tests/unit - refactor bits of the existing plugin tests for reuse 1: https://review.openstack.org/#/c/82226/ Implements: bp retargetable-functional-testing Change-Id: Ib5470040c0fa91ec143f38d273e1e259b3adfb2e
2014-03-25 01:04:50 -07:00
[testenv:api]
basepython = python2.7
passenv = {[testenv]passenv} TEMPEST_CONFIG_DIR
setenv = {[testenv]setenv}
OS_TEST_PATH=./neutron/tests/api
TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:/opt/stack/tempest/etc}
OS_TEST_API_WITH_REST=1
Add support for retargetable functional api testing This patch introduces the concept of a 'retargetable' functional api test. Such a test targets an abstract client class, and by varying the implementation of the client, the test can target multiple backends. The test added by this patch (test_network_lifecycle) can be run against the programmatic plugin api (for configured plugins) via both tox -e functional and tox -e dsvm-functional. The latter env is used by the gating neutron-dsvm-functional job. The test can also be run against a live Neutron service via 'tox -e api' which will soon be run as part of the check queue by the neutron-dsvm-api job [1]. Running this tox env requires devstack-deployed Neutron and Tempest. The intention is to refactor the existing plugin tests (e.g. NeutronDbPluginV2TestCase) to use this model. Functional tests don't have to isolate functionality - they just need to exercise it - so fewer tests will be required. The new tests will be able to target plugins directly rather than through the wsgi stack, so execution time will be decreased. The refactored tests should be easier to maintain and take less time to run. Perhaps best of all, since the same tests will be able to target a deployed service in the neutron-dsvm-api job, the deployed behaviour of api changes will finally be able to gate merges to the Neutron tree. Notable parts of the change: - tests/api - base_v2 - defines the client interface (BaseNeutronClient) and the base class (BaseTestApi) for the retargetable test (test_network_lifecycle) - test_v2_rest - implements the client interface for the tempest rest client and configures the retargetable test with scenarios for json serialization - tests/functional/api - test_v2_plugin - implements the client interface for the programmatic plugin api and configures the retargetable test with scenarios targeting the linuxbridge and openvswitch plugins - tests/unit - refactor bits of the existing plugin tests for reuse 1: https://review.openstack.org/#/c/82226/ Implements: bp retargetable-functional-testing Change-Id: Ib5470040c0fa91ec143f38d273e1e259b3adfb2e
2014-03-25 01:04:50 -07:00
[testenv:api-constraints]
basepython = {[testenv:api]basepython}
install_command = {[testenv:common-constraints]install_command}
passenv = {[testenv:api]passenv}
setenv = {[testenv:api]setenv}
[testenv:common]
# Fake job to define environment variables shared between dsvm/non-dsvm jobs
setenv = OS_TEST_TIMEOUT=180
commands = false
[testenv:common-constraints]
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
[testenv:dsvm]
# Fake job to define environment variables shared between dsvm jobs
setenv = OS_SUDO_TESTING=1
OS_ROOTWRAP_CMD=sudo {envdir}/bin/neutron-rootwrap {envdir}/etc/neutron/rootwrap.conf
OS_ROOTWRAP_DAEMON_CMD=sudo {envdir}/bin/neutron-rootwrap-daemon {envdir}/etc/neutron/rootwrap.conf
OS_FAIL_ON_MISSING_DEPS=1
commands = false
[testenv:functional]
basepython = python2.7
setenv = {[testenv]setenv}
{[testenv:common]setenv}
OS_TEST_PATH=./neutron/tests/functional
deps =
{[testenv]deps}
-r{toxinidir}/neutron/tests/functional/requirements.txt
[testenv:functional-constraints]
basepython = {[testenv:functional]basepython}
install_command = {[testenv:common-constraints]install_command}
setenv = {[testenv:functional]setenv}
deps =
{[testenv:functional]deps}
[testenv:functional-py34]
basepython = python3.4
setenv = {[testenv:functional]setenv}
deps =
{[testenv:functional]deps}
[testenv:dsvm-functional]
basepython = python2.7
setenv = {[testenv:functional]setenv}
{[testenv:dsvm]setenv}
sitepackages=True
deps =
{[testenv:functional]deps}
[testenv:dsvm-functional-constraints]
basepython = {[testenv:dsvm-functional]basepython}
install_command = {[testenv:common-constraints]install_command}
setenv = {[testenv:dsvm-functional]setenv}
sitepackages={[testenv:dsvm-functional]sitepackages}
deps =
{[testenv:functional-constraints]deps}
[testenv:dsvm-functional-py34]
basepython = python3.4
setenv = {[testenv:dsvm-functional]setenv}
sitepackages={[testenv:dsvm-functional]sitepackages}
deps =
{[testenv:dsvm-functional]deps}
[testenv:dsvm-fullstack]
setenv = {[testenv]setenv}
{[testenv:common]setenv}
{[testenv:dsvm]setenv}
OS_TEST_PATH=./neutron/tests/fullstack
sitepackages=True
deps =
{[testenv:functional]deps}
[testenv:dsvm-fullstack-constraints]
install_command = {[testenv:common-constraints]install_command}
setenv =
{[testenv:dsvm-fullstack]setenv}
sitepackages={[testenv:dsvm-fullstack]sitepackages}
deps =
{[testenv:functional-constraints]deps}
[testenv:releasenotes]
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:pep8]
basepython = python2.7
deps =
{[testenv]deps}
commands=
# If it is easier to add a check via a shell script, consider adding it in this file
sh ./tools/misc-sanity-checks.sh
{toxinidir}/tools/check_unit_test_structure.sh
# Checks for coding and style guidelines
flake8
sh ./tools/coding-checks.sh --pylint '{posargs}'
neutron-db-manage --config-file neutron/tests/etc/neutron.conf check_migration
{[testenv:genconfig]commands}
whitelist_externals =
sh
bash
[testenv:pep8-constraints]
basepython = {[testenv:pep8]basepython}
install_command = {[testenv:common-constraints]install_command}
deps =
{[testenv]deps}
commands=
# If it is easier to add a check via a shell script, consider adding it in this file
sh ./tools/misc-sanity-checks.sh
{toxinidir}/tools/check_unit_test_structure.sh
# Checks for coding and style guidelines
flake8
sh ./tools/coding-checks.sh --pylint '{posargs}'
neutron-db-manage --config-file neutron/tests/etc/neutron.conf check_migration
{[testenv:genconfig]commands}
whitelist_externals = {[testenv:pep8]whitelist_externals}
[testenv:cover]
basepython = python2.7
commands =
python setup.py testr --coverage --testr-args='{posargs}'
coverage report
[testenv:cover-constraints]
basepython = {[testenv:cover]basepython}
install_command = {[testenv:common-constraints]install_command}
commands =
python setup.py testr --coverage --testr-args='{posargs}'
[testenv:venv]
commands = {posargs}
[testenv:venv-constraints]
install_command = {[testenv:common-constraints]install_command}
commands = {posargs}
[testenv:docs]
commands = sphinx-build -W -b html doc/source doc/build/html
[testenv:docs-constraints]
install_command = {[testenv:common-constraints]install_command}
commands = {[testenv:docs]commands}
[flake8]
# E125 continuation line does not distinguish itself from next logical line
# E126 continuation line over-indented for hanging indent
# E128 continuation line under-indented for visual indent
# E129 visually indented line with same indent as next logical line
# E265 block comment should start with #
# H404 multi line docstring should start with a summary
# H405 multi line docstring summary not separated with an empty line
ignore = E125,E126,E128,E129,E265,H404,H405
show-source = true
builtins = _
# neutron/tests/tempest needs to be excluded so long as it continues
# to be copied directly from tempest, since tempest and neutron do not
# share a flake8 configuration.
exclude = ./.*,build,dist,neutron/openstack/common/*,neutron/tests/tempest
[hacking]
import_exceptions = neutron.i18n, neutron._i18n
local-check-factory = neutron.hacking.checks.factory
[testenv:genconfig]
commands = {toxinidir}/tools/generate_config_file_samples.sh