
All database migration testing in opestack is done through an opportunistic worker model, where if the database is available and correctly configured for testing, i.e. openstack-citest user and access appropriately granted, then the tests will create and test migrations. However, this has been problematic with mysql as of recent, as we have seen a long standing migration issue boil to the surface often with tests. As a result, we're isolating that test down to it's own job so we can limit the blast damage. This also helps us isolate is it all of the tests, or is it just soley isolated down to the mysql test run class, which is an additional data point. By default, we continue to run Postgres migration tests in the main jobs, as they haven't been impacted by this issue. Change-Id: Iefc044c31ef029e400a7dad294504175a4462638
174 lines
5.4 KiB
INI
174 lines
5.4 KiB
INI
[tox]
|
|
minversion = 3.18.0
|
|
envlist = py3,pep8
|
|
ignore_basepython_conflict=true
|
|
|
|
[testenv]
|
|
usedevelop = True
|
|
basepython = python3
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
PYTHONDONTWRITEBYTECODE=1
|
|
LANGUAGE=en_US
|
|
LC_ALL=en_US.UTF-8
|
|
MIGRATIONS_TIMEOUT={env:MIGRATIONS_TIMEOUT:60}
|
|
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_TIMEOUT={env:OS_TEST_TIMEOUT:30}
|
|
PYTHONUNBUFFERED=1
|
|
SQLALCHEMY_WARN_20=true
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands =
|
|
stestr run --slowest --parallel-class --exclude-regex TestMigrationsMySQL {posargs}
|
|
passenv = http_proxy
|
|
HTTP_PROXY
|
|
https_proxy
|
|
HTTPS_PROXY
|
|
no_proxy
|
|
NO_PROXY
|
|
|
|
[testenv:unit-with-driver-libs]
|
|
deps = {[testenv]deps}
|
|
-r{toxinidir}/driver-requirements.txt
|
|
|
|
[testenv:genstates]
|
|
deps = {[testenv]deps}
|
|
pydot2
|
|
commands = {toxinidir}/tools/states_to_dot.py -f {toxinidir}/doc/source/images/states.svg --format svg
|
|
|
|
[testenv:pep8]
|
|
usedevelop = False
|
|
deps=
|
|
hacking~=6.0.0 # Apache-2.0
|
|
doc8>=0.6.0 # Apache-2.0
|
|
pycodestyle>=2.0.0,<3.0.0 # MIT
|
|
flake8-import-order>=0.17.1 # LGPLv3
|
|
Pygments>=2.2.0 # BSD
|
|
bashate>=0.5.1 # Apache-2.0
|
|
allowlist_externals = bash
|
|
{toxinidir}/tools/run_bashate.sh
|
|
{toxinidir}/tools/check-releasenotes.py
|
|
commands =
|
|
bash tools/flake8wrap.sh {posargs}
|
|
# Run bashate during pep8 runs to ensure violations are caught by
|
|
# the check and gate queues.
|
|
{toxinidir}/tools/run_bashate.sh {toxinidir}
|
|
# Check the *.rst files
|
|
doc8 README.rst CONTRIBUTING.rst doc/source api-ref/source --ignore D001
|
|
# Check to make sure reno releasenotes created with 'reno new'
|
|
{toxinidir}/tools/check-releasenotes.py
|
|
|
|
[testenv:cover]
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
LANGUAGE=en_US
|
|
PYTHON=coverage run --source ironic --omit='*tests*' --parallel-mode
|
|
commands =
|
|
coverage erase
|
|
stestr run --parallel-class {posargs}
|
|
coverage combine
|
|
coverage report --omit='*tests*'
|
|
coverage html -d ./cover --omit='*tests*'
|
|
|
|
[testenv:genconfig]
|
|
sitepackages = False
|
|
envdir = {toxworkdir}/venv
|
|
commands =
|
|
oslo-config-generator --config-file=tools/config/ironic-config-generator.conf
|
|
|
|
[testenv:genpolicy]
|
|
sitepackages = False
|
|
envdir = {toxworkdir}/venv
|
|
commands =
|
|
oslopolicy-sample-generator --config-file=tools/policy/ironic-policy-generator.conf
|
|
|
|
[testenv:mysql-migrations]
|
|
sitepackages = False
|
|
commands =
|
|
stestr run --slowest --parallel-class TestMigrationsMySQL {posargs}
|
|
|
|
[testenv:debug]
|
|
commands = oslo_debug_helper -t ironic/tests/unit {posargs}
|
|
|
|
[testenv:docs]
|
|
# NOTE(dtantsur): documentation building process requires importing ironic
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands = sphinx-build -b html -W doc/source doc/build/html
|
|
|
|
[testenv:pdf-docs]
|
|
allowlist_externals = make
|
|
deps = {[testenv:docs]deps}
|
|
commands =
|
|
sphinx-build -W -b latex doc/source doc/build/pdf
|
|
make -C doc/build/pdf
|
|
|
|
|
|
[testenv:api-ref]
|
|
# NOTE(Mahnoor): documentation building process requires importing ironic API modules
|
|
usedevelop = False
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
allowlist_externals = bash
|
|
commands =
|
|
bash -c 'rm -rf api-ref/build'
|
|
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
|
|
|
|
[testenv:releasenotes]
|
|
usedevelop = False
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
|
|
[testenv:venv]
|
|
setenv = PYTHONHASHSEED=0
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands = {posargs}
|
|
|
|
[flake8]
|
|
# [E129] visually indented line with same indent as next logical line
|
|
# [E741] ambiguous variable name
|
|
# [W503] Line break before binary operator.
|
|
ignore = E129,E741,W503
|
|
filename = *.py,app.wsgi
|
|
exclude=.*,dist,doc,*lib/python*,*egg,build
|
|
import-order-style = pep8
|
|
application-import-names = ironic
|
|
max-complexity=19
|
|
# [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.
|
|
# [H210] Require 'autospec', 'spec', or 'spec_set' in mock.patch/mock.patch.object calls
|
|
# [H904] Delay string interpolations at logging calls.
|
|
enable-extensions=H106,H203,H204,H205,H210,H904
|
|
# [E402] Module level import not at top of file
|
|
per-file-ignores =
|
|
ironic/cmd/__init__.py:E402
|
|
ironic/tests/base.py:E402
|
|
|
|
[hacking]
|
|
import_exceptions = testtools.matchers, ironic.common.i18n
|
|
|
|
[flake8:local-plugins]
|
|
# [N323] Found use of _() without explicit import of _!
|
|
extension =
|
|
N323 = checks:check_explicit_underscore_import
|
|
paths = ./ironic/hacking/
|
|
|
|
[testenv:bandit]
|
|
usedevelop = False
|
|
deps = -r{toxinidir}/test-requirements.txt
|
|
commands = bandit -r ironic -x tests -n5 -ll -c tools/bandit.yml
|