-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathtox.ini
More file actions
322 lines (295 loc) · 11.1 KB
/
tox.ini
File metadata and controls
322 lines (295 loc) · 11.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
[tox]
envlist = docs,py3,pep8
minversion = 4.6.0
ignore_basepython_conflict = True
[testenv]
description =
Run unit tests.
# NOTE(ykarel): we need this to override python3 version
# in FIPS job running on CentOS 9-stream
basepython = {env:TOX_PYTHON:python3}
setenv =
VIRTUAL_ENV={envdir}
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:180}
PYTHONWARNINGS=default::DeprecationWarning,ignore::DeprecationWarning:distutils,ignore::DeprecationWarning:site
passenv = TRACE_FAILONLY
GENERATE_HASHES
http_proxy
HTTP_PROXY
https_proxy
HTTPS_PROXY
no_proxy
NO_PROXY
TOX_ENV_SRC_MODULES
usedevelop = True
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
allowlist_externals = bash
commands =
bash {toxinidir}/tools/pip_install_src_modules.sh "{toxinidir}"
stestr run {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:debug]
description =
Run specified tests through oslo_debug_helper, which allows use of pdb.
commands = oslo_debug_helper -t neutron/tests {posargs}
[testenv:common]
# Fake job to define environment variables shared between dsvm/non-dsvm jobs
setenv = OS_TEST_TIMEOUT={env:OS_TEST_TIMEOUT:180}
commands = false
# NOTE(ralonsoh): since the removal of eventlet in the unit test framework,
# the py310 with concurrency=8 is unstable.
[testenv:py310]
commands =
bash {toxinidir}/tools/pip_install_src_modules.sh "{toxinidir}"
stestr run --concurrency 7 {posargs}
[testenv:dsvm]
# Fake job to define environment variables shared between dsvm jobs
setenv =
OS_SUDO_TESTING=1
# NOTE(ralonsoh): OS_ROOTWRAP_CMD and OS_ROOTWRAP_DAEMON_CMD are using now
# "sudo -E" to pass the environment variables, in particular OSLO_SERVICE_BACKEND.
# To be removed once the default oslo.service backend is "threading".
#OS_ROOTWRAP_CMD=sudo -E {envdir}/bin/neutron-rootwrap {envdir}/etc/neutron/rootwrap.conf
#OS_ROOTWRAP_DAEMON_CMD=sudo -E {envdir}/bin/neutron-rootwrap-daemon {envdir}/etc/neutron/rootwrap.conf
OS_ROOTWRAP_CMD=sudo -E
OS_ROOTWRAP_DAEMON_CMD=
OS_FAIL_ON_MISSING_DEPS={env:OS_FAIL_ON_MISSING_DEPS:1}
OS_LOG_PATH={env:OS_LOG_PATH:/opt/stack/logs}
commands = false
[testenv:functional]
description =
Run functional tests.
setenv =
{[testenv]setenv}
{[testenv:common]setenv}
OS_TEST_PATH=./neutron/tests/functional
OS_LOG_PATH={env:OS_LOG_PATH:/opt/stack/logs}
# Because of issue with stestr and Python3, we need to avoid too much output
# to be produced during tests, so we will ignore python warnings here
PYTHONWARNINGS=ignore
# NOTE(ralonsoh): remove these three variables once the eventlet removal is finished.
# OSLO_SERVICE_BACKEND=eventlet
# EVENTLET_MONKEYPATCH=0
# OSKEN_HUB_TYPE=eventlet
OSKEN_HUB_TYPE=native
deps =
{[testenv]deps}
-r{toxinidir}/neutron/tests/functional/requirements.txt
[testenv:dsvm-functional]
description =
Run functional tests that require sudo privileges.
setenv =
{[testenv:functional]setenv}
{[testenv:dsvm]setenv}
passenv =
{[testenv]passenv}
OS_TEST_DBAPI_ADMIN_CONNECTION
deps =
{[testenv:functional]deps}
commands =
bash {toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin
stestr run {posargs}
[testenv:dsvm-functional-gate]
description =
Run functional gate tests that require sudo privileges.
setenv =
{[testenv:dsvm-functional]setenv}
passenv = {[testenv:dsvm-functional]passenv}
deps = {[testenv:dsvm-functional]deps}
test_regex = .*MySQL\.|.*test_get_all_devices|.*TestMetadataAgent\.|.*BaseOVSTestCase\.|.*test_periodic_sync_routers_task|.*TestOvnNbSync.*|.*TestOvnNbSyncOverTcp.*|.*TestOvnNbSyncOverSsl.*|.*TestOvnSbSync.*|.*TestOvnSbSyncOverTcp.*|.*TestOvnSbSyncOverSsl.*|.*TestMaintenance|.*TestLogMaintenance|.*TestNBDbMonitor.*|.*test_ovn_client.*|.*test_initialize_network_segment_range_support_parallel_execution.*|.*test_direct_route_for_address_scope.*|.*test_fip_connection_for_address_scope.*
commands =
bash {toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin
stestr run --slowest --exclude-regex ({[testenv:dsvm-functional-gate]test_regex}|neutron.tests.functional.agent.l3.*) {posargs}
stestr run --slowest --combine --concurrency 1 ({[testenv:dsvm-functional-gate]test_regex}) {posargs}
stestr run --slowest --combine --exclude-regex ({[testenv:dsvm-functional-gate]test_regex}) neutron.tests.functional.agent.l3 {posargs}
[testenv:dsvm-fullstack]
description =
Run fullstack tests.
setenv =
{[testenv]setenv}
{[testenv:common]setenv}
{[testenv:dsvm]setenv}
# workaround for DB teardown lock contention (bug/1541742)
OS_TEST_TIMEOUT={env:OS_TEST_TIMEOUT:600}
OS_TEST_PATH=./neutron/tests/fullstack
# Because of issue with stestr and Python3, we need to avoid too much output
# to be produced during tests, so we will ignore python warnings here
PYTHONWARNINGS=ignore
deps =
{[testenv:functional]deps}
commands =
bash {toxinidir}/tools/generate_dhclient_script_for_fullstack.sh {envdir}
bash {toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin
stestr run --concurrency 2 {posargs}
[testenv:dsvm-fullstack-gate]
description =
Run fullstack gate tests that require sudo privileges.
setenv = {[testenv:dsvm-fullstack]setenv}
deps = {[testenv:dsvm-fullstack]deps}
commands =
bash {toxinidir}/tools/generate_dhclient_script_for_fullstack.sh {envdir}
bash {toxinidir}/tools/deploy_rootwrap.sh {toxinidir} {envdir}/etc {envdir}/bin
stestr run --slowest --concurrency 2 --exclude-regex neutron.tests.fullstack.test_securitygroup.TestSecurityGroupsSameNetwork.test_securitygroup {posargs}
stestr run --slowest --combine --concurrency 1 neutron.tests.fullstack.test_securitygroup.TestSecurityGroupsSameNetwork.test_securitygroup {posargs}
[testenv:releasenotes]
description =
Build release note documentation in HTML format.
deps = -r{toxinidir}/doc/requirements.txt
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:pep8]
description =
Run style and lint checks.
deps =
{[testenv]deps}
{[testenv:mypy]deps}
pylint~=3.3 # GPLv2
pre-commit~=4.0 # MIT
allowlist_externals =
bash
commands =
pre-commit run --all-files --show-diff-on-failure
bash ./tools/coding-checks.sh --pylint '{posargs}'
neutron-db-manage --config-file neutron/tests/etc/neutron.conf check_migration
{[testenv:genconfig]commands}
{[testenv:genpolicy]commands}
{[testenv:mypy]commands}
[testenv:mypy]
description =
Run type checks.
# TODO(stephenfin): At some point we might wish to create a 'types' extra
deps =
{[testenv]deps}
mypy
types-PyMySQL
types-WebOb
types-decorator
types-httplib2
types-netaddr
types-psutil
types-requests
types-uWSGI
commands =
mypy --cache-dir="{envdir}/mypy_cache"
[testenv:cover]
description =
Run unit tests and generate coverage report.
setenv =
{[testenv]setenv}
PYTHON=coverage run --source neutron --parallel-mode
commands =
stestr run --no-subunit-trace {posargs}
coverage combine
coverage report --fail-under=80 --skip-covered
coverage html -d cover
coverage xml -o cover/coverage.xml
[testenv:venv]
description =
Run specified command in a virtual environment with all dependencies
installed.
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
-r{toxinidir}/requirements.txt
commands = {posargs}
[testenv:docs]
description =
Build documentation in HTML format.
# Do not remove requirements.txt from deps list as without it
# upper constraints will not be used for deps listed in requirements.txt
# and may cause issues
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
-r{toxinidir}/requirements.txt
commands = sphinx-build -W -b html doc/source doc/build/html
[testenv:pdf-docs]
description =
Build documentation in PDF format.
deps =
{[testenv:docs]deps}
allowlist_externals =
make
commands =
sphinx-build -W -b latex doc/source doc/build/pdf
make -C doc/build/pdf
[testenv:linkcheck]
description =
Build documentation link checks.
deps = -r{toxinidir}/doc/requirements.txt
commands = sphinx-build -W -b linkcheck doc/source doc/build/linkcheck
[flake8]
# E126 continuation line over-indented for hanging indent
# E128 continuation line under-indented for visual indent
# E231 missing whitespace after ','
# E275 missing whitespace after keyword
# H405 multi line docstring summary not separated with an empty line
# I202 Additional newline in a group of imports
# N530 direct neutron imports not allowed
# W504 line break after binary operator
ignore = E126,E128,E231,E275,H405,I202,N530,W504
# 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 = ./.*,build,dist,doc
import-order-style = pep8
[flake8:local-plugins]
extension =
N322 = checks:check_assert_called_once_with
N328 = checks:check_asserttruefalse
N329 = checks:check_assertitemsequal
N330 = checks:check_assertempty
N332 = checks:check_assertequal_for_httpcode
N340 = checks:check_oslo_i18n_wrapper
N341 = checks:check_builtins_gettext
N343 = checks:check_no_imports_from_tests
N344 = checks:check_python3_no_filter
N346 = checks:check_no_sqlalchemy_event_import
N348 = checks:check_no_import_six
N349 = checks:check_no_import_packaging
N350 = checks:check_no_sqlalchemy_lazy_subquery
paths = ./neutron/hacking
[doc8]
max-line-length = 79
[hacking]
import_exceptions = neutron._i18n
[testenv:genconfig]
description =
Generate configuration example files.
allowlist_externals = bash
commands =
bash {toxinidir}/tools/generate_config_file_samples.sh
[testenv:genpolicy]
description =
Generate policy example files.
commands =
oslopolicy-sample-generator --config-file=etc/oslo-policy-generator/policy.conf
# This environment can be used to quickly validate that all needed system
# packages required to successfully execute test targets are installed
[testenv:bindep]
description =
Run binary dependency checks.
# 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:requirements]
description =
Run requirement checks.
deps =
-egit+https://opendev.org/openstack/requirements#egg=openstack-requirements
allowlist_externals = bash
commands =
bash -c '{envdir}/src/openstack-requirements/playbooks/files/project-requirements-change.py --req {envdir}/src/openstack-requirements --local {toxinidir} master'