a2fe5fd2e0
A while ago we copied Tempest networking API tests in to the Neutron repo, and along came thousands of lines of code of Tempest testing infrastructure (neutron.tests.tempest). For a while we periodically refreshed our fork via: tools/copy_api_tests_from_tempest.sh I think it's time we move away from that model by eliminating the fork. We do this by deleting unused code and importing the rest from tempest_lib. There's some Tempest code still not moved from Tempest to tempest_lib in tempest.common. I think it's preferable to import that code than to copy it, and Tempest cores mostly agree. Manila and Ironic also do the same. To be able to import from tempest I added it as a requirement: Since Tempest is not on PyPi, I had to get it from git. Only the api tests environment needs Tempest, so instead of adding it to test-requirements, I added it specifically to the api and api-constraints venvs. neutron.tests.tempest.test and neutron.tests.tempest.common.* still remain. These are tighly coupled with one another, and sadly since Neutron forked Tempest code, Tempest has made significant changes to those files that also require changes to the test files. I aim to get rid of the Neutron fork of these files in a follow up change. Also fixed import grouping in test files so that it's std libs, 3rd party libs, and then Neutron code. * Removed neutron.tests.tempest.config: - We only added one option after the fork. I created a new group called 'neutron_plugin_options' and moved the new option to that group. This is in preperation for the Tempest plugin architecture, where you're supposed to add new config options to a new group and not to existing configuration groups. Note that this is obviously a backward incompatible change, but it's to an option added in the same cycle. * Removed neutron.tests.tempest.test and neutron.tests.tempest.common. - This introduced an API change to the way we access Keystone, which required mechanical changes to a few tests (create_tenant calls need a different client now). - The way Tempest manages primary, admin and alternative tenant credentials was changed after we forked, which required another mechanical change to a few tests. * Cut all of the Keystone clients we don't need. We only need to create/delete tenants, the other clients were used in Tempest by actual Keystone tests. * Changed neutron.tests.api.base.BaseNetworkTest: - Re-implemented get_client_manager so that it returns the Neutron clients manager and not the one in the Tempest repo. - Updated it from the Tempest repo so that it uses the new way to manage credentials (Since it now uses the Tempest test base class and not our out of date forked copy). Change-Id: I4f9193dfe26f2d36985cb480a98709ec182a2f7b
203 lines
6.5 KiB
INI
203 lines
6.5 KiB
INI
[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.
|
||
|
||
[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
|
||
deps =
|
||
{[testenv]deps}
|
||
git+https://git.openstack.org/openstack/tempest#egg=tempest
|
||
|
||
[testenv:api-constraints]
|
||
basepython = {[testenv:api]basepython}
|
||
install_command = {[testenv:common-constraints]install_command}
|
||
passenv = {[testenv:api]passenv}
|
||
setenv = {[testenv:api]setenv}
|
||
deps =
|
||
{[testenv:api]deps}
|
||
|
||
[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
|