| [tox] |
| envlist = pep8,py39,bashate,pip-check-reqs |
| minversion = 3.18.0 |
| |
| [tempestenv] |
| sitepackages = False |
| setenv = |
| VIRTUAL_ENV={envdir} |
| OS_TEST_PATH=./tempest/test_discover |
| OS_TEST_TIMEOUT={env:OS_TEST_TIMEOUT:1200} |
| deps = |
| -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} |
| -r{toxinidir}/requirements.txt |
| |
| [testenv] |
| setenv = |
| VIRTUAL_ENV={envdir} |
| OS_LOG_CAPTURE=1 |
| OS_STDOUT_CAPTURE=1 |
| OS_STDERR_CAPTURE=1 |
| OS_TEST_TIMEOUT=160 |
| PYTHONWARNINGS=default::DeprecationWarning,ignore::DeprecationWarning:distutils,ignore::DeprecationWarning:site |
| passenv = |
| OS_STDOUT_CAPTURE |
| OS_STDERR_CAPTURE |
| OS_TEST_TIMEOUT |
| OS_TEST_LOCK_PATH |
| TEMPEST_CONFIG |
| TEMPEST_CONFIG_DIR |
| http_proxy |
| HTTP_PROXY |
| https_proxy |
| HTTPS_PROXY |
| no_proxy |
| NO_PROXY |
| ZUUL_CACHE_DIR |
| REQUIREMENTS_PIP_LOCATION |
| GENERATE_TEMPEST_PLUGIN_LIST |
| usedevelop = True |
| allowlist_externals = |
| find |
| deps = |
| -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} |
| -r{toxinidir}/requirements.txt |
| -r{toxinidir}/test-requirements.txt |
| commands = |
| find . -type f -name "*.pyc" -delete |
| stestr --test-path ./tempest/tests run {posargs} |
| |
| [testenv:genconfig] |
| commands = oslo-config-generator --config-file tempest/cmd/config-generator.tempest.conf |
| |
| [testenv:cover] |
| setenv = |
| {[testenv]setenv} |
| PYTHON=coverage run --source tempest --parallel-mode |
| commands = |
| coverage erase |
| find . -type f -name "*.pyc" -delete |
| stestr --test-path ./tempest/tests run {posargs} |
| coverage combine |
| coverage html -d cover |
| coverage xml -o cover/coverage.xml |
| coverage report -m --fail-under=76 |
| |
| [testenv:debug] |
| commands = oslo_debug_helper -t tempest/tests {posargs} |
| |
| [testenv:all] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| # 'all' includes slow tests |
| setenv = |
| {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {posargs:''} |
| |
| [testenv:all-plugin] |
| # DEPRECATED |
| # NOTE(andreaf) The all-plugin tox env uses sitepackages |
| # so that plugins installed outsite of Tempest virtual environment |
| # can be discovered. After the implementation during the Queens |
| # release cycle of the goal of moving Tempest plugins in dedicated |
| # git repos, this environment should not be used anymore. "all" |
| # should be used instead with the appropriate regex filtering. |
| sitepackages = True |
| # 'all' includes slow tests |
| setenv = |
| {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| commands = |
| echo "WARNING: The all-plugin env is deprecated and will be removed" |
| echo "WARNING Please use the 'all' environment for Tempest plugins." |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {posargs:''} |
| |
| [testenv:all-site-packages] |
| sitepackages = True |
| # 'all' includes slow tests |
| setenv = |
| {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {posargs:''} |
| |
| [testenv:full] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| # The regex below is used to select which tests to run and exclude the slow tag: |
| # See the testrepository bug: https://bugs.launchpad.net/testrepository/+bug/1208610 |
| # FIXME: We can replace it with the `--exclude-regex` option to exclude tests now. |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex '(?!.*\[.*\bslow\b.*\])(^tempest\.api)' {posargs} |
| tempest run --combine --serial --regex '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)|(^tempest\.serial_tests)' {posargs} |
| |
| [testenv:integrated-full] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| # The regex below is used to select which tests to run. It exclude the extra |
| # tests mentioned in tools/tempest-extra-tests-list.txt and slow tag: |
| # See the testrepository bug: https://bugs.launchpad.net/testrepository/+bug/1208610 |
| # FIXME: We can replace it with the `--exclude-regex` option to exclude tests now. |
| regex1 = '(?!.*\[.*\bslow\b.*\])(^tempest\.api)' |
| regex2 = '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)|(^tempest\.serial_tests)' |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:integrated-full]regex1} --exclude-list ./tools/tempest-extra-tests-list.txt {posargs} |
| tempest run --combine --serial --regex {[testenv:integrated-full]regex2} {posargs} |
| |
| [testenv:extra-tests] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| # The regex below is used to select extra tests mentioned in |
| # tools/tempest-extra-tests-list.txt and exclude slow tag tests: |
| # See the testrepository bug: https://bugs.launchpad.net/testrepository/+bug/1208610 |
| # FIXME: We can replace it with the `--exclude-regex` option to exclude tests now. |
| exclude-regex = '\[.*\bslow\b.*\]' |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --exclude-regex {[testenv:extra-tests]exclude-regex} --include-list ./tools/tempest-extra-tests-list.txt {posargs} |
| |
| [testenv:full-parallel] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| # But exclude the extra tests mentioned in tools/tempest-extra-tests-list.txt |
| regex = '(^tempest\.scenario.*)|(^tempest\.serial_tests)|(?!.*\[.*\bslow\b.*\])(^tempest\.api)' |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:full-parallel]regex} --exclude-list ./tools/tempest-extra-tests-list.txt {posargs} |
| |
| [testenv:api-microversion-tests] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '(^tempest\.api\.compute)|(^tempest\.api\.volume)' |
| # The regex below is used to select all tempest api tests for services having API |
| # microversion concept. |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:api-microversion-tests]regex} {posargs} |
| |
| [testenv:integrated-network] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex1 = '(?!.*\[.*\bslow\b.*\])(^tempest\.api)' |
| regex2 = '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)|(^tempest\.serial_tests)' |
| # The regex below is used to select which tests to run and exclude the slow tag and |
| # tests listed in exclude-list file: |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:integrated-network]regex1} --exclude-list ./tools/tempest-integrated-gate-networking-exclude-list.txt {posargs} |
| tempest run --combine --serial --regex {[testenv:integrated-network]regex2} --exclude-list ./tools/tempest-integrated-gate-networking-exclude-list.txt {posargs} |
| |
| [testenv:integrated-compute] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex1 = '(?!.*\[.*\bslow\b.*\])(^tempest\.api)' |
| regex2 = '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)|(^tempest\.serial_tests)' |
| # The regex below is used to select which tests to run and exclude the slow tag and |
| # tests listed in exclude-list file: |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --slowest --regex {[testenv:integrated-compute]regex1} --exclude-list ./tools/tempest-integrated-gate-compute-exclude-list.txt {posargs} |
| tempest run --combine --serial --slowest --regex {[testenv:integrated-compute]regex2} --exclude-list ./tools/tempest-integrated-gate-compute-exclude-list.txt {posargs} |
| |
| [testenv:integrated-placement] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex1 = '(?!.*\[.*\bslow\b.*\])(^tempest\.api)' |
| regex2 = '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)|(^tempest\.serial_tests)' |
| # The regex below is used to select which tests to run and exclude the slow tag and |
| # tests listed in exclude-list file: |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:integrated-placement]regex1} --exclude-list ./tools/tempest-integrated-gate-placement-exclude-list.txt {posargs} |
| tempest run --combine --serial --regex {[testenv:integrated-placement]regex2} --exclude-list ./tools/tempest-integrated-gate-placement-exclude-list.txt {posargs} |
| |
| [testenv:integrated-storage] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex1 = '(?!.*\[.*\bslow\b.*\])(^tempest\.api)' |
| regex2 = '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)|(^tempest\.serial_tests)' |
| # The regex below is used to select which tests to run and exclude the slow tag and |
| # tests listed in exclude-list file: |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:integrated-storage]regex1} --exclude-list ./tools/tempest-integrated-gate-storage-exclude-list.txt {posargs} |
| tempest run --combine --serial --regex {[testenv:integrated-storage]regex2} --exclude-list ./tools/tempest-integrated-gate-storage-exclude-list.txt {posargs} |
| |
| [testenv:integrated-object-storage] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex1 = '(?!.*\[.*\bslow\b.*\])(^tempest\.api)' |
| regex2 = '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)|(^tempest\.serial_tests)' |
| # The regex below is used to select which tests to run and exclude the slow tag and |
| # tests listed in exclude-list file: |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:integrated-object-storage]regex1} --exclude-list ./tools/tempest-integrated-gate-object-storage-exclude-list.txt {posargs} |
| tempest run --combine --serial --regex {[testenv:integrated-object-storage]regex2} --exclude-list ./tools/tempest-integrated-gate-object-storage-exclude-list.txt {posargs} |
| |
| [testenv:full-serial] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '(?!.*\[.*\bslow\b.*\])(^tempest\.(api|scenario|serial_tests))' |
| # The regex below is used to select which tests to run and exclude the slow tag: |
| # See the testrepository bug: https://bugs.launchpad.net/testrepository/+bug/1208610 |
| # FIXME: We can replace it with the `--exclude-regex` option to exclude tests now. |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --serial --regex {[testenv:full-serial]regex} {posargs} |
| |
| [testenv:scenario] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '(^tempest\.scenario)' |
| # The regex below is used to select all scenario tests |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --serial --regex {[testenv:scenario]regex} {posargs} |
| |
| [testenv:smoke] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '\[.*\bsmoke\b.*\]' |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:smoke]regex} {posargs} |
| |
| [testenv:smoke-serial] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '\[.*\bsmoke\b.*\]' |
| # This is still serial because neutron doesn't work with parallel. See: |
| # https://bugs.launchpad.net/tempest/+bug/1216076 so the neutron smoke |
| # job would fail if we moved it to parallel. |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --serial --regex {[testenv:smoke-serial]regex} {posargs} |
| |
| [testenv:slow-serial] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '\[.*\bslow\b.*\]' |
| # The regex below is used to select the slow tagged tests to run serially: |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --serial --regex {[testenv:slow-serial]regex} {posargs} |
| |
| [testenv:slow] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| # The regex below is used to select the slow tagged tests: |
| regex = '\[.*\bslow\b.*\]' |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:slow]regex} {posargs} |
| |
| [testenv:multinode] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| # The regex below is used to select the multinode and smoke tagged tests |
| regex = '\[.*\bsmoke|multinode\b.*\]' |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:multinode]regex} {posargs} |
| |
| [testenv:ipv6-only] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '\[.*\bsmoke|ipv6|test_network_v6\b.*\]' |
| # Run only smoke and ipv6 tests. This env is used to tests |
| # the ipv6 deployments and basic tests run fine so that we can |
| # verify that services listen on IPv6 address. |
| commands = |
| find . -type f -name "*.pyc" -delete |
| tempest run --regex {[testenv:ipv6-only]regex} {posargs} |
| |
| [testenv:venv] |
| deps = |
| -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} |
| -r{toxinidir}/requirements.txt |
| -r{toxinidir}/doc/requirements.txt |
| commands = {posargs} |
| |
| [testenv:venv-tempest] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| commands = {posargs} |
| |
| [testenv:docs] |
| deps = |
| -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} |
| -r{toxinidir}/doc/requirements.txt |
| commands = |
| sphinx-apidoc -f -o doc/source/tests/compute tempest/api/compute |
| sphinx-apidoc -f -o doc/source/tests/identity tempest/api/identity |
| sphinx-apidoc -f -o doc/source/tests/image tempest/api/image |
| sphinx-apidoc -f -o doc/source/tests/network tempest/api/network |
| sphinx-apidoc -f -o doc/source/tests/object_storage tempest/api/object_storage |
| sphinx-apidoc -f -o doc/source/tests/volume tempest/api/volume |
| sphinx-apidoc -f -o doc/source/tests/scenario tempest/scenario |
| sphinx-apidoc -f -o doc/source/tests/serial_tests tempest/serial_tests |
| rm -rf doc/build |
| sphinx-build -W -b html doc/source doc/build/html |
| allowlist_externals = |
| rm |
| |
| [testenv:pdf-docs] |
| deps = {[testenv:docs]deps} |
| allowlist_externals = |
| rm |
| make |
| commands = |
| sphinx-apidoc -f -o doc/source/tests/compute tempest/api/compute |
| sphinx-apidoc -f -o doc/source/tests/identity tempest/api/identity |
| sphinx-apidoc -f -o doc/source/tests/image tempest/api/image |
| sphinx-apidoc -f -o doc/source/tests/network tempest/api/network |
| sphinx-apidoc -f -o doc/source/tests/object_storage tempest/api/object_storage |
| sphinx-apidoc -f -o doc/source/tests/volume tempest/api/volume |
| sphinx-apidoc -f -o doc/source/tests/scenario tempest/scenario |
| sphinx-apidoc -f -o doc/source/tests/serial_tests tempest/serial_tests |
| sphinx-build -W -b latex doc/source doc/build/pdf |
| make -C doc/build/pdf |
| |
| [testenv:pep8] |
| deps = |
| {[testenv]deps} |
| autopep8>=2.1.0 |
| commands = |
| autopep8 --exit-code --max-line-length=79 --experimental --diff -r tempest setup.py |
| flake8 {posargs} |
| check-uuid |
| |
| [testenv:autopep8] |
| deps = autopep8>=2.1.0 |
| commands = |
| {toxinidir}/tools/format.sh |
| |
| [testenv:uuidgen] |
| commands = |
| check-uuid --fix |
| |
| [hacking] |
| import_exceptions = tempest.services |
| |
| [flake8] |
| # E125 is a won't fix until https://github.com/jcrocholl/pep8/issues/126 is resolved. For further detail see https://review.opendev.org/#/c/36788/ |
| # E123 skipped because it is ignored by default in the default pep8 |
| # E129 skipped because it is too limiting when combined with other rules |
| # W504 skipped because it is overeager and unnecessary |
| # H405 skipped because it arbitrarily forces doctring "title" lines |
| # I201 and I202 skipped because the rule does not allow new line between 3rd party modules and own modules |
| ignore = E125,E123,E129,W504,H405,I201,I202,T117 |
| show-source = True |
| exclude = .git,.venv,.tox,dist,doc,*egg,build |
| enable-extensions = H106,H203,H904 |
| import-order-style = pep8 |
| |
| [flake8:local-plugins] |
| extension = |
| T102 = checks:import_no_clients_in_api_and_scenario_tests |
| T104 = checks:scenario_tests_need_service_tags |
| T105 = checks:no_setup_teardown_class_for_tests |
| T107 = checks:service_tags_not_in_module_path |
| T108 = checks:no_hyphen_at_end_of_rand_name |
| N322 = checks:no_mutable_default_args |
| T109 = checks:no_testtools_skip_decorator |
| T110 = checks:get_resources_on_service_clients |
| T111 = checks:delete_resources_on_service_clients |
| T112 = checks:dont_import_local_tempest_into_lib |
| T113 = checks:use_rand_uuid_instead_of_uuid4 |
| T114 = checks:dont_use_config_in_tempest_lib |
| T115 = checks:dont_put_admin_tests_on_nonadmin_path |
| T116 = checks:unsupported_exception_attribute_PY3 |
| T117 = checks:negative_test_attribute_always_applied_to_negative_tests |
| T118 = checks:no_log_warn |
| paths = |
| ./tempest/hacking |
| |
| [testenv:releasenotes] |
| deps = |
| -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} |
| -r{toxinidir}/doc/requirements.txt |
| commands = |
| rm -rf releasenotes/build |
| sphinx-build -a -E -W -d releasenotes/build/doctrees \ |
| -b html releasenotes/source releasenotes/build/html |
| allowlist_externals = rm |
| |
| [testenv:bashate] |
| # if you want to test out some changes you have made to bashate |
| # against tempest, just set BASHATE_INSTALL_PATH=/path/... to your |
| # modified bashate tree |
| deps = |
| {env:BASHATE_INSTALL_PATH:bashate} |
| allowlist_externals = bash |
| commands = bash -c "find {toxinidir}/tools \ |
| -not \( -type d -name .?\* -prune \) \ |
| -type f \ |
| -name \*.sh \ |
| -print0 | xargs -0 bashate -v -eE005,E042 -i E006" |
| |
| [testenv:pip-check-reqs] |
| # Do not install test-requirements as that will pollute the virtualenv for |
| # determining missing packages. |
| # This also means that pip-check-reqs must be installed separately, outside |
| # of the requirements.txt files |
| deps = pip_check_reqs |
| -r{toxinidir}/requirements.txt |
| commands= |
| pip-extra-reqs -d --ignore-file=tempest/tests/* tempest |
| pip-missing-reqs -d --ignore-file=tempest/tests/* tempest |
| |
| |
| [testenv:bindep] |
| # 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. |
| deps = bindep |
| commands = bindep test |
| |
| [testenv:plugin-sanity-check] |
| # perform tempest plugin sanity |
| allowlist_externals = bash |
| commands = |
| bash tools/tempest-plugin-sanity.sh |
| |
| [testenv:stestr-master] |
| envdir = .tox/tempest |
| sitepackages = {[tempestenv]sitepackages} |
| setenv = {[tempestenv]setenv} |
| deps = {[tempestenv]deps} |
| regex = '\[.*\bsmoke\b.*\]' |
| # The below command install stestr master version and run smoke tests |
| commands = |
| find . -type f -name "*.pyc" -delete |
| pip install -U git+https://github.com/mtreinish/stestr |
| tempest run --regex {[testenv:stestr-master]regex} {posargs} |