docs-linkcheck: install_deps> python -I -m pip install -r docs/requirements.txt checkbashisms: freeze> python -m pip freeze --all 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: install_deps> python -I -m pip install -r docs/requirements.txt checkbashisms: pip==24.2,setuptools==75.2.0,wheel==0.44.0 checkbashisms: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh checkbashisms: commands[1] /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)' checkbashisms: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> find . -not -path '*/\.*' -name '*.sh' -exec checkbashisms -f '{}' + checkbashisms: OK ✔ in 3.07 seconds pre-commit: install_deps> python -I -m pip install pre-commit pre-commit: freeze> python -m pip freeze --all pre-commit: cfgv==3.4.0,distlib==0.3.9,filelock==3.16.1,identify==2.6.1,nodeenv==1.9.1,pip==24.2,platformdirs==4.3.6,pre_commit==4.0.1,PyYAML==6.0.2,setuptools==75.2.0,virtualenv==20.27.0,wheel==0.44.0 pre-commit: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh pre-commit: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sh -c 'which cpan || sudo yum install -y perl-CPAN || (echo "cpan command not found - please install it (e.g. sudo apt-get install perl-modules | yum install perl-CPAN )" >&2 && exit 1)' /usr/bin/cpan pre-commit: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run --all-files --show-diff-on-failure [WARNING] hook id `remove-tabs` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. [WARNING] hook id `perltidy` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. [WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this. if it does not -- consider reporting an issue to that repo. [INFO] Initializing environment for https://github.com/jorisroovers/gitlint. [INFO] Initializing environment for https://github.com/jorisroovers/gitlint:./gitlint-core[trusted-deps]. buildcontroller: freeze> python -m pip freeze --all [INFO] Initializing environment for https://github.com/Lucas-C/pre-commit-hooks. buildcontroller: bcrypt==4.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 buildcontroller: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_controller.sh java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64 java-1.12.0-openjdk-amd64 1211 /usr/lib/jvm/java-1.12.0-openjdk-amd64 java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64 java-1.21.0-openjdk-amd64 2111 /usr/lib/jvm/java-1.21.0-openjdk-amd64 java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64 [INFO] Initializing environment for https://github.com/pre-commit/mirrors-autopep8. [INFO] Initializing environment for https://github.com/perltidy/perltidy. 21 21 ok, java is 21 or newer [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... Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256) Maven home: /opt/maven Java version: 21.0.4, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64 Default locale: en, platform encoding: UTF-8 OS name: "linux", version: "5.4.0-190-generic", arch: "amd64", family: "unix" [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... [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... [INFO] Installing environment for https://github.com/perltidy/perltidy. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... docs: freeze> python -m pip freeze --all docs-linkcheck: freeze> python -m pip freeze --all docs: alabaster==1.0.0,attrs==24.2.0,babel==2.16.0,blockdiag==3.0.0,certifi==2024.8.30,charset-normalizer==3.4.0,contourpy==1.3.0,cycler==0.12.1,docutils==0.21.2,fonttools==4.54.1,funcparserlib==2.0.0a0,future==1.0.0,idna==3.10,imagesize==1.4.1,Jinja2==3.1.4,jsonschema==3.2.0,kiwisolver==1.4.7,lfdocs-conf==0.9.0,MarkupSafe==3.0.1,matplotlib==3.9.2,numpy==2.1.2,nwdiag==3.0.0,packaging==24.1,pillow==11.0.0,pip==24.2,Pygments==2.18.0,pyparsing==3.2.0,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.2,requests==2.32.3,requests-file==1.5.1,seqdiag==3.0.0,setuptools==75.2.0,six==1.16.0,snowballstemmer==2.2.0,Sphinx==8.1.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-rtd-theme==3.0.1,sphinx-tabs==3.4.7,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.30,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.2.3,webcolors==24.8.0,wheel==0.44.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==1.0.0,attrs==24.2.0,babel==2.16.0,blockdiag==3.0.0,certifi==2024.8.30,charset-normalizer==3.4.0,contourpy==1.3.0,cycler==0.12.1,docutils==0.21.2,fonttools==4.54.1,funcparserlib==2.0.0a0,future==1.0.0,idna==3.10,imagesize==1.4.1,Jinja2==3.1.4,jsonschema==3.2.0,kiwisolver==1.4.7,lfdocs-conf==0.9.0,MarkupSafe==3.0.1,matplotlib==3.9.2,numpy==2.1.2,nwdiag==3.0.0,packaging==24.1,pillow==11.0.0,pip==24.2,Pygments==2.18.0,pyparsing==3.2.0,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.2,requests==2.32.3,requests-file==1.5.1,seqdiag==3.0.0,setuptools==75.2.0,six==1.16.0,snowballstemmer==2.2.0,Sphinx==8.1.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-rtd-theme==3.0.1,sphinx-tabs==3.4.7,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.30,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.2.3,webcolors==24.8.0,wheel==0.44.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 docs: OK ✔ in 35.33 seconds pylint: install_deps> python -I -m pip install 'pylint>=2.6.0' trim trailing whitespace.................................................Passed Tabs remover.............................................................Passed autopep8.................................................................docs-linkcheck: OK ✔ in 36.25 seconds pylint: freeze> python -m pip freeze --all pylint: astroid==3.3.5,dill==0.3.9,isort==5.13.2,mccabe==0.7.0,pip==24.2,platformdirs==4.3.6,pylint==3.3.1,setuptools==75.2.0,tomlkit==0.13.2,wheel==0.44.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}$' '{}' + Passed perltidy.................................................................Passed pre-commit: commands[3] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run gitlint-ci --hook-stage manual [WARNING] hook id `remove-tabs` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. [WARNING] hook id `perltidy` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. [INFO] Installing environment for https://github.com/jorisroovers/gitlint. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... gitlint..................................................................Passed ************* Module 1.2.1.test03_topology transportpce_tests/1.2.1/test03_topology.py:430:4: R0912: Too many branches (13/12) (too-many-branches) ************* Module tapi.test03_tapi_device_change_notifications transportpce_tests/tapi/test03_tapi_device_change_notifications.py:14:0: C0302: Too many lines in module (1003/1000) (too-many-lines) ************* Module 2.2.1.test04_otn_topology transportpce_tests/2.2.1/test04_otn_topology.py:120:4: R0912: Too many branches (13/12) (too-many-branches) ------------------------------------ Your code has been rated at 10.00/10 pre-commit: OK ✔ in 46.8 seconds pylint: exit 1 (22.63 seconds) /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}$' '{}' + pid=30046 pylint: FAIL ✖ in 28.61 seconds buildcontroller: OK ✔ in 1 minute 48.06 seconds 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 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 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 sims: 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: freeze> python -m pip freeze --all build_karaf_tests221: freeze> python -m pip freeze --all sims: freeze> python -m pip freeze --all build_karaf_tests121: bcrypt==4.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 build_karaf_tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh build_karaf_tests221: bcrypt==4.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 build_karaf_tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh sims: bcrypt==4.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 sims: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_lightynode.sh Using lighynode version 20.1.0.2 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory sims: OK ✔ in 10.96 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.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 build_karaf_tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh build_karaf_tests221: OK ✔ in 53.83 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_tests121: OK ✔ in 55.27 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.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.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.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.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 build_karaf_tests71: OK ✔ in 52.82 seconds testsPCE: freeze> python -m pip freeze --all testsPCE: bcrypt==4.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,click==8.1.7,contourpy==1.3.0,cryptography==3.3.2,cycler==0.12.1,dict2xml==1.7.6,Flask==2.1.3,Flask-Injector==0.14.0,fonttools==4.54.1,gnpy4tpce==2.4.7,idna==3.10,iniconfig==2.0.0,injector==0.22.0,itsdangerous==2.2.0,Jinja2==3.1.4,kiwisolver==1.4.7,lxml==5.3.0,MarkupSafe==3.0.1,matplotlib==3.9.2,netconf-client==3.1.1,networkx==2.8.8,numpy==1.26.4,packaging==24.1,pandas==1.5.3,paramiko==3.5.0,pbr==5.11.1,pillow==11.0.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pyparsing==3.2.0,pytest==8.3.3,python-dateutil==2.9.0.post0,pytz==2024.2,requests==2.32.3,scipy==1.14.1,setuptools==50.3.2,six==1.16.0,urllib3==2.2.3,Werkzeug==2.0.3,wheel==0.44.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.38s (0:02:06) pytest -q transportpce_tests/pce/test02_pce_400G.py .......................... [100%] 9 passed in 43.73s pytest -q transportpce_tests/pce/test03_gnpy.py .............. [100%] 8 passed in 37.88s pytest -q transportpce_tests/pce/test04_pce_bug_fix.py ............ [100%] 50 passed in 238.26s (0:03:58) pytest -q transportpce_tests/tapi/test02_full_topology.py ... [100%] 3 passed in 38.39s build_karaf_tests_hybrid: OK ✔ in 1 minute 2.03 seconds testsPCE: OK ✔ in 5 minutes 16.01 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.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.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 .................................................. [100%] 21 passed in 278.69s (0:04:38) pytest -q transportpce_tests/1.2.1/test02_topo_portmapping.py . [100%] 30 passed in 477.67s (0:07:57) pytest -q transportpce_tests/tapi/test03_tapi_device_change_notifications.py ...... [100%] 6 passed in 223.29s (0:03:43) pytest -q transportpce_tests/1.2.1/test03_topology.py ........................................................................... [100%] 70 passed in 286.41s (0:04:46) tests_tapi: OK ✔ in 16 minutes 50.44 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.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 tests71: commands[0] /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 ................. [100%] 12 passed in 47.25s pytest -q transportpce_tests/7.1/test02_otn_renderer.py ...................................................................... [100%] 62 passed in 158.16s (0:02:38) pytest -q transportpce_tests/7.1/test03_renderer_or_modes.py ................................................ [100%] 48 passed in 140.12s (0:02:20) pytest -q transportpce_tests/7.1/test04_renderer_regen_mode.py ....................................... [100%] 22 passed in 74.74s (0:01:14) .tests71: OK ✔ in 7 minutes 7.21 seconds tests_network: 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: 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 tests_network: freeze> python -m pip freeze --all tests221: bcrypt==4.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.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 tests_network: bcrypt==4.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 tests_network: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh network using environment variables from ./karaf221.env pytest -q transportpce_tests/network/test01_topo_extension.py ... [100%] 44 passed in 682.62s (0:11:22) pytest -q transportpce_tests/1.2.1/test04_renderer_service_path_nominal.py .............................E.....EEEEE.EEEEEEEE.EEEE [100%] ==================================== ERRORS ==================================== _________ ERROR at setup of TransportPCEtesting.test_01_connect_spdrA __________ cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' cls.processes = test_utils.start_tpce() # TAPI feature is not installed by default in Karaf if 'NO_ODL_STARTUP' not in os.environ or 'USE_LIGHTY' not in os.environ or os.environ['USE_LIGHTY'] != 'True': print('installing tapi feature...') result = test_utils.install_karaf_feature('odl-transportpce-tapi') if result.returncode != 0: cls.init_failed = True print('Restarting OpenDaylight...') test_utils.shutdown_process(cls.processes[0]) cls.processes[0] = test_utils.start_karaf() test_utils.process_list[0] = cls.processes[0] cls.init_failed = not test_utils.wait_until_log_contains( test_utils.KARAF_LOG, test_utils.KARAF_OK_START_MSG, time_to_wait=60) if cls.init_failed: print('tapi installation feature failed...') test_utils.shutdown_process(cls.processes[0]) sys.exit(2) > cls.processes = test_utils.start_sims([('spdra', cls.NODE_VERSION), ('roadma', cls.NODE_VERSION), ('roadmc', cls.NODE_VERSION), ('spdrc', cls.NODE_VERSION)]) transportpce_tests/network/test01_topo_extension.py:158: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sims_list = [('spdra', '2.2.1'), ('roadma', '2.2.1'), ('roadmc', '2.2.1'), ('spdrc', '2.2.1')] def start_sims(sims_list): if SIMS_TO_USE == 'None': return None if SIMS_TO_USE == 'honeynode': start_msg = HONEYNODE_OK_START_MSG start_method = start_honeynode else: start_msg = LIGHTYNODE_OK_START_MSG start_method = start_lightynode for sim in sims_list: print('starting simulator ' + sim[0] + ' in OpenROADM device version ' + sim[1] + '...') log_file = os.path.join(SIM_LOG_DIRECTORY, SIMS[sim]['logfile']) process = start_method(log_file, sim) if wait_until_log_contains(log_file, start_msg, 100): print('simulator for ' + sim[0] + ' started') else: print('simulator for ' + sim[0] + ' failed to start') shutdown_process(process) for pid in process_list: shutdown_process(pid) > sys.exit(3) E SystemExit: 3 transportpce_tests/common/test_utils.py:206: SystemExit ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF TransportPCE build... Searching for pattern 'Transportpce controller started' in karaf.log... Pattern found! OpenDaylight started ! installing tapi feature... installing feature odl-transportpce-tapi client: JAVA_HOME not set; results may vary odl-transportpce-tapi │ 10.0.0.SNAPSHOT │ x │ Started │ odl-transportpce-tapi │ OpenDaylight :: transportpce :: tapi Restarting OpenDaylight... starting KARAF TransportPCE build... Searching for pattern 'Transportpce controller started' in karaf.log... Pattern found! starting simulator spdra in OpenROADM device version 2.2.1... Searching for pattern 'Data tree change listeners registered' in spdra-221.log... Pattern not found after 100 seconds! simulator for spdra failed to start ---------------------------- Captured stderr setup ----------------------------- SLF4J(W): No SLF4J providers were found. SLF4J(W): Defaulting to no-operation (NOP) logger implementation SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details. SLF4J(W): Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier. SLF4J(W): Ignoring binding found at [jar:file:/w/workspace/transportpce-tox-verify-transportpce-master/karaf221/target/assembly/system/org/apache/karaf/org.apache.karaf.client/4.4.6/org.apache.karaf.client-4.4.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J(W): See https://www.slf4j.org/codes.html#ignoredBindings for an explanation. _________ ERROR at setup of TransportPCEtesting.test_02_connect_spdrC __________ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF TransportPCE build... Searching for pattern 'Transportpce controller started' in karaf.log... Pattern not found after 100 seconds! OpenDaylight failed to start ! __________ ERROR at setup of TransportPCEtesting.test_03_connect_rdmA __________ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess __________ ERROR at setup of TransportPCEtesting.test_04_connect_rdmC __________ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _ ERROR at setup of TransportPCEtesting.test_05_connect_sprdA_1_N1_to_TAPI_EXT_roadmTA1_PP1 _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _ ERROR at setup of TransportPCEtesting.test_06_connect_TAPI_EXT_roadmTA1_PP1_to_spdrA_1_N1 _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _ ERROR at setup of TransportPCEtesting.test_07_connect_sprdC_1_N1_to_TAPI_EXT_roadmTC1_PP1 _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _ ERROR at setup of TransportPCEtesting.test_08_connect_TAPI_EXT_roadmTC1_PP1_to_spdrC_1_N1 _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _______ ERROR at setup of TransportPCEtesting.test_09_check_otn_topology _______ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess ____ ERROR at setup of TransportPCEtesting.test_10_check_openroadm_topology ____ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _ ERROR at setup of TransportPCEtesting.test_11_connect_RDMA1_to_TAPI_EXT_roadmTA1 _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _ ERROR at setup of TransportPCEtesting.test_12_connect_RDMC1_to_TAPI_EXT_roadmTC1 _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess ___ ERROR at setup of TransportPCEtesting.test_13_getLinks_OpenroadmTopology ___ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess ___ ERROR at setup of TransportPCEtesting.test_14_getNodes_OpenRoadmTopology ___ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess ________ ERROR at setup of TransportPCEtesting.test_15_disconnect_spdrA ________ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess ________ ERROR at setup of TransportPCEtesting.test_16_disconnect_spdrC ________ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _______ ERROR at setup of TransportPCEtesting.test_17_disconnect_roadmA ________ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess _______ ERROR at setup of TransportPCEtesting.test_18_disconnect_roadmC ________ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: > return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:508: in wrapper raise raise_from(err, None) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:506: in wrapper return fun(self) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1780: in _parse_stat_file data = bcat("%s/%s/stat" % (self._procfs_path, self.pid)) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:851: in bcat return cat(fname, fallback=fallback, _open=open_binary) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:839: in cat with _open(fname) as f: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fname = '/proc/44963/stat' def open_binary(fname): > return open(fname, "rb", buffering=FILE_READ_BUFFER_SIZE) E FileNotFoundError: [Errno 2] No such file or directory: '/proc/44963/stat' ../.tox/tests_network/lib/python3.11/site-packages/psutil/_common.py:799: FileNotFoundError During handling of the above exception, another exception occurred: self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: > self._ident = self._get_ident() ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:355: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:396: in _get_ident return (self.pid, self.create_time()) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:778: in create_time self._create_time = self._proc.create_time() ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1717: in wrapper return fun(self, *args, **kwargs) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1953: in create_time ctime = float(self._parse_stat_file()['create_time']) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = () kwargs = {} @functools.wraps(fun) def wrapper(self, *args, **kwargs): try: return fun(self, *args, **kwargs) except PermissionError: raise AccessDenied(self.pid, self._name) except ProcessLookupError: self._raise_if_zombie() raise NoSuchProcess(self.pid, self._name) except FileNotFoundError: self._raise_if_zombie() if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)): > raise NoSuchProcess(self.pid, self._name) E psutil.NoSuchProcess: process no longer exists (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/_pslinux.py:1726: NoSuchProcess During handling of the above exception, another exception occurred: cls = @classmethod def setUpClass(cls): # pylint: disable=unsubscriptable-object cls.init_failed = False os.environ['JAVA_MIN_MEM'] = '1024M' os.environ['JAVA_MAX_MEM'] = '4096M' > cls.processes = test_utils.start_tpce() transportpce_tests/network/test01_topo_extension.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:228: in start_tpce shutdown_process(pid) transportpce_tests/common/test_utils.py:270: in shutdown_process for child in psutil.Process(process.pid).children(): ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:319: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=44963, status='terminated'), pid = 44963 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if not _PY3 and not isinstance(pid, (int, long)): msg = "pid must be an integer (got %r)" % pid raise TypeError(msg) if pid < 0: msg = "pid must be a positive integer (got %s)" % pid raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError: msg = "process PID out of range (got %s)" % pid raise NoSuchProcess(pid, msg=msg) self._pid = pid self._name = None self._exe = None self._create_time = None self._gone = False self._pid_reused = False self._hash = None self._lock = threading.RLock() # used for caching on Windows only (on POSIX ppid may change) self._ppid = None # platform-specific modules define an _psplatform.Process # implementation class self._proc = _psplatform.Process(pid) self._last_sys_cpu_times = None self._last_proc_cpu_times = None self._exitcode = _SENTINEL self._ident = (self.pid, None) try: self._ident = self._get_ident() except AccessDenied: # This should happen on Windows only, since we use the fast # create time method. AFAIK, on all other platforms we are # able to get create time for all PIDs. pass except ZombieProcess: # Zombies can still be queried by this class (although # not always) and pids() return them so just go on. pass except NoSuchProcess: if not _ignore_nsp: msg = "process PID not found" > raise NoSuchProcess(pid, msg=msg) E psutil.NoSuchProcess: process PID not found (pid=44963) ../.tox/tests_network/lib/python3.11/site-packages/psutil/__init__.py:368: NoSuchProcess =========================== short test summary info ============================ ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_01_connect_spdrA ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_02_connect_spdrC ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_03_connect_rdmA ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_04_connect_rdmC ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_05_connect_sprdA_1_N1_to_TAPI_EXT_roadmTA1_PP1 ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_06_connect_TAPI_EXT_roadmTA1_PP1_to_spdrA_1_N1 ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_07_connect_sprdC_1_N1_to_TAPI_EXT_roadmTC1_PP1 ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_08_connect_TAPI_EXT_roadmTC1_PP1_to_spdrC_1_N1 ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_09_check_otn_topology ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_10_check_openroadm_topology ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_11_connect_RDMA1_to_TAPI_EXT_roadmTA1 ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_12_connect_RDMC1_to_TAPI_EXT_roadmTC1 ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_13_getLinks_OpenroadmTopology ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_14_getNodes_OpenRoadmTopology ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_15_disconnect_spdrA ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_16_disconnect_spdrC ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_17_disconnect_roadmA ERROR transportpce_tests/network/test01_topo_extension.py::TransportPCEtesting::test_18_disconnect_roadmC 18 errors in 261.24s (0:04:21) tests_network: exit 1 (261.48 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh network pid=43790 ................. [100%] 35 passed in 284.55s (0:04:44) pytest -q transportpce_tests/2.2.1/test02_topo_portmapping.py ...... [100%] 24 passed in 289.68s (0:04:49) pytest -q transportpce_tests/1.2.1/test05_olm.py ...... [100%] 6 passed in 56.06s pytest -q transportpce_tests/2.2.1/test03_topology.py FFFFFFFF..FFFFFFFFFFFFFFFFFFFFFFFFF............................................ [100%] 44 passed in 140.86s (0:02:20) pytest -q transportpce_tests/2.2.1/test04_otn_topology.py ............ [100%] 12 passed in 61.43s (0:01:01) pytest -q transportpce_tests/2.2.1/test05_flex_grid.py F................ [100%] 16 passed in 116.05s (0:01:56) pytest -q transportpce_tests/2.2.1/test06_renderer_service_path_nominal.py ............................... [100%] 31 passed in 36.77s pytest -q transportpce_tests/2.2.1/test07_otn_renderer.py .......FF................... [100%] 26 passed in 92.68s (0:01:32) pytest -q transportpce_tests/2.2.1/test08_otn_sh_renderer.py ...................... [100%] 22 passed in 100.59s (0:01:40) pytest -q transportpce_tests/2.2.1/test09_olm.py F.......................................F [100%] =================================== FAILURES =================================== ______________ TransportOlmTesting.test_01_xpdrA_device_connected ______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRA01' body = '{"node": [{"node-id": "XPDRA01", "netconf-node-topology:host": "127.0.0.1", "netconf-node-topology:port": "17830", "n...lis": "60000", "netconf-node-topology:max-connection-attempts": "0", "netconf-node-topology:keepalive-delay": "120"}]}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '588', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRA01', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRA01' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRA01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_01_xpdrA_device_connected(self): > response = test_utils.mount_device("XPDRA01", ('xpdra', self.NODE_VERSION)) transportpce_tests/1.2.1/test05_olm.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:344: in mount_device response = put_request(url[RESTCONF_VERSION].format('{}', node), body) transportpce_tests/common/test_utils.py:124: in put_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRA01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ---------------------------- 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-full in OpenROADM device version 1.2.1... Searching for pattern 'Data tree change listeners registered' in roadma-121.log... Pattern found! simulator for roadma-full started starting simulator roadmc-full in OpenROADM device version 1.2.1... Searching for pattern 'Data tree change listeners registered' in roadmc-121.log... Pattern found! simulator for roadmc-full started starting simulator xpdrc in OpenROADM device version 1.2.1... Searching for pattern 'Data tree change listeners registered' in xpdrc-121.log... Pattern found! simulator for xpdrc started ----------------------------- Captured stdout call ----------------------------- execution of test_01_xpdrA_device_connected ______________ TransportOlmTesting.test_02_xpdrC_device_connected ______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRC01' body = '{"node": [{"node-id": "XPDRC01", "netconf-node-topology:host": "127.0.0.1", "netconf-node-topology:port": "17834", "n...lis": "60000", "netconf-node-topology:max-connection-attempts": "0", "netconf-node-topology:keepalive-delay": "120"}]}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '588', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRC01', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRC01' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRC01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_02_xpdrC_device_connected(self): > response = test_utils.mount_device("XPDRC01", ('xpdrc', self.NODE_VERSION)) transportpce_tests/1.2.1/test05_olm.py:56: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:344: in mount_device response = put_request(url[RESTCONF_VERSION].format('{}', node), body) transportpce_tests/common/test_utils.py:124: in put_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDRC01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_02_xpdrC_device_connected ______________ TransportOlmTesting.test_03_rdmA_device_connected _______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01' body = '{"node": [{"node-id": "ROADMA01", "netconf-node-topology:host": "127.0.0.1", "netconf-node-topology:port": "17821", "...lis": "60000", "netconf-node-topology:max-connection-attempts": "0", "netconf-node-topology:keepalive-delay": "120"}]}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '589', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_03_rdmA_device_connected(self): > response = test_utils.mount_device("ROADMA01", ('roadma-full', self.NODE_VERSION)) transportpce_tests/1.2.1/test05_olm.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:344: in mount_device response = put_request(url[RESTCONF_VERSION].format('{}', node), body) transportpce_tests/common/test_utils.py:124: in put_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMA01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_03_rdmA_device_connected ______________ TransportOlmTesting.test_04_rdmC_device_connected _______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMC01' body = '{"node": [{"node-id": "ROADMC01", "netconf-node-topology:host": "127.0.0.1", "netconf-node-topology:port": "17823", "...lis": "60000", "netconf-node-topology:max-connection-attempts": "0", "netconf-node-topology:keepalive-delay": "120"}]}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '589', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMC01', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMC01' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMC01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_04_rdmC_device_connected(self): > response = test_utils.mount_device("ROADMC01", ('roadmc-full', self.NODE_VERSION)) transportpce_tests/1.2.1/test05_olm.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:344: in mount_device response = put_request(url[RESTCONF_VERSION].format('{}', node), body) transportpce_tests/common/test_utils.py:124: in put_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADMC01 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_04_rdmC_device_connected _____________ TransportOlmTesting.test_05_connect_xpdrA_to_roadmA ______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'POST' url = '/rests/operations/transportpce-networkutils:init-xpdr-rdm-links' body = '{"input": {"links-input": {"xpdr-node": "XPDRA01", "xpdr-num": "1", "network-num": "1", "rdm-node": "ROADMA01", "srg-num": "1", "termination-point-num": "SRG1-PP1-TXRX"}}}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '171', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/operations/transportpce-networkutils:init-xpdr-rdm-links', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'POST' url = '/rests/operations/transportpce-networkutils:init-xpdr-rdm-links' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-xpdr-rdm-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_05_connect_xpdrA_to_roadmA(self): > response = test_utils.transportpce_api_rpc_request( 'transportpce-networkutils', 'init-xpdr-rdm-links', {'links-input': {'xpdr-node': 'XPDRA01', 'xpdr-num': '1', 'network-num': '1', 'rdm-node': 'ROADMA01', 'srg-num': '1', 'termination-point-num': 'SRG1-PP1-TXRX'}}) transportpce_tests/1.2.1/test05_olm.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:684: in transportpce_api_rpc_request response = post_request(url, data) transportpce_tests/common/test_utils.py:142: in post_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-xpdr-rdm-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_05_connect_xpdrA_to_roadmA _____________ TransportOlmTesting.test_06_connect_roadmA_to_xpdrA ______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'POST' url = '/rests/operations/transportpce-networkutils:init-rdm-xpdr-links' body = '{"input": {"links-input": {"xpdr-node": "XPDRA01", "xpdr-num": "1", "network-num": "1", "rdm-node": "ROADMA01", "srg-num": "1", "termination-point-num": "SRG1-PP1-TXRX"}}}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '171', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/operations/transportpce-networkutils:init-rdm-xpdr-links', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'POST' url = '/rests/operations/transportpce-networkutils:init-rdm-xpdr-links' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-rdm-xpdr-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_06_connect_roadmA_to_xpdrA(self): > response = test_utils.transportpce_api_rpc_request( 'transportpce-networkutils', 'init-rdm-xpdr-links', {'links-input': {'xpdr-node': 'XPDRA01', 'xpdr-num': '1', 'network-num': '1', 'rdm-node': 'ROADMA01', 'srg-num': '1', 'termination-point-num': 'SRG1-PP1-TXRX'}}) transportpce_tests/1.2.1/test05_olm.py:75: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:684: in transportpce_api_rpc_request response = post_request(url, data) transportpce_tests/common/test_utils.py:142: in post_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-rdm-xpdr-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_06_connect_roadmA_to_xpdrA _____________ TransportOlmTesting.test_07_connect_xpdrC_to_roadmC ______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'POST' url = '/rests/operations/transportpce-networkutils:init-xpdr-rdm-links' body = '{"input": {"links-input": {"xpdr-node": "XPDRC01", "xpdr-num": "1", "network-num": "1", "rdm-node": "ROADMC01", "srg-num": "1", "termination-point-num": "SRG1-PP1-TXRX"}}}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '171', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/operations/transportpce-networkutils:init-xpdr-rdm-links', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'POST' url = '/rests/operations/transportpce-networkutils:init-xpdr-rdm-links' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-xpdr-rdm-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_07_connect_xpdrC_to_roadmC(self): > response = test_utils.transportpce_api_rpc_request( 'transportpce-networkutils', 'init-xpdr-rdm-links', {'links-input': {'xpdr-node': 'XPDRC01', 'xpdr-num': '1', 'network-num': '1', 'rdm-node': 'ROADMC01', 'srg-num': '1', 'termination-point-num': 'SRG1-PP1-TXRX'}}) transportpce_tests/1.2.1/test05_olm.py:82: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:684: in transportpce_api_rpc_request response = post_request(url, data) transportpce_tests/common/test_utils.py:142: in post_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-xpdr-rdm-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_07_connect_xpdrC_to_roadmC _____________ TransportOlmTesting.test_08_connect_roadmC_to_xpdrC ______________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'POST' url = '/rests/operations/transportpce-networkutils:init-rdm-xpdr-links' body = '{"input": {"links-input": {"xpdr-node": "XPDRC01", "xpdr-num": "1", "network-num": "1", "rdm-node": "ROADMC01", "srg-num": "1", "termination-point-num": "SRG1-PP1-TXRX"}}}' headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '171', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/operations/transportpce-networkutils:init-rdm-xpdr-links', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :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. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. 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 redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :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 pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool 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 int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1289: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:1048: in _send_output self.send(msg) /opt/pyenv/versions/3.11.7/lib/python3.11/http/client.py:986: in send self.connect() ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests121/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError 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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests121/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'POST' url = '/rests/operations/transportpce-networkutils:init-rdm-xpdr-links' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-rdm-xpdr-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_08_connect_roadmC_to_xpdrC(self): > response = test_utils.transportpce_api_rpc_request( 'transportpce-networkutils', 'init-rdm-xpdr-links', {'links-input': {'xpdr-node': 'XPDRC01', 'xpdr-num': '1', 'network-num': '1', 'rdm-node': 'ROADMC01', 'srg-num': '1', 'termination-point-num': 'SRG1-PP1-TXRX'}}) transportpce_tests/1.2.1/test05_olm.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:684: in transportpce_api_rpc_request response = post_request(url, data) transportpce_tests/common/test_utils.py:142: in post_request return requests.request( ../.tox/tests121/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests121/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests121/lib/python3.11/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_with_tls_context( request, verify, proxies=proxies, cert=cert ) 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) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/operations/transportpce-networkutils:init-rdm-xpdr-links (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests121/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_08_connect_roadmC_to_xpdrC __________________ TransportOlmTesting.test_11_get_PM_ROADMA ___________________ self = def test_11_get_PM_ROADMA(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'get-pm', { 'node-id': 'ROADMA01', 'resource-type': 'interface', 'granularity': '15min', 'resource-identifier': { 'resource-name': 'OTS-DEG1-TTP-TXRX' } }) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 204 != 200 transportpce_tests/1.2.1/test05_olm.py:124: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_11_get_PM_ROADMA __________________ TransportOlmTesting.test_12_get_PM_ROADMC ___________________ self = def test_12_get_PM_ROADMC(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'get-pm', { 'node-id': 'ROADMC01', 'resource-type': 'interface', 'granularity': '15min', 'resource-identifier': { 'resource-name': 'OTS-DEG2-TTP-TXRX' } }) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 204 != 200 transportpce_tests/1.2.1/test05_olm.py:147: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_12_get_PM_ROADMC ______ TransportOlmTesting.test_13_calculate_span_loss_base_ROADMA_ROADMC ______ self = def test_13_calculate_span_loss_base_ROADMA_ROADMC(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'calculate-spanloss-base', { 'src-type': 'link', 'link-id': 'ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX' }) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 500 != 200 transportpce_tests/1.2.1/test05_olm.py:166: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_13_calculate_span_loss_base_ROADMA_ROADMC ___________ TransportOlmTesting.test_14_calculate_span_loss_base_all ___________ self = def test_14_calculate_span_loss_base_all(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'calculate-spanloss-base', { 'src-type': 'all' }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Success', response['output']['result']) E AssertionError: 'Success' not found in 'Failed' transportpce_tests/1.2.1/test05_olm.py:182: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_14_calculate_span_loss_base_all ___________ TransportOlmTesting.test_15_get_OTS_DEG1_TTP_TXRX_ROADMA ___________ self = def test_15_get_OTS_DEG1_TTP_TXRX_ROADMA(self): response = test_utils.check_node_attribute2_request( 'ROADMA01', 'interface', 'OTS-DEG1-TTP-TXRX', 'org-openroadm-optical-transport-interfaces:ots') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:197: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_15_get_OTS_DEG1_TTP_TXRX_ROADMA ___________ TransportOlmTesting.test_16_get_OTS_DEG2_TTP_TXRX_ROADMC ___________ self = def test_16_get_OTS_DEG2_TTP_TXRX_ROADMC(self): response = test_utils.check_node_attribute2_request( 'ROADMC01', 'interface', 'OTS-DEG2-TTP-TXRX', 'org-openroadm-optical-transport-interfaces:ots') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:208: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_16_get_OTS_DEG2_TTP_TXRX_ROADMC _____________ TransportOlmTesting.test_17_servicePath_create_AToZ ______________ self = def test_17_servicePath_create_AToZ(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-device-renderer', 'service-path', { 'service-name': 'test', 'wave-number': '1', 'modulation-format': 'dp-qpsk', 'operation': 'create', 'nodes': [{'node-id': 'XPDRA01', 'dest-tp': 'XPDR1-NETWORK1', 'src-tp': 'XPDR1-CLIENT1'}, {'node-id': 'ROADMA01', 'dest-tp': 'DEG1-TTP-TXRX', 'src-tp': 'SRG1-PP1-TXRX'}, {'node-id': 'ROADMC01', 'dest-tp': 'SRG1-PP1-TXRX', 'src-tp': 'DEG2-TTP-TXRX'}, {'node-id': 'XPDRC01', 'dest-tp': 'XPDR1-CLIENT1', 'src-tp': 'XPDR1-NETWORK1'}], 'center-freq': 196.1, 'nmc-width': 40, 'min-freq': 196.075, 'max-freq': 196.125, 'lower-spectral-slot-number': 761, 'higher-spectral-slot-number': 768 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Interfaces created successfully for nodes: ', response['output']['result']) E AssertionError: 'Interfaces created successfully for nodes: ' not found in 'XPDRC01 is not mounted on the controller\nROADMC01 is not mounted on the controller\nROADMA01 is not mounted on the controller\nXPDRA01 is not mounted on the controller' transportpce_tests/1.2.1/test05_olm.py:237: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_17_servicePath_create_AToZ _____________ TransportOlmTesting.test_18_servicePath_create_ZToA ______________ self = def test_18_servicePath_create_ZToA(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-device-renderer', 'service-path', { 'service-name': 'test', 'wave-number': '1', 'modulation-format': 'dp-qpsk', 'operation': 'create', 'nodes': [{'node-id': 'XPDRC01', 'dest-tp': 'XPDR1-NETWORK1', 'src-tp': 'XPDR1-CLIENT1'}, {'node-id': 'ROADMC01', 'dest-tp': 'DEG2-TTP-TXRX', 'src-tp': 'SRG1-PP1-TXRX'}, {'node-id': 'ROADMA01', 'src-tp': 'DEG1-TTP-TXRX', 'dest-tp': 'SRG1-PP1-TXRX'}, {'node-id': 'XPDRA01', 'src-tp': 'XPDR1-NETWORK1', 'dest-tp': 'XPDR1-CLIENT1'}], 'center-freq': 196.1, 'nmc-width': 40, 'min-freq': 196.075, 'max-freq': 196.125, 'lower-spectral-slot-number': 761, 'higher-spectral-slot-number': 768 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Interfaces created successfully for nodes: ', response['output']['result']) E AssertionError: 'Interfaces created successfully for nodes: ' not found in 'ROADMA01 is not mounted on the controller\nXPDRA01 is not mounted on the controller\nROADMC01 is not mounted on the controller\nXPDRC01 is not mounted on the controller' transportpce_tests/1.2.1/test05_olm.py:265: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_18_servicePath_create_ZToA _________ TransportOlmTesting.test_19_service_power_setup_XPDRA_XPDRC __________ self = def test_19_service_power_setup_XPDRA_XPDRC(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'service-power-setup', { 'service-name': 'test', 'wave-number': 1, 'nodes': [ { 'dest-tp': 'XPDR1-NETWORK1', 'src-tp': 'XPDR1-CLIENT1', 'node-id': 'XPDRA01' }, { 'dest-tp': 'DEG1-TTP-TXRX', 'src-tp': 'SRG1-PP1-TXRX', 'node-id': 'ROADMA01' }, { 'dest-tp': 'SRG1-PP1-TXRX', 'src-tp': 'DEG2-TTP-TXRX', 'node-id': 'ROADMC01' }, { 'dest-tp': 'XPDR1-CLIENT1', 'src-tp': 'XPDR1-NETWORK1', 'node-id': 'XPDRC01' } ], 'center-freq': 196.1, 'nmc-width': 40, 'min-freq': 196.075, 'max-freq': 196.125, 'lower-spectral-slot-number': 761, 'higher-spectral-slot-number': 768 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Success', response['output']['result']) E AssertionError: 'Success' not found in 'Failed' transportpce_tests/1.2.1/test05_olm.py:304: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_19_service_power_setup_XPDRA_XPDRC ________ TransportOlmTesting.test_20_get_interface_XPDRA_XPDR1_NETWORK1 ________ self = def test_20_get_interface_XPDRA_XPDR1_NETWORK1(self): response = test_utils.check_node_attribute2_request( 'XPDRA01', 'interface', 'XPDR1-NETWORK1-761:768', 'org-openroadm-optical-channel-interfaces:och') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:309: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_20_get_interface_XPDRA_XPDR1_NETWORK1 ____________ TransportOlmTesting.test_21_get_roadmconnection_ROADMA ____________ self = def test_21_get_roadmconnection_ROADMA(self): response = test_utils.check_node_attribute_request( 'ROADMA01', 'roadm-connections', 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:316: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_21_get_roadmconnection_ROADMA ____________ TransportOlmTesting.test_22_get_roadmconnection_ROADMC ____________ self = def test_22_get_roadmconnection_ROADMC(self): response = test_utils.check_node_attribute_request( 'ROADMC01', 'roadm-connections', 'DEG2-TTP-TXRX-SRG1-PP1-TXRX-761:768') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:323: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_22_get_roadmconnection_ROADMC _________ TransportOlmTesting.test_23_service_power_setup_XPDRC_XPDRA __________ self = def test_23_service_power_setup_XPDRC_XPDRA(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'service-power-setup', { 'service-name': 'test', 'wave-number': 1, 'nodes': [ { 'dest-tp': 'XPDR1-NETWORK1', 'src-tp': 'XPDR1-CLIENT1', 'node-id': 'XPDRC01' }, { 'dest-tp': 'DEG2-TTP-TXRX', 'src-tp': 'SRG1-PP1-TXRX', 'node-id': 'ROADMC01' }, { 'src-tp': 'DEG1-TTP-TXRX', 'dest-tp': 'SRG1-PP1-TXRX', 'node-id': 'ROADMA01' }, { 'src-tp': 'XPDR1-NETWORK1', 'dest-tp': 'XPDR1-CLIENT1', 'node-id': 'XPDRA01' } ], 'center-freq': 196.1, 'nmc-width': 40, 'min-freq': 196.075, 'max-freq': 196.125, 'lower-spectral-slot-number': 761, 'higher-spectral-slot-number': 768 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Success', response['output']['result']) E AssertionError: 'Success' not found in 'Failed' transportpce_tests/1.2.1/test05_olm.py:362: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_23_service_power_setup_XPDRC_XPDRA ________ TransportOlmTesting.test_24_get_interface_XPDRC_XPDR1_NETWORK1 ________ self = def test_24_get_interface_XPDRC_XPDR1_NETWORK1(self): response = test_utils.check_node_attribute2_request( 'XPDRC01', 'interface', 'XPDR1-NETWORK1-761:768', 'org-openroadm-optical-channel-interfaces:och') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:367: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_24_get_interface_XPDRC_XPDR1_NETWORK1 ____________ TransportOlmTesting.test_25_get_roadmconnection_ROADMC ____________ self = def test_25_get_roadmconnection_ROADMC(self): response = test_utils.check_node_attribute_request( 'ROADMC01', 'roadm-connections', 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:374: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_25_get_roadmconnection_ROADMC ________ TransportOlmTesting.test_26_service_power_turndown_XPDRA_XPDRC ________ self = def test_26_service_power_turndown_XPDRA_XPDRC(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'service-power-turndown', { 'service-name': 'test', 'wave-number': 1, 'nodes': [ { 'dest-tp': 'XPDR1-NETWORK1', 'src-tp': 'XPDR1-CLIENT1', 'node-id': 'XPDRA01' }, { 'dest-tp': 'DEG1-TTP-TXRX', 'src-tp': 'SRG1-PP1-TXRX', 'node-id': 'ROADMA01' }, { 'dest-tp': 'SRG1-PP1-TXRX', 'src-tp': 'DEG2-TTP-TXRX', 'node-id': 'ROADMC01' }, { 'dest-tp': 'XPDR1-CLIENT1', 'src-tp': 'XPDR1-NETWORK1', 'node-id': 'XPDRC01' } ], 'center-freq': 196.1, 'nmc-width': 40, 'min-freq': 196.075, 'max-freq': 196.125, 'lower-spectral-slot-number': 761, 'higher-spectral-slot-number': 768 }) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 500 != 200 transportpce_tests/1.2.1/test05_olm.py:413: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_26_service_power_turndown_XPDRA_XPDRC ____________ TransportOlmTesting.test_27_get_roadmconnection_ROADMA ____________ self = def test_27_get_roadmconnection_ROADMA(self): response = test_utils.check_node_attribute_request( 'ROADMA01', 'roadm-connections', 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:419: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_27_get_roadmconnection_ROADMA ____________ TransportOlmTesting.test_28_get_roadmconnection_ROADMC ____________ self = def test_28_get_roadmconnection_ROADMC(self): response = test_utils.check_node_attribute_request( 'ROADMC01', 'roadm-connections', 'DEG2-TTP-TXRX-SRG1-PP1-TXRX-761:768') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:426: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_28_get_roadmconnection_ROADMC _____________ TransportOlmTesting.test_29_servicePath_delete_AToZ ______________ self = def test_29_servicePath_delete_AToZ(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-device-renderer', 'service-path', { 'service-name': 'test', 'wave-number': '1', 'modulation-format': 'dp-qpsk', 'operation': 'delete', 'nodes': [{'node-id': 'XPDRA01', 'dest-tp': 'XPDR1-NETWORK1', 'src-tp': 'XPDR1-CLIENT1'}, {'node-id': 'ROADMA01', 'dest-tp': 'DEG1-TTP-TXRX', 'src-tp': 'SRG1-PP1-TXRX'}, {'node-id': 'ROADMC01', 'dest-tp': 'SRG1-PP1-TXRX', 'src-tp': 'DEG2-TTP-TXRX'}, {'node-id': 'XPDRC01', 'dest-tp': 'XPDR1-CLIENT1', 'src-tp': 'XPDR1-NETWORK1'}], 'center-freq': 196.1, 'nmc-width': 40, 'min-freq': 196.075, 'max-freq': 196.125, 'lower-spectral-slot-number': 761, 'higher-spectral-slot-number': 768 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Request processed', response['output']['result']) E AssertionError: 'Request processed' not found in 'ROADMC01 is not mounted on the controller\nROADMA01 is not mounted on the controller\nXPDRA01 is not mounted on the controller\nXPDRC01 is not mounted on the controller' transportpce_tests/1.2.1/test05_olm.py:454: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_29_servicePath_delete_AToZ _____________ TransportOlmTesting.test_30_servicePath_delete_ZToA ______________ self = def test_30_servicePath_delete_ZToA(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-device-renderer', 'service-path', { 'service-name': 'test', 'wave-number': '1', 'modulation-format': 'dp-qpsk', 'operation': 'delete', 'nodes': [{'node-id': 'XPDRC01', 'dest-tp': 'XPDR1-NETWORK1', 'src-tp': 'XPDR1-CLIENT1'}, {'node-id': 'ROADMC01', 'dest-tp': 'DEG2-TTP-TXRX', 'src-tp': 'SRG1-PP1-TXRX'}, {'node-id': 'ROADMA01', 'src-tp': 'DEG1-TTP-TXRX', 'dest-tp': 'SRG1-PP1-TXRX'}, {'node-id': 'XPDRA01', 'src-tp': 'XPDR1-NETWORK1', 'dest-tp': 'XPDR1-CLIENT1'}], 'center-freq': 196.1, 'nmc-width': 40, 'min-freq': 196.075, 'max-freq': 196.125, 'lower-spectral-slot-number': 761, 'higher-spectral-slot-number': 768 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Request processed', response['output']['result']) E AssertionError: 'Request processed' not found in 'ROADMA01 is not mounted on the controller\nXPDRA01 is not mounted on the controller\nROADMC01 is not mounted on the controller\nXPDRC01 is not mounted on the controller' transportpce_tests/1.2.1/test05_olm.py:482: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_30_servicePath_delete_ZToA _____________ TransportOlmTesting.test_31_connect_xpdrA_to_roadmA ______________ self = def test_31_connect_xpdrA_to_roadmA(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-networkutils', 'init-xpdr-rdm-links', {'links-input': {'xpdr-node': 'XPDRA01', 'xpdr-num': '1', 'network-num': '2', 'rdm-node': 'ROADMA01', 'srg-num': '1', 'termination-point-num': 'SRG1-PP2-TXRX'}}) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 204 != 200 transportpce_tests/1.2.1/test05_olm.py:492: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_31_connect_xpdrA_to_roadmA _____________ TransportOlmTesting.test_32_connect_roadmA_to_xpdrA ______________ self = def test_32_connect_roadmA_to_xpdrA(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-networkutils', 'init-rdm-xpdr-links', {'links-input': {'xpdr-node': 'XPDRA01', 'xpdr-num': '1', 'network-num': '2', 'rdm-node': 'ROADMA01', 'srg-num': '1', 'termination-point-num': 'SRG1-PP2-TXRX'}}) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 204 != 200 transportpce_tests/1.2.1/test05_olm.py:499: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_32_connect_roadmA_to_xpdrA _____________ TransportOlmTesting.test_33_servicePath_create_AToZ ______________ self = def test_33_servicePath_create_AToZ(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-device-renderer', 'service-path', { 'service-name': 'test2', 'wave-number': '2', 'modulation-format': 'dp-qpsk', 'operation': 'create', 'nodes': [{'node-id': 'XPDRA01', 'dest-tp': 'XPDR1-NETWORK2', 'src-tp': 'XPDR1-CLIENT2'}, {'node-id': 'ROADMA01', 'dest-tp': 'DEG1-TTP-TXRX', 'src-tp': 'SRG1-PP2-TXRX'}], 'center-freq': 196.05, 'nmc-width': 40, 'min-freq': 196.025, 'max-freq': 196.075, 'lower-spectral-slot-number': 753, 'higher-spectral-slot-number': 760 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Interfaces created successfully for nodes', response['output']['result']) E AssertionError: 'Interfaces created successfully for nodes' not found in 'ROADMA01 is not mounted on the controller\nXPDRA01 is not mounted on the controller' transportpce_tests/1.2.1/test05_olm.py:522: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_33_servicePath_create_AToZ ________ TransportOlmTesting.test_34_get_interface_XPDRA_XPDR1_NETWORK2 ________ self = def test_34_get_interface_XPDRA_XPDR1_NETWORK2(self): response = test_utils.check_node_attribute2_request( 'XPDRA01', 'interface', 'XPDR1-NETWORK2-753:760', 'org-openroadm-optical-channel-interfaces:och') > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/1.2.1/test05_olm.py:528: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_34_get_interface_XPDRA_XPDR1_NETWORK2 _____________ TransportOlmTesting.test_35_servicePath_delete_AToZ ______________ self = def test_35_servicePath_delete_AToZ(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-device-renderer', 'service-path', { 'service-name': 'test2', 'wave-number': '2', 'modulation-format': 'dp-qpsk', 'operation': 'delete', 'nodes': [{'node-id': 'XPDRA01', 'dest-tp': 'XPDR1-NETWORK2', 'src-tp': 'XPDR1-CLIENT2'}, {'node-id': 'ROADMA01', 'dest-tp': 'DEG1-TTP-TXRX', 'src-tp': 'SRG1-PP2-TXRX'}], 'center-freq': 196.05, 'nmc-width': 40, 'min-freq': 196.025, 'max-freq': 196.075, 'lower-spectral-slot-number': 753, 'higher-spectral-slot-number': 760 }) self.assertEqual(response['status_code'], requests.codes.ok) > self.assertIn('Request processed', response['output']['result']) E AssertionError: 'Request processed' not found in 'ROADMA01 is not mounted on the controller\nXPDRA01 is not mounted on the controller' transportpce_tests/1.2.1/test05_olm.py:553: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_35_servicePath_delete_AToZ ____________ TransportOlmTesting.test_36_xpdrA_device_disconnected _____________ self = def test_36_xpdrA_device_disconnected(self): response = test_utils.unmount_device("XPDRA01") > self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) E AssertionError: 409 not found in (200, 204) transportpce_tests/1.2.1/test05_olm.py:558: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_36_xpdrA_device_disconnected Searching for pattern 'onDeviceDisConnected:\ XPDRA01' in karaf.log... Pattern not found after 180 seconds! Node XPDRA01 still not deleted from tpce topology... ____________ TransportOlmTesting.test_37_xpdrC_device_disconnected _____________ self = def test_37_xpdrC_device_disconnected(self): response = test_utils.unmount_device("XPDRC01") > self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) E AssertionError: 409 not found in (200, 204) transportpce_tests/1.2.1/test05_olm.py:562: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_37_xpdrC_device_disconnected Searching for pattern 'onDeviceDisConnected:\ XPDRC01' in karaf.log... Pattern not found after 180 seconds! Node XPDRC01 still not deleted from tpce topology... ___________ TransportOlmTesting.test_38_calculate_span_loss_current ____________ self = def test_38_calculate_span_loss_current(self): response = test_utils.transportpce_api_rpc_request( 'transportpce-olm', 'calculate-spanloss-current', None) > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 204 != 200 transportpce_tests/1.2.1/test05_olm.py:568: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_38_calculate_span_loss_current _____________ TransportOlmTesting.test_39_rdmA_device_disconnected _____________ self = def test_39_rdmA_device_disconnected(self): response = test_utils.unmount_device("ROADMA01") > self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) E AssertionError: 409 not found in (200, 204) transportpce_tests/1.2.1/test05_olm.py:575: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_39_rdmA_device_disconnected Searching for pattern 'onDeviceDisConnected:\ ROADMA01' in karaf.log... Pattern not found after 180 seconds! Node ROADMA01 still not deleted from tpce topology... _____________ TransportOlmTesting.test_40_rdmC_device_disconnected _____________ self = def test_40_rdmC_device_disconnected(self): response = test_utils.unmount_device("ROADMC01") > self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) E AssertionError: 409 not found in (200, 204) transportpce_tests/1.2.1/test05_olm.py:579: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_40_rdmC_device_disconnected Searching for pattern 'onDeviceDisConnected:\ ROADMC01' in karaf.log... Pattern not found after 180 seconds! Node ROADMC01 still not deleted from tpce topology... --------------------------- Captured stdout teardown --------------------------- all processes killed =========================== short test summary info ============================ FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_01_xpdrA_device_connected FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_02_xpdrC_device_connected FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_03_rdmA_device_connected FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_04_rdmC_device_connected FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_05_connect_xpdrA_to_roadmA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_06_connect_roadmA_to_xpdrA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_07_connect_xpdrC_to_roadmC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_08_connect_roadmC_to_xpdrC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_11_get_PM_ROADMA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_12_get_PM_ROADMC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_13_calculate_span_loss_base_ROADMA_ROADMC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_14_calculate_span_loss_base_all FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_15_get_OTS_DEG1_TTP_TXRX_ROADMA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_16_get_OTS_DEG2_TTP_TXRX_ROADMC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_17_servicePath_create_AToZ FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_18_servicePath_create_ZToA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_19_service_power_setup_XPDRA_XPDRC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_20_get_interface_XPDRA_XPDR1_NETWORK1 FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_21_get_roadmconnection_ROADMA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_22_get_roadmconnection_ROADMC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_23_service_power_setup_XPDRC_XPDRA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_24_get_interface_XPDRC_XPDR1_NETWORK1 FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_25_get_roadmconnection_ROADMC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_26_service_power_turndown_XPDRA_XPDRC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_27_get_roadmconnection_ROADMA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_28_get_roadmconnection_ROADMC FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_29_servicePath_delete_AToZ FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_30_servicePath_delete_ZToA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_31_connect_xpdrA_to_roadmA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_32_connect_roadmA_to_xpdrA FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_33_servicePath_create_AToZ FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_34_get_interface_XPDRA_XPDR1_NETWORK2 FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_35_servicePath_delete_AToZ FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_36_xpdrA_device_disconnected FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_37_xpdrC_device_disconnected FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_38_calculate_span_loss_current FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_39_rdmA_device_disconnected FAILED transportpce_tests/1.2.1/test05_olm.py::TransportOlmTesting::test_40_rdmC_device_disconnected 38 failed, 2 passed in 816.82s (0:13:36) tests_network: FAIL ✖ in 4 minutes 28.2 seconds tests121: exit 1 (2292.55 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 1.2.1 pid=35677 . [100%] 40 passed in 366.05s (0:06:06) pytest -q transportpce_tests/2.2.1/test11_otn_end2end.py ........................................................................ [ 74%] ......................... [100%] 97 passed in 674.87s (0:11:14) pytest -q transportpce_tests/2.2.1/test12_end2end.py ...................................................... [100%] 54 passed in 630.75s (0:10:30) pytest -q transportpce_tests/2.2.1/test14_otn_switch_end2end.py ........................................................................ [ 71%] ............................. [100%] 101 passed in 493.72s (0:08:13) pytest -q transportpce_tests/2.2.1/test15_otn_end2end_with_intermediate_switch.py ........................................................................ [ 67%] ................................... [100%] 107 passed in 602.30s (0:10:02) tests121: FAIL ✖ in 38 minutes 19.45 seconds tests221: OK ✔ in 1 hour 1 minute 6.75 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.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 tests_hybrid: commands[0] /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 151.26s (0:02:31) pytest -q transportpce_tests/hybrid/test02_B100G_end2end.py ........................................................................ [ 66%] ..................................... [100%] 109 passed in 428.21s (0:07:08) pytest -q transportpce_tests/hybrid/test03_autonomous_reroute.py ..................................................... [100%] 53 passed in 442.91s (0:07:22) tests_hybrid: OK ✔ in 17 minutes 9.55 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.2.0,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==43.0.1,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.1,packaging==24.1,paramiko==3.5.0,pip==24.2,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.2.0,urllib3==2.2.3,wheel==0.44.0 buildlighty: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh [ERROR] COMPILATION ERROR : [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[17,42] cannot find symbol symbol: class YangModuleInfo location: package org.opendaylight.yangtools.binding [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[21,30] cannot find symbol symbol: class YangModuleInfo location: class io.lighty.controllers.tpce.utils.TPCEUtils [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[343,30] cannot find symbol symbol: class YangModuleInfo location: class io.lighty.controllers.tpce.utils.TPCEUtils [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[350,23] cannot find symbol symbol: class YangModuleInfo location: class io.lighty.controllers.tpce.utils.TPCEUtils [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project tpce: Compilation failure: Compilation failure: [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[17,42] cannot find symbol [ERROR] symbol: class YangModuleInfo [ERROR] location: package org.opendaylight.yangtools.binding [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[21,30] cannot find symbol [ERROR] symbol: class YangModuleInfo [ERROR] location: class io.lighty.controllers.tpce.utils.TPCEUtils [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[343,30] cannot find symbol [ERROR] symbol: class YangModuleInfo [ERROR] location: class io.lighty.controllers.tpce.utils.TPCEUtils [ERROR] /w/workspace/transportpce-tox-verify-transportpce-master/lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java:[350,23] cannot find symbol [ERROR] symbol: class YangModuleInfo [ERROR] location: class io.lighty.controllers.tpce.utils.TPCEUtils [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException buildlighty: exit 9 (14.98 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh pid=65582 buildlighty: command failed but is marked ignore outcome so handling it as success buildcontroller: OK (108.06=setup[8.00]+cmd[100.07] seconds) testsPCE: OK (316.01=setup[68.39]+cmd[247.62] seconds) sims: OK (10.96=setup[7.62]+cmd[3.34] seconds) build_karaf_tests121: OK (55.27=setup[7.54]+cmd[47.73] seconds) tests121: FAIL code 1 (2299.45=setup[6.90]+cmd[2292.55] seconds) build_karaf_tests221: OK (53.83=setup[7.54]+cmd[46.29] seconds) tests_tapi: OK (1010.44=setup[7.02]+cmd[1003.42] seconds) tests_network: FAIL code 1 (268.20=setup[6.71]+cmd[261.48] seconds) tests221: OK (3666.75=setup[6.70]+cmd[3660.05] seconds) build_karaf_tests71: OK (52.82=setup[11.76]+cmd[41.06] seconds) tests71: OK (427.21=setup[5.98]+cmd[421.23] seconds) build_karaf_tests_hybrid: OK (62.03=setup[7.69]+cmd[54.34] seconds) tests_hybrid: OK (1029.55=setup[6.50]+cmd[1023.05] seconds) buildlighty: OK (21.15=setup[6.17]+cmd[14.98] seconds) docs: OK (35.32=setup[32.75]+cmd[2.57] seconds) docs-linkcheck: OK (36.25=setup[33.04]+cmd[3.21] seconds) checkbashisms: OK (3.07=setup[2.06]+cmd[0.02,0.05,0.94] seconds) pre-commit: OK (46.80=setup[3.48]+cmd[0.01,0.00,35.81,7.50] seconds) pylint: FAIL code 1 (28.61=setup[5.98]+cmd[22.63] seconds) evaluation failed :( (6318.52 seconds)