
This commit adds new pytest mark "skip_during_ovn_migration" to mark some tests to be always skipped during migration from ML2/OVS to ML2/OVN and marks as such tests from the StatelessSecurityGroupInstanceTest class. The reason why those tests shouldn't be run during the ovs to ovn migration is that we are skipping them in ML2/OVS env so resources required by those tests aren't created and later, when env is ML2/OVN already we can't really verify them as we don't have required resources created. This patch modifies also ovn_migration tox env so it will run all neutron scenario tests EXCEPT tests marked with this new pytest mark as "skip_during_ovn_migration". Change-Id: Iaa1e8b0d325ea690c6d6cb89e06006e7bbed9237
430 lines
10 KiB
INI
430 lines
10 KiB
INI
[tox]
|
|
|
|
envlist = bindep,linters,py3,lower-constraints,functional
|
|
minversion = 3.8.0
|
|
|
|
|
|
# --- unit test environments -------------------------------------------------
|
|
|
|
[testenv]
|
|
|
|
usedevelop = True
|
|
deps =
|
|
{env:TOX_CONSTRAINTS}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
{env:TOX_EXTRA_REQUIREMENTS}
|
|
passenv =
|
|
JENKINS_*
|
|
OS_*
|
|
TOBIKO_*
|
|
TOX_*
|
|
PYTEST_*
|
|
setenv =
|
|
OS_LOG_CAPTURE = {env:OS_LOG_CAPTURE:true}
|
|
OS_STDOUT_CAPTURE = {env:OS_STDOUT_CAPTURE:true}
|
|
OS_STDERR_CAPTURE = {env:OS_STDERR_CAPTURE:true}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/unit
|
|
PYTEST_TIMEOUT = {env:PYTEST_TIMEOUT:300}
|
|
PYTHONWARNINGS = ignore::Warning,{env:PYTHONWARNINGS:}
|
|
RUN_TESTS_EXTRA_ARGS = {env:OS_TEST_PATH}
|
|
TOBIKO_PREVENT_CREATE = {env:TOBIKO_PREVENT_CREATE:false}
|
|
TOX_COVER = {env:TOX_COVER:false}
|
|
TOX_COVER_DIR = {env:TOX_COVER_DIR:{toxinidir}/cover}
|
|
TOX_NUM_PROCESSES = {env:TOX_NUM_PROCESSES:auto}
|
|
TOX_REPORT_NAME = {env:TOX_REPORT_NAME:tobiko_results_{envname}}
|
|
TOX_REPORT_DIR = {env:TOX_REPORT_DIR:{envlogdir}}
|
|
TOX_CONSTRAINTS = {env:TOX_CONSTRAINTS:-c{toxinidir}/upper-constraints.txt}
|
|
TOX_EXTRA_REQUIREMENTS = {env:TOX_EXTRA_REQUIREMENTS:-r{toxinidir}/extra-requirements.txt}
|
|
VIRTUAL_ENV = {envdir}
|
|
commands =
|
|
{envpython} {toxinidir}/tools/run_tests.py {posargs:{env:RUN_TESTS_EXTRA_ARGS}}
|
|
|
|
|
|
[testenv:py3]
|
|
|
|
basepython = {env:TOX_PYTHON:python3}
|
|
envdir = {toxworkdir}/py3
|
|
|
|
|
|
[testenv:cover]
|
|
|
|
basepython = {[testenv:py3]basepython}
|
|
envdir = {[testenv:py3]envdir}
|
|
setenv =
|
|
{[testenv]setenv}
|
|
TOX_COVER = true
|
|
TOX_COVER_DIR={env:TOX_COVER_DIR:{toxinidir}/cover}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/unit
|
|
|
|
commands_post =
|
|
coverage html -d "{env:TOX_COVER_DIR}"
|
|
coverage xml -o "{env:TOX_COVER_DIR}/coverage.xml"
|
|
|
|
whitelist_externals =
|
|
find
|
|
|
|
|
|
# --- static analisys environments -------------------------------------------
|
|
|
|
[testenv:pep8]
|
|
|
|
basepython = {env:TOX_PYTHON:python3}
|
|
deps =
|
|
{[testenv]deps}
|
|
-r{toxinidir}/linters-requirements.txt
|
|
commands =
|
|
pre-commit run -a flake8
|
|
setenv =
|
|
{[testenv]setenv}
|
|
TOX_CONSTRAINTS = -c{toxinidir}/upper-constraints.txt
|
|
|
|
[testenv:mypy]
|
|
|
|
basepython = {[testenv:pep8]basepython}
|
|
deps = {[testenv:pep8]deps}
|
|
envdir = {toxworkdir}/pep8
|
|
commands =
|
|
pre-commit run -a mypy
|
|
setenv =
|
|
{[testenv:pep8]setenv}
|
|
|
|
|
|
[testenv:pylint]
|
|
basepython = {[testenv:pep8]basepython}
|
|
deps = {[testenv:pep8]deps}
|
|
envdir = {toxworkdir}/pep8
|
|
commands =
|
|
pre-commit run -a pylint
|
|
setenv =
|
|
{[testenv:pep8]setenv}
|
|
|
|
|
|
[testenv:ansible-lint]
|
|
basepython = {[testenv:pep8]basepython}
|
|
deps = {[testenv:pep8]deps}
|
|
envdir = {toxworkdir}/pep8
|
|
commands =
|
|
pre-commit run -a ansible-lint
|
|
setenv =
|
|
{[testenv:pep8]setenv}
|
|
|
|
|
|
[testenv:linters]
|
|
|
|
basepython = {[testenv:pep8]basepython}
|
|
whitelist_externals = bash
|
|
deps = {[testenv:pep8]deps}
|
|
envdir = {toxworkdir}/pep8
|
|
commands =
|
|
pre-commit --version
|
|
pre-commit run -a
|
|
pre-commit install --allow-missing-config
|
|
setenv =
|
|
{[testenv:pep8]setenv}
|
|
|
|
|
|
[flake8]
|
|
# H106: Don't put vim configuration in source files
|
|
# H203: Use assertIs(Not)None to check for None
|
|
# H204: Use assert(Not)Equal to check for equality
|
|
# H205: Use assert(Greater|Less)(Equal) for comparison
|
|
# H904: Delay string interpolations at logging calls.
|
|
enable-extensions = H106,H203,H204,H205,H904
|
|
|
|
show-source = true
|
|
exclude = ./.*,*lib/python*,build,dist,doc,*egg*,releasenotes,.venv,.tox
|
|
application-import-names = tobiko
|
|
max-complexity = 11
|
|
import-order-style = pep8
|
|
|
|
|
|
# --- integration test environments ------------------------------------------
|
|
|
|
[integration]
|
|
|
|
basepython = {[testenv:py3]basepython}
|
|
envdir = {[testenv:py3]envdir}
|
|
passenv =
|
|
{[testenv]passenv}
|
|
*_proxy
|
|
setenv =
|
|
{[testenv]setenv}
|
|
PYTEST_TIMEOUT = 2400
|
|
|
|
|
|
[testenv:venv]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
whitelist_externals = *
|
|
commands = {posargs:bash -c 'PS1="[tobiko@{envname}] " bash'}
|
|
|
|
|
|
[testenv:functional]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/functional
|
|
|
|
|
|
[testenv:scenario]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario
|
|
|
|
|
|
[testenv:neutron]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario/neutron
|
|
|
|
|
|
[testenv:octavia]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario/octavia
|
|
|
|
|
|
[testenv:designate]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario/designate
|
|
|
|
|
|
[testenv:ovn_migration]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[testenv:scenario]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario
|
|
RUN_TESTS_EXTRA_ARGS = -m "not skip_during_ovn_migration" {env:OS_TEST_PATH}
|
|
|
|
[testenv:nova]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario/nova
|
|
|
|
|
|
[testenv:sanity]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/sanity
|
|
PYTEST_TIMEOUT = 1800
|
|
|
|
[testenv:neutron_sanity]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[testenv:sanity]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/sanity/neutron
|
|
|
|
|
|
[testenv:shiftstack_sanity]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[testenv:sanity]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/sanity/shiftstack
|
|
|
|
|
|
[testenv:faults]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults
|
|
TOX_NUM_PROCESSES = 1
|
|
PYTEST_TIMEOUT = 3600
|
|
|
|
|
|
[testenv:octavia_faults]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[testenv:faults]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/octavia
|
|
|
|
|
|
[testenv:neutron_faults]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[testenv:faults]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/neutron
|
|
|
|
|
|
[testenv:ha_faults]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/ha
|
|
TOX_NUM_PROCESSES = 1
|
|
PYTEST_TIMEOUT = 3600
|
|
|
|
|
|
[testenv:instanceha]
|
|
|
|
basepython = {[integration]basepython}
|
|
envdir = {[integration]envdir}
|
|
passenv = {[integration]passenv}
|
|
setenv =
|
|
{[integration]setenv}
|
|
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/iha
|
|
TOX_NUM_PROCESSES = 1
|
|
PYTEST_TIMEOUT = 3600
|
|
|
|
|
|
# --- CI workflow test environments -------------------------------------------
|
|
|
|
[testenv:infrared]
|
|
|
|
# On RedHat Linux must use the default unversioned python because of dependency on native SELinux
|
|
# package available only for /usr/bin/python interpreter
|
|
basepython = {env:IR_PYTHON:python3}
|
|
usedevelop = false
|
|
skipsdist = true
|
|
skip_install = true
|
|
sitepackages = true
|
|
whitelist_externals =
|
|
rm
|
|
|
|
deps = {env:IR_DEPS}
|
|
|
|
passenv =
|
|
{[testenv]passenv}
|
|
ANSIBLE_*
|
|
IR_*
|
|
TERM
|
|
|
|
setenv =
|
|
{[testenv]setenv}
|
|
ANSIBLE_CONFIG = {env:ANSIBLE_CONFIG:{toxinidir}/ansible.cfg}
|
|
ANSIBLE_INVENTORY = {env:ANSIBLE_INVENTORY:{toxinidir}/ansible_hosts}
|
|
IR_DEPS = {env:IR_DEPS:-r{toxinidir}/infrared_plugin/requirements.txt}
|
|
IR_HOME = {env:IR_HOME:{envdir}/home/infrared}
|
|
IR_TOBIKO_PLUGIN = {env:IR_TOBIKO_PLUGIN:{toxinidir}/infrared_plugin}
|
|
IR_WORKSPACE_FILE = {env:IR_WORKSPACE_FILE:{toxinidir}/workspace.tgz}
|
|
SETUPTOOLS_USE_DISTUTILS = stdlib
|
|
|
|
commands_pre =
|
|
{envpython} {toxinidir}/tools/setup_infrared.py
|
|
|
|
commands =
|
|
ir tobiko --tobiko-src-dir '{toxinidir}' \
|
|
--collect-dir '{env:TOX_REPORT_DIR}' \
|
|
{posargs}
|
|
|
|
|
|
# --- documentation environments ----------------------------------------------
|
|
|
|
[docs]
|
|
|
|
basepython = {[testenv:py3]basepython}
|
|
envdir = {toxworkdir}/docs
|
|
deps =
|
|
{env:TOX_CONSTRAINTS}
|
|
-r{toxinidir}/doc/readthedocs_requirements.txt
|
|
commands =
|
|
|
|
[testenv:linkcheck]
|
|
allowlist_externals = sh
|
|
basepython = {[docs]basepython}
|
|
envdir = {[docs]envdir}
|
|
deps = {[docs]deps}
|
|
commands =
|
|
{[docs]commands}
|
|
sh -c 'cd {toxinidir}/doc/source && sphinx-build -W --keep-going -b linkcheck . ../build/linkcheck'
|
|
usedevelop = true
|
|
skipsdist = true
|
|
skip_install = true
|
|
|
|
|
|
[testenv:docs]
|
|
allowlist_externals = sh
|
|
basepython = {[docs]basepython}
|
|
envdir = {[docs]envdir}
|
|
deps = {[docs]deps}
|
|
changedir = doc/source
|
|
commands =
|
|
{[testenv:linkcheck]commands}
|
|
sphinx-build -W --keep-going -b html . ../build/html
|
|
usedevelop = true
|
|
skipsdist = true
|
|
skip_install = true
|
|
|
|
|
|
[testenv:releasenotes]
|
|
|
|
basepython = {[docs]basepython}
|
|
deps = {[docs]deps}
|
|
commands =
|
|
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
# Do not install any requirements. We want this to be fast and work even if
|
|
# system dependencies are missing, since it's used to tell you what system
|
|
# dependencies are missing! This also means that bindep must be installed
|
|
# separately, outside of the requirements files.
|
|
usedevelop = false
|
|
skipsdist = true
|
|
skip_install = true
|
|
|
|
|
|
# --- CI report environments --------------------------------------------------
|
|
|
|
|
|
[testenv:bindep]
|
|
basepython = {[testenv:py3]basepython}
|
|
# Do not install any requirements. We want this to be fast and work even if
|
|
# system dependencies are missing, since it's used to tell you what system
|
|
# dependencies are missing! This also means that bindep must be installed
|
|
# separately, outside of the requirements files.
|
|
usedevelop = false
|
|
skipsdist = true
|
|
skip_install = true
|
|
deps = bindep
|
|
commands = bindep {posargs:test}
|
|
commands_pre =
|