Merge "Bump upstream dependencies to Cl-SR1"
[transportpce.git] / tox.ini
1 [tox]
2 minversion = 3.7.0
3 envlist = buildcontroller,testsPCE,
4     sims121,build_karaf_tests121,tests121,
5     sims221,build_karaf_tests221,tests221,tests_tapi,
6     sims71,build_karaf_tests71,tests71,
7     build_karaf_tests_hybrid,tests_hybrid,
8     docs
9     docs-linkcheck
10     checkbashisms
11     pre-commit
12     pylint
13 skipsdist = true
14 setupdir = tests/
15
16 [testenv]
17 passenv = USE_LIGHTY http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY OLM_TIMER1 OLM_TIMER2
18 setenv =
19     USE_LIGHTY=True
20     OLM_TIMER1=3000
21     OLM_TIMER2=2000
22
23 usedevelop = true
24 basepython = python3
25 deps =
26   -r{toxinidir}/tests/requirements.txt
27   -r{toxinidir}/tests/test-requirements.txt
28   setuptools>=7.0
29 changedir = {toxinidir}/tests
30 parallel_show_output = true
31
32 [testenv:buildcontroller]
33 whitelist_externals = build_controller.sh
34 commands =
35   ./build_controller.sh
36
37 [testenv:sims121]
38 whitelist_externals = install_honeynode.sh
39 depends = buildcontroller
40 # sims profiles does not strictly depends on buildcontroller
41 # but this dependency avoids race condition in the gate
42 commands =
43   ./install_honeynode.sh 1.2.1
44
45 [testenv:sims221]
46 whitelist_externals = install_honeynode.sh
47 depends = buildcontroller
48 commands =
49   ./install_honeynode.sh 2.2.1
50
51 [testenv:sims71]
52 whitelist_externals = install_honeynode.sh
53 depends = buildcontroller
54 commands =
55   ./install_honeynode.sh 7.1
56
57 [testenv:testsPCE]
58 depends = buildcontroller
59 #the following lines retrieve unofficial package of GNPy with REST support from Orange opensource Gitlab repo
60 setenv =
61     PIP_EXTRA_INDEX_URL = https://gitlab.com/api/v4/projects/33090323/packages/pypi/simple
62     USE_LIGHTY=True
63     USE_ODL_RESTCONF_VERSION=lighty
64 deps =
65   -r{toxinidir}/tests/requirements.txt
66   -r{toxinidir}/tests/test-requirements.txt
67   setuptools>=7.0
68   gnpy4tpce==2.4.7
69 whitelist_externals = launch_tests.sh
70 passenv = LAUNCHER USE_LIGHTY USE_ODL_RESTCONF_VERSION
71 basepython = python3
72 commands =
73   ./launch_tests.sh pce {posargs:}
74
75 [testenv:build_karaf_tests121]
76 depends = buildcontroller
77 # testsPCE dependency is only here to chain tests in the gate and avoid resources starvation
78 whitelist_externals = launch_tests.sh
79 passenv = LAUNCHER USE_LIGHTY
80 setenv =
81     USE_LIGHTY=True
82     USE_ODL_ALT_KARAF_ENV=./karaf121.env
83     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf121
84 commands =
85   ./build_karaf_for_tests.sh
86
87 [testenv:tests121]
88 depends = buildcontroller,build_karaf_tests121,sims121,testsPCE
89 # testsPCE dependency is only here to chain tests in the gate and avoid resources starvation
90 whitelist_externals = launch_tests.sh
91 passenv = LAUNCHER USE_LIGHTY USE_ODL_RESTCONF_VERSION
92 setenv =
93     USE_LIGHTY=True
94     USE_ODL_RESTCONF_VERSION=lighty
95     USE_ODL_ALT_KARAF_ENV=./karaf121.env
96     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf121
97 commands =
98   ./launch_tests.sh 1.2.1 {posargs:}
99 # By default, all tests in the folder transportpce_tests/1.2.1/ are run.
100 # Though, a restricted list of tests can be passed as argument to 'tox -e tests121'.
101 # For example, 'tox -e tests121 portmapping' will run only the portmapping test.
102 # and 'tox -e tests121 "portmapping pce"' will run the portmapping and pce tests.
103 # Additionnally, a different launcher command than 'nosetests --with-xunit' can be
104 # used by exporting the variable LAUNCHER. For example 'export LAUNCHER="python3"'
105 # which is more verbose than nose or 'export LAUNCHER="ls -l"' to only list script
106 # files attributes.
107
108 [testenv:build_karaf_tests221]
109 depends = buildcontroller
110 # testsPCE dependency is only here to chain tests in the gate and avoid resources starvation
111 whitelist_externals = launch_tests.sh
112 passenv = LAUNCHER USE_LIGHTY
113 setenv =
114     USE_LIGHTY=True
115     USE_ODL_ALT_KARAF_ENV=./karaf221.env
116     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf221
117 commands =
118   ./build_karaf_for_tests.sh
119
120 [testenv:tests221]
121 depends = buildcontroller,build_karaf_tests221,sims221,tests71
122 # tests71 dependency is only here to chain tests in the gate and avoid ressources starvation
123 whitelist_externals = launch_tests.sh
124 passenv = LAUNCHER USE_LIGHTY USE_ODL_RESTCONF_VERSION
125 setenv =
126     USE_LIGHTY=True
127     USE_ODL_RESTCONF_VERSION=lighty
128     USE_ODL_ALT_KARAF_ENV=./karaf221.env
129     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf221
130 commands =
131   ./launch_tests.sh 2.2.1 {posargs:}
132
133 [testenv:build_karaf_tests71]
134 depends = buildcontroller
135 # testsPCE dependency is only here to chain tests in the gate and avoid resources starvation
136 whitelist_externals = launch_tests.sh
137 passenv = LAUNCHER USE_LIGHTY
138 setenv =
139     USE_LIGHTY=True
140     USE_ODL_ALT_KARAF_ENV=./karaf71.env
141     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf71
142 commands =
143   ./build_karaf_for_tests.sh
144
145 [testenv:tests71]
146 depends = buildcontroller,build_karaf_tests71,sims71,tests_tapi
147 whitelist_externals = launch_tests.sh
148 passenv = LAUNCHER USE_LIGHTY USE_ODL_RESTCONF_VERSION
149 setenv =
150     USE_LIGHTY=True
151     USE_ODL_RESTCONF_VERSION=lighty
152     USE_ODL_ALT_KARAF_ENV=./karaf71.env
153     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf71
154 commands =
155   ./launch_tests.sh 7.1 {posargs:}
156
157 [testenv:build_karaf_tests_hybrid]
158 depends = buildcontroller
159 whitelist_externals = launch_tests.sh
160 passenv = LAUNCHER USE_LIGHTY
161 setenv =
162     USE_LIGHTY=True
163     USE_ODL_ALT_KARAF_ENV=./karaf121.env
164     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf_hybrid
165 commands =
166   ./build_karaf_for_tests.sh
167
168 [testenv:tests_hybrid]
169 depends = buildcontroller,build_karaf_tests_hybrid,sims121,sims221,sims71,tests121,tests221,tests71
170 #the last dependency is to avoid temporarily concurrent ressources problem in parallel mode
171 whitelist_externals = launch_tests.sh
172 passenv = LAUNCHER USE_LIGHTY USE_ODL_RESTCONF_VERSION
173 setenv =
174     USE_LIGHTY=True
175     USE_ODL_RESTCONF_VERSION=lighty
176     USE_ODL_ALT_KARAF_ENV=./karaf121.env
177     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf_hybrid
178 commands =
179 #  nosetests --with-xunit transportpce_tests/hybrid/test01_device_change_notifications.py
180   ./launch_tests.sh hybrid {posargs:}
181
182 [testenv:tests_tapi]
183 depends = buildcontroller,build_karaf_tests221,sims221
184 whitelist_externals = launch_tests.sh
185 passenv = LAUNCHER USE_LIGHTY OLM_TIMER1 OLM_TIMER2 USE_ODL_RESTCONF_VERSION
186 setenv =
187     USE_LIGHTY=True
188     USE_ODL_RESTCONF_VERSION=lighty
189     USE_ODL_ALT_KARAF_ENV=./karaf221.env
190     USE_ODL_ALT_KARAF_INSTALL_DIR=karaf221
191     INSTALL_TAPI=True
192     OLM_TIMER1=3000
193     OLM_TIMER2=2000
194
195 commands =
196   ./launch_tests.sh tapi {posargs:}
197
198 [testenv:with_docker]
199 depends = buildcontroller,sims221
200 whitelist_externals = launch_tests.sh
201                       dockercmd.sh
202 passenv = LAUNCHER USE_LIGHTY USE_ODL_RESTCONF_VERSION OLM_TIMER1 OLM_TIMER2
203 setenv =
204     OLM_TIMER1=3000
205     OLM_TIMER2=2000
206     INSTALL_TAPI=True
207     INSTALL_NBINOTIFICATIONS=True
208     USE_ODL_RESTCONF_VERSION=lighty
209
210 commands =
211   ./dockercmd.sh run -d -p 2181:2181 -p 9092:9092 --env ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 --name tpce_kafka1 teivah/kafka:2.0.0
212   ./launch_tests.sh with_docker {posargs:}
213   ./dockercmd.sh container rm -f tpce_kafka1
214
215 [testenv:docs]
216 passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
217 basepython = python3
218 deps = -rdocs/requirements.txt
219 commands =
220     sphinx-build -q -W --keep-going -b html -n -d {envtmpdir}/doctrees ../docs/ {toxinidir}/docs/_build/html
221
222 [testenv:docs-linkcheck]
223 passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
224 basepython = python3
225 deps = -rdocs/requirements.txt
226 commands = sphinx-build -q -b linkcheck -d {envtmpdir}/doctrees ../docs/ {toxinidir}/docs/_build/linkcheck
227
228 [testenv:checkbashisms]
229 deps =
230 whitelist_externals = sh
231                       checkbashisms
232                       sudo
233                       find
234 commands =
235     sh -c 'command checkbashisms>/dev/null || sudo yum install -y devscripts-checkbashisms || sudo yum install -y devscripts-minimal || sudo yum install -y devscripts \
236         || sudo yum install -y https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Everything/x86_64/os/Packages/d/devscripts-checkbashisms-2.19.6-2.fc31.x86_64.rpm \
237         || (echo "checkbashisms command not found - please install it \
238              (e.g. sudo apt-get install devscripts | yum install devscripts-minimal )" >&2 && exit 1)'
239     find . -not -path '*/\.*' -name *.sh -exec checkbashisms -f  \{\} +
240
241 [testenv:spelling]
242 basepython = python3
243 deps =
244     -rdocs/requirements.txt
245     sphinxcontrib-spelling
246     PyEnchant
247 commands = sphinx-build -b spelling -d {envtmpdir}/doctrees ../docs/ {toxinidir}/docs/_build/spelling
248
249 [testenv:autopep8]
250 basepython = python3
251 deps = autopep8
252 commands =
253     autopep8 --max-line-length 120 --in-place --recursive transportpce_tests/
254
255 [testenv:pylint_full]
256 basepython = python3
257 deps = pylint>=2.6.0
258 whitelist_externals = find
259 commands =
260     find transportpce_tests/ -name *.py -exec pylint --fail-under=9.22 --max-line-length=120 --disable=missing-docstring --module-rgx="([a-z0-9_]+$)|([0-9.]{1,30}$)" --method-rgx="(([a-z_][a-zA-Z0-9_]{2,})|(_[a-z0-9_]*)|(__[a-zA-Z][a-zA-Z0-9_]+__))$" --variable-rgx="[a-zA-Z_][a-zA-Z0-9_]{1,30}$" --reports=y --score=y  --output-format=colorized  \{\} +
261
262 [testenv:pylint]
263 basepython = python3
264 deps = pylint>=2.6.0
265 whitelist_externals = find
266 commands =
267     find transportpce_tests/ -name *.py -exec pylint --fail-under=10 --max-line-length=120 --disable=missing-docstring --disable=fixme --disable=duplicate-code --module-rgx="([a-z0-9_]+$)|([0-9.]{1,30}$)" --method-rgx="(([a-z_][a-zA-Z0-9_]{2,})|(_[a-z0-9_]*)|(__[a-zA-Z][a-zA-Z0-9_]+__))$" --variable-rgx="[a-zA-Z_][a-zA-Z0-9_]{1,30}$" \{\} +
268
269 [testenv:pyang]
270 basepython = python3
271 deps = pyang
272 whitelist_externals = find
273 commands =
274     pyang --version
275     find ../api/ -name target -prune -o -name *.yang -exec pyang --lint --canonical --max-line-length=120 -p../api/src/main/yang/:../ordmodels/common/src/main/yang/:../ordmodels/service/src/main/yang/:../tapimodels/src/main/yang/ \{\} +
276 #find ../api/ ../ordmodels/ ../tapimodels/ -name target -prune -o -name *.yang -exec pyang --lint --canonical --max-line-length=120 -p../api/src/main/yang/:../ordmodels/common/src/main/yang/:../ordmodels/service/src/main/yang/:../tapimodels/src/main/yang/ \{\} +
277
278 [testenv:pyangformat]
279 basepython = python3
280 deps = pyang
281 whitelist_externals = sh
282 commands =
283     pyang --version
284     sh -c 'find ../api/ -name target -prune -o -name *.yang -print | while read -r fname; do pyang -f yang --yang-canonical --yang-remove-unused-imports --max-line-length=120 --keep-comments -p../api/src/main/yang/:../ordmodels/common/src/main/yang/:../ordmodels/service/src/main/yang/:../tapimodels/src/main/yang/ "$fname"  -o /tmp/tmpfile.$$ && mv /tmp/tmpfile.$$ "$fname";done'
285
286 [testenv:pre-commit-install]
287 basepython = python3
288 deps = pre-commit
289 commands =
290     pre-commit install
291     pre-commit install --hook-type commit-msg
292
293 [testenv:pre-commit-uninstall]
294 basepython = python3
295 deps = pre-commit
296 commands =
297     pre-commit uninstall
298     pre-commit uninstall --hook-type commit-msg
299
300 [testenv:pre-commit-autoupdate]
301 basepython = python3
302 deps = pre-commit
303 commands =
304     pre-commit autoupdate
305
306 [testenv:pre-commit]
307 basepython = python3
308 deps = pre-commit
309 passenv = HOME
310 commands =
311     pre-commit run --all-files --show-diff-on-failure
312     pre-commit run gitlint-ci --hook-stage manual
313
314 [testenv:gitlint]
315 basepython = python3
316 deps = gitlint
317 commands =
318     gitlint --config ../.gitlint
319
320
321 [testenv:allure-report-init]
322 basepython = python3
323 deps = allure-pytest>=2.10.0
324 # allure is under Apache License 2.0
325 whitelist_externals =
326     mkdir
327     sed
328 commands =
329     mkdir -p allure-report
330     sed -i_ '$a\allure-pytest # Apache License 2.0' ./test-requirements.txt
331
332
333 [testenv:allure-report-serve]
334 basepython = python3
335 whitelist_externals =
336     allure
337 commands =
338     allure serve "allure-report"