checkbashisms: freeze> python -m pip freeze --all docs: install_deps> python -I -m pip install -r docs/requirements.txt buildcontroller: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt docs-linkcheck: install_deps> python -I -m pip install -r docs/requirements.txt checkbashisms: pip==23.3.1,setuptools==69.0.2,wheel==0.42.0 checkbashisms: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sh -c 'command checkbashisms>/dev/null || sudo yum install -y devscripts-checkbashisms || sudo yum install -y devscripts-minimal || sudo yum install -y devscripts || 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 || (echo "checkbashisms command not found - please install it (e.g. sudo apt-get install devscripts | yum install devscripts-minimal )" >&2 && exit 1)' buildcontroller: freeze> python -m pip freeze --all buildcontroller: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 buildcontroller: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_controller.sh 11 11 install java 17 Waiting for process with pid 6906 to finish. CentOS Stream 8 - AppStream 3.8 MB/s | 27 MB 00:07 CentOS Stream 8 - BaseOS 32 MB/s | 10 MB 00:00 CentOS Stream 8 - Extras 73 kB/s | 18 kB 00:00 CentOS Stream 8 - Extras common packages 76 kB/s | 6.9 kB 00:00 CentOS Stream 8 - PowerTools 14 MB/s | 4.8 MB 00:00 Docker CE Stable - x86_64 636 kB/s | 57 kB 00:00 Extra Packages for Enterprise Linux 8 - x86_64 18 MB/s | 16 MB 00:00 Node.js Packages for Enterprise Linux 8 - x86_6 3.4 MB/s | 710 kB 00:00 docs-linkcheck: freeze> python -m pip freeze --all docs: freeze> python -m pip freeze --all docs: alabaster==0.7.16,attrs==23.2.0,Babel==2.14.0,blockdiag==3.0.0,certifi==2024.2.2,charset-normalizer==3.3.2,contourpy==1.2.0,cycler==0.12.1,docutils==0.20.1,fonttools==4.48.1,funcparserlib==2.0.0a0,future==0.18.3,idna==3.6,imagesize==1.4.1,Jinja2==3.1.3,jsonschema==3.2.0,kiwisolver==1.4.5,lfdocs-conf==0.9.0,MarkupSafe==2.1.5,matplotlib==3.8.2,numpy==1.26.4,nwdiag==3.0.0,packaging==23.2,pillow==10.2.0,pip==23.3.1,Pygments==2.17.2,pyparsing==3.1.1,pyrsistent==0.20.0,python-dateutil==2.8.2,PyYAML==6.0.1,requests==2.31.0,requests-file==1.5.1,seqdiag==3.0.0,setuptools==69.0.2,six==1.16.0,snowballstemmer==2.2.0,Sphinx==7.2.6,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.4,sphinx-rtd-theme==2.0.0,sphinx-tabs==3.4.5,sphinxcontrib-applehelp==1.0.8,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==1.0.6,sphinxcontrib-htmlhelp==2.0.5,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.27,sphinxcontrib-qthelp==1.0.7,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==1.1.10,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.2.0,webcolors==1.13,wheel==0.42.0 docs: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sphinx-build -q -W --keep-going -b html -n -d /w/workspace/transportpce-tox-verify-transportpce-master/.tox/docs/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-transportpce-master/docs/_build/html docs-linkcheck: alabaster==0.7.16,attrs==23.2.0,Babel==2.14.0,blockdiag==3.0.0,certifi==2024.2.2,charset-normalizer==3.3.2,contourpy==1.2.0,cycler==0.12.1,docutils==0.20.1,fonttools==4.48.1,funcparserlib==2.0.0a0,future==0.18.3,idna==3.6,imagesize==1.4.1,Jinja2==3.1.3,jsonschema==3.2.0,kiwisolver==1.4.5,lfdocs-conf==0.9.0,MarkupSafe==2.1.5,matplotlib==3.8.2,numpy==1.26.4,nwdiag==3.0.0,packaging==23.2,pillow==10.2.0,pip==23.3.1,Pygments==2.17.2,pyparsing==3.1.1,pyrsistent==0.20.0,python-dateutil==2.8.2,PyYAML==6.0.1,requests==2.31.0,requests-file==1.5.1,seqdiag==3.0.0,setuptools==69.0.2,six==1.16.0,snowballstemmer==2.2.0,Sphinx==7.2.6,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.4,sphinx-rtd-theme==2.0.0,sphinx-tabs==3.4.5,sphinxcontrib-applehelp==1.0.8,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==1.0.6,sphinxcontrib-htmlhelp==2.0.5,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.27,sphinxcontrib-qthelp==1.0.7,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==1.1.10,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.2.0,webcolors==1.13,wheel==0.42.0 docs-linkcheck: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sphinx-build -q -b linkcheck -d /w/workspace/transportpce-tox-verify-transportpce-master/.tox/docs-linkcheck/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-transportpce-master/docs/_build/linkcheck Puppet Repository el 8 - x86_64 28 MB/s | 19 MB 00:00 docs: OK ✔ in 28.69 seconds pre-commit: install_deps> python -I -m pip install pre-commit docs-linkcheck: OK ✔ in 29.93 seconds pylint: install_deps> python -I -m pip install 'pylint>=2.6.0' pre-commit: freeze> python -m pip freeze --all Last metadata expiration check: 0:00:06 ago on Fri 09 Feb 2024 08:23:00 AM UTC. pre-commit: cfgv==3.4.0,distlib==0.3.8,filelock==3.13.1,identify==2.5.33,nodeenv==1.8.0,pip==23.3.1,platformdirs==4.2.0,pre-commit==3.6.0,PyYAML==6.0.1,setuptools==69.0.2,virtualenv==20.25.0,wheel==0.42.0 pre-commit: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run --all-files --show-diff-on-failure [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. [INFO] Initializing environment for https://github.com/jorisroovers/gitlint. [INFO] Initializing environment for https://github.com/jorisroovers/gitlint:./gitlint-core[trusted-deps]. No match for argument: devscripts-checkbashisms pylint: freeze> python -m pip freeze --all [INFO] Initializing environment for https://github.com/Lucas-C/pre-commit-hooks. pylint: astroid==3.0.3,dill==0.3.8,isort==5.13.2,mccabe==0.7.0,pip==23.3.1,platformdirs==4.2.0,pylint==3.0.3,setuptools==69.0.2,tomli==2.0.1,tomlkit==0.12.3,typing_extensions==4.9.0,wheel==0.42.0 pylint: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> find transportpce_tests/ -name '*.py' -exec pylint --fail-under=10 --max-line-length=120 --disable=missing-docstring,import-error --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}$' '{}' + Package java-17-openjdk-1:17.0.6.0.9-0.3.ea.el8.x86_64 is already installed. Package java-17-openjdk-devel-1:17.0.6.0.9-0.3.ea.el8.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! [INFO] Initializing environment for https://github.com/pre-commit/mirrors-autopep8. Last metadata expiration check: 0:00:09 ago on Fri 09 Feb 2024 08:23:00 AM UTC. [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... No match for argument: devscripts-minimal Last metadata expiration check: 0:00:13 ago on Fri 09 Feb 2024 08:23:00 AM UTC. No match for argument: devscripts [INFO] Installing environment for https://github.com/Lucas-C/pre-commit-hooks. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... Last metadata expiration check: 0:00:16 ago on Fri 09 Feb 2024 08:23:00 AM UTC. devscripts-checkbashisms-2.19.6-2.fc31.x86_64.r 190 kB/s | 29 kB 00:00 Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: devscripts-checkbashisms x86_64 2.19.6-2.fc31 @commandline 29 k Transaction Summary ================================================================================ Install 1 Package Total size: 29 k Installed size: 52 k Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : devscripts-checkbashisms-2.19.6-2.fc31.x86_64 1/1 Running scriptlet: devscripts-checkbashisms-2.19.6-2.fc31.x86_64 1/1 Verifying : devscripts-checkbashisms-2.19.6-2.fc31.x86_64 1/1 Installed: devscripts-checkbashisms-2.19.6-2.fc31.x86_64 Complete! checkbashisms: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> find . -not -path '*/\.*' -name '*.sh' -exec checkbashisms -f '{}' + [INFO] Installing environment for https://github.com/pre-commit/mirrors-autopep8. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... trim trailing whitespace.................................................Passed Tabs remover.............................................................Passed autopep8.................................................................Passed checkbashisms: OK ✔ in 46.3 seconds pre-commit: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run gitlint-ci --hook-stage manual [INFO] Installing environment for https://github.com/jorisroovers/gitlint. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... ------------------------------------ Your code has been rated at 10.00/10 gitlint..................................................................Passed pylint: OK ✔ in 31.35 seconds pre-commit: OK ✔ in 32.96 seconds buildcontroller: OK ✔ in 2 minutes 36.56 seconds sims121: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt testsPCE: install_deps> python -I -m pip install gnpy4tpce==2.4.7 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt sims221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests121: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt sims221: freeze> python -m pip freeze --all build_karaf_tests121: freeze> python -m pip freeze --all sims121: freeze> python -m pip freeze --all sims221: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 sims221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_sims.sh 2.2.1 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory build_karaf_tests121: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 build_karaf_tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh sims121: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 sims121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_sims.sh 1.2.1 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory sims121: OK ✔ in 21.59 seconds sims221: OK ✔ in 21.65 seconds sims71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests221: freeze> python -m pip freeze --all sims71: freeze> python -m pip freeze --all build_karaf_tests221: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 build_karaf_tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh sims71: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 sims71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_sims.sh 7.1 Removing ./lightynode/lightynode-openroadm-device directory Installing lightynode device to ./lightynode/lightynode-openroadm-device directory sims71: OK ✔ in 12.65 seconds build_karaf_tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests71: freeze> python -m pip freeze --all build_karaf_tests71: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 build_karaf_tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh build_karaf_tests121: OK ✔ in 1 minute 4.89 seconds build_karaf_tests_hybrid: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests221: OK ✔ in 55.88 seconds tests_tapi: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests_hybrid: freeze> python -m pip freeze --all build_karaf_tests_hybrid: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 build_karaf_tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh tests_tapi: freeze> python -m pip freeze --all tests_tapi: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 tests_tapi: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi using environment variables from ./karaf221.env pytest -q transportpce_tests/tapi/test01_abstracted_topology.py testsPCE: freeze> python -m pip freeze --all testsPCE: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,click==8.1.7,contourpy==1.2.0,cryptography==3.3.2,cycler==0.12.1,dict2xml==1.7.4,exceptiongroup==1.2.0,Flask==2.1.3,Flask-Injector==0.14.0,fonttools==4.48.1,gnpy4tpce==2.4.7,idna==3.6,iniconfig==2.0.0,injector==0.21.0,itsdangerous==2.1.2,Jinja2==3.1.3,kiwisolver==1.4.5,lxml==5.1.0,MarkupSafe==2.1.5,matplotlib==3.8.2,netconf-client==3.0.0,networkx==2.8.8,numpy==1.26.4,packaging==23.2,pandas==1.5.3,paramiko==3.4.0,pbr==5.11.1,pillow==10.2.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pyparsing==3.1.1,pytest==8.0.0,python-dateutil==2.8.2,pytz==2024.1,requests==2.31.0,scipy==1.12.0,setuptools==50.3.2,six==1.16.0,tomli==2.0.1,urllib3==2.2.0,Werkzeug==2.0.3,wheel==0.42.0,xlrd==1.2.0 testsPCE: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh pce pytest -q transportpce_tests/pce/test01_pce.py .................................................. [100%] 20 passed in 126.22s (0:02:06) pytest -q transportpce_tests/pce/test02_pce_400G.py ................ [100%] 9 passed in 42.87s pytest -q transportpce_tests/pce/test03_gnpy.py ..................... [100%] 8 passed in 39.91s pytest -q transportpce_tests/pce/test04_pce_bug_fix.py [100%] 50 passed in 235.45s (0:03:55) pytest -q transportpce_tests/tapi/test02_full_topology.py ... [100%] 3 passed in 52.94s build_karaf_tests71: OK ✔ in 1 minute 20.9 seconds build_karaf_tests_hybrid: OK ✔ in 1 minute 24.25 seconds testsPCE: OK ✔ in 6 minutes 11.82 seconds tests121: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests121: freeze> python -m pip freeze --all tests121: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 1.2.1 using environment variables from ./karaf121.env pytest -q transportpce_tests/1.2.1/test01_portmapping.py ...FF..FFF.F...FF.................. [100%] =================================== FAILURES =================================== _________ TransportPCEPortMappingTesting.test_01_rdm_device_connection _________ self = conn = method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01' body = '{"node": [{"node-id": "ROADMA01", "netconf-node-topology:username": "admin", "netconf-node-topology:password": "admin...f-node-topology:port": "17831", "netconf-node-topology:tcp-only": "false", "netconf-node-topology:pass-through": {}}]}' headers = HTTPHeaderDict({'User-Agent': 'python-requests/2.31.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/jso... 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '288', 'Authorization': 'Basic YWRtaW46YWRtaW4='}) retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) timeout = Timeout(connect=10, read=10, total=None), chunked = False response_conn = preload_content = False, decode_content = False, enforce_content_length = True def _make_request( self, conn: BaseHTTPConnection, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | None = None, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, chunked: bool = False, response_conn: BaseHTTPConnection | None = None, preload_content: bool = True, decode_content: bool = True, enforce_content_length: bool = True, ) -> BaseHTTPResponse: """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param response_conn: Set this to ``None`` if you will handle releasing the connection or set the connection to have the response release it. :param preload_content: If True, the response's body will be preloaded during construction. :param decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param enforce_content_length: Enforce content length checking. Body returned by server must match value of Content-Length header, if present. Otherwise, raise error. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) try: # Trigger any extra validation we need to do. try: self._validate_conn(conn) except (SocketTimeout, BaseSSLError) as e: self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) raise # _validate_conn() starts the connection to an HTTPS proxy # so we need to wrap errors with 'ProxyError' here too. except ( OSError, NewConnectionError, TimeoutError, BaseSSLError, CertificateError, SSLError, ) as e: new_e: Exception = e if isinstance(e, (BaseSSLError, CertificateError)): new_e = SSLError(e) # If the connection didn't successfully connect to it's proxy # then there if isinstance( new_e, (OSError, NewConnectionError, TimeoutError, SSLError) ) and (conn and conn.proxy and not conn.has_connected_to_proxy): new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) raise new_e # conn.request() calls http.client.*.request, not the method in # urllib3.request. It also calls makefile (recv) on the socket. try: conn.request( method, url, body=body, headers=headers, chunked=chunked, preload_content=preload_content, decode_content=decode_content, enforce_content_length=enforce_content_length, ) # We are swallowing BrokenPipeError (errno.EPIPE) since the server is # legitimately able to close the connection after sending a valid response. # With this behaviour, the received response is still readable. except BrokenPipeError: pass except OSError as e: # MacOS/Linux # EPROTOTYPE and ECONNRESET are needed on macOS # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: raise # Reset the timeout for the recv() on the socket read_timeout = timeout_obj.read_timeout if not conn.is_closed: # In Python 3 socket.py will catch EAGAIN and return None when you # try and read into the file pointer created by http.client, which # instead raises a BadStatusLine exception. Instead of catching # the exception and assuming all BadStatusLine exceptions are read # timeouts, check for a zero timeout before making the request. if read_timeout == 0: raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={read_timeout})" ) conn.timeout = read_timeout # Receive the response from the server try: > response = conn.getresponse() ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:537: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.10/site-packages/urllib3/connection.py:466: in getresponse httplib_response = super().getresponse() /opt/pyenv/versions/3.10.6/lib/python3.10/http/client.py:1374: in getresponse response.begin() /opt/pyenv/versions/3.10.6/lib/python3.10/http/client.py:318: in begin version, status, reason = self._read_status() /opt/pyenv/versions/3.10.6/lib/python3.10/http/client.py:279: in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = b = def readinto(self, b): """Read up to len(b) bytes into the writable buffer *b* and return the number of bytes read. If the socket is non-blocking and no bytes are available, None is returned. If *b* is non-empty, a 0 return value indicates that the connection was shutdown at the other end. """ self._checkClosed() self._checkReadable() if self._timeout_occurred: raise OSError("cannot read from timed out object") while True: try: > return self._sock.recv_into(b) E TimeoutError: timed out /opt/pyenv/versions/3.10.6/lib/python3.10/socket.py:705: TimeoutError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../.tox/tests121/lib/python3.10/site-packages/requests/adapters.py:486: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:847: in urlopen retries = retries.increment( ../.tox/tests121/lib/python3.10/site-packages/urllib3/util/retry.py:470: in increment raise reraise(type(error), error, _stacktrace) ../.tox/tests121/lib/python3.10/site-packages/urllib3/util/util.py:39: in reraise raise value ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:793: in urlopen response = self._make_request( ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:539: in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TimeoutError('timed out') url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01' timeout_value = 10 def _raise_timeout( self, err: BaseSSLError | OSError | SocketTimeout, url: str, timeout_value: _TYPE_TIMEOUT | None, ) -> None: """Is the error actually a timeout? Will raise a ReadTimeout or pass""" if isinstance(err, SocketTimeout): > raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={timeout_value})" ) from err E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8182): Read timed out. (read timeout=10) ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:370: ReadTimeoutError During handling of the above exception, another exception occurred: self = def test_01_rdm_device_connection(self): > response = test_utils.mount_device("ROADMA01", ('roadma', self.NODE_VERSION)) transportpce_tests/1.2.1/test01_portmapping.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:337: in mount_device response = put_request(url[RESTCONF_VERSION].format('{}', node), body) transportpce_tests/common/test_utils.py:123: in put_request return requests.request( ../.tox/tests121/lib/python3.10/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.10/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.10/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) raise ConnectionError(e, request=request) except ClosedPoolError as e: raise ConnectionError(e, request=request) except _ProxyError as e: raise ProxyError(e) except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): > raise ReadTimeout(e, request=request) E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8182): Read timed out. (read timeout=10) ../.tox/tests121/lib/python3.10/site-packages/requests/adapters.py:532: ReadTimeout ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF TransportPCE build... Searching for pattern 'Transportpce controller started' in karaf.log... Pattern found! OpenDaylight started ! starting simulator xpdra in OpenROADM device version 1.2.1... Searching for pattern 'Data tree change listeners registered' in xpdra-121.log... Pattern found! simulator for xpdra started starting simulator roadma in OpenROADM device version 1.2.1... Searching for pattern 'Data tree change listeners registered' in roadma-121.log... Pattern found! simulator for roadma started ----------------------------- Captured stdout call ----------------------------- execution of test_01_rdm_device_connection _________ TransportPCEPortMappingTesting.test_02_rdm_device_connected __________ self = conn = method = 'GET' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01?content=nonconfig' body = None headers = HTTPHeaderDict({'User-Agent': 'python-requests/2.31.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='}) retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) timeout = Timeout(connect=10, read=10, total=None), chunked = False response_conn = preload_content = False, decode_content = False, enforce_content_length = True def _make_request( self, conn: BaseHTTPConnection, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | None = None, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, chunked: bool = False, response_conn: BaseHTTPConnection | None = None, preload_content: bool = True, decode_content: bool = True, enforce_content_length: bool = True, ) -> BaseHTTPResponse: """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param response_conn: Set this to ``None`` if you will handle releasing the connection or set the connection to have the response release it. :param preload_content: If True, the response's body will be preloaded during construction. :param decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param enforce_content_length: Enforce content length checking. Body returned by server must match value of Content-Length header, if present. Otherwise, raise error. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) try: # Trigger any extra validation we need to do. try: self._validate_conn(conn) except (SocketTimeout, BaseSSLError) as e: self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) raise # _validate_conn() starts the connection to an HTTPS proxy # so we need to wrap errors with 'ProxyError' here too. except ( OSError, NewConnectionError, TimeoutError, BaseSSLError, CertificateError, SSLError, ) as e: new_e: Exception = e if isinstance(e, (BaseSSLError, CertificateError)): new_e = SSLError(e) # If the connection didn't successfully connect to it's proxy # then there if isinstance( new_e, (OSError, NewConnectionError, TimeoutError, SSLError) ) and (conn and conn.proxy and not conn.has_connected_to_proxy): new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) raise new_e # conn.request() calls http.client.*.request, not the method in # urllib3.request. It also calls makefile (recv) on the socket. try: conn.request( method, url, body=body, headers=headers, chunked=chunked, preload_content=preload_content, decode_content=decode_content, enforce_content_length=enforce_content_length, ) # We are swallowing BrokenPipeError (errno.EPIPE) since the server is # legitimately able to close the connection after sending a valid response. # With this behaviour, the received response is still readable. except BrokenPipeError: pass except OSError as e: # MacOS/Linux # EPROTOTYPE and ECONNRESET are needed on macOS # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: raise # Reset the timeout for the recv() on the socket read_timeout = timeout_obj.read_timeout if not conn.is_closed: # In Python 3 socket.py will catch EAGAIN and return None when you # try and read into the file pointer created by http.client, which # instead raises a BadStatusLine exception. Instead of catching # the exception and assuming all BadStatusLine exceptions are read # timeouts, check for a zero timeout before making the request. if read_timeout == 0: raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={read_timeout})" ) conn.timeout = read_timeout # Receive the response from the server try: > response = conn.getresponse() ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:537: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.10/site-packages/urllib3/connection.py:466: in getresponse httplib_response = super().getresponse() /opt/pyenv/versions/3.10.6/lib/python3.10/http/client.py:1374: in getresponse response.begin() /opt/pyenv/versions/3.10.6/lib/python3.10/http/client.py:318: in begin version, status, reason = self._read_status() /opt/pyenv/versions/3.10.6/lib/python3.10/http/client.py:279: in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = b = def readinto(self, b): """Read up to len(b) bytes into the writable buffer *b* and return the number of bytes read. If the socket is non-blocking and no bytes are available, None is returned. If *b* is non-empty, a 0 return value indicates that the connection was shutdown at the other end. """ self._checkClosed() self._checkReadable() if self._timeout_occurred: raise OSError("cannot read from timed out object") while True: try: > return self._sock.recv_into(b) E TimeoutError: timed out /opt/pyenv/versions/3.10.6/lib/python3.10/socket.py:705: TimeoutError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../.tox/tests121/lib/python3.10/site-packages/requests/adapters.py:486: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:847: in urlopen retries = retries.increment( ../.tox/tests121/lib/python3.10/site-packages/urllib3/util/retry.py:470: in increment raise reraise(type(error), error, _stacktrace) ../.tox/tests121/lib/python3.10/site-packages/urllib3/util/util.py:39: in reraise raise value ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:793: in urlopen response = self._make_request( ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:539: in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TimeoutError('timed out') url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01?content=nonconfig' timeout_value = 10 def _raise_timeout( self, err: BaseSSLError | OSError | SocketTimeout, url: str, timeout_value: _TYPE_TIMEOUT | None, ) -> None: """Is the error actually a timeout? Will raise a ReadTimeout or pass""" if isinstance(err, SocketTimeout): > raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={timeout_value})" ) from err E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8182): Read timed out. (read timeout=10) ../.tox/tests121/lib/python3.10/site-packages/urllib3/connectionpool.py:370: ReadTimeoutError During handling of the above exception, another exception occurred: self = def test_02_rdm_device_connected(self): > response = test_utils.check_device_connection("ROADMA01") transportpce_tests/1.2.1/test01_portmapping.py:53: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:362: in check_device_connection response = get_request(url[RESTCONF_VERSION].format('{}', node)) transportpce_tests/common/test_utils.py:115: in get_request return requests.request( ../.tox/tests121/lib/python3.10/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.10/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.10/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) raise ConnectionError(e, request=request) except ClosedPoolError as e: raise ConnectionError(e, request=request) except _ProxyError as e: raise ProxyError(e) except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): > raise ReadTimeout(e, request=request) E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8182): Read timed out. (read timeout=10) ../.tox/tests121/lib/python3.10/site-packages/requests/adapters.py:532: ReadTimeout ----------------------------- Captured stdout call ----------------------------- execution of test_02_rdm_device_connected _________ TransportPCEPortMappingTesting.test_03_rdm_portmapping_info __________ self = def test_03_rdm_portmapping_info(self): response = test_utils.get_portmapping_node_attr("ROADMA01", "node-info", None) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/1.2.1/test01_portmapping.py:60: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_03_rdm_portmapping_info _____ TransportPCEPortMappingTesting.test_04_rdm_portmapping_DEG1_TTP_TXRX _____ self = def test_04_rdm_portmapping_DEG1_TTP_TXRX(self): response = test_utils.get_portmapping_node_attr("ROADMA01", "mapping", "DEG1-TTP-TXRX") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/1.2.1/test01_portmapping.py:73: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_04_rdm_portmapping_DEG1_TTP_TXRX _____ TransportPCEPortMappingTesting.test_05_rdm_portmapping_SRG1_PP7_TXRX _____ self = def test_05_rdm_portmapping_SRG1_PP7_TXRX(self): response = test_utils.get_portmapping_node_attr("ROADMA01", "mapping", "SRG1-PP7-TXRX") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/1.2.1/test01_portmapping.py:82: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_05_rdm_portmapping_SRG1_PP7_TXRX _____ TransportPCEPortMappingTesting.test_06_rdm_portmapping_SRG3_PP1_TXRX _____ self = def test_06_rdm_portmapping_SRG3_PP1_TXRX(self): response = test_utils.get_portmapping_node_attr("ROADMA01", "mapping", "SRG3-PP1-TXRX") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/1.2.1/test01_portmapping.py:91: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_06_rdm_portmapping_SRG3_PP1_TXRX =========================== short test summary info ============================ FAILED transportpce_tests/1.2.1/test01_portmapping.py::TransportPCEPortMappingTesting::test_01_rdm_device_connection FAILED transportpce_tests/1.2.1/test01_portmapping.py::TransportPCEPortMappingTesting::test_02_rdm_device_connected FAILED transportpce_tests/1.2.1/test01_portmapping.py::TransportPCEPortMappingTesting::test_03_rdm_portmapping_info FAILED transportpce_tests/1.2.1/test01_portmapping.py::TransportPCEPortMappingTesting::test_04_rdm_portmapping_DEG1_TTP_TXRX FAILED transportpce_tests/1.2.1/test01_portmapping.py::TransportPCEPortMappingTesting::test_05_rdm_portmapping_SRG1_PP7_TXRX FAILED transportpce_tests/1.2.1/test01_portmapping.py::TransportPCEPortMappingTesting::test_06_rdm_portmapping_SRG3_PP1_TXRX 6 failed, 15 passed in 122.68s (0:02:02) tests121: exit 1 (123.02 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 1.2.1 pid=52345 ................ [100%] =================================== FAILURES =================================== _________ TransportPCEtesting.test_09_add_omsAttributes_ROADMA_ROADMC __________ self = def test_09_add_omsAttributes_ROADMA_ROADMC(self): # Config ROADMA-ROADMC oms-attributes data = {"span": { "auto-spanloss": "true", "spanloss-base": 11.4, "spanloss-current": 12, "engineered-spanloss": 12.2, "link-concatenation": [{ "SRLG-Id": 0, "fiber-type": "smf", "SRLG-length": 100000, "pmd": 0.5}]}} response = test_utils.add_oms_attr_request( "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data) > self.assertEqual(response.status_code, requests.codes.created) E AssertionError: 204 != 201 transportpce_tests/tapi/test02_full_topology.py:245: AssertionError _________ TransportPCEtesting.test_10_add_omsAttributes_ROADMC_ROADMA __________ self = def test_10_add_omsAttributes_ROADMC_ROADMA(self): # Config ROADMC-ROADMA oms-attributes data = {"span": { "auto-spanloss": "true", "spanloss-base": 11.4, "spanloss-current": 12, "engineered-spanloss": 12.2, "link-concatenation": [{ "SRLG-Id": 0, "fiber-type": "smf", "SRLG-length": 100000, "pmd": 0.5}]}} response = test_utils.add_oms_attr_request( "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data) > self.assertEqual(response.status_code, requests.codes.created) E AssertionError: 204 != 201 transportpce_tests/tapi/test02_full_topology.py:261: AssertionError =========================== short test summary info ============================ FAILED transportpce_tests/tapi/test02_full_topology.py::TransportPCEtesting::test_09_add_omsAttributes_ROADMA_ROADMC FAILED transportpce_tests/tapi/test02_full_topology.py::TransportPCEtesting::test_10_add_omsAttributes_ROADMC_ROADMA 2 failed, 28 passed in 329.66s (0:05:29) tests121: FAIL ✖ in 2 minutes 13.87 seconds tests_tapi: exit 1 (565.96 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi pid=47191 tests_tapi: FAIL ✖ in 9 minutes 34.77 seconds tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests71: freeze> python -m pip freeze --all tests71: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_honeynode.sh 7.1 Installing honeynode for 7.1 devices to ./honeynode/7.1/honeynode-simulator directory tests71: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 using environment variables from ./karaf71.env pytest -q transportpce_tests/7.1/test01_portmapping.py FFFFFFFFFF.. [100%] =================================== FAILURES =================================== ______ TransportPCE400GPortMappingTesting.test_01_xpdr_device_connection _______ self = def test_01_xpdr_device_connection(self): response = test_utils.mount_device("XPDR-A2", ('xpdra2', self.NODE_VERSION)) > self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201) E AssertionError: 401 != 201 : Http status code should be 201 transportpce_tests/7.1/test01_portmapping.py:50: AssertionError ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF TransportPCE build... Searching for pattern 'Transportpce controller started' in karaf.log... Pattern found! OpenDaylight started ! starting simulator xpdra2 in OpenROADM device version 7.1... Searching for pattern 'Netconf SSH endpoint started successfully at 0.0.0.0' in xpdra2-71.log... Pattern found! simulator for xpdra2 started ----------------------------- Captured stdout call ----------------------------- execution of test_01_xpdr_device_connection Searching for pattern 'Triggering notification stream NETCONF for node XPDR-A2' in karaf.log... Pattern not found after 180 seconds! Node XPDR-A2 still not added to tpce topology... _______ TransportPCE400GPortMappingTesting.test_02_xpdr_device_connected _______ self = def test_02_xpdr_device_connected(self): response = test_utils.check_device_connection("XPDR-A2") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:56: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_02_xpdr_device_connected _______ TransportPCE400GPortMappingTesting.test_03_xpdr_portmapping_info _______ self = def test_03_xpdr_portmapping_info(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "node-info", None) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:62: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_03_xpdr_portmapping_info _____ TransportPCE400GPortMappingTesting.test_04_tpdr_portmapping_NETWORK1 _____ self = def test_04_tpdr_portmapping_NETWORK1(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR1-NETWORK1") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:75: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_04_tpdr_portmapping_NETWORK1 _____ TransportPCE400GPortMappingTesting.test_05_tpdr_portmapping_CLIENT1 ______ self = def test_05_tpdr_portmapping_CLIENT1(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR1-CLIENT1") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:94: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_05_tpdr_portmapping_CLIENT1 _____ TransportPCE400GPortMappingTesting.test_06_mpdr_portmapping_NETWORK1 _____ self = def test_06_mpdr_portmapping_NETWORK1(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR2-NETWORK1") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:114: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_06_mpdr_portmapping_NETWORK1 _____ TransportPCE400GPortMappingTesting.test_07_mpdr_portmapping_CLIENT1 ______ self = def test_07_mpdr_portmapping_CLIENT1(self): res = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR2-CLIENT1") > self.assertEqual(res['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:132: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_07_mpdr_portmapping_CLIENT1 ________ TransportPCE400GPortMappingTesting.test_08_check_mccapprofile _________ self = def test_08_check_mccapprofile(self): res = test_utils.get_portmapping_node_attr("XPDR-A2", "mc-capabilities", "XPDR-mcprofile") > self.assertEqual(res['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:152: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_08_check_mccapprofile ________ TransportPCE400GPortMappingTesting.test_09_mpdr_switching_pool ________ self = def test_09_mpdr_switching_pool(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "switching-pool-lcp", "1") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test01_portmapping.py:159: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_09_mpdr_switching_pool _____ TransportPCE400GPortMappingTesting.test_10_xpdr_device_disconnection _____ self = def test_10_xpdr_device_disconnection(self): response = test_utils.unmount_device("XPDR-A2") > self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) E AssertionError: 409 not found in (200, 204) transportpce_tests/7.1/test01_portmapping.py:172: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_10_xpdr_device_disconnection Searching for pattern 'onDeviceDisConnected:\ XPDR\-A2' in karaf.log... Pattern not found after 180 seconds! Node XPDR-A2 still not deleted from tpce topology... =========================== short test summary info ============================ FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_01_xpdr_device_connection FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_02_xpdr_device_connected FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_03_xpdr_portmapping_info FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_04_tpdr_portmapping_NETWORK1 FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_05_tpdr_portmapping_CLIENT1 FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_06_mpdr_portmapping_NETWORK1 FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_07_mpdr_portmapping_CLIENT1 FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_08_check_mccapprofile FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_09_mpdr_switching_pool FAILED transportpce_tests/7.1/test01_portmapping.py::TransportPCE400GPortMappingTesting::test_10_xpdr_device_disconnection 10 failed, 2 passed in 419.05s (0:06:59) tests71: exit 1 (419.32 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 pid=53907 tests71: FAIL ✖ in 7 minutes 7.88 seconds tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests221: freeze> python -m pip freeze --all tests221: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 using environment variables from ./karaf221.env pytest -q transportpce_tests/2.2.1/test01_portmapping.py ................................... [100%] 35 passed in 76.80s (0:01:16) pytest -q transportpce_tests/2.2.1/test02_topo_portmapping.py ...... [100%] 6 passed in 46.46s pytest -q transportpce_tests/2.2.1/test03_topology.py .F.F..F....F.FFF.FF......F.F.....F.F...F.F.F [100%] =================================== FAILURES =================================== __________________ TransportPCEtesting.test_02_getClliNetwork __________________ self = def test_02_getClliNetwork(self): response = test_utils.get_ietf_network_request('clli-network', 'config') self.assertEqual(response['status_code'], requests.codes.ok) logging.info(response) > self.assertEqual(response['network'][0]['node'][0]['node-id'], 'NodeA') E AssertionError: 'NodeSC' != 'NodeA' E - NodeSC E ? ^^ E + NodeA E ? ^ transportpce_tests/2.2.1/test03_topology.py:124: AssertionError ____________ TransportPCEtesting.test_04_getLinks_OpenroadmTopology ____________ self = def test_04_getLinks_OpenroadmTopology(self): # pylint: disable=redundant-unittest-assert response = test_utils.get_ietf_network_request('openroadm-topology', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['ietf-network-topology:link']), 10) E AssertionError: 16 != 10 transportpce_tests/2.2.1/test03_topology.py:140: AssertionError __________________ TransportPCEtesting.test_07_getClliNetwork __________________ self = def test_07_getClliNetwork(self): response = test_utils.get_ietf_network_request('clli-network', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(response['network'][0]['node'][0]['node-id'], 'NodeA') E AssertionError: 'NodeSC' != 'NodeA' E - NodeSC E ? ^^ E + NodeA E ? ^ transportpce_tests/2.2.1/test03_topology.py:190: AssertionError ____________ TransportPCEtesting.test_12_getLinks_OpenRoadmTopology ____________ self = def test_12_getLinks_OpenRoadmTopology(self): # pylint: disable=redundant-unittest-assert response = test_utils.get_ietf_network_request('openroadm-topology', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['ietf-network-topology:link']), 12) E AssertionError: 18 != 12 transportpce_tests/2.2.1/test03_topology.py:277: AssertionError ___________ TransportPCEtesting.test_14_omsAttributes_ROADMA_ROADMC ____________ self = def test_14_omsAttributes_ROADMA_ROADMC(self): # Config ROADMA-ROADMC oms-attributes data = {"span": { "auto-spanloss": "true", "engineered-spanloss": 12.2, "link-concatenation": [{ "SRLG-Id": 0, "fiber-type": "smf", "SRLG-length": 100000, "pmd": 0.5}]}} response = test_utils.add_oms_attr_request( "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data) > self.assertEqual(response.status_code, requests.codes.created) E AssertionError: 204 != 201 transportpce_tests/2.2.1/test03_topology.py:317: AssertionError ___________ TransportPCEtesting.test_15_omsAttributes_ROADMC_ROADMA ____________ self = def test_15_omsAttributes_ROADMC_ROADMA(self): # Config ROADM-C1-ROADM-A1 oms-attributes data = {"span": { "auto-spanloss": "true", "engineered-spanloss": 12.2, "link-concatenation": [{ "SRLG-Id": 0, "fiber-type": "smf", "SRLG-length": 100000, "pmd": 0.5}]}} response = test_utils.add_oms_attr_request( "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data) > self.assertEqual(response.status_code, requests.codes.created) E AssertionError: 204 != 201 transportpce_tests/2.2.1/test03_topology.py:332: AssertionError __________________ TransportPCEtesting.test_16_getClliNetwork __________________ self = def test_16_getClliNetwork(self): # pylint: disable=redundant-unittest-assert response = test_utils.get_ietf_network_request('clli-network', 'config') self.assertEqual(response['status_code'], requests.codes.ok) listNode = ['NodeA', 'NodeC'] for node in response['network'][0]['node']: nodeId = node['node-id'] > self.assertIn(nodeId, listNode) E AssertionError: 'NodeSC' not found in ['NodeA', 'NodeC'] transportpce_tests/2.2.1/test03_topology.py:341: AssertionError __________ TransportPCEtesting.test_18_getROADMLinkOpenRoadmTopology ___________ self = def test_18_getROADMLinkOpenRoadmTopology(self): # pylint: disable=redundant-unittest-assert response = test_utils.get_ietf_network_request('openroadm-topology', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['ietf-network-topology:link']), 20) E AssertionError: 24 != 20 transportpce_tests/2.2.1/test03_topology.py:374: AssertionError ______ TransportPCEtesting.test_19_getLinkOmsAttributesOpenRoadmTopology _______ self = def test_19_getLinkOmsAttributesOpenRoadmTopology(self): response = test_utils.get_ietf_network_request('openroadm-topology', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['ietf-network-topology:link']), 20) E AssertionError: 24 != 20 transportpce_tests/2.2.1/test03_topology.py:409: AssertionError __________________ TransportPCEtesting.test_26_getClliNetwork __________________ self = def test_26_getClliNetwork(self): # pylint: disable=redundant-unittest-assert response = test_utils.get_ietf_network_request('clli-network', 'config') self.assertEqual(response['status_code'], requests.codes.ok) listNode = ['NodeA', 'NodeB', 'NodeC'] for node in response['network'][0]['node']: nodeId = node['node-id'] > self.assertIn(nodeId, listNode) E AssertionError: 'NodeSC' not found in ['NodeA', 'NodeB', 'NodeC'] transportpce_tests/2.2.1/test03_topology.py:550: AssertionError ____________ TransportPCEtesting.test_28_verifyOppositeLinkTopology ____________ self = def test_28_verifyOppositeLinkTopology(self): response = test_utils.get_ietf_network_request('openroadm-topology', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['ietf-network-topology:link']), 30) E AssertionError: 34 != 30 transportpce_tests/2.2.1/test03_topology.py:575: AssertionError __________________ TransportPCEtesting.test_34_getClliNetwork __________________ self = def test_34_getClliNetwork(self): response = test_utils.get_ietf_network_request('clli-network', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['node']), 1) E AssertionError: 3 != 1 transportpce_tests/2.2.1/test03_topology.py:689: AssertionError __________________ TransportPCEtesting.test_36_getClliNetwork __________________ self = def test_36_getClliNetwork(self): response = test_utils.get_ietf_network_request('clli-network', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['node']), 1) E AssertionError: 3 != 1 transportpce_tests/2.2.1/test03_topology.py:699: AssertionError ____________ TransportPCEtesting.test_40_getLinks_OpenRoadmTopology ____________ self = def test_40_getLinks_OpenRoadmTopology(self): response = test_utils.get_ietf_network_request('openroadm-topology', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertEqual(len(response['network'][0]['ietf-network-topology:link']), 16) E AssertionError: 20 != 16 transportpce_tests/2.2.1/test03_topology.py:745: AssertionError __________________ TransportPCEtesting.test_42_getClliNetwork __________________ self = def test_42_getClliNetwork(self): response = test_utils.get_ietf_network_request('clli-network', 'config') self.assertEqual(response['status_code'], requests.codes.ok) > self.assertNotIn('node', response['network'][0]) E AssertionError: 'node' unexpectedly found in {'network-id': 'clli-network', 'network-types': {'org-openroadm-clli-network:clli-network': {}}, 'node': [{'node-id': 'NodeSC', 'org-openroadm-clli-network:clli': 'NodeSC'}, {'node-id': 'NodeSA', 'org-openroadm-clli-network:clli': 'NodeSA'}]} transportpce_tests/2.2.1/test03_topology.py:784: AssertionError ________ TransportPCEtesting.test_44_check_roadm2roadm_link_persistence ________ self = def test_44_check_roadm2roadm_link_persistence(self): response = test_utils.get_ietf_network_request('openroadm-topology', 'config') self.assertEqual(response['status_code'], requests.codes.ok) self.assertNotIn('node', response['network'][0]) > self.assertEqual(len(response['network'][0]['ietf-network-topology:link']), 6) E AssertionError: 10 != 6 transportpce_tests/2.2.1/test03_topology.py:795: AssertionError --------------------------- Captured stdout teardown --------------------------- all processes killed =========================== short test summary info ============================ FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_02_getClliNetwork FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_04_getLinks_OpenroadmTopology FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_07_getClliNetwork FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_12_getLinks_OpenRoadmTopology FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_14_omsAttributes_ROADMA_ROADMC FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_15_omsAttributes_ROADMC_ROADMA FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_16_getClliNetwork FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_18_getROADMLinkOpenRoadmTopology FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_19_getLinkOmsAttributesOpenRoadmTopology FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_26_getClliNetwork FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_28_verifyOppositeLinkTopology FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_34_getClliNetwork FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_36_getClliNetwork FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_40_getLinks_OpenRoadmTopology FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_42_getClliNetwork FAILED transportpce_tests/2.2.1/test03_topology.py::TransportPCEtesting::test_44_check_roadm2roadm_link_persistence 16 failed, 28 passed in 135.37s (0:02:15) tests221: exit 1 (259.38 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 pid=54749 tests221: FAIL ✖ in 4 minutes 26.69 seconds tests_hybrid: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests_hybrid: freeze> python -m pip freeze --all tests_hybrid: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_honeynode.sh Installing honeynode for 1.2.1 devices to ./honeynode/1.2.1/honeynode-simulator directory Installing honeynode for 2.2.1 devices to ./honeynode/2.2.1/honeynode-simulator directory Removing ./honeynode/7.1/honeynode-simulator directory Installing honeynode for 7.1 devices to ./honeynode/7.1/honeynode-simulator directory tests_hybrid: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid using environment variables from ./karaf121.env pytest -q transportpce_tests/hybrid/test01_device_change_notifications.py ................................................... [100%] 51 passed in 191.17s (0:03:11) pytest -q transportpce_tests/hybrid/test02_B100G_end2end.py ........FF.............................................................. [ 66%] ..................................... [100%] =================================== FAILURES =================================== _________ TransportPCEtesting.test_009_add_omsAttributes_roadma_roadmc _________ self = def test_009_add_omsAttributes_roadma_roadmc(self): # Config ROADMA-ROADMC oms-attributes data = {"span": { "auto-spanloss": "true", "spanloss-base": 11.4, "spanloss-current": 12, "engineered-spanloss": 12.2, "link-concatenation": [{ "SRLG-Id": 0, "fiber-type": "smf", "SRLG-length": 100000, "pmd": 0.5}]}} response = test_utils.add_oms_attr_request( "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data) > self.assertEqual(response.status_code, requests.codes.created) E AssertionError: 204 != 201 transportpce_tests/hybrid/test02_B100G_end2end.py:224: AssertionError _________ TransportPCEtesting.test_010_add_omsAttributes_roadmc_roadma _________ self = def test_010_add_omsAttributes_roadmc_roadma(self): # Config ROADMC-ROADMA oms-attributes data = {"span": { "auto-spanloss": "true", "spanloss-base": 11.4, "spanloss-current": 12, "engineered-spanloss": 12.2, "link-concatenation": [{ "SRLG-Id": 0, "fiber-type": "smf", "SRLG-length": 100000, "pmd": 0.5}]}} response = test_utils.add_oms_attr_request( "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data) > self.assertEqual(response.status_code, requests.codes.created) E AssertionError: 204 != 201 transportpce_tests/hybrid/test02_B100G_end2end.py:240: AssertionError =========================== short test summary info ============================ FAILED transportpce_tests/hybrid/test02_B100G_end2end.py::TransportPCEtesting::test_009_add_omsAttributes_roadma_roadmc FAILED transportpce_tests/hybrid/test02_B100G_end2end.py::TransportPCEtesting::test_010_add_omsAttributes_roadmc_roadma 2 failed, 107 passed in 467.01s (0:07:47) tests_hybrid: exit 1 (658.75 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid pid=57199 tests_hybrid: FAIL ✖ in 11 minutes 10.61 seconds buildlighty: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt buildlighty: freeze> python -m pip freeze --all buildlighty: bcrypt==4.1.2,certifi==2024.2.2,cffi==1.16.0,charset-normalizer==3.3.2,cryptography==42.0.2,dict2xml==1.7.4,exceptiongroup==1.2.0,idna==3.6,iniconfig==2.0.0,lxml==5.1.0,netconf-client==3.0.0,packaging==23.2,paramiko==3.4.0,pip==23.3.1,pluggy==1.4.0,psutil==5.9.8,pycparser==2.21,PyNaCl==1.5.0,pytest==8.0.0,requests==2.31.0,setuptools==69.0.2,tomli==2.0.1,urllib3==2.2.0,wheel==0.42.0 buildlighty: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh buildcontroller: OK (156.56=setup[8.61]+cmd[147.95] seconds) testsPCE: OK (371.82=setup[107.82]+cmd[264.00] seconds) sims121: OK (21.56=setup[18.78]+cmd[2.78] seconds) build_karaf_tests121: OK (64.89=setup[18.78]+cmd[46.11] seconds) tests121: FAIL code 1 (133.87=setup[10.84]+cmd[123.02] seconds) sims221: OK (21.63=setup[18.69]+cmd[2.93] seconds) build_karaf_tests221: OK (55.88=setup[10.21]+cmd[45.67] seconds) tests_tapi: FAIL code 1 (574.77=setup[8.81]+cmd[565.96] seconds) tests221: FAIL code 1 (266.69=setup[7.31]+cmd[259.38] seconds) sims71: OK (12.64=setup[10.20]+cmd[2.44] seconds) build_karaf_tests71: OK (80.90=setup[14.70]+cmd[66.21] seconds) tests71: FAIL code 1 (427.88=setup[7.39]+cmd[1.17,419.32] seconds) build_karaf_tests_hybrid: OK (84.25=setup[18.78]+cmd[65.46] seconds) tests_hybrid: FAIL code 1 (670.61=setup[7.21]+cmd[4.66,658.75] seconds) buildlighty: OK (53.04=setup[7.59]+cmd[45.45] seconds) docs: OK (28.68=setup[26.75]+cmd[1.92] seconds) docs-linkcheck: OK (29.93=setup[26.75]+cmd[3.18] seconds) checkbashisms: OK (46.29=setup[2.63]+cmd[42.97,0.69] seconds) pre-commit: OK (32.96=setup[3.43]+cmd[21.86,7.67] seconds) pylint: OK (31.35=setup[5.15]+cmd[26.21] seconds) evaluation failed :( (2227.19 seconds)