Triggered by Gerrit: https://git.opendaylight.org/gerrit/c/transportpce/+/119868 Running as SYSTEM [EnvInject] - Loading node environment variables. Building remotely on prd-ubuntu2204-docker-4c-16g-5080 (ubuntu2204-docker-4c-16g) in workspace /w/workspace/transportpce-tox-verify-transportpce-master [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-XXXXXXjkLcAx/agent.1566 SSH_AGENT_PID=1568 [ssh-agent] Started. Running ssh-add (command line suppressed) Identity added: /w/workspace/transportpce-tox-verify-transportpce-master@tmp/private_key_16707697705407512281.key (/w/workspace/transportpce-tox-verify-transportpce-master@tmp/private_key_16707697705407512281.key) [ssh-agent] Using credentials jenkins (jenkins-ssh) The recommended git tool is: NONE using credential jenkins-ssh Wiping out workspace first. Cloning the remote Git repository Cloning repository git://devvexx.opendaylight.org/mirror/transportpce > git init /w/workspace/transportpce-tox-verify-transportpce-master # timeout=10 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce > git --version # timeout=10 > git --version # 'git version 2.34.1' using GIT_SSH to set credentials jenkins-ssh Verifying host key using known hosts file You're using 'Known hosts file' strategy to verify ssh host keys, but your known_hosts file does not exist, please go to 'Manage Jenkins' -> 'Security' -> 'Git Host Key Verification Configuration' and configure host key verification. > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce using GIT_SSH to set credentials jenkins-ssh Verifying host key using known hosts file You're using 'Known hosts file' strategy to verify ssh host keys, but your known_hosts file does not exist, please go to 'Manage Jenkins' -> 'Security' -> 'Git Host Key Verification Configuration' and configure host key verification. > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce refs/changes/68/119868/9 # timeout=10 > git rev-parse 5cdb971d8b7ace0aaf8330985a7a0cf9d2c86e87^{commit} # timeout=10 JENKINS-19022: warning: possible memory leak due to Git plugin usage; see: https://plugins.jenkins.io/git/#remove-git-plugin-buildsbybranch-builddata-script Checking out Revision 5cdb971d8b7ace0aaf8330985a7a0cf9d2c86e87 (refs/changes/68/119868/9) > git config core.sparsecheckout # timeout=10 > git checkout -f 5cdb971d8b7ace0aaf8330985a7a0cf9d2c86e87 # timeout=10 Commit message: "Prevent NPE processing links during OTN creation" > git rev-parse FETCH_HEAD^{commit} # timeout=10 > git rev-list --no-walk d86c125d63be1214b38d4c188d262666036e31e6 # timeout=10 > git remote # timeout=10 > git submodule init # timeout=10 > git submodule sync # timeout=10 > git config --get remote.origin.url # timeout=10 > git submodule init # timeout=10 > git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10 ERROR: No submodules found. provisioning config files... copy managed file [npmrc] to file:/home/jenkins/.npmrc copy managed file [pipconf] to file:/home/jenkins/.config/pip/pip.conf [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins7436700418640421034.sh ---> python-tools-install.sh Setup pyenv: * system (set by /opt/pyenv/version) * 3.8.20 (set by /opt/pyenv/version) * 3.9.20 (set by /opt/pyenv/version) 3.10.15 3.11.10 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-GDFm lf-activate-venv(): INFO: Save venv in file: /tmp/.os_lf_venv lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) lf-activate-venv(): INFO: Attempting to install with network-safe options... lf-activate-venv(): INFO: Base packages installed successfully lf-activate-venv(): INFO: Installing additional packages: lftools lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH Generating Requirements File ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. httplib2 0.30.2 requires pyparsing<4,>=3.0.4, but you have pyparsing 2.4.7 which is incompatible. Python 3.11.10 pip 25.3 from /tmp/venv-GDFm/lib/python3.11/site-packages/pip (python 3.11) appdirs==1.4.4 argcomplete==3.6.3 aspy.yaml==1.3.0 attrs==25.4.0 autopage==0.5.2 beautifulsoup4==4.14.3 boto3==1.42.36 botocore==1.42.36 bs4==0.0.2 certifi==2026.1.4 cffi==2.0.0 cfgv==3.5.0 chardet==5.2.0 charset-normalizer==3.4.4 click==8.3.1 cliff==4.13.1 cmd2==3.1.2 cryptography==3.3.2 debtcollector==3.0.0 decorator==5.2.1 defusedxml==0.7.1 Deprecated==1.3.1 distlib==0.4.0 dnspython==2.8.0 docker==7.1.0 dogpile.cache==1.5.0 durationpy==0.10 email-validator==2.3.0 filelock==3.20.3 future==1.0.0 gitdb==4.0.12 GitPython==3.1.46 httplib2==0.30.2 identify==2.6.16 idna==3.11 importlib-resources==1.5.0 iso8601==2.1.0 Jinja2==3.1.6 jmespath==1.1.0 jsonpatch==1.33 jsonpointer==3.0.0 jsonschema==4.26.0 jsonschema-specifications==2025.9.1 keystoneauth1==5.13.0 kubernetes==35.0.0 lftools==0.37.21 lxml==6.0.2 markdown-it-py==4.0.0 MarkupSafe==3.0.3 mdurl==0.1.2 msgpack==1.1.2 multi_key_dict==2.0.3 munch==4.0.0 netaddr==1.3.0 niet==1.4.2 nodeenv==1.10.0 oauth2client==4.1.3 oauthlib==3.3.1 openstacksdk==4.9.0 os-service-types==1.8.2 osc-lib==4.3.0 oslo.config==10.2.0 oslo.context==6.2.0 oslo.i18n==6.7.1 oslo.log==8.0.0 oslo.serialization==5.9.0 oslo.utils==9.2.0 packaging==26.0 pbr==7.0.3 platformdirs==4.5.1 prettytable==3.17.0 psutil==7.2.1 pyasn1==0.6.2 pyasn1_modules==0.4.2 pycparser==3.0 pygerrit2==2.0.15 PyGithub==2.8.1 Pygments==2.19.2 PyJWT==2.10.1 PyNaCl==1.6.2 pyparsing==2.4.7 pyperclip==1.11.0 pyrsistent==0.20.0 python-cinderclient==9.8.0 python-dateutil==2.9.0.post0 python-heatclient==5.0.0 python-jenkins==1.8.3 python-keystoneclient==5.7.0 python-magnumclient==4.9.0 python-openstackclient==8.3.0 python-swiftclient==4.9.0 PyYAML==6.0.3 referencing==0.37.0 requests==2.32.5 requests-oauthlib==2.0.0 requestsexceptions==1.4.0 rfc3986==2.0.0 rich==14.3.1 rich-argparse==1.7.2 rpds-py==0.30.0 rsa==4.9.1 ruamel.yaml==0.19.1 ruamel.yaml.clib==0.2.15 s3transfer==0.16.0 simplejson==3.20.2 six==1.17.0 smmap==5.0.2 soupsieve==2.8.3 stevedore==5.6.0 tabulate==0.9.0 toml==0.10.2 tomlkit==0.14.0 tqdm==4.67.1 typing_extensions==4.15.0 tzdata==2025.3 urllib3==1.26.20 virtualenv==20.36.1 wcwidth==0.5.0 websocket-client==1.9.0 wrapt==2.0.1 xdg==6.0.0 xmltodict==1.0.2 yq==3.4.3 [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties content PYTHON=python3 [EnvInject] - Variables injected successfully. [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins17852650854775268003.sh ---> tox-install.sh + source /home/jenkins/lf-env.sh + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 ++ mktemp -d /tmp/venv-XXXX + lf_venv=/tmp/venv-zs13 + local venv_file=/tmp/.os_lf_venv + local python=python3 + local options + local set_path=true + local install_args= ++ getopt -o np:v: -l no-path,system-site-packages,python:,venv-file: -n lf-activate-venv -- --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 + true + case $1 in + venv_file=/tmp/.toxenv + shift 2 + true + case $1 in + shift + break + case $python in + local pkg_list= + [[ -d /opt/pyenv ]] + echo 'Setup pyenv:' Setup pyenv: + export PYENV_ROOT=/opt/pyenv + PYENV_ROOT=/opt/pyenv + export PATH=/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + PATH=/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + pyenv versions system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) + command -v pyenv ++ pyenv init - --no-rehash + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; fi; done; echo "${paths[*]}"'\'')" export PATH="/opt/pyenv/shims:${PATH}" export PYENV_SHELL=bash source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")" ;; *) command pyenv "$command" "$@" ;; esac }' +++ bash --norc -ec 'IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; fi; done; echo "${paths[*]}"' ++ PATH=/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PATH=/opt/pyenv/shims:/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ PATH=/opt/pyenv/shims:/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PYENV_SHELL=bash ++ PYENV_SHELL=bash ++ source /opt/pyenv/libexec/../completions/pyenv.bash +++ complete -F _pyenv pyenv ++ lf-pyver python3 ++ local py_version_xy=python3 ++ local py_version_xyz= ++ pyenv versions ++ local command ++ command=versions ++ '[' 1 -gt 0 ']' ++ shift ++ case "$command" in ++ command pyenv versions ++ grep -E '^[0-9.]*[0-9]$' ++ awk '{ print $1 }' ++ sed 's/^[ *]* //' ++ [[ ! -s /tmp/.pyenv_versions ]] +++ grep '^3' /tmp/.pyenv_versions +++ sort -V +++ tail -n 1 ++ py_version_xyz=3.11.10 ++ [[ -z 3.11.10 ]] ++ echo 3.11.10 ++ return 0 + pyenv local 3.11.10 + local command + command=local + '[' 2 -gt 0 ']' + shift + case "$command" in + command pyenv local 3.11.10 + for arg in "$@" + case $arg in + pkg_list+='tox ' + for arg in "$@" + case $arg in + pkg_list+='virtualenv ' + for arg in "$@" + case $arg in + pkg_list+='urllib3~=1.26.15 ' + [[ -f /tmp/.toxenv ]] + [[ ! -f /tmp/.toxenv ]] + [[ -n '' ]] + python3 -m venv /tmp/venv-zs13 + echo 'lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-zs13' lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-zs13 + echo /tmp/venv-zs13 + echo 'lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv' lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) + local 'pip_opts=--upgrade --quiet' + pip_opts='--upgrade --quiet --trusted-host pypi.org' + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' + [[ -n '' ]] + [[ -n '' ]] + echo 'lf-activate-venv(): INFO: Attempting to install with network-safe options...' lf-activate-venv(): INFO: Attempting to install with network-safe options... + /tmp/venv-zs13/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv + echo 'lf-activate-venv(): INFO: Base packages installed successfully' lf-activate-venv(): INFO: Base packages installed successfully + [[ -z tox virtualenv urllib3~=1.26.15 ]] + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 + /tmp/venv-zs13/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 + type python3 + true + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH' lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH + PATH=/tmp/venv-zs13/bin:/opt/pyenv/shims:/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + return 0 + python3 --version Python 3.11.10 + python3 -m pip --version pip 25.3 from /tmp/venv-zs13/lib/python3.11/site-packages/pip (python 3.11) + python3 -m pip freeze cachetools==6.2.6 chardet==5.2.0 colorama==0.4.6 distlib==0.4.0 filelock==3.20.3 packaging==26.0 platformdirs==4.5.1 pluggy==1.6.0 pyproject-api==1.10.0 tox==4.34.1 urllib3==1.26.20 virtualenv==20.36.1 [transportpce-tox-verify-transportpce-master] $ /bin/sh -xe /tmp/jenkins16599647751593222831.sh [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties content PARALLEL=True [EnvInject] - Variables injected successfully. [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins18112725462968807329.sh ---> tox-run.sh + PATH=/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + ARCHIVE_TOX_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/tox + ARCHIVE_DOC_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/docs + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox + cd /w/workspace/transportpce-tox-verify-transportpce-master/. + source /home/jenkins/lf-env.sh + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 ++ mktemp -d /tmp/venv-XXXX + lf_venv=/tmp/venv-oNqE + local venv_file=/tmp/.os_lf_venv + local python=python3 + local options + local set_path=true + local install_args= ++ getopt -o np:v: -l no-path,system-site-packages,python:,venv-file: -n lf-activate-venv -- --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 + true + case $1 in + venv_file=/tmp/.toxenv + shift 2 + true + case $1 in + shift + break + case $python in + local pkg_list= + [[ -d /opt/pyenv ]] + echo 'Setup pyenv:' Setup pyenv: + export PYENV_ROOT=/opt/pyenv + PYENV_ROOT=/opt/pyenv + export PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + pyenv versions system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) + command -v pyenv ++ pyenv init - --no-rehash + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; fi; done; echo "${paths[*]}"'\'')" export PATH="/opt/pyenv/shims:${PATH}" export PYENV_SHELL=bash source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")" ;; *) command pyenv "$command" "$@" ;; esac }' +++ bash --norc -ec 'IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; fi; done; echo "${paths[*]}"' ++ PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PYENV_SHELL=bash ++ PYENV_SHELL=bash ++ source /opt/pyenv/libexec/../completions/pyenv.bash +++ complete -F _pyenv pyenv ++ lf-pyver python3 ++ local py_version_xy=python3 ++ local py_version_xyz= ++ pyenv versions ++ local command ++ sed 's/^[ *]* //' ++ command=versions ++ '[' 1 -gt 0 ']' ++ awk '{ print $1 }' ++ shift ++ case "$command" in ++ command pyenv versions ++ grep -E '^[0-9.]*[0-9]$' ++ [[ ! -s /tmp/.pyenv_versions ]] +++ grep '^3' /tmp/.pyenv_versions +++ sort -V +++ tail -n 1 ++ py_version_xyz=3.11.10 ++ [[ -z 3.11.10 ]] ++ echo 3.11.10 ++ return 0 + pyenv local 3.11.10 + local command + command=local + '[' 2 -gt 0 ']' + shift + case "$command" in + command pyenv local 3.11.10 + for arg in "$@" + case $arg in + pkg_list+='tox ' + for arg in "$@" + case $arg in + pkg_list+='virtualenv ' + for arg in "$@" + case $arg in + pkg_list+='urllib3~=1.26.15 ' + [[ -f /tmp/.toxenv ]] ++ cat /tmp/.toxenv + lf_venv=/tmp/venv-zs13 + echo 'lf-activate-venv(): INFO: Reuse venv:/tmp/venv-zs13 from' file:/tmp/.toxenv lf-activate-venv(): INFO: Reuse venv:/tmp/venv-zs13 from file:/tmp/.toxenv + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) + local 'pip_opts=--upgrade --quiet' + pip_opts='--upgrade --quiet --trusted-host pypi.org' + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' + [[ -n '' ]] + [[ -n '' ]] + echo 'lf-activate-venv(): INFO: Attempting to install with network-safe options...' lf-activate-venv(): INFO: Attempting to install with network-safe options... + /tmp/venv-zs13/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv + echo 'lf-activate-venv(): INFO: Base packages installed successfully' lf-activate-venv(): INFO: Base packages installed successfully + [[ -z tox virtualenv urllib3~=1.26.15 ]] + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 + /tmp/venv-zs13/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 + type python3 + true + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH' lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH + PATH=/tmp/venv-zs13/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + return 0 + [[ -d /opt/pyenv ]] + echo '---> Setting up pyenv' ---> Setting up pyenv + export PYENV_ROOT=/opt/pyenv + PYENV_ROOT=/opt/pyenv + export PATH=/opt/pyenv/bin:/tmp/venv-zs13/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + PATH=/opt/pyenv/bin:/tmp/venv-zs13/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ pwd + PYTHONPATH=/w/workspace/transportpce-tox-verify-transportpce-master + export PYTHONPATH + export TOX_TESTENV_PASSENV=PYTHONPATH + TOX_TESTENV_PASSENV=PYTHONPATH + tox --version 4.34.1 from /tmp/venv-zs13/lib/python3.11/site-packages/tox/__init__.py + PARALLEL=True + TOX_OPTIONS_LIST= + [[ -n '' ]] + case ${PARALLEL,,} in + TOX_OPTIONS_LIST=' --parallel auto --parallel-live' + tox --parallel auto --parallel-live + tee -a /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tox.log docs: install_deps> python -I -m pip install -r docs/requirements.txt buildcontroller: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt docs-linkcheck: install_deps> python -I -m pip install -r docs/requirements.txt checkbashisms: freeze> python -m pip freeze --all checkbashisms: pip==25.3,setuptools==80.9.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.28 seconds pre-commit: install_deps> python -I -m pip install pre-commit pre-commit: freeze> python -m pip freeze --all pre-commit: cfgv==3.5.0,distlib==0.4.0,filelock==3.20.3,identify==2.6.16,nodeenv==1.10.0,pip==25.3,platformdirs==4.5.1,pre_commit==4.5.1,PyYAML==6.0.3,setuptools==80.9.0,virtualenv==20.36.1 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]. [INFO] Initializing environment for https://github.com/Lucas-C/pre-commit-hooks. [INFO] Initializing environment for https://github.com/pre-commit/mirrors-autopep8. buildcontroller: freeze> python -m pip freeze --all [INFO] Initializing environment for https://github.com/perltidy/perltidy. buildcontroller: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 buildcontroller: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_controller.sh + update-java-alternatives -l java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.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 + sudo update-java-alternatives -s java-1.21.0-openjdk-amd64 update-alternatives: error: no alternatives for jaotc update-alternatives: error: no alternatives for rmic + + sed -n ;s/.* version "\(.*\)\.\(.*\)\..*".*$/\1/p; java -version + JAVA_VER=21 + echo 21 21 + + javac -version sed -n ;s/javac \(.*\)\.\(.*\)\..*.*$/\1/p; [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... + JAVAC_VER=21 + echo 21 21 ok, java is 21 or newer + [ 21 -ge 21 ] + [ 21 -ge 21 ] + echo ok, java is 21 or newer + wget -nv https://dlcdn.apache.org/maven/maven-3/3.9.12/binaries/apache-maven-3.9.12-bin.tar.gz -P /tmp 2026-01-27 21:39:48 URL:https://dlcdn.apache.org/maven/maven-3/3.9.12/binaries/apache-maven-3.9.12-bin.tar.gz [9233336/9233336] -> "/tmp/apache-maven-3.9.12-bin.tar.gz" [1] + sudo mkdir -p /opt + sudo tar xf /tmp/apache-maven-3.9.12-bin.tar.gz -C /opt + sudo ln -s /opt/apache-maven-3.9.12 /opt/maven + sudo ln -s /opt/maven/bin/mvn /usr/bin/mvn + mvn --version Apache Maven 3.9.12 (848fbb4bf2d427b72bdb2471c22fced7ebd9a7a1) Maven home: /opt/maven Java version: 21.0.9, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64 Default locale: en, platform encoding: UTF-8 OS name: "linux", version: "5.15.0-164-generic", arch: "amd64", family: "unix" NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable [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==25.4.0,babel==2.17.0,blockdiag==3.0.0,certifi==2026.1.4,charset-normalizer==3.4.4,contourpy==1.3.3,cycler==0.12.1,docutils==0.21.2,fonttools==4.61.1,funcparserlib==2.0.0a0,future==1.0.0,idna==3.11,imagesize==1.4.1,Jinja2==3.1.6,jsonschema==3.2.0,kiwisolver==1.4.9,lfdocs_conf==0.10.0,MarkupSafe==3.0.3,matplotlib==3.10.8,numpy==2.4.1,nwdiag==3.0.0,packaging==26.0,pillow==12.1.0,pip==25.3,Pygments==2.19.2,pyparsing==3.3.2,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.3,requests==2.32.5,requests-file==1.5.1,roman-numerals==4.1.0,roman-numerals-py==4.1.0,seqdiag==3.0.0,setuptools==80.9.0,six==1.17.0,snowballstemmer==3.0.1,Sphinx==8.2.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-tabs==3.4.7,sphinx_rtd_theme==3.1.0,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.31,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.6.3,webcolors==25.10.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==25.4.0,babel==2.17.0,blockdiag==3.0.0,certifi==2026.1.4,charset-normalizer==3.4.4,contourpy==1.3.3,cycler==0.12.1,docutils==0.21.2,fonttools==4.61.1,funcparserlib==2.0.0a0,future==1.0.0,idna==3.11,imagesize==1.4.1,Jinja2==3.1.6,jsonschema==3.2.0,kiwisolver==1.4.9,lfdocs_conf==0.10.0,MarkupSafe==3.0.3,matplotlib==3.10.8,numpy==2.4.1,nwdiag==3.0.0,packaging==26.0,pillow==12.1.0,pip==25.3,Pygments==2.19.2,pyparsing==3.3.2,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.3,requests==2.32.5,requests-file==1.5.1,roman-numerals==4.1.0,roman-numerals-py==4.1.0,seqdiag==3.0.0,setuptools==80.9.0,six==1.17.0,snowballstemmer==3.0.1,Sphinx==8.2.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-tabs==3.4.7,sphinx_rtd_theme==3.1.0,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.31,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.6.3,webcolors==25.10.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 29.35 seconds pylint: install_deps> python -I -m pip install 'pylint>=2.6.0' docs-linkcheck: OK ✔ in 30.83 seconds pylint: freeze> python -m pip freeze --all pylint: astroid==4.0.3,dill==0.4.1,isort==7.0.0,mccabe==0.7.0,pip==25.3,platformdirs==4.5.1,pylint==4.0.4,setuptools==80.9.0,tomlkit==0.14.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}$' '{}' + trim trailing whitespace.................................................Passed Tabs remover.............................................................Passed autopep8.................................................................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 ------------------------------------ Your code has been rated at 10.00/10 pre-commit: OK ✔ in 44.86 seconds pylint: OK ✔ in 28.94 seconds buildcontroller: OK ✔ in 2 minutes 10.96 seconds 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 build_karaf_tests190: 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: 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_tests121: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 build_karaf_tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh build karaf in karaf121 with ./karaf121.env build_karaf_tests221: freeze> python -m pip freeze --all NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable build_karaf_tests221: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 build_karaf_tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh build karaf in karaf221 with ./karaf221.env NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable build_karaf_tests190: freeze> python -m pip freeze --all build_karaf_tests71: freeze> python -m pip freeze --all build_karaf_tests190: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 build_karaf_tests190: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh build karaf in karafoc with ./karafoc.env build_karaf_tests71: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 build_karaf_tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh build karaf in karaf71 with ./karaf71.env NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable build_karaf_tests121: OK ✔ in 1 minute 14.62 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 build_karaf_tests221: OK ✔ in 1 minute 22.37 seconds 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 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:3.1.4:install (default-install) on project transportpce-karaf: Failed to install metadata org.opendaylight.transportpce:transportpce-karaf:13.0.0-SNAPSHOT/maven-metadata.xml: Could not read metadata /home/jenkins/.m2/repository/org/opendaylight/transportpce/transportpce-karaf/13.0.0-SNAPSHOT/maven-metadata-local.xml: input contained no data -> [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/MojoExecutionException build_karaf_tests190: OK ✔ in 1 minute 30.52 seconds build_karaf_tests71: OK ✔ in 1 minute 30.53 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 buildlighty: freeze> python -m pip freeze --all sims: freeze> python -m pip freeze --all buildlighty: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 buildlighty: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED sims: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 sims: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_lightynode.sh Using lighynode version 20.1.0.5 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory sims: OK ✔ in 22.16 seconds buildlighty: OK ✔ in 47.7 seconds testsPCE: freeze> python -m pip freeze --all testsPCE: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,click==8.3.1,contourpy==1.3.3,cryptography==3.3.2,cycler==0.12.1,dict2xml==1.7.8,Flask==2.1.3,Flask-Injector==0.14.0,fonttools==4.61.1,gnpy4tpce==2.4.7,idna==3.11,iniconfig==2.3.0,injector==0.24.0,invoke==2.2.1,itsdangerous==2.2.0,Jinja2==3.1.6,kiwisolver==1.4.9,lxml==6.0.2,MarkupSafe==3.0.3,matplotlib==3.10.8,netconf-client==3.5.0,networkx==2.8.8,numpy==1.26.4,packaging==26.0,pandas==1.5.3,paramiko==4.0.0,pbr==5.11.1,pillow==12.1.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pyparsing==3.3.2,pytest==9.0.2,python-dateutil==2.9.0.post0,pytz==2025.2,requests==2.32.5,scipy==1.17.0,setuptools==50.3.2,six==1.17.0,urllib3==2.6.3,Werkzeug==2.0.3,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 110.72s (0:01:50) pytest -q transportpce_tests/pce/test02_pce_400G.py ............ [100%] 12 passed in 46.68s pytest -q transportpce_tests/pce/test03_gnpy.py ........ [100%] 8 passed in 38.16s pytest -q transportpce_tests/pce/test04_pce_bug_fix.py ... [100%] 3 passed in 36.15s testsPCE: OK ✔ in 4 minutes 49.7 seconds tests190: 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_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 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 tests190: freeze> python -m pip freeze --all tests121: freeze> python -m pip freeze --all tests_tapi: freeze> python -m pip freeze --all tests190: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 tests190: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh oc using environment variables from ./karafoc.env pytest -q transportpce_tests/oc/test01_portmapping.py tests121: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 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 tests_tapi: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 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 ........... [100%] 10 passed in 80.09s (0:01:20) pytest -q transportpce_tests/oc/test02_topology.py .................................... [100%] 21 passed in 128.06s (0:02:08) pytest -q transportpce_tests/1.2.1/test02_topo_portmapping.py ........................ [100%] 14 passed in 66.72s (0:01:06) pytest -q transportpce_tests/oc/test03_renderer.py ................ [100%] 6 passed in 57.68s pytest -q transportpce_tests/1.2.1/test03_topology.py .................... [100%] 19 passed in 58.26s tests190: OK ✔ in 3 minutes 36.48 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==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 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 55.94s pytest -q transportpce_tests/7.1/test02_otn_renderer.py ............................... [100%] 51 passed in 314.51s (0:05:14) pytest -q transportpce_tests/tapi/test02_full_topology.py ...................... [100%] 44 passed in 151.95s (0:02:31) pytest -q transportpce_tests/1.2.1/test04_renderer_service_path_nominal.py ............................................................................... [100%] 62 passed in 157.98s (0:02:37) pytest -q transportpce_tests/7.1/test03_renderer_or_modes.py .. [100%] 24 passed in 93.12s (0:01:33) pytest -q transportpce_tests/1.2.1/test05_olm.py ..FF...........F............................F....F....................................................... [100%] 40 passed in 199.97s (0:03:19) pytest -q transportpce_tests/1.2.1/test06_end2end.py . [100%] =================================== FAILURES =================================== _ TestTransportPCEFullTopology.test_18a_get_tapi_Pht_node_details_at_Pht_Service_creation _ self = def test_18a_get_tapi_Pht_node_details_at_Pht_Service_creation(self): response = test_utils.get_tapi_topology_node( test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1OTS, "nonconfig") time.sleep(2) self.assertEqual(response['status_code'], requests.codes.ok) input_dict_1 = {"spectrum-capability-pac": {"occupied-spectrum": [{"upper-frequency": "196125000000000", "lower-frequency": "196075000000000"}], "supportable-spectrum": [{"upper-frequency": "196125000000000", "lower-frequency": "191325000000000"}]} } self.assertDictEqual(dict(input_dict_1, **response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']), response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']) self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'eNodeEdgePoint') self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1') self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '100.0') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '100.0') self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '100.0') self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] ['client-node-edge-point'][0]['node-edge-point-uuid'], 'f32f5e9e-d167-31ba-a9e4-8f1efdb8786d') self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] ['parent-node-edge-point']['node-edge-point-uuid'], '21efd6a4-2d81-3cdb-aabb-b983fb61904e') response = test_utils.get_tapi_topology_node( test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1OTSi, "nonconfig") time.sleep(2) self.assertDictEqual(dict(input_dict_1, **response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']), response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']) self.assertEqual(response['status_code'], requests.codes.ok) self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'PhotMedNodeEdgePoint') self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+OTSi_MEDIA_CHANNEL+XPDR1-NETWORK1') self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '100.0') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '100.0') self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '100.0') > self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ['client-node-edge-point'][0]['node-edge-point-uuid'], '7d2a0549-63e3-3c7f-b4dc-5653e8a81dbe') E KeyError: 'tapi-connectivity:cep-list' transportpce_tests/tapi/test02_full_topology.py:428: KeyError _ TestTransportPCEFullTopology.test_18b_get_tapi_OTN_node_details_at_Pht_Service_creation _ self = def test_18b_get_tapi_OTN_node_details_at_Pht_Service_creation(self): response = test_utils.get_tapi_topology_node( test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1iODU, "nonconfig") time.sleep(2) self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'iNodeEdgePoint_N') self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+iODU+XPDR1-NETWORK1') self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '100.0') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '100.0') self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '100.0') response = test_utils.get_tapi_topology_node(test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1eODUC1, "nonconfig") time.sleep(2) self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'eNodeEdgePoint_N') self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1') self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '10.0') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '10.0') self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '10.0') > self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ['parent-node-edge-point']['node-edge-point-uuid'], '72c6b97a-3944-3d88-9882-b7e688bb2772') E KeyError: 'tapi-connectivity:cep-list' transportpce_tests/tapi/test02_full_topology.py:478: KeyError _ TestTransportPCEFullTopology.test_20_get_tapi_node_details_at_ODU_Service_creation _ self = def test_20_get_tapi_node_details_at_ODU_Service_creation(self): # ODU service creation correspond to the creation of HO-ODU between 2 Network ports and is associated an # iODU4 top connection which uses 100% of underlying OTU4 response = test_utils.get_tapi_topology_node(test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1eODUC1, "nonconfig") time.sleep(2) self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1') self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '10.0') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '10.0') self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '10.0') > self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ['client-node-edge-point'][0]['node-edge-point-uuid'], 'c6cd334c-51a1-3995-bed3-5cf2b7445c04') E KeyError: 'tapi-connectivity:cep-list' transportpce_tests/tapi/test02_full_topology.py:545: KeyError _ TestTransportPCEFullTopology.test_23_get_tapi_node_details_at_DSR_Service_creation _ self = def test_23_get_tapi_node_details_at_DSR_Service_creation(self): response = test_utils.get_tapi_topology_node(test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1eODUC1, "nonconfig") time.sleep(2) self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1') self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') > self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '0') E AssertionError: '1' != '0' E - 1 E + 0 transportpce_tests/tapi/test02_full_topology.py:663: AssertionError ______ TestTransportPCEFullTopology.test_25_get_connectivity_service_list ______ self = def test_25_get_connectivity_service_list(self): response = test_utils.transportpce_api_rpc_request( 'tapi-connectivity', 'get-connectivity-service-list', None) self.assertEqual(response['status_code'], requests.codes.ok) liste_service = response['output']['service'] for ele in liste_service: if ele['uuid'] == self.uuid_services.pm: self.assertEqual(ele['operational-state'], 'ENABLED') # self.assertEqual(ele['service-layer'], 'PHOTONIC_MEDIA') self.assertEqual(ele['layer-protocol-name'], 'PHOTONIC_MEDIA') nbconnection = len(ele['connection']) self.assertEqual(nbconnection, 4, 'There should be 4 connections') elif ele['uuid'] == self.uuid_services.odu: > self.assertEqual(ele['operational-state'], 'ENABLED') E AssertionError: 'DISABLED' != 'ENABLED' E - DISABLED E + ENABLED transportpce_tests/tapi/test02_full_topology.py:714: AssertionError =========================== short test summary info ============================ FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_18a_get_tapi_Pht_node_details_at_Pht_Service_creation FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_18b_get_tapi_OTN_node_details_at_Pht_Service_creation FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_20_get_tapi_node_details_at_ODU_Service_creation FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_23_get_tapi_node_details_at_DSR_Service_creation FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_25_get_connectivity_service_list 5 failed, 31 passed in 324.00s (0:05:23) tests_tapi: exit 1 (639.16 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi pid=6831 tests_tapi: FAIL ✖ in 10 minutes 49.63 seconds tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests221: freeze> python -m pip freeze --all tests221: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 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 ............F. [100%] 48 passed in 354.12s (0:05:54) pytest -q transportpce_tests/7.1/test04_renderer_regen_mode.py ..........F.......FFFF..............................E.. [100%] =================================== FAILURES =================================== __________ TestTransportPCEPortmapping.test_01_rdm_device_connection ___________ self = conn = method = 'PUT' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1' body = '{"node": [{"node-id": "ROADM-A1", "netconf-node-topology:netconf-node": {"netconf-node-topology:host": "127.0.0.1", "...ff-millis": 1800000, "netconf-node-topology:backoff-multiplier": 1.5, "netconf-node-topology:keepalive-delay": 120}}]}' headers = {'User-Agent': 'python-requests/2.32.5', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '710', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) timeout = Timeout(connect=30, read=30, total=None), chunked = False response_conn = preload_content = False, decode_content = False, enforce_content_length = True def _make_request( self, conn: BaseHTTPConnection, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | None = None, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, chunked: bool = False, response_conn: BaseHTTPConnection | None = None, preload_content: bool = True, decode_content: bool = True, enforce_content_length: bool = True, ) -> BaseHTTPResponse: """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param response_conn: Set this to ``None`` if you will handle releasing the connection or set the connection to have the response release it. :param preload_content: If True, the response's body will be preloaded during construction. :param decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param enforce_content_length: Enforce content length checking. Body returned by server must match value of Content-Length header, if present. Otherwise, raise error. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) try: # Trigger any extra validation we need to do. try: self._validate_conn(conn) except (SocketTimeout, BaseSSLError) as e: self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) raise # _validate_conn() starts the connection to an HTTPS proxy # so we need to wrap errors with 'ProxyError' here too. except ( OSError, NewConnectionError, TimeoutError, BaseSSLError, CertificateError, SSLError, ) as e: new_e: Exception = e if isinstance(e, (BaseSSLError, CertificateError)): new_e = SSLError(e) # If the connection didn't successfully connect to it's proxy # then there if isinstance( new_e, (OSError, NewConnectionError, TimeoutError, SSLError) ) and (conn and conn.proxy and not conn.has_connected_to_proxy): new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) raise new_e # conn.request() calls http.client.*.request, not the method in # urllib3.request. It also calls makefile (recv) on the socket. try: conn.request( method, url, body=body, headers=headers, chunked=chunked, preload_content=preload_content, decode_content=decode_content, enforce_content_length=enforce_content_length, ) # We are swallowing BrokenPipeError (errno.EPIPE) since the server is # legitimately able to close the connection after sending a valid response. # With this behaviour, the received response is still readable. except BrokenPipeError: pass except OSError as e: # MacOS/Linux # EPROTOTYPE and ECONNRESET are needed on macOS # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: raise # Reset the timeout for the recv() on the socket read_timeout = timeout_obj.read_timeout if not conn.is_closed: # In Python 3 socket.py will catch EAGAIN and return None when you # try and read into the file pointer created by http.client, which # instead raises a BadStatusLine exception. Instead of catching # the exception and assuming all BadStatusLine exceptions are read # timeouts, check for a zero timeout before making the request. if read_timeout == 0: raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={read_timeout})" ) conn.timeout = read_timeout # Receive the response from the server try: > response = conn.getresponse() ^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:534: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connection.py:571: in getresponse httplib_response = super().getresponse() ^^^^^^^^^^^^^^^^^^^^^ /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1395: in getresponse response.begin() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:325: in begin version, status, reason = self._read_status() ^^^^^^^^^^^^^^^^^^^ /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:286: in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = b = def readinto(self, b): """Read up to len(b) bytes into the writable buffer *b* and return the number of bytes read. If the socket is non-blocking and no bytes are available, None is returned. If *b* is non-empty, a 0 return value indicates that the connection was shutdown at the other end. """ self._checkClosed() self._checkReadable() if self._timeout_occurred: raise OSError("cannot read from timed out object") while True: try: > return self._sock.recv_into(b) ^^^^^^^^^^^^^^^^^^^^^^^ E TimeoutError: timed out /opt/pyenv/versions/3.11.10/lib/python3.11/socket.py:718: TimeoutError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=30, read=30, 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/tests221/lib/python3.11/site-packages/requests/adapters.py:644: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:841: in urlopen retries = retries.increment( ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/retry.py:490: in increment raise reraise(type(error), error, _stacktrace) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/util.py:39: in reraise raise value ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:787: in urlopen response = self._make_request( ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:536: in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TimeoutError('timed out') url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1' timeout_value = 30 def _raise_timeout( self, err: BaseSSLError | OSError | SocketTimeout, url: str, timeout_value: _TYPE_TIMEOUT | None, ) -> None: """Is the error actually a timeout? Will raise a ReadTimeout or pass""" if isinstance(err, SocketTimeout): > raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={timeout_value})" ) from err E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:367: ReadTimeoutError During handling of the above exception, another exception occurred: self = def test_01_rdm_device_connection(self): > response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ transportpce_tests/2.2.1/test01_portmapping.py:51: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:376: in mount_device response = put_request(url[RESTCONF_VERSION].format('{}', node), body) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ transportpce_tests/common/test_utils.py:125: in put_request return requests.request( ../.tox/tests221/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=30, read=30, 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) except ClosedPoolError as e: raise ConnectionError(e, request=request) except _ProxyError as e: raise ProxyError(e) except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): > raise ReadTimeout(e, request=request) E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:690: ReadTimeout ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF (karaf221) TransportPCE build... Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! starting simulator xpdra in OpenROADM device version 2.2.1... Searching for patterns in xpdra-221.log... Pattern found! simulator for xpdra started starting simulator roadma in OpenROADM device version 2.2.1... Searching for patterns in roadma-221.log... Pattern found! simulator for roadma started starting simulator spdra in OpenROADM device version 2.2.1... Searching for patterns in spdra-221.log... Pattern found! simulator for spdra started ----------------------------- Captured stdout call ----------------------------- execution of test_01_rdm_device_connection ___________ TestTransportPCEPortmapping.test_02_rdm_device_connected ___________ self = conn = method = 'GET' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1?content=nonconfig' body = None headers = {'User-Agent': 'python-requests/2.32.5', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) timeout = Timeout(connect=30, read=30, total=None), chunked = False response_conn = preload_content = False, decode_content = False, enforce_content_length = True def _make_request( self, conn: BaseHTTPConnection, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | None = None, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, chunked: bool = False, response_conn: BaseHTTPConnection | None = None, preload_content: bool = True, decode_content: bool = True, enforce_content_length: bool = True, ) -> BaseHTTPResponse: """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param response_conn: Set this to ``None`` if you will handle releasing the connection or set the connection to have the response release it. :param preload_content: If True, the response's body will be preloaded during construction. :param decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param enforce_content_length: Enforce content length checking. Body returned by server must match value of Content-Length header, if present. Otherwise, raise error. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) try: # Trigger any extra validation we need to do. try: self._validate_conn(conn) except (SocketTimeout, BaseSSLError) as e: self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) raise # _validate_conn() starts the connection to an HTTPS proxy # so we need to wrap errors with 'ProxyError' here too. except ( OSError, NewConnectionError, TimeoutError, BaseSSLError, CertificateError, SSLError, ) as e: new_e: Exception = e if isinstance(e, (BaseSSLError, CertificateError)): new_e = SSLError(e) # If the connection didn't successfully connect to it's proxy # then there if isinstance( new_e, (OSError, NewConnectionError, TimeoutError, SSLError) ) and (conn and conn.proxy and not conn.has_connected_to_proxy): new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) raise new_e # conn.request() calls http.client.*.request, not the method in # urllib3.request. It also calls makefile (recv) on the socket. try: conn.request( method, url, body=body, headers=headers, chunked=chunked, preload_content=preload_content, decode_content=decode_content, enforce_content_length=enforce_content_length, ) # We are swallowing BrokenPipeError (errno.EPIPE) since the server is # legitimately able to close the connection after sending a valid response. # With this behaviour, the received response is still readable. except BrokenPipeError: pass except OSError as e: # MacOS/Linux # EPROTOTYPE and ECONNRESET are needed on macOS # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: raise # Reset the timeout for the recv() on the socket read_timeout = timeout_obj.read_timeout if not conn.is_closed: # In Python 3 socket.py will catch EAGAIN and return None when you # try and read into the file pointer created by http.client, which # instead raises a BadStatusLine exception. Instead of catching # the exception and assuming all BadStatusLine exceptions are read # timeouts, check for a zero timeout before making the request. if read_timeout == 0: raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={read_timeout})" ) conn.timeout = read_timeout # Receive the response from the server try: > response = conn.getresponse() ^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:534: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connection.py:571: in getresponse httplib_response = super().getresponse() ^^^^^^^^^^^^^^^^^^^^^ /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1395: in getresponse response.begin() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:325: in begin version, status, reason = self._read_status() ^^^^^^^^^^^^^^^^^^^ /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:286: in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = b = def readinto(self, b): """Read up to len(b) bytes into the writable buffer *b* and return the number of bytes read. If the socket is non-blocking and no bytes are available, None is returned. If *b* is non-empty, a 0 return value indicates that the connection was shutdown at the other end. """ self._checkClosed() self._checkReadable() if self._timeout_occurred: raise OSError("cannot read from timed out object") while True: try: > return self._sock.recv_into(b) ^^^^^^^^^^^^^^^^^^^^^^^ E TimeoutError: timed out /opt/pyenv/versions/3.11.10/lib/python3.11/socket.py:718: TimeoutError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=30, read=30, 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/tests221/lib/python3.11/site-packages/requests/adapters.py:644: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:841: in urlopen retries = retries.increment( ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/retry.py:490: in increment raise reraise(type(error), error, _stacktrace) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/util.py:39: in reraise raise value ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:787: in urlopen response = self._make_request( ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:536: in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TimeoutError('timed out') url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1?content=nonconfig' timeout_value = 30 def _raise_timeout( self, err: BaseSSLError | OSError | SocketTimeout, url: str, timeout_value: _TYPE_TIMEOUT | None, ) -> None: """Is the error actually a timeout? Will raise a ReadTimeout or pass""" if isinstance(err, SocketTimeout): > raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={timeout_value})" ) from err E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:367: ReadTimeoutError During handling of the above exception, another exception occurred: self = def test_02_rdm_device_connected(self): > response = test_utils.check_device_connection("ROADM-A1") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ transportpce_tests/2.2.1/test01_portmapping.py:55: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:404: in check_device_connection response = get_request(url[RESTCONF_VERSION].format('{}', node)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ transportpce_tests/common/test_utils.py:117: in get_request return requests.request( ../.tox/tests221/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=30, read=30, 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) except ClosedPoolError as e: raise ConnectionError(e, request=request) except _ProxyError as e: raise ProxyError(e) except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): > raise ReadTimeout(e, request=request) E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:690: ReadTimeout ----------------------------- Captured stdout call ----------------------------- execution of test_02_rdm_device_connected ___________ TestTransportPCEPortmapping.test_03_rdm_portmapping_info ___________ self = conn = method = 'GET' url = '/rests/data/transportpce-portmapping:network/nodes=ROADM-A1/node-info' body = None headers = {'User-Agent': 'python-requests/2.32.5', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) timeout = Timeout(connect=30, read=30, total=None), chunked = False response_conn = preload_content = False, decode_content = False, enforce_content_length = True def _make_request( self, conn: BaseHTTPConnection, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | None = None, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, chunked: bool = False, response_conn: BaseHTTPConnection | None = None, preload_content: bool = True, decode_content: bool = True, enforce_content_length: bool = True, ) -> BaseHTTPResponse: """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param response_conn: Set this to ``None`` if you will handle releasing the connection or set the connection to have the response release it. :param preload_content: If True, the response's body will be preloaded during construction. :param decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param enforce_content_length: Enforce content length checking. Body returned by server must match value of Content-Length header, if present. Otherwise, raise error. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) try: # Trigger any extra validation we need to do. try: self._validate_conn(conn) except (SocketTimeout, BaseSSLError) as e: self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) raise # _validate_conn() starts the connection to an HTTPS proxy # so we need to wrap errors with 'ProxyError' here too. except ( OSError, NewConnectionError, TimeoutError, BaseSSLError, CertificateError, SSLError, ) as e: new_e: Exception = e if isinstance(e, (BaseSSLError, CertificateError)): new_e = SSLError(e) # If the connection didn't successfully connect to it's proxy # then there if isinstance( new_e, (OSError, NewConnectionError, TimeoutError, SSLError) ) and (conn and conn.proxy and not conn.has_connected_to_proxy): new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) raise new_e # conn.request() calls http.client.*.request, not the method in # urllib3.request. It also calls makefile (recv) on the socket. try: conn.request( method, url, body=body, headers=headers, chunked=chunked, preload_content=preload_content, decode_content=decode_content, enforce_content_length=enforce_content_length, ) # We are swallowing BrokenPipeError (errno.EPIPE) since the server is # legitimately able to close the connection after sending a valid response. # With this behaviour, the received response is still readable. except BrokenPipeError: pass except OSError as e: # MacOS/Linux # EPROTOTYPE and ECONNRESET are needed on macOS # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: raise # Reset the timeout for the recv() on the socket read_timeout = timeout_obj.read_timeout if not conn.is_closed: # In Python 3 socket.py will catch EAGAIN and return None when you # try and read into the file pointer created by http.client, which # instead raises a BadStatusLine exception. Instead of catching # the exception and assuming all BadStatusLine exceptions are read # timeouts, check for a zero timeout before making the request. if read_timeout == 0: raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={read_timeout})" ) conn.timeout = read_timeout # Receive the response from the server try: > response = conn.getresponse() ^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:534: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connection.py:571: in getresponse httplib_response = super().getresponse() ^^^^^^^^^^^^^^^^^^^^^ /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1395: in getresponse response.begin() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:325: in begin version, status, reason = self._read_status() ^^^^^^^^^^^^^^^^^^^ /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:286: in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = b = def readinto(self, b): """Read up to len(b) bytes into the writable buffer *b* and return the number of bytes read. If the socket is non-blocking and no bytes are available, None is returned. If *b* is non-empty, a 0 return value indicates that the connection was shutdown at the other end. """ self._checkClosed() self._checkReadable() if self._timeout_occurred: raise OSError("cannot read from timed out object") while True: try: > return self._sock.recv_into(b) ^^^^^^^^^^^^^^^^^^^^^^^ E TimeoutError: timed out /opt/pyenv/versions/3.11.10/lib/python3.11/socket.py:718: TimeoutError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=30, read=30, 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/tests221/lib/python3.11/site-packages/requests/adapters.py:644: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:841: in urlopen retries = retries.increment( ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/retry.py:490: in increment raise reraise(type(error), error, _stacktrace) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/util.py:39: in reraise raise value ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:787: in urlopen response = self._make_request( ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:536: in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TimeoutError('timed out') url = '/rests/data/transportpce-portmapping:network/nodes=ROADM-A1/node-info' timeout_value = 30 def _raise_timeout( self, err: BaseSSLError | OSError | SocketTimeout, url: str, timeout_value: _TYPE_TIMEOUT | None, ) -> None: """Is the error actually a timeout? Will raise a ReadTimeout or pass""" if isinstance(err, SocketTimeout): > raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={timeout_value})" ) from err E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:367: ReadTimeoutError During handling of the above exception, another exception occurred: self = def test_03_rdm_portmapping_info(self): > response = test_utils.get_portmapping_node_attr("ROADM-A1", "node-info", None) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ transportpce_tests/2.2.1/test01_portmapping.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:514: in get_portmapping_node_attr response = get_request(target_url) ^^^^^^^^^^^^^^^^^^^^^^^ transportpce_tests/common/test_utils.py:117: in get_request return requests.request( ../.tox/tests221/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=30, read=30, 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) except ClosedPoolError as e: raise ConnectionError(e, request=request) except _ProxyError as e: raise ProxyError(e) except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): > raise ReadTimeout(e, request=request) E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:690: ReadTimeout ----------------------------- Captured stdout call ----------------------------- execution of test_03_rdm_portmapping_info ______ TestTransportPCEPortmapping.test_04_rdm_portmapping_DEG1_TTP_TXRX _______ self = def test_04_rdm_portmapping_DEG1_TTP_TXRX(self): response = test_utils.get_portmapping_node_attr("ROADM-A1", "mapping", "DEG1-TTP-TXRX") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/2.2.1/test01_portmapping.py:73: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_04_rdm_portmapping_DEG1_TTP_TXRX _ TestTransportPCEPortmapping.test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms _ self = def test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms(self): response = test_utils.get_portmapping_node_attr("ROADM-A1", "mapping", "DEG2-TTP-TXRX") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/2.2.1/test01_portmapping.py:82: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms ______ TestTransportPCEPortmapping.test_06_rdm_portmapping_SRG1_PP3_TXRX _______ self = def test_06_rdm_portmapping_SRG1_PP3_TXRX(self): response = test_utils.get_portmapping_node_attr("ROADM-A1", "mapping", "SRG1-PP3-TXRX") > self.assertEqual(response['status_code'], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/2.2.1/test01_portmapping.py:93: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_06_rdm_portmapping_SRG1_PP3_TXRX =========================== short test summary info ============================ FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_01_rdm_device_connection FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_02_rdm_device_connected FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_03_rdm_portmapping_info FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_04_rdm_portmapping_DEG1_TTP_TXRX FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_06_rdm_portmapping_SRG1_PP3_TXRX 6 failed, 29 passed in 239.58s (0:03:59) tests221: exit 1 (240.08 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 pid=19442 tests221: FAIL ✖ in 4 minutes 9.36 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 .....Ftests_hybrid: freeze> python -m pip freeze --all tests_hybrid: bcrypt==5.0.0,certifi==2026.1.4,cffi==2.0.0,charset-normalizer==3.4.4,cryptography==46.0.3,dict2xml==1.7.8,idna==3.11,iniconfig==2.3.0,invoke==2.2.1,lxml==6.0.2,netconf-client==3.5.0,packaging==26.0,paramiko==4.0.0,pip==25.3,pluggy==1.6.0,psutil==7.2.1,pycparser==3.0,Pygments==2.19.2,PyNaCl==1.6.2,pytest==9.0.2,requests==2.32.5,setuptools==80.9.0,urllib3==2.6.3 tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid using environment variables from ./karaf221.env pytest -q transportpce_tests/hybrid/test01_device_change_notifications.py FFFFF.F..F.FFFF..FFFF.........E.F.. [100%] ==================================== ERRORS ==================================== _ ERROR at setup of TestTransportPCERendererRegenMode.test_01_xpdr_device_connection _ cls = @classmethod def setUpClass(cls): > cls.processes = test_utils.start_tpce() ^^^^^^^^^^^^^^^^^^^^^^^ transportpce_tests/7.1/test04_renderer_regen_mode.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def start_tpce(): if 'NO_ODL_STARTUP' in os.environ: print('No OpenDaylight instance to start!') return [] print('starting OpenDaylight...') if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': process = start_lighty() else: process = start_karaf() if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): print('OpenDaylight started !') else: print('OpenDaylight failed to start !') shutdown_process(process) for pid in process_list: shutdown_process(pid) > sys.exit(1) E SystemExit: 1 transportpce_tests/common/test_utils.py:232: SystemExit ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF (karaf71) TransportPCE build... Searching for patterns in karaf.log... Pattern not found after 100 seconds! OpenDaylight failed to start ! =================================== FAILURES =================================== __________ TestTransportPCERendererRegenMode.test_02_check_xpdr_type ___________ self = def test_02_check_xpdr_type(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK1") > self.assertEqual(response["status_code"], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test04_renderer_regen_mode.py:92: AssertionError ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF (karaf71) TransportPCE build... Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! starting simulator xpdra2 in OpenROADM device version 7.1... Searching for patterns in xpdra2-71.log... Pattern found! simulator for xpdra2 started ----------------------------- Captured stdout call ----------------------------- execution of test_02_check_xpdr_type __________ TestTransportPCERendererRegenMode.test_03_check_xpdr_type ___________ self = def test_03_check_xpdr_type(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK2") > self.assertEqual(response["status_code"], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test04_renderer_regen_mode.py:103: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_03_check_xpdr_type ___ TestTransportPCERendererRegenMode.test_04_400g_regen_service_path_create ___ self = def test_04_400g_regen_service_path_create(self): response = test_utils.transportpce_api_rpc_request( "transportpce-device-renderer", "service-path", { "service-name": "service_400g_regen", "wave-number": "0", "modulation-format": "dp-qam16", "operation": "create", "nodes": [ { "node-id": "XPDR-A2", "src-tp": "XPDR4-NETWORK1", "dest-tp": "XPDR4-NETWORK2" } ], "center-freq": 195.0, "nmc-width": 75, "mc-width": 87.5, "min-freq": 194.95625, "max-freq": 195.04375, "lower-spectral-slot-number": 582, "higher-spectral-slot-number": 595, }) 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 'XPDR-A2 is not mounted on the controller' transportpce_tests/7.1/test04_renderer_regen_mode.py:134: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_04_400g_regen_service_path_create ______ TestTransportPCERendererRegenMode.test_05_get_portmapping_network1 ______ self = def test_05_get_portmapping_network1(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK1") > self.assertEqual(response["status_code"], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test04_renderer_regen_mode.py:159: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_05_get_portmapping_network1 ______ TestTransportPCERendererRegenMode.test_06_get_portmapping_network1 ______ self = def test_06_get_portmapping_network1(self): response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK2") > self.assertEqual(response["status_code"], requests.codes.ok) E AssertionError: 409 != 200 transportpce_tests/7.1/test04_renderer_regen_mode.py:172: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_06_get_portmapping_network1 _______ TestTransportPCERendererRegenMode.test_07_check_interface_oduc4 ________ self = def test_07_check_interface_oduc4(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK1-ODUC4") > self.assertEqual(response["status_code"], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/7.1/test04_renderer_regen_mode.py:188: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_07_check_interface_oduc4 _______ TestTransportPCERendererRegenMode.test_08_check_interface_oduc4 ________ self = def test_08_check_interface_oduc4(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK2-ODUC4") > self.assertEqual(response["status_code"], requests.codes.ok) E AssertionError: 503 != 200 transportpce_tests/7.1/test04_renderer_regen_mode.py:211: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_08_check_interface_oduc4 _____ TestTransportPCERendererRegenMode.test_09_service_path_delete_regen ______ self = def test_09_service_path_delete_regen(self): response = test_utils.transportpce_api_rpc_request( "transportpce-device-renderer", "service-path", { "modulation-format": "dp-qam16", "operation": "delete", "service-name": "test1_regen", "wave-number": "0", "center-freq": 195.0, "nmc-width": 75, "mc-width": 87.5, "min-freq": 194.95625, "max-freq": 195.04375, "lower-spectral-slot-number": 582, "higher-spectral-slot-number": 595, "nodes": [ { "node-id": "XPDR-A2", "src-tp": "XPDR4-NETWORK1", "dest-tp": "XPDR4-NETWORK2" } ] }) self.assertEqual(response["status_code"], requests.codes.ok) > self.assertIn("Request processed", response["output"]["result"]) E AssertionError: 'Request processed' not found in 'XPDR-A2 is not mounted on the controller' transportpce_tests/7.1/test04_renderer_regen_mode.py:257: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_09_service_path_delete_regen ______ TestTransportPCERendererRegenMode.test_10_check_no_interface_oduc4 ______ self = def test_10_check_no_interface_oduc4(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK1-ODUC4") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:262: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_10_check_no_interface_oduc4 ______ TestTransportPCERendererRegenMode.test_11_check_no_interface_oduc4 ______ self = def test_11_check_no_interface_oduc4(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK2-ODUC4") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:267: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_11_check_no_interface_oduc4 ______ TestTransportPCERendererRegenMode.test_12_check_no_interface_otuc4 ______ self = def test_12_check_no_interface_otuc4(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK1-OTUC1") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:272: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_12_check_no_interface_otuc4 ______ TestTransportPCERendererRegenMode.test_13_check_no_interface_otuc4 ______ self = def test_13_check_no_interface_otuc4(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK2-OTUC1") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:277: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_13_check_no_interface_otuc4 ______ TestTransportPCERendererRegenMode.test_16_check_no_interface_otsig ______ self = def test_16_check_no_interface_otsig(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK1-OTSIGROUP-400G") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:291: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_16_check_no_interface_otsig ______ TestTransportPCERendererRegenMode.test_17_check_no_interface_otsig ______ self = def test_17_check_no_interface_otsig(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK2-OTSIGROUP-400G") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:296: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_17_check_no_interface_otsig ______ TestTransportPCERendererRegenMode.test_18_check_no_interface_otsi _______ self = def test_18_check_no_interface_otsi(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK1-582:595") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:301: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_18_check_no_interface_otsi ______ TestTransportPCERendererRegenMode.test_19_check_no_interface_otsi _______ self = def test_19_check_no_interface_otsi(self): response = test_utils.check_node_attribute_request( "XPDR-A2", "interface", "XPDR4-NETWORK2-582:595") > self.assertEqual(response["status_code"], requests.codes.conflict) E AssertionError: 503 != 409 transportpce_tests/7.1/test04_renderer_regen_mode.py:306: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_19_check_no_interface_otsi _____ TestTransportPCERendererRegenMode.test_20_xpdr_device_disconnection ______ self = def test_20_xpdr_device_disconnection(self): response = test_utils.unmount_device("XPDR-A2") > self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) E AssertionError: 409 not found in (200, 204) transportpce_tests/7.1/test04_renderer_regen_mode.py:311: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_20_xpdr_device_disconnection Searching for patterns in karaf.log... Pattern not found after 180 seconds! Node XPDR-A2 still not deleted from tpce topology... =========================== short test summary info ============================ FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_02_check_xpdr_type FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_03_check_xpdr_type FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_04_400g_regen_service_path_create FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_05_get_portmapping_network1 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_06_get_portmapping_network1 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_07_check_interface_oduc4 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_08_check_interface_oduc4 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_09_service_path_delete_regen FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_10_check_no_interface_oduc4 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_11_check_no_interface_oduc4 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_12_check_no_interface_otuc4 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_13_check_no_interface_otuc4 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_16_check_no_interface_otsig FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_17_check_no_interface_otsig FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_18_check_no_interface_otsi FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_19_check_no_interface_otsi FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_20_xpdr_device_disconnection ERROR transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_01_xpdr_device_connection 17 failed, 4 passed, 1 error in 352.86s (0:05:52) tests71: exit 1 (922.25 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 pid=12087 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] ==================================== ERRORS ==================================== _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_01_connect_xpdrA _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sims_list = [('xpdra', '1.2.1'), ('roadma', '2.2.1'), ('roadmc', '2.2.1'), ('xpdrc', '7.1')] def start_sims(sims_list): if SIMS_TO_USE == 'None': return None if SIMS_TO_USE == 'honeynode': start_method = start_honeynode else: 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, [HONEYNODE_OK_START_MSG, LIGHTYNODE_OK_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:211: SystemExit ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF (karaf221) TransportPCE build... Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! starting simulator xpdra in OpenROADM device version 1.2.1... Searching for patterns in xpdra-121.log... Pattern not found after 100 seconds! simulator for xpdra failed to start _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_02_connect_xpdrC _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF (karaf221) TransportPCE build... Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! starting simulator xpdra in OpenROADM device version 1.2.1... Searching for patterns in xpdra-121.log... Pattern not found after 100 seconds! simulator for xpdra failed to start _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_03_connect_rdmA _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_04_connect_rdmC _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_05_connect_xpdrA_N1_to_roadmA_PP1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_06_connect_roadmA_PP1_to_xpdrA_N1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_07_connect_xpdrC_N1_to_roadmC_PP1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_08_connect_roadmC_PP1_to_xpdrC_N1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_09_add_omsAttributes_ROADMA_ROADMC _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_10_add_omsAttributes_ROADMC_ROADMA _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_11_create_eth_service1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_12_get_eth_service1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_13_change_status_line_port_xpdra _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_14_check_update_portmapping _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_15_check_update_openroadm_topo _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_16_check_update_service1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_17_restore_status_line_port_xpdra _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_18_check_update_portmapping_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_19_check_update_openroadm_topo_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_20_check_update_service1_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_21_change_status_port_roadma_srg _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_22_check_update_portmapping _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_23_check_update_openroadm_topo _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_24_restore_status_port_roadma_srg _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_25_check_update_portmapping_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_26_check_update_openroadm_topo_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_27_check_update_service1_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_28_change_status_line_port_roadma_deg _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_29_check_update_portmapping _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_30_check_update_openroadm_topo _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_31_restore_status_line_port_roadma_srg _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_32_check_update_portmapping_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_33_check_update_openroadm_topo_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_34_check_update_service1_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_35_change_status_line_port_xpdrc _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_36_check_update_portmapping _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_37_check_update_openroadm_topo _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_38_restore_status_line_port_xpdrc _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_39_check_update_portmapping_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_40_check_update_openroadm_topo_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_41_check_update_service1_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_42_change_status_port_roadma_srg _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_43_check_update_portmapping _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_44_check_update_openroadm_topo _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_45_check_update_service1_ok _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_46_delete_eth_service1 _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_47_disconnect_xponders_from_roadm _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_48_disconnect_XPDRA _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_49_disconnect_XPDRC _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_50_disconnect_ROADMA _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_51_disconnect_ROADMC _ cls = @classmethod def setUpClass(cls): cls.processes = test_utils.start_tpce() > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), ('roadma', cls.NODE_VERSION_221), ('roadmc', cls.NODE_VERSION_221), ('xpdrc', cls.NODE_VERSION_71)]) transportpce_tests/hybrid/test01_device_change_notifications.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:210: in start_sims shutdown_process(pid) transportpce_tests/common/test_utils.py:286: in shutdown_process for child in psutil.Process(process.pid).children(): ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ self._init(pid) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = psutil.Process(pid=22334, status='terminated'), pid = 22334 _ignore_nsp = False def _init(self, pid, _ignore_nsp=False): if pid is None: pid = os.getpid() else: if pid < 0: msg = f"pid must be a positive integer (got {pid})" raise ValueError(msg) try: _psplatform.cext.check_pid_range(pid) except OverflowError as err: msg = "process PID out of range" raise NoSuchProcess(pid, msg=msg) from err 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) from None E psutil.NoSuchProcess: process PID not found (pid=22334) ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess =========================== short test summary info ============================ ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_01_connect_xpdrA ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_02_connect_xpdrC ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_03_connect_rdmA ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_04_connect_rdmC ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_05_connect_xpdrA_N1_to_roadmA_PP1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_06_connect_roadmA_PP1_to_xpdrA_N1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_07_connect_xpdrC_N1_to_roadmC_PP1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_08_connect_roadmC_PP1_to_xpdrC_N1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_09_add_omsAttributes_ROADMA_ROADMC ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_10_add_omsAttributes_ROADMC_ROADMA ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_11_create_eth_service1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_12_get_eth_service1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_13_change_status_line_port_xpdra ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_14_check_update_portmapping ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_15_check_update_openroadm_topo ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_16_check_update_service1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_17_restore_status_line_port_xpdra ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_18_check_update_portmapping_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_19_check_update_openroadm_topo_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_20_check_update_service1_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_21_change_status_port_roadma_srg ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_22_check_update_portmapping ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_23_check_update_openroadm_topo ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_24_restore_status_port_roadma_srg ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_25_check_update_portmapping_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_26_check_update_openroadm_topo_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_27_check_update_service1_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_28_change_status_line_port_roadma_deg ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_29_check_update_portmapping ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_30_check_update_openroadm_topo ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_31_restore_status_line_port_roadma_srg ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_32_check_update_portmapping_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_33_check_update_openroadm_topo_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_34_check_update_service1_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_35_change_status_line_port_xpdrc ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_36_check_update_portmapping ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_37_check_update_openroadm_topo ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_38_restore_status_line_port_xpdrc ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_39_check_update_portmapping_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_40_check_update_openroadm_topo_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_41_check_update_service1_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_42_change_status_port_roadma_srg ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_43_check_update_portmapping ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_44_check_update_openroadm_topo ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_45_check_update_service1_ok ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_46_delete_eth_service1 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_47_disconnect_xponders_from_roadm ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_48_disconnect_XPDRA ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_49_disconnect_XPDRC ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_50_disconnect_ROADMA ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_51_disconnect_ROADMC 51 errors in 235.19s (0:03:55) tests71: FAIL ✖ in 15 minutes 29.34 seconds tests_hybrid: exit 1 (235.51 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid pid=22324 ..... [100%] 54 passed in 625.06s (0:10:25) tests_hybrid: FAIL ✖ in 4 minutes 21.58 seconds buildcontroller: OK (130.96=setup[8.64]+cmd[122.32] seconds) sims: OK (22.16=setup[19.01]+cmd[3.15] seconds) build_karaf_tests121: OK (74.62=setup[11.46]+cmd[63.15] seconds) testsPCE: OK (289.70=setup[56.67]+cmd[233.03] seconds) tests121: OK (1269.14=setup[10.40]+cmd[1258.74] seconds) build_karaf_tests221: OK (82.37=setup[11.83]+cmd[70.53] seconds) tests_tapi: FAIL code 1 (649.63=setup[10.48]+cmd[639.16] seconds) tests221: FAIL code 1 (249.36=setup[9.28]+cmd[240.08] seconds) build_karaf_tests71: OK (90.53=setup[12.68]+cmd[77.85] seconds) tests71: FAIL code 1 (929.34=setup[7.09]+cmd[922.25] seconds) build_karaf_tests190: OK (90.52=setup[12.51]+cmd[78.01] seconds) tests190: OK (216.48=setup[10.34]+cmd[206.14] seconds) tests_hybrid: FAIL code 1 (261.58=setup[26.07]+cmd[235.51] seconds) buildlighty: OK (47.70=setup[26.53]+cmd[21.17] seconds) docs: OK (29.35=setup[26.70]+cmd[2.65] seconds) docs-linkcheck: OK (30.83=setup[26.91]+cmd[3.92] seconds) checkbashisms: OK (3.28=setup[2.00]+cmd[0.01,0.05,1.22] seconds) pre-commit: OK (44.86=setup[3.06]+cmd[0.00,0.01,33.31,8.49] seconds) pylint: OK (28.94=setup[3.58]+cmd[25.36] seconds) evaluation failed :( (1780.38 seconds) + tox_status=255 + echo '---> Completed tox runs' ---> Completed tox runs + for i in .tox/*/log ++ echo .tox/build_karaf_tests121/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests121 + cp -r .tox/build_karaf_tests121/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests121 + for i in .tox/*/log ++ echo .tox/build_karaf_tests190/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests190 + cp -r .tox/build_karaf_tests190/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests190 + for i in .tox/*/log ++ echo .tox/build_karaf_tests221/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests221 + cp -r .tox/build_karaf_tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests221 + for i in .tox/*/log ++ echo .tox/build_karaf_tests71/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests71 + cp -r .tox/build_karaf_tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests71 + for i in .tox/*/log ++ echo .tox/buildcontroller/log ++ awk -F/ '{print $2}' + tox_env=buildcontroller + cp -r .tox/buildcontroller/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildcontroller + for i in .tox/*/log ++ echo .tox/buildlighty/log ++ awk -F/ '{print $2}' + tox_env=buildlighty + cp -r .tox/buildlighty/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildlighty + for i in .tox/*/log ++ awk -F/ '{print $2}' ++ echo .tox/checkbashisms/log + tox_env=checkbashisms + cp -r .tox/checkbashisms/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/checkbashisms + for i in .tox/*/log ++ echo .tox/docs-linkcheck/log ++ awk -F/ '{print $2}' + tox_env=docs-linkcheck + cp -r .tox/docs-linkcheck/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs-linkcheck + for i in .tox/*/log ++ echo .tox/docs/log ++ awk -F/ '{print $2}' + tox_env=docs + cp -r .tox/docs/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs + for i in .tox/*/log ++ echo .tox/pre-commit/log ++ awk -F/ '{print $2}' + tox_env=pre-commit + cp -r .tox/pre-commit/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pre-commit + for i in .tox/*/log ++ echo .tox/pylint/log ++ awk -F/ '{print $2}' + tox_env=pylint + cp -r .tox/pylint/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pylint + for i in .tox/*/log ++ echo .tox/sims/log ++ awk -F/ '{print $2}' + tox_env=sims + cp -r .tox/sims/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/sims + for i in .tox/*/log ++ echo .tox/tests121/log ++ awk -F/ '{print $2}' + tox_env=tests121 + cp -r .tox/tests121/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests121 + for i in .tox/*/log ++ echo .tox/tests190/log ++ awk -F/ '{print $2}' + tox_env=tests190 + cp -r .tox/tests190/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests190 + for i in .tox/*/log ++ echo .tox/tests221/log ++ awk -F/ '{print $2}' + tox_env=tests221 + cp -r .tox/tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests221 + for i in .tox/*/log ++ echo .tox/tests71/log ++ awk -F/ '{print $2}' + tox_env=tests71 + cp -r .tox/tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests71 + for i in .tox/*/log ++ echo .tox/testsPCE/log ++ awk -F/ '{print $2}' + tox_env=testsPCE + cp -r .tox/testsPCE/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/testsPCE + for i in .tox/*/log ++ echo .tox/tests_hybrid/log ++ awk -F/ '{print $2}' + tox_env=tests_hybrid + cp -r .tox/tests_hybrid/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_hybrid + for i in .tox/*/log ++ echo .tox/tests_tapi/log ++ awk -F/ '{print $2}' + tox_env=tests_tapi + cp -r .tox/tests_tapi/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_tapi + DOC_DIR=docs/_build/html + [[ -d docs/_build/html ]] + echo '---> Archiving generated docs' ---> Archiving generated docs + mv docs/_build/html /w/workspace/transportpce-tox-verify-transportpce-master/archives/docs + echo '---> tox-run.sh ends' ---> tox-run.sh ends + test 255 -eq 0 + exit 255 ++ '[' 1 = 1 ']' ++ '[' -x /usr/bin/clear_console ']' ++ /usr/bin/clear_console -q Build step 'Execute shell' marked build as failure $ ssh-agent -k unset SSH_AUTH_SOCK; unset SSH_AGENT_PID; echo Agent pid 1568 killed; [ssh-agent] Stopped. [PostBuildScript] - [INFO] Executing post build scripts. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins6390110874865428232.sh ---> sysstat.sh [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins13319405725075733531.sh ---> package-listing.sh ++ facter osfamily ++ tr '[:upper:]' '[:lower:]' + OS_FAMILY=debian + workspace=/w/workspace/transportpce-tox-verify-transportpce-master + START_PACKAGES=/tmp/packages_start.txt + END_PACKAGES=/tmp/packages_end.txt + DIFF_PACKAGES=/tmp/packages_diff.txt + PACKAGES=/tmp/packages_start.txt + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' + PACKAGES=/tmp/packages_end.txt + case "${OS_FAMILY}" in + dpkg -l + grep '^ii' + '[' -f /tmp/packages_start.txt ']' + '[' -f /tmp/packages_end.txt ']' + diff /tmp/packages_start.txt /tmp/packages_end.txt + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/ + cp -f /tmp/packages_diff.txt /tmp/packages_end.txt /tmp/packages_start.txt /w/workspace/transportpce-tox-verify-transportpce-master/archives/ [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins11330357654890196443.sh ---> capture-instance-metadata.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) lf-activate-venv(): INFO: Attempting to install with network-safe options... lf-activate-venv(): INFO: Base packages installed successfully lf-activate-venv(): INFO: Installing additional packages: lftools lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH INFO: Running in OpenStack, capturing instance metadata [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins11937297657533005233.sh provisioning config files... Could not find credentials [logs] for transportpce-tox-verify-transportpce-master #4237 copy managed file [jenkins-log-archives-settings] to file:/w/workspace/transportpce-tox-verify-transportpce-master@tmp/config5383410263196339565tmp Regular expression run condition: Expression=[^.*logs-s3.*], Label=[odl-logs-s3-cloudfront-index] Run condition [Regular expression match] enabling perform for step [Provide Configuration files] provisioning config files... copy managed file [jenkins-s3-log-ship] to file:/home/jenkins/.aws/credentials [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties content SERVER_ID=logs [EnvInject] - Variables injected successfully. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins12415498801337904990.sh ---> create-netrc.sh WARN: Log server credential not found. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins2487131502824493930.sh ---> python-tools-install.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) lf-activate-venv(): INFO: Attempting to install with network-safe options... lf-activate-venv(): INFO: Base packages installed successfully lf-activate-venv(): INFO: Installing additional packages: lftools lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins7193673045225040898.sh ---> sudo-logs.sh Archiving 'sudo' log.. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins17365346275947276614.sh ---> job-cost.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) lf-activate-venv(): INFO: Attempting to install with network-safe options... lf-activate-venv(): INFO: Base packages installed successfully lf-activate-venv(): INFO: Installing additional packages: zipp==1.1.0 python-openstackclient urllib3~=1.26.15 lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH INFO: No Stack... INFO: Retrieving Pricing Info for: v3-standard-4 INFO: Archiving Costs [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins17047057319708982122.sh ---> logs-deploy.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) lf-activate-venv(): INFO: Attempting to install with network-safe options... lf-activate-venv(): INFO: Base packages installed successfully lf-activate-venv(): INFO: Installing additional packages: lftools urllib3~=1.26.15 lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH WARNING: Nexus logging server not set INFO: S3 path logs/releng/vex-yul-odl-jenkins-1/transportpce-tox-verify-transportpce-master/4237/ INFO: archiving logs to S3 ---> uname -a: Linux prd-ubuntu2204-docker-4c-16g-5080 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux ---> lscpu: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 40 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: AuthenticAMD Model name: AMD EPYC-Rome Processor CPU family: 23 Model: 49 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 4 Stepping: 0 BogoMIPS: 5600.00 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr wbnoinvd arat npt nrip_save umip rdpid arch_capabilities Virtualization: AMD-V Hypervisor vendor: KVM Virtualization type: full L1d cache: 128 KiB (4 instances) L1i cache: 128 KiB (4 instances) L2 cache: 2 MiB (4 instances) L3 cache: 64 MiB (4 instances) NUMA node(s): 1 NUMA node0 CPU(s): 0-3 Vulnerability Gather data sampling: Not affected Vulnerability Indirect target selection: Not affected Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Not affected Vulnerability Reg file data sampling: Not affected Vulnerability Retbleed: Mitigation; untrained return thunk; SMT disabled Vulnerability Spec rstack overflow: Mitigation; SMT disabled Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected Vulnerability Srbds: Not affected Vulnerability Tsa: Not affected Vulnerability Tsx async abort: Not affected Vulnerability Vmscape: Not affected ---> nproc: 4 ---> df -h: Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 1.1M 1.6G 1% /run /dev/vda1 78G 17G 61G 22% / tmpfs 7.9G 0 7.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/vda15 105M 6.1M 99M 6% /boot/efi tmpfs 1.6G 4.0K 1.6G 1% /run/user/1001 ---> free -m: total used free shared buff/cache available Mem: 15989 1586 10592 3 3810 14060 Swap: 1023 0 1023 ---> ip addr: 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: mtu 1458 qdisc mq state UP group default qlen 1000 link/ether fa:16:3e:3c:ca:fb brd ff:ff:ff:ff:ff:ff altname enp0s3 inet 10.30.170.158/23 metric 100 brd 10.30.171.255 scope global dynamic ens3 valid_lft 84365sec preferred_lft 84365sec inet6 fe80::f816:3eff:fe3c:cafb/64 scope link valid_lft forever preferred_lft forever 3: docker0: mtu 1458 qdisc noqueue state DOWN group default link/ether ce:18:24:84:bd:84 brd ff:ff:ff:ff:ff:ff inet 10.250.0.254/24 brd 10.250.0.255 scope global docker0 valid_lft forever preferred_lft forever ---> sar -b -r -n DEV: Linux 5.15.0-164-generic (prd-ubuntu2204-docker-4c-16g-5080) 01/27/26 _x86_64_ (4 CPU) 21:36:54 LINUX RESTART (4 CPU) 21:40:16 tps rtps wtps dtps bread/s bwrtn/s bdscd/s 21:50:16 100.29 3.06 93.15 4.08 190.40 34622.97 9444.98 22:01:17 50.44 20.38 28.47 1.59 227.66 1880.55 1343.31 22:10:01 15.85 2.03 13.15 0.68 144.87 803.39 273.12 Average: 57.06 9.18 45.72 2.16 190.85 12573.87 3753.51 21:40:16 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 21:50:16 161816 5489368 10438120 63.75 250420 4935348 13378968 76.80 2049072 13452216 588 22:01:17 3192272 6476040 9457880 57.76 262276 2998036 10604356 60.87 2016016 10584108 632 22:10:01 10895080 14388316 1549544 9.46 267188 3191424 2163232 12.42 2074936 2833336 17812 Average: 4749723 8784575 7148515 43.66 259961 3708269 8715519 50.03 2046675 8956553 6344 21:40:16 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 21:50:16 lo 4.41 4.41 5.19 5.19 0.00 0.00 0.00 0.00 21:50:16 ens3 86.98 65.68 1253.03 6.97 0.00 0.00 0.00 0.00 21:50:16 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22:01:17 lo 40.26 40.26 22.12 22.12 0.00 0.00 0.00 0.00 22:01:17 ens3 2.06 1.90 0.49 1.03 0.00 0.00 0.00 0.00 22:01:17 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22:10:01 lo 22.87 22.87 7.64 7.64 0.00 0.00 0.00 0.00 22:10:01 ens3 3.19 3.05 1.18 1.68 0.00 0.00 0.00 0.00 22:10:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: lo 23.11 23.11 12.18 12.18 0.00 0.00 0.00 0.00 Average: ens3 30.95 23.68 421.84 3.22 0.00 0.00 0.00 0.00 Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ---> sar -P ALL: Linux 5.15.0-164-generic (prd-ubuntu2204-docker-4c-16g-5080) 01/27/26 _x86_64_ (4 CPU) 21:36:54 LINUX RESTART (4 CPU) 21:40:16 CPU %user %nice %system %iowait %steal %idle 21:50:16 all 48.95 0.00 2.29 4.18 0.11 44.47 21:50:16 0 46.42 0.00 2.16 3.13 0.11 48.17 21:50:16 1 51.06 0.00 2.21 4.75 0.12 41.86 21:50:16 2 47.58 0.00 2.26 4.32 0.11 45.73 21:50:16 3 50.73 0.00 2.52 4.54 0.12 42.10 22:01:17 all 50.19 0.00 2.06 9.90 0.17 37.68 22:01:17 0 49.96 0.00 2.37 9.57 0.25 37.85 22:01:17 1 49.37 0.00 1.92 10.50 0.14 38.08 22:01:17 2 50.67 0.00 1.95 8.34 0.15 38.90 22:01:17 3 50.77 0.00 2.00 11.19 0.15 35.90 22:10:01 all 15.88 0.00 1.00 4.17 0.12 78.83 22:10:01 0 15.06 0.00 1.01 2.29 0.13 81.51 22:10:01 1 16.64 0.00 1.04 1.35 0.12 80.86 22:10:01 2 16.16 0.00 1.03 0.62 0.12 82.07 22:10:01 3 15.66 0.00 0.93 12.41 0.12 70.88 Average: all 39.66 0.00 1.82 6.28 0.14 52.10 Average: 0 38.49 0.00 1.90 5.25 0.17 54.20 Average: 1 40.29 0.00 1.76 5.86 0.12 51.96 Average: 2 39.44 0.00 1.78 4.70 0.13 53.94 Average: 3 40.40 0.00 1.86 9.30 0.13 48.31