95 lines
2.9 KiB
INI
Raw Normal View History

[tox]
envlist = py27,pep8
minversion = 1.8
skipsdist = True
[testenv]
# Note the hash seed is set to 0 until neutron can be tested with a
# random hash seed successfully.
setenv = VIRTUAL_ENV={envdir}
PYTHONHASHSEED=0
usedevelop = True
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 {envbindir}
sh tools/pretty_tox.sh '{posargs}'
# there is also secret magic in pretty_tox.sh which lets you run in a fail only
# mode. To do this define the TRACE_FAILONLY environmental variable.
[testenv:hashtest]
# This is the same as default environment, but with a random PYTHONHASHSEED.
# You can also specify a specific hashseed (for test repeatability) as follows:
# tox --hashseed 1235130571 -e hashtest
setenv = VIRTUAL_ENV={envdir}
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]
setenv = OS_TEST_PATH=./neutron/tests/api
[testenv:functional]
setenv = OS_TEST_PATH=./neutron/tests/functional
OS_TEST_TIMEOUT=90
deps =
{[testenv]deps}
-r{toxinidir}/neutron/tests/functional/requirements.txt
[testenv:dsvm-functional]
setenv = OS_TEST_PATH=./neutron/tests/functional
OS_SUDO_TESTING=1
OS_ROOTWRAP_CMD=sudo {envbindir}/neutron-rootwrap {envdir}/etc/neutron/rootwrap.conf
OS_FAIL_ON_MISSING_DEPS=1
OS_TEST_TIMEOUT=90
sitepackages=True
deps =
{[testenv:functional]deps}
[tox:jenkins]
sitepackages = True
downloadcache = ~/cache/pip
[testenv:pep8]
deps =
{[testenv]deps}
pylint
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
# Checks for coding and style guidelines
flake8
sh ./tools/coding-checks.sh --pylint '{posargs}'
neutron-db-manage check_migration
whitelist_externals = sh
[testenv:cover]
commands =
python setup.py testr --coverage --testr-args='{posargs}'
[testenv:venv]
commands = {posargs}
[testenv:docs]
commands = sphinx-build -W -b html doc/source doc/build
[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 #
# H305 imports not grouped correctly
# 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,H305,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
local-check-factory = neutron.hacking.checks.factory