tobiko/tox.ini
Eduardo Olivares b73f595bad Cleanup of infrared zuul jobs
tobiko-infrared-ubuntu is removed. It always fails because infrared is
not compatible with ubuntu-focal.

Former tobiko-infrared is removed. It did not really test anything
because there was no "primary" host in the inventory and essential
ansible plays from this job need to be run on the "primary" host.

Former tobiko-infrared-centos-9 is renamed to tobiko-infrared and it
will only use one node. The aim of this job is just to validate the the
tobiko infrared plugin works (it just executes tobiko unit and
functional tests).

Existing tobiko-check-collected-files ansible role has been removed. It
was only used to test that results where properly generated when the
tobiko infrared plugin was used, but it only work when no workflow was
specify.

Change-Id: I6e334014420757aafa436f42b189c932ed02ae56
2025-01-22 16:13:14 +01:00

477 lines
12 KiB
INI

[tox]
envlist = bindep,linters,py3,lower-constraints,functional
minversion = 4.13
# --- 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_*
HOME
KUBECONFIG
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
TOBIKO_TEST_PATH = {env:OS_TEST_PATH}
PYTEST_TIMEOUT = {env:PYTEST_TIMEOUT:300}
PYTHONWARNINGS = ignore::Warning,{env:PYTHONWARNINGS:}
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:TOBIKO_TEST_PATH}}
[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: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:manila]
basepython = {[integration]basepython}
envdir = {[integration]envdir}
passenv = {[integration]passenv}
setenv =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario/manila
[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 =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/scenario
RUN_TESTS_EXTRA_ARGS = -m "not skip_during_ovn_migration and not background and not flaky"
commands =
{envpython} {toxinidir}/tools/run_tests.py {env:RUN_TESTS_EXTRA_ARGS} {posargs:{env:TOBIKO_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 =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/sanity/neutron
PYTEST_TIMEOUT = 1800
[testenv:ovn_migration_sanity]
basepython = {[integration]basepython}
envdir = {[integration]envdir}
passenv = {[integration]passenv}
setenv =
{[testenv:sanity]setenv}
RUN_TESTS_EXTRA_ARGS = -m "ovn_migration and not skip_during_ovn_migration and not background and not flaky"
commands =
{envpython} {toxinidir}/tools/run_tests.py {env:RUN_TESTS_EXTRA_ARGS} {posargs:{env:TOBIKO_TEST_PATH}}
[testenv:shiftstack_sanity]
basepython = {[integration]basepython}
envdir = {[integration]envdir}
passenv = {[integration]passenv}
setenv =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/sanity/shiftstack
PYTEST_TIMEOUT = 1800
[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 =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/octavia
TOX_NUM_PROCESSES = 1
PYTEST_TIMEOUT = 3600
[testenv:neutron_faults]
basepython = {[integration]basepython}
envdir = {[integration]envdir}
passenv = {[integration]passenv}
setenv =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/neutron
TOX_NUM_PROCESSES = 1
PYTEST_TIMEOUT = 3600
[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
[testenv:podified_faults]
basepython = {[integration]basepython}
envdir = {[integration]envdir}
passenv = {[integration]passenv}
setenv =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/podified
TOX_NUM_PROCESSES = 1
PYTEST_TIMEOUT = 3600
[testenv:podified_ha_faults]
basepython = {[integration]basepython}
envdir = {[integration]envdir}
passenv = {[integration]passenv}
setenv =
{[integration]setenv}
OS_TEST_PATH = {toxinidir}/tobiko/tests/faults/podified/ha
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}
IR_WORKFLOW = {env:IR_WORKFLOW:unit-functional}
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}' \
--workflow '{env:IR_WORKFLOW}' \
{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 =