21:37:27 Triggered by Gerrit: https://git.opendaylight.org/gerrit/c/transportpce/+/119868 21:37:27 Running as SYSTEM 21:37:27 [EnvInject] - Loading node environment variables. 21:37:27 Building remotely on prd-ubuntu2204-docker-4c-16g-5080 (ubuntu2204-docker-4c-16g) in workspace /w/workspace/transportpce-tox-verify-transportpce-master 21:37:32 [ssh-agent] Looking for ssh-agent implementation... 21:37:32 [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) 21:37:32 $ ssh-agent 21:37:32 SSH_AUTH_SOCK=/tmp/ssh-XXXXXXjkLcAx/agent.1566 21:37:32 SSH_AGENT_PID=1568 21:37:32 [ssh-agent] Started. 21:37:32 Running ssh-add (command line suppressed) 21:37:32 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) 21:37:32 [ssh-agent] Using credentials jenkins (jenkins-ssh) 21:37:32 The recommended git tool is: NONE 21:37:41 using credential jenkins-ssh 21:37:41 Wiping out workspace first. 21:37:41 Cloning the remote Git repository 21:37:41 Cloning repository git://devvexx.opendaylight.org/mirror/transportpce 21:37:41 > git init /w/workspace/transportpce-tox-verify-transportpce-master # timeout=10 21:37:41 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce 21:37:41 > git --version # timeout=10 21:37:41 > git --version # 'git version 2.34.1' 21:37:41 using GIT_SSH to set credentials jenkins-ssh 21:37:41 Verifying host key using known hosts file 21:37:41 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. 21:37:41 > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce +refs/heads/*:refs/remotes/origin/* # timeout=10 21:37:54 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 21:37:54 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 21:37:54 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 21:37:54 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce 21:37:54 using GIT_SSH to set credentials jenkins-ssh 21:37:54 Verifying host key using known hosts file 21:37:54 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. 21:37:54 > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce refs/changes/68/119868/9 # timeout=10 21:37:55 > git rev-parse 5cdb971d8b7ace0aaf8330985a7a0cf9d2c86e87^{commit} # timeout=10 21:37:55 JENKINS-19022: warning: possible memory leak due to Git plugin usage; see: https://plugins.jenkins.io/git/#remove-git-plugin-buildsbybranch-builddata-script 21:37:55 Checking out Revision 5cdb971d8b7ace0aaf8330985a7a0cf9d2c86e87 (refs/changes/68/119868/9) 21:37:55 > git config core.sparsecheckout # timeout=10 21:37:55 > git checkout -f 5cdb971d8b7ace0aaf8330985a7a0cf9d2c86e87 # timeout=10 21:37:55 Commit message: "Prevent NPE processing links during OTN creation" 21:37:55 > git rev-parse FETCH_HEAD^{commit} # timeout=10 21:37:55 > git rev-list --no-walk d86c125d63be1214b38d4c188d262666036e31e6 # timeout=10 21:37:55 > git remote # timeout=10 21:37:55 > git submodule init # timeout=10 21:37:55 > git submodule sync # timeout=10 21:37:55 > git config --get remote.origin.url # timeout=10 21:37:55 > git submodule init # timeout=10 21:37:55 > git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10 21:37:55 ERROR: No submodules found. 21:37:59 provisioning config files... 21:37:59 copy managed file [npmrc] to file:/home/jenkins/.npmrc 21:37:59 copy managed file [pipconf] to file:/home/jenkins/.config/pip/pip.conf 21:37:59 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins7436700418640421034.sh 21:37:59 ---> python-tools-install.sh 21:37:59 Setup pyenv: 21:37:59 * system (set by /opt/pyenv/version) 21:37:59 * 3.8.20 (set by /opt/pyenv/version) 21:37:59 * 3.9.20 (set by /opt/pyenv/version) 21:37:59 3.10.15 21:37:59 3.11.10 21:38:03 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-GDFm 21:38:03 lf-activate-venv(): INFO: Save venv in file: /tmp/.os_lf_venv 21:38:03 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 21:38:03 lf-activate-venv(): INFO: Attempting to install with network-safe options... 21:38:20 lf-activate-venv(): INFO: Base packages installed successfully 21:38:20 lf-activate-venv(): INFO: Installing additional packages: lftools 21:38:57 lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH 21:38:57 Generating Requirements File 21:39:23 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. 21:39:23 httplib2 0.30.2 requires pyparsing<4,>=3.0.4, but you have pyparsing 2.4.7 which is incompatible. 21:39:24 Python 3.11.10 21:39:24 pip 25.3 from /tmp/venv-GDFm/lib/python3.11/site-packages/pip (python 3.11) 21:39:24 appdirs==1.4.4 21:39:24 argcomplete==3.6.3 21:39:24 aspy.yaml==1.3.0 21:39:24 attrs==25.4.0 21:39:24 autopage==0.5.2 21:39:24 beautifulsoup4==4.14.3 21:39:24 boto3==1.42.36 21:39:24 botocore==1.42.36 21:39:24 bs4==0.0.2 21:39:24 certifi==2026.1.4 21:39:24 cffi==2.0.0 21:39:24 cfgv==3.5.0 21:39:24 chardet==5.2.0 21:39:24 charset-normalizer==3.4.4 21:39:24 click==8.3.1 21:39:24 cliff==4.13.1 21:39:24 cmd2==3.1.2 21:39:24 cryptography==3.3.2 21:39:24 debtcollector==3.0.0 21:39:24 decorator==5.2.1 21:39:24 defusedxml==0.7.1 21:39:24 Deprecated==1.3.1 21:39:24 distlib==0.4.0 21:39:24 dnspython==2.8.0 21:39:24 docker==7.1.0 21:39:24 dogpile.cache==1.5.0 21:39:24 durationpy==0.10 21:39:24 email-validator==2.3.0 21:39:24 filelock==3.20.3 21:39:24 future==1.0.0 21:39:24 gitdb==4.0.12 21:39:24 GitPython==3.1.46 21:39:24 httplib2==0.30.2 21:39:24 identify==2.6.16 21:39:24 idna==3.11 21:39:24 importlib-resources==1.5.0 21:39:24 iso8601==2.1.0 21:39:24 Jinja2==3.1.6 21:39:24 jmespath==1.1.0 21:39:24 jsonpatch==1.33 21:39:24 jsonpointer==3.0.0 21:39:24 jsonschema==4.26.0 21:39:24 jsonschema-specifications==2025.9.1 21:39:24 keystoneauth1==5.13.0 21:39:24 kubernetes==35.0.0 21:39:24 lftools==0.37.21 21:39:24 lxml==6.0.2 21:39:24 markdown-it-py==4.0.0 21:39:24 MarkupSafe==3.0.3 21:39:24 mdurl==0.1.2 21:39:24 msgpack==1.1.2 21:39:24 multi_key_dict==2.0.3 21:39:24 munch==4.0.0 21:39:24 netaddr==1.3.0 21:39:24 niet==1.4.2 21:39:24 nodeenv==1.10.0 21:39:24 oauth2client==4.1.3 21:39:24 oauthlib==3.3.1 21:39:24 openstacksdk==4.9.0 21:39:24 os-service-types==1.8.2 21:39:24 osc-lib==4.3.0 21:39:24 oslo.config==10.2.0 21:39:24 oslo.context==6.2.0 21:39:24 oslo.i18n==6.7.1 21:39:24 oslo.log==8.0.0 21:39:24 oslo.serialization==5.9.0 21:39:24 oslo.utils==9.2.0 21:39:24 packaging==26.0 21:39:24 pbr==7.0.3 21:39:24 platformdirs==4.5.1 21:39:24 prettytable==3.17.0 21:39:24 psutil==7.2.1 21:39:24 pyasn1==0.6.2 21:39:24 pyasn1_modules==0.4.2 21:39:24 pycparser==3.0 21:39:24 pygerrit2==2.0.15 21:39:24 PyGithub==2.8.1 21:39:24 Pygments==2.19.2 21:39:24 PyJWT==2.10.1 21:39:24 PyNaCl==1.6.2 21:39:24 pyparsing==2.4.7 21:39:24 pyperclip==1.11.0 21:39:24 pyrsistent==0.20.0 21:39:24 python-cinderclient==9.8.0 21:39:24 python-dateutil==2.9.0.post0 21:39:24 python-heatclient==5.0.0 21:39:24 python-jenkins==1.8.3 21:39:24 python-keystoneclient==5.7.0 21:39:24 python-magnumclient==4.9.0 21:39:24 python-openstackclient==8.3.0 21:39:24 python-swiftclient==4.9.0 21:39:24 PyYAML==6.0.3 21:39:24 referencing==0.37.0 21:39:24 requests==2.32.5 21:39:24 requests-oauthlib==2.0.0 21:39:24 requestsexceptions==1.4.0 21:39:24 rfc3986==2.0.0 21:39:24 rich==14.3.1 21:39:24 rich-argparse==1.7.2 21:39:24 rpds-py==0.30.0 21:39:24 rsa==4.9.1 21:39:24 ruamel.yaml==0.19.1 21:39:24 ruamel.yaml.clib==0.2.15 21:39:24 s3transfer==0.16.0 21:39:24 simplejson==3.20.2 21:39:24 six==1.17.0 21:39:24 smmap==5.0.2 21:39:24 soupsieve==2.8.3 21:39:24 stevedore==5.6.0 21:39:24 tabulate==0.9.0 21:39:24 toml==0.10.2 21:39:24 tomlkit==0.14.0 21:39:24 tqdm==4.67.1 21:39:24 typing_extensions==4.15.0 21:39:24 tzdata==2025.3 21:39:24 urllib3==1.26.20 21:39:24 virtualenv==20.36.1 21:39:24 wcwidth==0.5.0 21:39:24 websocket-client==1.9.0 21:39:24 wrapt==2.0.1 21:39:24 xdg==6.0.0 21:39:24 xmltodict==1.0.2 21:39:24 yq==3.4.3 21:39:24 [EnvInject] - Injecting environment variables from a build step. 21:39:24 [EnvInject] - Injecting as environment variables the properties content 21:39:24 PYTHON=python3 21:39:24 21:39:24 [EnvInject] - Variables injected successfully. 21:39:24 [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins17852650854775268003.sh 21:39:24 ---> tox-install.sh 21:39:24 + source /home/jenkins/lf-env.sh 21:39:24 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 21:39:24 ++ mktemp -d /tmp/venv-XXXX 21:39:24 + lf_venv=/tmp/venv-zs13 21:39:24 + local venv_file=/tmp/.os_lf_venv 21:39:24 + local python=python3 21:39:24 + local options 21:39:24 + local set_path=true 21:39:24 + local install_args= 21:39:24 ++ 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 21:39:24 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 21:39:24 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 21:39:24 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 21:39:24 + true 21:39:24 + case $1 in 21:39:24 + venv_file=/tmp/.toxenv 21:39:24 + shift 2 21:39:24 + true 21:39:24 + case $1 in 21:39:24 + shift 21:39:24 + break 21:39:24 + case $python in 21:39:24 + local pkg_list= 21:39:24 + [[ -d /opt/pyenv ]] 21:39:24 + echo 'Setup pyenv:' 21:39:24 Setup pyenv: 21:39:24 + export PYENV_ROOT=/opt/pyenv 21:39:24 + PYENV_ROOT=/opt/pyenv 21:39:24 + 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 21:39:24 + 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 21:39:24 + pyenv versions 21:39:24 system 21:39:24 3.8.20 21:39:24 3.9.20 21:39:24 3.10.15 21:39:24 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 21:39:24 + command -v pyenv 21:39:24 ++ pyenv init - --no-rehash 21:39:24 + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); 21:39:24 for i in ${!paths[@]}; do 21:39:24 if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; 21:39:24 fi; done; 21:39:24 echo "${paths[*]}"'\'')" 21:39:24 export PATH="/opt/pyenv/shims:${PATH}" 21:39:24 export PYENV_SHELL=bash 21:39:24 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 21:39:24 pyenv() { 21:39:24 local command 21:39:24 command="${1:-}" 21:39:24 if [ "$#" -gt 0 ]; then 21:39:24 shift 21:39:24 fi 21:39:24 21:39:24 case "$command" in 21:39:24 rehash|shell) 21:39:24 eval "$(pyenv "sh-$command" "$@")" 21:39:24 ;; 21:39:24 *) 21:39:24 command pyenv "$command" "$@" 21:39:24 ;; 21:39:24 esac 21:39:24 }' 21:39:24 +++ bash --norc -ec 'IFS=:; paths=($PATH); 21:39:24 for i in ${!paths[@]}; do 21:39:24 if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; 21:39:24 fi; done; 21:39:24 echo "${paths[*]}"' 21:39:24 ++ 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 21:39:24 ++ 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 21:39:24 ++ 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 21:39:24 ++ export PYENV_SHELL=bash 21:39:24 ++ PYENV_SHELL=bash 21:39:24 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 21:39:24 +++ complete -F _pyenv pyenv 21:39:24 ++ lf-pyver python3 21:39:24 ++ local py_version_xy=python3 21:39:24 ++ local py_version_xyz= 21:39:24 ++ pyenv versions 21:39:24 ++ local command 21:39:24 ++ command=versions 21:39:24 ++ '[' 1 -gt 0 ']' 21:39:24 ++ shift 21:39:24 ++ case "$command" in 21:39:24 ++ command pyenv versions 21:39:24 ++ grep -E '^[0-9.]*[0-9]$' 21:39:24 ++ awk '{ print $1 }' 21:39:24 ++ sed 's/^[ *]* //' 21:39:24 ++ [[ ! -s /tmp/.pyenv_versions ]] 21:39:24 +++ grep '^3' /tmp/.pyenv_versions 21:39:24 +++ sort -V 21:39:24 +++ tail -n 1 21:39:24 ++ py_version_xyz=3.11.10 21:39:24 ++ [[ -z 3.11.10 ]] 21:39:24 ++ echo 3.11.10 21:39:24 ++ return 0 21:39:24 + pyenv local 3.11.10 21:39:24 + local command 21:39:24 + command=local 21:39:24 + '[' 2 -gt 0 ']' 21:39:24 + shift 21:39:24 + case "$command" in 21:39:24 + command pyenv local 3.11.10 21:39:25 + for arg in "$@" 21:39:25 + case $arg in 21:39:25 + pkg_list+='tox ' 21:39:25 + for arg in "$@" 21:39:25 + case $arg in 21:39:25 + pkg_list+='virtualenv ' 21:39:25 + for arg in "$@" 21:39:25 + case $arg in 21:39:25 + pkg_list+='urllib3~=1.26.15 ' 21:39:25 + [[ -f /tmp/.toxenv ]] 21:39:25 + [[ ! -f /tmp/.toxenv ]] 21:39:25 + [[ -n '' ]] 21:39:25 + python3 -m venv /tmp/venv-zs13 21:39:29 + echo 'lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-zs13' 21:39:29 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-zs13 21:39:29 + echo /tmp/venv-zs13 21:39:29 + echo 'lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv' 21:39:29 lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv 21:39:29 + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' 21:39:29 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 21:39:29 + local 'pip_opts=--upgrade --quiet' 21:39:29 + pip_opts='--upgrade --quiet --trusted-host pypi.org' 21:39:29 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' 21:39:29 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' 21:39:29 + [[ -n '' ]] 21:39:29 + [[ -n '' ]] 21:39:29 + echo 'lf-activate-venv(): INFO: Attempting to install with network-safe options...' 21:39:29 lf-activate-venv(): INFO: Attempting to install with network-safe options... 21:39:29 + /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 21:39:32 + echo 'lf-activate-venv(): INFO: Base packages installed successfully' 21:39:32 lf-activate-venv(): INFO: Base packages installed successfully 21:39:32 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 21:39:32 + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' 21:39:32 lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 21:39:32 + /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 21:39:34 + type python3 21:39:34 + true 21:39:34 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH' 21:39:34 lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH 21:39:34 + 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 21:39:34 + return 0 21:39:34 + python3 --version 21:39:34 Python 3.11.10 21:39:34 + python3 -m pip --version 21:39:34 pip 25.3 from /tmp/venv-zs13/lib/python3.11/site-packages/pip (python 3.11) 21:39:34 + python3 -m pip freeze 21:39:34 cachetools==6.2.6 21:39:34 chardet==5.2.0 21:39:34 colorama==0.4.6 21:39:34 distlib==0.4.0 21:39:34 filelock==3.20.3 21:39:34 packaging==26.0 21:39:34 platformdirs==4.5.1 21:39:34 pluggy==1.6.0 21:39:34 pyproject-api==1.10.0 21:39:34 tox==4.34.1 21:39:34 urllib3==1.26.20 21:39:34 virtualenv==20.36.1 21:39:35 [transportpce-tox-verify-transportpce-master] $ /bin/sh -xe /tmp/jenkins16599647751593222831.sh 21:39:35 [EnvInject] - Injecting environment variables from a build step. 21:39:35 [EnvInject] - Injecting as environment variables the properties content 21:39:35 PARALLEL=True 21:39:35 21:39:35 [EnvInject] - Variables injected successfully. 21:39:35 [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins18112725462968807329.sh 21:39:35 ---> tox-run.sh 21:39:35 + 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 21:39:35 + ARCHIVE_TOX_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/tox 21:39:35 + ARCHIVE_DOC_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/docs 21:39:35 + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox 21:39:35 + cd /w/workspace/transportpce-tox-verify-transportpce-master/. 21:39:35 + source /home/jenkins/lf-env.sh 21:39:35 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 21:39:35 ++ mktemp -d /tmp/venv-XXXX 21:39:35 + lf_venv=/tmp/venv-oNqE 21:39:35 + local venv_file=/tmp/.os_lf_venv 21:39:35 + local python=python3 21:39:35 + local options 21:39:35 + local set_path=true 21:39:35 + local install_args= 21:39:35 ++ 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 21:39:35 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 21:39:35 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 21:39:35 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 21:39:35 + true 21:39:35 + case $1 in 21:39:35 + venv_file=/tmp/.toxenv 21:39:35 + shift 2 21:39:35 + true 21:39:35 + case $1 in 21:39:35 + shift 21:39:35 + break 21:39:35 + case $python in 21:39:35 + local pkg_list= 21:39:35 + [[ -d /opt/pyenv ]] 21:39:35 + echo 'Setup pyenv:' 21:39:35 Setup pyenv: 21:39:35 + export PYENV_ROOT=/opt/pyenv 21:39:35 + PYENV_ROOT=/opt/pyenv 21:39:35 + 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 21:39:35 + 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 21:39:35 + pyenv versions 21:39:35 system 21:39:35 3.8.20 21:39:35 3.9.20 21:39:35 3.10.15 21:39:35 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 21:39:35 + command -v pyenv 21:39:35 ++ pyenv init - --no-rehash 21:39:35 + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); 21:39:35 for i in ${!paths[@]}; do 21:39:35 if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; 21:39:35 fi; done; 21:39:35 echo "${paths[*]}"'\'')" 21:39:35 export PATH="/opt/pyenv/shims:${PATH}" 21:39:35 export PYENV_SHELL=bash 21:39:35 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 21:39:35 pyenv() { 21:39:35 local command 21:39:35 command="${1:-}" 21:39:35 if [ "$#" -gt 0 ]; then 21:39:35 shift 21:39:35 fi 21:39:35 21:39:35 case "$command" in 21:39:35 rehash|shell) 21:39:35 eval "$(pyenv "sh-$command" "$@")" 21:39:35 ;; 21:39:35 *) 21:39:35 command pyenv "$command" "$@" 21:39:35 ;; 21:39:35 esac 21:39:35 }' 21:39:35 +++ bash --norc -ec 'IFS=:; paths=($PATH); 21:39:35 for i in ${!paths[@]}; do 21:39:35 if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; 21:39:35 fi; done; 21:39:35 echo "${paths[*]}"' 21:39:35 ++ 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 21:39:35 ++ 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 21:39:35 ++ 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 21:39:35 ++ export PYENV_SHELL=bash 21:39:35 ++ PYENV_SHELL=bash 21:39:35 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 21:39:35 +++ complete -F _pyenv pyenv 21:39:35 ++ lf-pyver python3 21:39:35 ++ local py_version_xy=python3 21:39:35 ++ local py_version_xyz= 21:39:35 ++ pyenv versions 21:39:35 ++ local command 21:39:35 ++ sed 's/^[ *]* //' 21:39:35 ++ command=versions 21:39:35 ++ '[' 1 -gt 0 ']' 21:39:35 ++ awk '{ print $1 }' 21:39:35 ++ shift 21:39:35 ++ case "$command" in 21:39:35 ++ command pyenv versions 21:39:35 ++ grep -E '^[0-9.]*[0-9]$' 21:39:35 ++ [[ ! -s /tmp/.pyenv_versions ]] 21:39:35 +++ grep '^3' /tmp/.pyenv_versions 21:39:35 +++ sort -V 21:39:35 +++ tail -n 1 21:39:35 ++ py_version_xyz=3.11.10 21:39:35 ++ [[ -z 3.11.10 ]] 21:39:35 ++ echo 3.11.10 21:39:35 ++ return 0 21:39:35 + pyenv local 3.11.10 21:39:35 + local command 21:39:35 + command=local 21:39:35 + '[' 2 -gt 0 ']' 21:39:35 + shift 21:39:35 + case "$command" in 21:39:35 + command pyenv local 3.11.10 21:39:35 + for arg in "$@" 21:39:35 + case $arg in 21:39:35 + pkg_list+='tox ' 21:39:35 + for arg in "$@" 21:39:35 + case $arg in 21:39:35 + pkg_list+='virtualenv ' 21:39:35 + for arg in "$@" 21:39:35 + case $arg in 21:39:35 + pkg_list+='urllib3~=1.26.15 ' 21:39:35 + [[ -f /tmp/.toxenv ]] 21:39:35 ++ cat /tmp/.toxenv 21:39:35 + lf_venv=/tmp/venv-zs13 21:39:35 + echo 'lf-activate-venv(): INFO: Reuse venv:/tmp/venv-zs13 from' file:/tmp/.toxenv 21:39:35 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-zs13 from file:/tmp/.toxenv 21:39:35 + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' 21:39:35 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 21:39:35 + local 'pip_opts=--upgrade --quiet' 21:39:35 + pip_opts='--upgrade --quiet --trusted-host pypi.org' 21:39:35 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' 21:39:35 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' 21:39:35 + [[ -n '' ]] 21:39:35 + [[ -n '' ]] 21:39:35 + echo 'lf-activate-venv(): INFO: Attempting to install with network-safe options...' 21:39:35 lf-activate-venv(): INFO: Attempting to install with network-safe options... 21:39:35 + /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 21:39:36 + echo 'lf-activate-venv(): INFO: Base packages installed successfully' 21:39:36 lf-activate-venv(): INFO: Base packages installed successfully 21:39:36 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 21:39:36 + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' 21:39:36 lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 21:39:36 + /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 21:39:38 + type python3 21:39:38 + true 21:39:38 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH' 21:39:38 lf-activate-venv(): INFO: Adding /tmp/venv-zs13/bin to PATH 21:39:38 + 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 21:39:38 + return 0 21:39:38 + [[ -d /opt/pyenv ]] 21:39:38 + echo '---> Setting up pyenv' 21:39:38 ---> Setting up pyenv 21:39:38 + export PYENV_ROOT=/opt/pyenv 21:39:38 + PYENV_ROOT=/opt/pyenv 21:39:38 + 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 21:39:38 + 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 21:39:38 ++ pwd 21:39:38 + PYTHONPATH=/w/workspace/transportpce-tox-verify-transportpce-master 21:39:38 + export PYTHONPATH 21:39:38 + export TOX_TESTENV_PASSENV=PYTHONPATH 21:39:38 + TOX_TESTENV_PASSENV=PYTHONPATH 21:39:38 + tox --version 21:39:38 4.34.1 from /tmp/venv-zs13/lib/python3.11/site-packages/tox/__init__.py 21:39:38 + PARALLEL=True 21:39:38 + TOX_OPTIONS_LIST= 21:39:38 + [[ -n '' ]] 21:39:38 + case ${PARALLEL,,} in 21:39:38 + TOX_OPTIONS_LIST=' --parallel auto --parallel-live' 21:39:38 + tox --parallel auto --parallel-live 21:39:38 + tee -a /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tox.log 21:39:40 docs: install_deps> python -I -m pip install -r docs/requirements.txt 21:39:40 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 21:39:40 docs-linkcheck: install_deps> python -I -m pip install -r docs/requirements.txt 21:39:40 checkbashisms: freeze> python -m pip freeze --all 21:39:40 checkbashisms: pip==25.3,setuptools==80.9.0 21:39:40 checkbashisms: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh 21:39:40 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)' 21:39:41 checkbashisms: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> find . -not -path '*/\.*' -name '*.sh' -exec checkbashisms -f '{}' + 21:39:42 checkbashisms: OK ✔ in 3.28 seconds 21:39:42 pre-commit: install_deps> python -I -m pip install pre-commit 21:39:44 pre-commit: freeze> python -m pip freeze --all 21:39:45 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 21:39:45 pre-commit: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh 21:39:45 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)' 21:39:45 /usr/bin/cpan 21:39:45 pre-commit: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run --all-files --show-diff-on-failure 21:39:45 [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. 21:39:45 [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. 21:39:45 [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. 21:39:45 [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. 21:39:45 [INFO] Initializing environment for https://github.com/jorisroovers/gitlint. 21:39:46 [INFO] Initializing environment for https://github.com/jorisroovers/gitlint:./gitlint-core[trusted-deps]. 21:39:46 [INFO] Initializing environment for https://github.com/Lucas-C/pre-commit-hooks. 21:39:46 [INFO] Initializing environment for https://github.com/pre-commit/mirrors-autopep8. 21:39:47 buildcontroller: freeze> python -m pip freeze --all 21:39:47 [INFO] Initializing environment for https://github.com/perltidy/perltidy. 21:39:47 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 21:39:47 buildcontroller: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_controller.sh 21:39:47 + update-java-alternatives -l 21:39:47 java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64 21:39:47 java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64 21:39:47 java-1.21.0-openjdk-amd64 2111 /usr/lib/jvm/java-1.21.0-openjdk-amd64 21:39:47 + sudo update-java-alternatives -s java-1.21.0-openjdk-amd64 21:39:47 update-alternatives: error: no alternatives for jaotc 21:39:47 update-alternatives: error: no alternatives for rmic 21:39:47 + + sed -n ;s/.* version "\(.*\)\.\(.*\)\..*".*$/\1/p; 21:39:47 java -version 21:39:47 + JAVA_VER=21 21:39:47 + echo 21 21:39:47 21 21:39:47 + + javac -version 21:39:47 sed -n ;s/javac \(.*\)\.\(.*\)\..*.*$/\1/p; 21:39:48 [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. 21:39:48 [INFO] Once installed this environment will be reused. 21:39:48 [INFO] This may take a few minutes... 21:39:48 + JAVAC_VER=21 21:39:48 + echo 21 21:39:48 21 21:39:48 ok, java is 21 or newer 21:39:48 + [ 21 -ge 21 ] 21:39:48 + [ 21 -ge 21 ] 21:39:48 + echo ok, java is 21 or newer 21:39:48 + wget -nv https://dlcdn.apache.org/maven/maven-3/3.9.12/binaries/apache-maven-3.9.12-bin.tar.gz -P /tmp 21:39:48 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] 21:39:48 + sudo mkdir -p /opt 21:39:48 + sudo tar xf /tmp/apache-maven-3.9.12-bin.tar.gz -C /opt 21:39:48 + sudo ln -s /opt/apache-maven-3.9.12 /opt/maven 21:39:48 + sudo ln -s /opt/maven/bin/mvn /usr/bin/mvn 21:39:48 + mvn --version 21:39:49 Apache Maven 3.9.12 (848fbb4bf2d427b72bdb2471c22fced7ebd9a7a1) 21:39:49 Maven home: /opt/maven 21:39:49 Java version: 21.0.9, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64 21:39:49 Default locale: en, platform encoding: UTF-8 21:39:49 OS name: "linux", version: "5.15.0-164-generic", arch: "amd64", family: "unix" 21:39:49 NOTE: Picked up JDK_JAVA_OPTIONS: 21:39:49 --add-opens=java.base/java.io=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.lang=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.lang.invoke=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.net=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.nio=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.nio.charset=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.nio.file=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.util=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.util.jar=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.util.stream=ALL-UNNAMED 21:39:49 --add-opens=java.base/java.util.zip=ALL-UNNAMED 21:39:49 --add-opens java.base/sun.nio.ch=ALL-UNNAMED 21:39:49 --add-opens java.base/sun.nio.fs=ALL-UNNAMED 21:39:49 -Xlog:disable 21:39:53 [INFO] Installing environment for https://github.com/Lucas-C/pre-commit-hooks. 21:39:53 [INFO] Once installed this environment will be reused. 21:39:53 [INFO] This may take a few minutes... 21:39:59 [INFO] Installing environment for https://github.com/pre-commit/mirrors-autopep8. 21:39:59 [INFO] Once installed this environment will be reused. 21:39:59 [INFO] This may take a few minutes... 21:40:03 [INFO] Installing environment for https://github.com/perltidy/perltidy. 21:40:03 [INFO] Once installed this environment will be reused. 21:40:03 [INFO] This may take a few minutes... 21:40:05 docs: freeze> python -m pip freeze --all 21:40:05 docs-linkcheck: freeze> python -m pip freeze --all 21:40:05 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 21:40:05 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 21:40:05 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 21:40:05 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 21:40:08 docs: OK ✔ in 29.35 seconds 21:40:08 pylint: install_deps> python -I -m pip install 'pylint>=2.6.0' 21:40:11 docs-linkcheck: OK ✔ in 30.83 seconds 21:40:11 pylint: freeze> python -m pip freeze --all 21:40:11 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 21:40:11 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}$' '{}' + 21:40:13 trim trailing whitespace.................................................Passed 21:40:13 Tabs remover.............................................................Passed 21:40:13 autopep8.................................................................Passed 21:40:17 perltidy.................................................................Passed 21:40:18 pre-commit: commands[3] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run gitlint-ci --hook-stage manual 21:40:18 [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. 21:40:18 [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. 21:40:18 [INFO] Installing environment for https://github.com/jorisroovers/gitlint. 21:40:18 [INFO] Once installed this environment will be reused. 21:40:18 [INFO] This may take a few minutes... 21:40:27 gitlint..................................................................Passed 21:40:35 21:40:35 ------------------------------------ 21:40:35 Your code has been rated at 10.00/10 21:40:35 21:41:50 pre-commit: OK ✔ in 44.86 seconds 21:41:50 pylint: OK ✔ in 28.94 seconds 21:41:50 buildcontroller: OK ✔ in 2 minutes 10.96 seconds 21:41:50 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 21:41:51 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 21:41:51 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 21:41:51 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 21:42:01 build_karaf_tests121: freeze> python -m pip freeze --all 21:42:01 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 21:42:01 build_karaf_tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh 21:42:01 build karaf in karaf121 with ./karaf121.env 21:42:01 build_karaf_tests221: freeze> python -m pip freeze --all 21:42:01 NOTE: Picked up JDK_JAVA_OPTIONS: 21:42:01 --add-opens=java.base/java.io=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.lang=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.lang.invoke=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.net=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.nio=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.nio.charset=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.nio.file=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util.jar=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util.stream=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util.zip=ALL-UNNAMED 21:42:01 --add-opens java.base/sun.nio.ch=ALL-UNNAMED 21:42:01 --add-opens java.base/sun.nio.fs=ALL-UNNAMED 21:42:01 -Xlog:disable 21:42:01 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 21:42:01 build_karaf_tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh 21:42:01 build karaf in karaf221 with ./karaf221.env 21:42:01 NOTE: Picked up JDK_JAVA_OPTIONS: 21:42:01 --add-opens=java.base/java.io=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.lang=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.lang.invoke=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.net=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.nio=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.nio.charset=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.nio.file=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util.jar=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util.stream=ALL-UNNAMED 21:42:01 --add-opens=java.base/java.util.zip=ALL-UNNAMED 21:42:01 --add-opens java.base/sun.nio.ch=ALL-UNNAMED 21:42:01 --add-opens java.base/sun.nio.fs=ALL-UNNAMED 21:42:01 -Xlog:disable 21:42:02 build_karaf_tests190: freeze> python -m pip freeze --all 21:42:02 build_karaf_tests71: freeze> python -m pip freeze --all 21:42:02 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 21:42:02 build_karaf_tests190: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh 21:42:02 build karaf in karafoc with ./karafoc.env 21:42:02 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 21:42:02 build_karaf_tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh 21:42:02 build karaf in karaf71 with ./karaf71.env 21:42:03 NOTE: Picked up JDK_JAVA_OPTIONS: 21:42:03 --add-opens=java.base/java.io=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.lang=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.lang.invoke=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.net=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.nio=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.nio.charset=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.nio.file=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.util=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.util.jar=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.util.stream=ALL-UNNAMED 21:42:03 --add-opens=java.base/java.util.zip=ALL-UNNAMED 21:42:03 --add-opens java.base/sun.nio.ch=ALL-UNNAMED 21:42:03 --add-opens java.base/sun.nio.fs=ALL-UNNAMED 21:42:03 -Xlog:disable 21:42:04 NOTE: Picked up JDK_JAVA_OPTIONS: 21:42:04 --add-opens=java.base/java.io=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.lang=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.lang.invoke=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.net=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.nio=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.nio.charset=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.nio.file=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.util=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.util.jar=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.util.stream=ALL-UNNAMED 21:42:04 --add-opens=java.base/java.util.zip=ALL-UNNAMED 21:42:04 --add-opens java.base/sun.nio.ch=ALL-UNNAMED 21:42:04 --add-opens java.base/sun.nio.fs=ALL-UNNAMED 21:42:04 -Xlog:disable 21:43:05 build_karaf_tests121: OK ✔ in 1 minute 14.62 seconds 21:43:05 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 21:43:13 build_karaf_tests221: OK ✔ in 1 minute 22.37 seconds 21:43:13 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 21:43:20 [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] 21:43:20 [ERROR] 21:43:20 [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 21:43:20 [ERROR] Re-run Maven using the -X switch to enable full debug logging. 21:43:20 [ERROR] 21:43:20 [ERROR] For more information about the errors and possible solutions, please read the following articles: 21:43:20 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 21:43:21 build_karaf_tests190: OK ✔ in 1 minute 30.52 seconds 21:43:21 build_karaf_tests71: OK ✔ in 1 minute 30.53 seconds 21:43:21 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 21:43:30 buildlighty: freeze> python -m pip freeze --all 21:43:31 sims: freeze> python -m pip freeze --all 21:43:31 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 21:43:31 buildlighty: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh 21:43:31 NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED 21:43:31 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 21:43:31 sims: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_lightynode.sh 21:43:31 Using lighynode version 20.1.0.5 21:43:31 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory 21:44:16 sims: OK ✔ in 22.16 seconds 21:44:16 buildlighty: OK ✔ in 47.7 seconds 21:44:16 testsPCE: freeze> python -m pip freeze --all 21:44:17 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 21:44:17 testsPCE: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh pce 21:44:17 pytest -q transportpce_tests/pce/test01_pce.py 21:45:04 .................... [100%] 21:46:08 20 passed in 110.72s (0:01:50) 21:46:08 pytest -q transportpce_tests/pce/test02_pce_400G.py 21:46:24 ............ [100%] 21:46:55 12 passed in 46.68s 21:46:55 pytest -q transportpce_tests/pce/test03_gnpy.py 21:47:12 ........ [100%] 21:47:33 8 passed in 38.16s 21:47:33 pytest -q transportpce_tests/pce/test04_pce_bug_fix.py 21:48:05 ... [100%] 21:48:10 3 passed in 36.15s 21:48:10 testsPCE: OK ✔ in 4 minutes 49.7 seconds 21:48:10 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 21:48:10 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 21:48:10 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 21:48:20 tests190: freeze> python -m pip freeze --all 21:48:20 tests121: freeze> python -m pip freeze --all 21:48:20 tests_tapi: freeze> python -m pip freeze --all 21:48:20 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 21:48:20 tests190: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh oc 21:48:20 using environment variables from ./karafoc.env 21:48:20 pytest -q transportpce_tests/oc/test01_portmapping.py 21:48:20 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 21:48:20 tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 1.2.1 21:48:20 using environment variables from ./karaf121.env 21:48:20 pytest -q transportpce_tests/1.2.1/test01_portmapping.py 21:48:20 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 21:48:20 tests_tapi: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi 21:48:20 using environment variables from ./karaf221.env 21:48:20 pytest -q transportpce_tests/tapi/test01_abstracted_topology.py 21:49:25 ........... [100%] 21:49:40 10 passed in 80.09s (0:01:20) 21:49:40 pytest -q transportpce_tests/oc/test02_topology.py 21:49:47 .................................... [100%] 21:50:28 21 passed in 128.06s (0:02:08) 21:50:28 pytest -q transportpce_tests/1.2.1/test02_topo_portmapping.py 21:50:29 ........................ [100%] 21:50:47 14 passed in 66.72s (0:01:06) 21:50:48 pytest -q transportpce_tests/oc/test03_renderer.py 21:50:48 ................ [100%] 21:51:26 6 passed in 57.68s 21:51:26 pytest -q transportpce_tests/1.2.1/test03_topology.py 21:51:27 .................... [100%] 21:51:46 19 passed in 58.26s 21:51:46 tests190: OK ✔ in 3 minutes 36.48 seconds 21:51:46 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 21:51:53 .tests71: freeze> python -m pip freeze --all 21:51:53 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 21:51:53 tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 21:51:53 using environment variables from ./karaf71.env 21:51:53 pytest -q transportpce_tests/7.1/test01_portmapping.py 21:52:13 .................................... [100%] 21:52:49 12 passed in 55.94s 21:52:50 pytest -q transportpce_tests/7.1/test02_otn_renderer.py 21:52:50 ............................... [100%] 21:53:35 51 passed in 314.51s (0:05:14) 21:53:35 pytest -q transportpce_tests/tapi/test02_full_topology.py 21:53:35 ...................... [100%] 21:53:59 44 passed in 151.95s (0:02:31) 21:53:59 pytest -q transportpce_tests/1.2.1/test04_renderer_service_path_nominal.py 21:54:00 ............................................................................... [100%] 21:55:28 62 passed in 157.98s (0:02:37) 21:55:28 pytest -q transportpce_tests/7.1/test03_renderer_or_modes.py 21:55:30 .. [100%] 21:55:32 24 passed in 93.12s (0:01:33) 21:55:32 pytest -q transportpce_tests/1.2.1/test05_olm.py 21:55:52 ..FF...........F............................F....F....................................................... [100%] 21:58:53 40 passed in 199.97s (0:03:19) 21:58:53 pytest -q transportpce_tests/1.2.1/test06_end2end.py 21:58:56 . [100%] 21:58:59 =================================== FAILURES =================================== 21:58:59 _ TestTransportPCEFullTopology.test_18a_get_tapi_Pht_node_details_at_Pht_Service_creation _ 21:58:59 21:58:59 self = 21:58:59 21:58:59 def test_18a_get_tapi_Pht_node_details_at_Pht_Service_creation(self): 21:58:59 response = test_utils.get_tapi_topology_node( 21:58:59 test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1OTS, "nonconfig") 21:58:59 time.sleep(2) 21:58:59 self.assertEqual(response['status_code'], requests.codes.ok) 21:58:59 input_dict_1 = {"spectrum-capability-pac": {"occupied-spectrum": [{"upper-frequency": "196125000000000", 21:58:59 "lower-frequency": "196075000000000"}], 21:58:59 "supportable-spectrum": [{"upper-frequency": "196125000000000", 21:58:59 "lower-frequency": "191325000000000"}]} 21:58:59 } 21:58:59 21:58:59 self.assertDictEqual(dict(input_dict_1, 21:58:59 **response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']), 21:58:59 response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']) 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'eNodeEdgePoint') 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1') 21:58:59 self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') 21:58:59 self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '100.0') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '100.0') 21:58:59 self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '100.0') 21:58:59 self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] 21:58:59 ['client-node-edge-point'][0]['node-edge-point-uuid'], 'f32f5e9e-d167-31ba-a9e4-8f1efdb8786d') 21:58:59 self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] 21:58:59 ['parent-node-edge-point']['node-edge-point-uuid'], '21efd6a4-2d81-3cdb-aabb-b983fb61904e') 21:58:59 21:58:59 response = test_utils.get_tapi_topology_node( 21:58:59 test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1OTSi, "nonconfig") 21:58:59 time.sleep(2) 21:58:59 self.assertDictEqual(dict(input_dict_1, 21:58:59 **response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']), 21:58:59 response['onep'][0]['tapi-photonic-media:photonic-media-node-edge-point-spec']) 21:58:59 self.assertEqual(response['status_code'], requests.codes.ok) 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'PhotMedNodeEdgePoint') 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+OTSi_MEDIA_CHANNEL+XPDR1-NETWORK1') 21:58:59 self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') 21:58:59 self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '100.0') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '100.0') 21:58:59 self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '100.0') 21:58:59 > self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] 21:58:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 21:58:59 ['client-node-edge-point'][0]['node-edge-point-uuid'], '7d2a0549-63e3-3c7f-b4dc-5653e8a81dbe') 21:58:59 E KeyError: 'tapi-connectivity:cep-list' 21:58:59 21:58:59 transportpce_tests/tapi/test02_full_topology.py:428: KeyError 21:58:59 _ TestTransportPCEFullTopology.test_18b_get_tapi_OTN_node_details_at_Pht_Service_creation _ 21:58:59 21:58:59 self = 21:58:59 21:58:59 def test_18b_get_tapi_OTN_node_details_at_Pht_Service_creation(self): 21:58:59 response = test_utils.get_tapi_topology_node( 21:58:59 test_utils.T0_FULL_MULTILAYER_TOPO_UUID, self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1iODU, "nonconfig") 21:58:59 time.sleep(2) 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'iNodeEdgePoint_N') 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+iODU+XPDR1-NETWORK1') 21:58:59 self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') 21:58:59 self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '100.0') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '100.0') 21:58:59 self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '100.0') 21:58:59 21:58:59 response = test_utils.get_tapi_topology_node(test_utils.T0_FULL_MULTILAYER_TOPO_UUID, 21:58:59 self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1eODUC1, 21:58:59 "nonconfig") 21:58:59 time.sleep(2) 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value-name'], 'eNodeEdgePoint_N') 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1') 21:58:59 self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') 21:58:59 self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '10.0') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '10.0') 21:58:59 self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '10.0') 21:58:59 > self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] 21:58:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 21:58:59 ['parent-node-edge-point']['node-edge-point-uuid'], '72c6b97a-3944-3d88-9882-b7e688bb2772') 21:58:59 E KeyError: 'tapi-connectivity:cep-list' 21:58:59 21:58:59 transportpce_tests/tapi/test02_full_topology.py:478: KeyError 21:58:59 _ TestTransportPCEFullTopology.test_20_get_tapi_node_details_at_ODU_Service_creation _ 21:58:59 21:58:59 self = 21:58:59 21:58:59 def test_20_get_tapi_node_details_at_ODU_Service_creation(self): 21:58:59 # ODU service creation correspond to the creation of HO-ODU between 2 Network ports and is associated an 21:58:59 # iODU4 top connection which uses 100% of underlying OTU4 21:58:59 response = test_utils.get_tapi_topology_node(test_utils.T0_FULL_MULTILAYER_TOPO_UUID, 21:58:59 self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1eODUC1, 21:58:59 "nonconfig") 21:58:59 time.sleep(2) 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1') 21:58:59 self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') 21:58:59 self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['available-payload-structure'][0]['capacity']['value'], '10.0') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['number-of-cep-instances'], '1') 21:58:59 self.assertEqual(response['onep'][0]['supported-payload-structure'][0]['capacity']['value'], '10.0') 21:58:59 self.assertEqual(response['onep'][0]['available-capacity']['total-size']['value'], '10.0') 21:58:59 > self.assertEqual(response['onep'][0]['tapi-connectivity:cep-list']['connection-end-point'][0] 21:58:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 21:58:59 ['client-node-edge-point'][0]['node-edge-point-uuid'], 'c6cd334c-51a1-3995-bed3-5cf2b7445c04') 21:58:59 E KeyError: 'tapi-connectivity:cep-list' 21:58:59 21:58:59 transportpce_tests/tapi/test02_full_topology.py:545: KeyError 21:58:59 _ TestTransportPCEFullTopology.test_23_get_tapi_node_details_at_DSR_Service_creation _ 21:58:59 21:58:59 self = 21:58:59 21:58:59 def test_23_get_tapi_node_details_at_DSR_Service_creation(self): 21:58:59 21:58:59 response = test_utils.get_tapi_topology_node(test_utils.T0_FULL_MULTILAYER_TOPO_UUID, 21:58:59 self.uuidSpdrSA1xpdr1, self.uuidOnepSpdrSA1xpdr1eODUC1, 21:58:59 "nonconfig") 21:58:59 time.sleep(2) 21:58:59 self.assertEqual(response['onep'][0]['name'][0]['value'], 'SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1') 21:58:59 self.assertEqual(response['onep'][0]['administrative-state'], 'UNLOCKED') 21:58:59 self.assertEqual(response['onep'][0]['operational-state'], 'ENABLED') 21:58:59 > self.assertEqual(response['onep'][0]['available-payload-structure'][0]['number-of-cep-instances'], '0') 21:58:59 E AssertionError: '1' != '0' 21:58:59 E - 1 21:58:59 E + 0 21:58:59 21:58:59 transportpce_tests/tapi/test02_full_topology.py:663: AssertionError 21:58:59 ______ TestTransportPCEFullTopology.test_25_get_connectivity_service_list ______ 21:58:59 21:58:59 self = 21:58:59 21:58:59 def test_25_get_connectivity_service_list(self): 21:58:59 response = test_utils.transportpce_api_rpc_request( 21:58:59 'tapi-connectivity', 'get-connectivity-service-list', None) 21:58:59 self.assertEqual(response['status_code'], requests.codes.ok) 21:58:59 liste_service = response['output']['service'] 21:58:59 for ele in liste_service: 21:58:59 if ele['uuid'] == self.uuid_services.pm: 21:58:59 self.assertEqual(ele['operational-state'], 'ENABLED') 21:58:59 # self.assertEqual(ele['service-layer'], 'PHOTONIC_MEDIA') 21:58:59 self.assertEqual(ele['layer-protocol-name'], 'PHOTONIC_MEDIA') 21:58:59 nbconnection = len(ele['connection']) 21:58:59 self.assertEqual(nbconnection, 4, 'There should be 4 connections') 21:58:59 elif ele['uuid'] == self.uuid_services.odu: 21:58:59 > self.assertEqual(ele['operational-state'], 'ENABLED') 21:58:59 E AssertionError: 'DISABLED' != 'ENABLED' 21:58:59 E - DISABLED 21:58:59 E + ENABLED 21:58:59 21:58:59 transportpce_tests/tapi/test02_full_topology.py:714: AssertionError 21:58:59 =========================== short test summary info ============================ 21:58:59 FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_18a_get_tapi_Pht_node_details_at_Pht_Service_creation 21:58:59 FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_18b_get_tapi_OTN_node_details_at_Pht_Service_creation 21:58:59 FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_20_get_tapi_node_details_at_ODU_Service_creation 21:58:59 FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_23_get_tapi_node_details_at_DSR_Service_creation 21:58:59 FAILED transportpce_tests/tapi/test02_full_topology.py::TestTransportPCEFullTopology::test_25_get_connectivity_service_list 21:58:59 5 failed, 31 passed in 324.00s (0:05:23) 21:58:59 tests_tapi: exit 1 (639.16 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi pid=6831 21:58:59 tests_tapi: FAIL ✖ in 10 minutes 49.63 seconds 21:58:59 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 21:59:08 tests221: freeze> python -m pip freeze --all 21:59:09 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 21:59:09 tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 21:59:09 using environment variables from ./karaf221.env 21:59:09 pytest -q transportpce_tests/2.2.1/test01_portmapping.py 21:59:54 ............F. [100%] 22:01:22 48 passed in 354.12s (0:05:54) 22:01:22 pytest -q transportpce_tests/7.1/test04_renderer_regen_mode.py 22:01:37 ..........F.......FFFF..............................E.. [100%] 22:03:08 =================================== FAILURES =================================== 22:03:08 __________ TestTransportPCEPortmapping.test_01_rdm_device_connection ___________ 22:03:08 22:03:08 self = 22:03:08 conn = 22:03:08 method = 'PUT' 22:03:08 url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1' 22:03:08 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}}]}' 22:03:08 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='} 22:03:08 retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 22:03:08 timeout = Timeout(connect=30, read=30, total=None), chunked = False 22:03:08 response_conn = 22:03:08 preload_content = False, decode_content = False, enforce_content_length = True 22:03:08 22:03:08 def _make_request( 22:03:08 self, 22:03:08 conn: BaseHTTPConnection, 22:03:08 method: str, 22:03:08 url: str, 22:03:08 body: _TYPE_BODY | None = None, 22:03:08 headers: typing.Mapping[str, str] | None = None, 22:03:08 retries: Retry | None = None, 22:03:08 timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 22:03:08 chunked: bool = False, 22:03:08 response_conn: BaseHTTPConnection | None = None, 22:03:08 preload_content: bool = True, 22:03:08 decode_content: bool = True, 22:03:08 enforce_content_length: bool = True, 22:03:08 ) -> BaseHTTPResponse: 22:03:08 """ 22:03:08 Perform a request on a given urllib connection object taken from our 22:03:08 pool. 22:03:08 22:03:08 :param conn: 22:03:08 a connection from one of our connection pools 22:03:08 22:03:08 :param method: 22:03:08 HTTP request method (such as GET, POST, PUT, etc.) 22:03:08 22:03:08 :param url: 22:03:08 The URL to perform the request on. 22:03:08 22:03:08 :param body: 22:03:08 Data to send in the request body, either :class:`str`, :class:`bytes`, 22:03:08 an iterable of :class:`str`/:class:`bytes`, or a file-like object. 22:03:08 22:03:08 :param headers: 22:03:08 Dictionary of custom headers to send, such as User-Agent, 22:03:08 If-None-Match, etc. If None, pool headers are used. If provided, 22:03:08 these headers completely replace any pool-specific headers. 22:03:08 22:03:08 :param retries: 22:03:08 Configure the number of retries to allow before raising a 22:03:08 :class:`~urllib3.exceptions.MaxRetryError` exception. 22:03:08 22:03:08 Pass ``None`` to retry until you receive a response. Pass a 22:03:08 :class:`~urllib3.util.retry.Retry` object for fine-grained control 22:03:08 over different types of retries. 22:03:08 Pass an integer number to retry connection errors that many times, 22:03:08 but no other types of errors. Pass zero to never retry. 22:03:08 22:03:08 If ``False``, then retries are disabled and any exception is raised 22:03:08 immediately. Also, instead of raising a MaxRetryError on redirects, 22:03:08 the redirect response will be returned. 22:03:08 22:03:08 :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 22:03:08 22:03:08 :param timeout: 22:03:08 If specified, overrides the default timeout for this one 22:03:08 request. It may be a float (in seconds) or an instance of 22:03:08 :class:`urllib3.util.Timeout`. 22:03:08 22:03:08 :param chunked: 22:03:08 If True, urllib3 will send the body using chunked transfer 22:03:08 encoding. Otherwise, urllib3 will send the body using the standard 22:03:08 content-length form. Defaults to False. 22:03:08 22:03:08 :param response_conn: 22:03:08 Set this to ``None`` if you will handle releasing the connection or 22:03:08 set the connection to have the response release it. 22:03:08 22:03:08 :param preload_content: 22:03:08 If True, the response's body will be preloaded during construction. 22:03:08 22:03:08 :param decode_content: 22:03:08 If True, will attempt to decode the body based on the 22:03:08 'content-encoding' header. 22:03:08 22:03:08 :param enforce_content_length: 22:03:08 Enforce content length checking. Body returned by server must match 22:03:08 value of Content-Length header, if present. Otherwise, raise error. 22:03:08 """ 22:03:08 self.num_requests += 1 22:03:08 22:03:08 timeout_obj = self._get_timeout(timeout) 22:03:08 timeout_obj.start_connect() 22:03:08 conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) 22:03:08 22:03:08 try: 22:03:08 # Trigger any extra validation we need to do. 22:03:08 try: 22:03:08 self._validate_conn(conn) 22:03:08 except (SocketTimeout, BaseSSLError) as e: 22:03:08 self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) 22:03:08 raise 22:03:08 22:03:08 # _validate_conn() starts the connection to an HTTPS proxy 22:03:08 # so we need to wrap errors with 'ProxyError' here too. 22:03:08 except ( 22:03:08 OSError, 22:03:08 NewConnectionError, 22:03:08 TimeoutError, 22:03:08 BaseSSLError, 22:03:08 CertificateError, 22:03:08 SSLError, 22:03:08 ) as e: 22:03:08 new_e: Exception = e 22:03:08 if isinstance(e, (BaseSSLError, CertificateError)): 22:03:08 new_e = SSLError(e) 22:03:08 # If the connection didn't successfully connect to it's proxy 22:03:08 # then there 22:03:08 if isinstance( 22:03:08 new_e, (OSError, NewConnectionError, TimeoutError, SSLError) 22:03:08 ) and (conn and conn.proxy and not conn.has_connected_to_proxy): 22:03:08 new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) 22:03:08 raise new_e 22:03:08 22:03:08 # conn.request() calls http.client.*.request, not the method in 22:03:08 # urllib3.request. It also calls makefile (recv) on the socket. 22:03:08 try: 22:03:08 conn.request( 22:03:08 method, 22:03:08 url, 22:03:08 body=body, 22:03:08 headers=headers, 22:03:08 chunked=chunked, 22:03:08 preload_content=preload_content, 22:03:08 decode_content=decode_content, 22:03:08 enforce_content_length=enforce_content_length, 22:03:08 ) 22:03:08 22:03:08 # We are swallowing BrokenPipeError (errno.EPIPE) since the server is 22:03:08 # legitimately able to close the connection after sending a valid response. 22:03:08 # With this behaviour, the received response is still readable. 22:03:08 except BrokenPipeError: 22:03:08 pass 22:03:08 except OSError as e: 22:03:08 # MacOS/Linux 22:03:08 # EPROTOTYPE and ECONNRESET are needed on macOS 22:03:08 # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ 22:03:08 # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. 22:03:08 if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: 22:03:08 raise 22:03:08 22:03:08 # Reset the timeout for the recv() on the socket 22:03:08 read_timeout = timeout_obj.read_timeout 22:03:08 22:03:08 if not conn.is_closed: 22:03:08 # In Python 3 socket.py will catch EAGAIN and return None when you 22:03:08 # try and read into the file pointer created by http.client, which 22:03:08 # instead raises a BadStatusLine exception. Instead of catching 22:03:08 # the exception and assuming all BadStatusLine exceptions are read 22:03:08 # timeouts, check for a zero timeout before making the request. 22:03:08 if read_timeout == 0: 22:03:08 raise ReadTimeoutError( 22:03:08 self, url, f"Read timed out. (read timeout={read_timeout})" 22:03:08 ) 22:03:08 conn.timeout = read_timeout 22:03:08 22:03:08 # Receive the response from the server 22:03:08 try: 22:03:08 > response = conn.getresponse() 22:03:08 ^^^^^^^^^^^^^^^^^^ 22:03:08 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:534: 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connection.py:571: in getresponse 22:03:08 httplib_response = super().getresponse() 22:03:08 ^^^^^^^^^^^^^^^^^^^^^ 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1395: in getresponse 22:03:08 response.begin() 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:325: in begin 22:03:08 version, status, reason = self._read_status() 22:03:08 ^^^^^^^^^^^^^^^^^^^ 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:286: in _read_status 22:03:08 line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 22:03:08 self = 22:03:08 b = 22:03:08 22:03:08 def readinto(self, b): 22:03:08 """Read up to len(b) bytes into the writable buffer *b* and return 22:03:08 the number of bytes read. If the socket is non-blocking and no bytes 22:03:08 are available, None is returned. 22:03:08 22:03:08 If *b* is non-empty, a 0 return value indicates that the connection 22:03:08 was shutdown at the other end. 22:03:08 """ 22:03:08 self._checkClosed() 22:03:08 self._checkReadable() 22:03:08 if self._timeout_occurred: 22:03:08 raise OSError("cannot read from timed out object") 22:03:08 while True: 22:03:08 try: 22:03:08 > return self._sock.recv_into(b) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 E TimeoutError: timed out 22:03:08 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/socket.py:718: TimeoutError 22:03:08 22:03:08 The above exception was the direct cause of the following exception: 22:03:08 22:03:08 self = 22:03:08 request = , stream = False 22:03:08 timeout = Timeout(connect=30, read=30, total=None), verify = True, cert = None 22:03:08 proxies = OrderedDict() 22:03:08 22:03:08 def send( 22:03:08 self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 22:03:08 ): 22:03:08 """Sends PreparedRequest object. Returns Response object. 22:03:08 22:03:08 :param request: The :class:`PreparedRequest ` being sent. 22:03:08 :param stream: (optional) Whether to stream the request content. 22:03:08 :param timeout: (optional) How long to wait for the server to send 22:03:08 data before giving up, as a float, or a :ref:`(connect timeout, 22:03:08 read timeout) ` tuple. 22:03:08 :type timeout: float or tuple or urllib3 Timeout object 22:03:08 :param verify: (optional) Either a boolean, in which case it controls whether 22:03:08 we verify the server's TLS certificate, or a string, in which case it 22:03:08 must be a path to a CA bundle to use 22:03:08 :param cert: (optional) Any user-provided SSL certificate to be trusted. 22:03:08 :param proxies: (optional) The proxies dictionary to apply to the request. 22:03:08 :rtype: requests.Response 22:03:08 """ 22:03:08 22:03:08 try: 22:03:08 conn = self.get_connection_with_tls_context( 22:03:08 request, verify, proxies=proxies, cert=cert 22:03:08 ) 22:03:08 except LocationValueError as e: 22:03:08 raise InvalidURL(e, request=request) 22:03:08 22:03:08 self.cert_verify(conn, request.url, verify, cert) 22:03:08 url = self.request_url(request, proxies) 22:03:08 self.add_headers( 22:03:08 request, 22:03:08 stream=stream, 22:03:08 timeout=timeout, 22:03:08 verify=verify, 22:03:08 cert=cert, 22:03:08 proxies=proxies, 22:03:08 ) 22:03:08 22:03:08 chunked = not (request.body is None or "Content-Length" in request.headers) 22:03:08 22:03:08 if isinstance(timeout, tuple): 22:03:08 try: 22:03:08 connect, read = timeout 22:03:08 timeout = TimeoutSauce(connect=connect, read=read) 22:03:08 except ValueError: 22:03:08 raise ValueError( 22:03:08 f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 22:03:08 f"or a single float to set both timeouts to the same value." 22:03:08 ) 22:03:08 elif isinstance(timeout, TimeoutSauce): 22:03:08 pass 22:03:08 else: 22:03:08 timeout = TimeoutSauce(connect=timeout, read=timeout) 22:03:08 22:03:08 try: 22:03:08 > resp = conn.urlopen( 22:03:08 method=request.method, 22:03:08 url=url, 22:03:08 body=request.body, 22:03:08 headers=request.headers, 22:03:08 redirect=False, 22:03:08 assert_same_host=False, 22:03:08 preload_content=False, 22:03:08 decode_content=False, 22:03:08 retries=self.max_retries, 22:03:08 timeout=timeout, 22:03:08 chunked=chunked, 22:03:08 ) 22:03:08 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:644: 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:841: in urlopen 22:03:08 retries = retries.increment( 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/retry.py:490: in increment 22:03:08 raise reraise(type(error), error, _stacktrace) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/util.py:39: in reraise 22:03:08 raise value 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:787: in urlopen 22:03:08 response = self._make_request( 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:536: in _make_request 22:03:08 self._raise_timeout(err=e, url=url, timeout_value=read_timeout) 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 22:03:08 self = 22:03:08 err = TimeoutError('timed out') 22:03:08 url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1' 22:03:08 timeout_value = 30 22:03:08 22:03:08 def _raise_timeout( 22:03:08 self, 22:03:08 err: BaseSSLError | OSError | SocketTimeout, 22:03:08 url: str, 22:03:08 timeout_value: _TYPE_TIMEOUT | None, 22:03:08 ) -> None: 22:03:08 """Is the error actually a timeout? Will raise a ReadTimeout or pass""" 22:03:08 22:03:08 if isinstance(err, SocketTimeout): 22:03:08 > raise ReadTimeoutError( 22:03:08 self, url, f"Read timed out. (read timeout={timeout_value})" 22:03:08 ) from err 22:03:08 E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) 22:03:08 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:367: ReadTimeoutError 22:03:08 22:03:08 During handling of the above exception, another exception occurred: 22:03:08 22:03:08 self = 22:03:08 22:03:08 def test_01_rdm_device_connection(self): 22:03:08 > response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION)) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 22:03:08 transportpce_tests/2.2.1/test01_portmapping.py:51: 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 transportpce_tests/common/test_utils.py:376: in mount_device 22:03:08 response = put_request(url[RESTCONF_VERSION].format('{}', node), body) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 transportpce_tests/common/test_utils.py:125: in put_request 22:03:08 return requests.request( 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/api.py:59: in request 22:03:08 return session.request(method=method, url=url, **kwargs) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:589: in request 22:03:08 resp = self.send(prep, **send_kwargs) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:703: in send 22:03:08 r = adapter.send(request, **kwargs) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 22:03:08 self = 22:03:08 request = , stream = False 22:03:08 timeout = Timeout(connect=30, read=30, total=None), verify = True, cert = None 22:03:08 proxies = OrderedDict() 22:03:08 22:03:08 def send( 22:03:08 self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 22:03:08 ): 22:03:08 """Sends PreparedRequest object. Returns Response object. 22:03:08 22:03:08 :param request: The :class:`PreparedRequest ` being sent. 22:03:08 :param stream: (optional) Whether to stream the request content. 22:03:08 :param timeout: (optional) How long to wait for the server to send 22:03:08 data before giving up, as a float, or a :ref:`(connect timeout, 22:03:08 read timeout) ` tuple. 22:03:08 :type timeout: float or tuple or urllib3 Timeout object 22:03:08 :param verify: (optional) Either a boolean, in which case it controls whether 22:03:08 we verify the server's TLS certificate, or a string, in which case it 22:03:08 must be a path to a CA bundle to use 22:03:08 :param cert: (optional) Any user-provided SSL certificate to be trusted. 22:03:08 :param proxies: (optional) The proxies dictionary to apply to the request. 22:03:08 :rtype: requests.Response 22:03:08 """ 22:03:08 22:03:08 try: 22:03:08 conn = self.get_connection_with_tls_context( 22:03:08 request, verify, proxies=proxies, cert=cert 22:03:08 ) 22:03:08 except LocationValueError as e: 22:03:08 raise InvalidURL(e, request=request) 22:03:08 22:03:08 self.cert_verify(conn, request.url, verify, cert) 22:03:08 url = self.request_url(request, proxies) 22:03:08 self.add_headers( 22:03:08 request, 22:03:08 stream=stream, 22:03:08 timeout=timeout, 22:03:08 verify=verify, 22:03:08 cert=cert, 22:03:08 proxies=proxies, 22:03:08 ) 22:03:08 22:03:08 chunked = not (request.body is None or "Content-Length" in request.headers) 22:03:08 22:03:08 if isinstance(timeout, tuple): 22:03:08 try: 22:03:08 connect, read = timeout 22:03:08 timeout = TimeoutSauce(connect=connect, read=read) 22:03:08 except ValueError: 22:03:08 raise ValueError( 22:03:08 f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 22:03:08 f"or a single float to set both timeouts to the same value." 22:03:08 ) 22:03:08 elif isinstance(timeout, TimeoutSauce): 22:03:08 pass 22:03:08 else: 22:03:08 timeout = TimeoutSauce(connect=timeout, read=timeout) 22:03:08 22:03:08 try: 22:03:08 resp = conn.urlopen( 22:03:08 method=request.method, 22:03:08 url=url, 22:03:08 body=request.body, 22:03:08 headers=request.headers, 22:03:08 redirect=False, 22:03:08 assert_same_host=False, 22:03:08 preload_content=False, 22:03:08 decode_content=False, 22:03:08 retries=self.max_retries, 22:03:08 timeout=timeout, 22:03:08 chunked=chunked, 22:03:08 ) 22:03:08 22:03:08 except (ProtocolError, OSError) as err: 22:03:08 raise ConnectionError(err, request=request) 22:03:08 22:03:08 except MaxRetryError as e: 22:03:08 if isinstance(e.reason, ConnectTimeoutError): 22:03:08 # TODO: Remove this in 3.0.0: see #2811 22:03:08 if not isinstance(e.reason, NewConnectionError): 22:03:08 raise ConnectTimeout(e, request=request) 22:03:08 22:03:08 if isinstance(e.reason, ResponseError): 22:03:08 raise RetryError(e, request=request) 22:03:08 22:03:08 if isinstance(e.reason, _ProxyError): 22:03:08 raise ProxyError(e, request=request) 22:03:08 22:03:08 if isinstance(e.reason, _SSLError): 22:03:08 # This branch is for urllib3 v1.22 and later. 22:03:08 raise SSLError(e, request=request) 22:03:08 22:03:08 raise ConnectionError(e, request=request) 22:03:08 22:03:08 except ClosedPoolError as e: 22:03:08 raise ConnectionError(e, request=request) 22:03:08 22:03:08 except _ProxyError as e: 22:03:08 raise ProxyError(e) 22:03:08 22:03:08 except (_SSLError, _HTTPError) as e: 22:03:08 if isinstance(e, _SSLError): 22:03:08 # This branch is for urllib3 versions earlier than v1.22 22:03:08 raise SSLError(e, request=request) 22:03:08 elif isinstance(e, ReadTimeoutError): 22:03:08 > raise ReadTimeout(e, request=request) 22:03:08 E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) 22:03:08 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:690: ReadTimeout 22:03:08 ---------------------------- Captured stdout setup ----------------------------- 22:03:08 starting OpenDaylight... 22:03:08 starting KARAF (karaf221) TransportPCE build... 22:03:08 Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! 22:03:08 starting simulator xpdra in OpenROADM device version 2.2.1... 22:03:08 Searching for patterns in xpdra-221.log... Pattern found! simulator for xpdra started 22:03:08 starting simulator roadma in OpenROADM device version 2.2.1... 22:03:08 Searching for patterns in roadma-221.log... Pattern found! simulator for roadma started 22:03:08 starting simulator spdra in OpenROADM device version 2.2.1... 22:03:08 Searching for patterns in spdra-221.log... Pattern found! simulator for spdra started 22:03:08 ----------------------------- Captured stdout call ----------------------------- 22:03:08 execution of test_01_rdm_device_connection 22:03:08 ___________ TestTransportPCEPortmapping.test_02_rdm_device_connected ___________ 22:03:08 22:03:08 self = 22:03:08 conn = 22:03:08 method = 'GET' 22:03:08 url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1?content=nonconfig' 22:03:08 body = None 22:03:08 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='} 22:03:08 retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 22:03:08 timeout = Timeout(connect=30, read=30, total=None), chunked = False 22:03:08 response_conn = 22:03:08 preload_content = False, decode_content = False, enforce_content_length = True 22:03:08 22:03:08 def _make_request( 22:03:08 self, 22:03:08 conn: BaseHTTPConnection, 22:03:08 method: str, 22:03:08 url: str, 22:03:08 body: _TYPE_BODY | None = None, 22:03:08 headers: typing.Mapping[str, str] | None = None, 22:03:08 retries: Retry | None = None, 22:03:08 timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 22:03:08 chunked: bool = False, 22:03:08 response_conn: BaseHTTPConnection | None = None, 22:03:08 preload_content: bool = True, 22:03:08 decode_content: bool = True, 22:03:08 enforce_content_length: bool = True, 22:03:08 ) -> BaseHTTPResponse: 22:03:08 """ 22:03:08 Perform a request on a given urllib connection object taken from our 22:03:08 pool. 22:03:08 22:03:08 :param conn: 22:03:08 a connection from one of our connection pools 22:03:08 22:03:08 :param method: 22:03:08 HTTP request method (such as GET, POST, PUT, etc.) 22:03:08 22:03:08 :param url: 22:03:08 The URL to perform the request on. 22:03:08 22:03:08 :param body: 22:03:08 Data to send in the request body, either :class:`str`, :class:`bytes`, 22:03:08 an iterable of :class:`str`/:class:`bytes`, or a file-like object. 22:03:08 22:03:08 :param headers: 22:03:08 Dictionary of custom headers to send, such as User-Agent, 22:03:08 If-None-Match, etc. If None, pool headers are used. If provided, 22:03:08 these headers completely replace any pool-specific headers. 22:03:08 22:03:08 :param retries: 22:03:08 Configure the number of retries to allow before raising a 22:03:08 :class:`~urllib3.exceptions.MaxRetryError` exception. 22:03:08 22:03:08 Pass ``None`` to retry until you receive a response. Pass a 22:03:08 :class:`~urllib3.util.retry.Retry` object for fine-grained control 22:03:08 over different types of retries. 22:03:08 Pass an integer number to retry connection errors that many times, 22:03:08 but no other types of errors. Pass zero to never retry. 22:03:08 22:03:08 If ``False``, then retries are disabled and any exception is raised 22:03:08 immediately. Also, instead of raising a MaxRetryError on redirects, 22:03:08 the redirect response will be returned. 22:03:08 22:03:08 :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 22:03:08 22:03:08 :param timeout: 22:03:08 If specified, overrides the default timeout for this one 22:03:08 request. It may be a float (in seconds) or an instance of 22:03:08 :class:`urllib3.util.Timeout`. 22:03:08 22:03:08 :param chunked: 22:03:08 If True, urllib3 will send the body using chunked transfer 22:03:08 encoding. Otherwise, urllib3 will send the body using the standard 22:03:08 content-length form. Defaults to False. 22:03:08 22:03:08 :param response_conn: 22:03:08 Set this to ``None`` if you will handle releasing the connection or 22:03:08 set the connection to have the response release it. 22:03:08 22:03:08 :param preload_content: 22:03:08 If True, the response's body will be preloaded during construction. 22:03:08 22:03:08 :param decode_content: 22:03:08 If True, will attempt to decode the body based on the 22:03:08 'content-encoding' header. 22:03:08 22:03:08 :param enforce_content_length: 22:03:08 Enforce content length checking. Body returned by server must match 22:03:08 value of Content-Length header, if present. Otherwise, raise error. 22:03:08 """ 22:03:08 self.num_requests += 1 22:03:08 22:03:08 timeout_obj = self._get_timeout(timeout) 22:03:08 timeout_obj.start_connect() 22:03:08 conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) 22:03:08 22:03:08 try: 22:03:08 # Trigger any extra validation we need to do. 22:03:08 try: 22:03:08 self._validate_conn(conn) 22:03:08 except (SocketTimeout, BaseSSLError) as e: 22:03:08 self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) 22:03:08 raise 22:03:08 22:03:08 # _validate_conn() starts the connection to an HTTPS proxy 22:03:08 # so we need to wrap errors with 'ProxyError' here too. 22:03:08 except ( 22:03:08 OSError, 22:03:08 NewConnectionError, 22:03:08 TimeoutError, 22:03:08 BaseSSLError, 22:03:08 CertificateError, 22:03:08 SSLError, 22:03:08 ) as e: 22:03:08 new_e: Exception = e 22:03:08 if isinstance(e, (BaseSSLError, CertificateError)): 22:03:08 new_e = SSLError(e) 22:03:08 # If the connection didn't successfully connect to it's proxy 22:03:08 # then there 22:03:08 if isinstance( 22:03:08 new_e, (OSError, NewConnectionError, TimeoutError, SSLError) 22:03:08 ) and (conn and conn.proxy and not conn.has_connected_to_proxy): 22:03:08 new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) 22:03:08 raise new_e 22:03:08 22:03:08 # conn.request() calls http.client.*.request, not the method in 22:03:08 # urllib3.request. It also calls makefile (recv) on the socket. 22:03:08 try: 22:03:08 conn.request( 22:03:08 method, 22:03:08 url, 22:03:08 body=body, 22:03:08 headers=headers, 22:03:08 chunked=chunked, 22:03:08 preload_content=preload_content, 22:03:08 decode_content=decode_content, 22:03:08 enforce_content_length=enforce_content_length, 22:03:08 ) 22:03:08 22:03:08 # We are swallowing BrokenPipeError (errno.EPIPE) since the server is 22:03:08 # legitimately able to close the connection after sending a valid response. 22:03:08 # With this behaviour, the received response is still readable. 22:03:08 except BrokenPipeError: 22:03:08 pass 22:03:08 except OSError as e: 22:03:08 # MacOS/Linux 22:03:08 # EPROTOTYPE and ECONNRESET are needed on macOS 22:03:08 # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ 22:03:08 # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. 22:03:08 if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: 22:03:08 raise 22:03:08 22:03:08 # Reset the timeout for the recv() on the socket 22:03:08 read_timeout = timeout_obj.read_timeout 22:03:08 22:03:08 if not conn.is_closed: 22:03:08 # In Python 3 socket.py will catch EAGAIN and return None when you 22:03:08 # try and read into the file pointer created by http.client, which 22:03:08 # instead raises a BadStatusLine exception. Instead of catching 22:03:08 # the exception and assuming all BadStatusLine exceptions are read 22:03:08 # timeouts, check for a zero timeout before making the request. 22:03:08 if read_timeout == 0: 22:03:08 raise ReadTimeoutError( 22:03:08 self, url, f"Read timed out. (read timeout={read_timeout})" 22:03:08 ) 22:03:08 conn.timeout = read_timeout 22:03:08 22:03:08 # Receive the response from the server 22:03:08 try: 22:03:08 > response = conn.getresponse() 22:03:08 ^^^^^^^^^^^^^^^^^^ 22:03:08 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:534: 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connection.py:571: in getresponse 22:03:08 httplib_response = super().getresponse() 22:03:08 ^^^^^^^^^^^^^^^^^^^^^ 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1395: in getresponse 22:03:08 response.begin() 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:325: in begin 22:03:08 version, status, reason = self._read_status() 22:03:08 ^^^^^^^^^^^^^^^^^^^ 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:286: in _read_status 22:03:08 line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 22:03:08 self = 22:03:08 b = 22:03:08 22:03:08 def readinto(self, b): 22:03:08 """Read up to len(b) bytes into the writable buffer *b* and return 22:03:08 the number of bytes read. If the socket is non-blocking and no bytes 22:03:08 are available, None is returned. 22:03:08 22:03:08 If *b* is non-empty, a 0 return value indicates that the connection 22:03:08 was shutdown at the other end. 22:03:08 """ 22:03:08 self._checkClosed() 22:03:08 self._checkReadable() 22:03:08 if self._timeout_occurred: 22:03:08 raise OSError("cannot read from timed out object") 22:03:08 while True: 22:03:08 try: 22:03:08 > return self._sock.recv_into(b) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 E TimeoutError: timed out 22:03:08 22:03:08 /opt/pyenv/versions/3.11.10/lib/python3.11/socket.py:718: TimeoutError 22:03:08 22:03:08 The above exception was the direct cause of the following exception: 22:03:08 22:03:08 self = 22:03:08 request = , stream = False 22:03:08 timeout = Timeout(connect=30, read=30, total=None), verify = True, cert = None 22:03:08 proxies = OrderedDict() 22:03:08 22:03:08 def send( 22:03:08 self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 22:03:08 ): 22:03:08 """Sends PreparedRequest object. Returns Response object. 22:03:08 22:03:08 :param request: The :class:`PreparedRequest ` being sent. 22:03:08 :param stream: (optional) Whether to stream the request content. 22:03:08 :param timeout: (optional) How long to wait for the server to send 22:03:08 data before giving up, as a float, or a :ref:`(connect timeout, 22:03:08 read timeout) ` tuple. 22:03:08 :type timeout: float or tuple or urllib3 Timeout object 22:03:08 :param verify: (optional) Either a boolean, in which case it controls whether 22:03:08 we verify the server's TLS certificate, or a string, in which case it 22:03:08 must be a path to a CA bundle to use 22:03:08 :param cert: (optional) Any user-provided SSL certificate to be trusted. 22:03:08 :param proxies: (optional) The proxies dictionary to apply to the request. 22:03:08 :rtype: requests.Response 22:03:08 """ 22:03:08 22:03:08 try: 22:03:08 conn = self.get_connection_with_tls_context( 22:03:08 request, verify, proxies=proxies, cert=cert 22:03:08 ) 22:03:08 except LocationValueError as e: 22:03:08 raise InvalidURL(e, request=request) 22:03:08 22:03:08 self.cert_verify(conn, request.url, verify, cert) 22:03:08 url = self.request_url(request, proxies) 22:03:08 self.add_headers( 22:03:08 request, 22:03:08 stream=stream, 22:03:08 timeout=timeout, 22:03:08 verify=verify, 22:03:08 cert=cert, 22:03:08 proxies=proxies, 22:03:08 ) 22:03:08 22:03:08 chunked = not (request.body is None or "Content-Length" in request.headers) 22:03:08 22:03:08 if isinstance(timeout, tuple): 22:03:08 try: 22:03:08 connect, read = timeout 22:03:08 timeout = TimeoutSauce(connect=connect, read=read) 22:03:08 except ValueError: 22:03:08 raise ValueError( 22:03:08 f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 22:03:08 f"or a single float to set both timeouts to the same value." 22:03:08 ) 22:03:08 elif isinstance(timeout, TimeoutSauce): 22:03:08 pass 22:03:08 else: 22:03:08 timeout = TimeoutSauce(connect=timeout, read=timeout) 22:03:08 22:03:08 try: 22:03:08 > resp = conn.urlopen( 22:03:08 method=request.method, 22:03:08 url=url, 22:03:08 body=request.body, 22:03:08 headers=request.headers, 22:03:08 redirect=False, 22:03:08 assert_same_host=False, 22:03:08 preload_content=False, 22:03:08 decode_content=False, 22:03:08 retries=self.max_retries, 22:03:08 timeout=timeout, 22:03:08 chunked=chunked, 22:03:08 ) 22:03:08 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:644: 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:841: in urlopen 22:03:08 retries = retries.increment( 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/retry.py:490: in increment 22:03:08 raise reraise(type(error), error, _stacktrace) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/util.py:39: in reraise 22:03:08 raise value 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:787: in urlopen 22:03:08 response = self._make_request( 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:536: in _make_request 22:03:08 self._raise_timeout(err=e, url=url, timeout_value=read_timeout) 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 22:03:08 self = 22:03:08 err = TimeoutError('timed out') 22:03:08 url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=ROADM-A1?content=nonconfig' 22:03:08 timeout_value = 30 22:03:08 22:03:08 def _raise_timeout( 22:03:08 self, 22:03:08 err: BaseSSLError | OSError | SocketTimeout, 22:03:08 url: str, 22:03:08 timeout_value: _TYPE_TIMEOUT | None, 22:03:08 ) -> None: 22:03:08 """Is the error actually a timeout? Will raise a ReadTimeout or pass""" 22:03:08 22:03:08 if isinstance(err, SocketTimeout): 22:03:08 > raise ReadTimeoutError( 22:03:08 self, url, f"Read timed out. (read timeout={timeout_value})" 22:03:08 ) from err 22:03:08 E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) 22:03:08 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:367: ReadTimeoutError 22:03:08 22:03:08 During handling of the above exception, another exception occurred: 22:03:08 22:03:08 self = 22:03:08 22:03:08 def test_02_rdm_device_connected(self): 22:03:08 > response = test_utils.check_device_connection("ROADM-A1") 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 22:03:08 transportpce_tests/2.2.1/test01_portmapping.py:55: 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 transportpce_tests/common/test_utils.py:404: in check_device_connection 22:03:08 response = get_request(url[RESTCONF_VERSION].format('{}', node)) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 transportpce_tests/common/test_utils.py:117: in get_request 22:03:08 return requests.request( 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/api.py:59: in request 22:03:08 return session.request(method=method, url=url, **kwargs) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:589: in request 22:03:08 resp = self.send(prep, **send_kwargs) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:703: in send 22:03:08 r = adapter.send(request, **kwargs) 22:03:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:08 22:03:08 self = 22:03:08 request = , stream = False 22:03:08 timeout = Timeout(connect=30, read=30, total=None), verify = True, cert = None 22:03:08 proxies = OrderedDict() 22:03:08 22:03:08 def send( 22:03:08 self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 22:03:08 ): 22:03:08 """Sends PreparedRequest object. Returns Response object. 22:03:08 22:03:08 :param request: The :class:`PreparedRequest ` being sent. 22:03:08 :param stream: (optional) Whether to stream the request content. 22:03:08 :param timeout: (optional) How long to wait for the server to send 22:03:08 data before giving up, as a float, or a :ref:`(connect timeout, 22:03:08 read timeout) ` tuple. 22:03:08 :type timeout: float or tuple or urllib3 Timeout object 22:03:08 :param verify: (optional) Either a boolean, in which case it controls whether 22:03:08 we verify the server's TLS certificate, or a string, in which case it 22:03:08 must be a path to a CA bundle to use 22:03:08 :param cert: (optional) Any user-provided SSL certificate to be trusted. 22:03:08 :param proxies: (optional) The proxies dictionary to apply to the request. 22:03:08 :rtype: requests.Response 22:03:08 """ 22:03:08 22:03:08 try: 22:03:08 conn = self.get_connection_with_tls_context( 22:03:08 request, verify, proxies=proxies, cert=cert 22:03:08 ) 22:03:08 except LocationValueError as e: 22:03:08 raise InvalidURL(e, request=request) 22:03:08 22:03:08 self.cert_verify(conn, request.url, verify, cert) 22:03:08 url = self.request_url(request, proxies) 22:03:08 self.add_headers( 22:03:08 request, 22:03:08 stream=stream, 22:03:08 timeout=timeout, 22:03:08 verify=verify, 22:03:08 cert=cert, 22:03:08 proxies=proxies, 22:03:08 ) 22:03:08 22:03:08 chunked = not (request.body is None or "Content-Length" in request.headers) 22:03:08 22:03:08 if isinstance(timeout, tuple): 22:03:08 try: 22:03:08 connect, read = timeout 22:03:08 timeout = TimeoutSauce(connect=connect, read=read) 22:03:08 except ValueError: 22:03:08 raise ValueError( 22:03:08 f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 22:03:08 f"or a single float to set both timeouts to the same value." 22:03:08 ) 22:03:08 elif isinstance(timeout, TimeoutSauce): 22:03:08 pass 22:03:08 else: 22:03:08 timeout = TimeoutSauce(connect=timeout, read=timeout) 22:03:08 22:03:08 try: 22:03:09 resp = conn.urlopen( 22:03:09 method=request.method, 22:03:09 url=url, 22:03:09 body=request.body, 22:03:09 headers=request.headers, 22:03:09 redirect=False, 22:03:09 assert_same_host=False, 22:03:09 preload_content=False, 22:03:09 decode_content=False, 22:03:09 retries=self.max_retries, 22:03:09 timeout=timeout, 22:03:09 chunked=chunked, 22:03:09 ) 22:03:09 22:03:09 except (ProtocolError, OSError) as err: 22:03:09 raise ConnectionError(err, request=request) 22:03:09 22:03:09 except MaxRetryError as e: 22:03:09 if isinstance(e.reason, ConnectTimeoutError): 22:03:09 # TODO: Remove this in 3.0.0: see #2811 22:03:09 if not isinstance(e.reason, NewConnectionError): 22:03:09 raise ConnectTimeout(e, request=request) 22:03:09 22:03:09 if isinstance(e.reason, ResponseError): 22:03:09 raise RetryError(e, request=request) 22:03:09 22:03:09 if isinstance(e.reason, _ProxyError): 22:03:09 raise ProxyError(e, request=request) 22:03:09 22:03:09 if isinstance(e.reason, _SSLError): 22:03:09 # This branch is for urllib3 v1.22 and later. 22:03:09 raise SSLError(e, request=request) 22:03:09 22:03:09 raise ConnectionError(e, request=request) 22:03:09 22:03:09 except ClosedPoolError as e: 22:03:09 raise ConnectionError(e, request=request) 22:03:09 22:03:09 except _ProxyError as e: 22:03:09 raise ProxyError(e) 22:03:09 22:03:09 except (_SSLError, _HTTPError) as e: 22:03:09 if isinstance(e, _SSLError): 22:03:09 # This branch is for urllib3 versions earlier than v1.22 22:03:09 raise SSLError(e, request=request) 22:03:09 elif isinstance(e, ReadTimeoutError): 22:03:09 > raise ReadTimeout(e, request=request) 22:03:09 E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) 22:03:09 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:690: ReadTimeout 22:03:09 ----------------------------- Captured stdout call ----------------------------- 22:03:09 execution of test_02_rdm_device_connected 22:03:09 ___________ TestTransportPCEPortmapping.test_03_rdm_portmapping_info ___________ 22:03:09 22:03:09 self = 22:03:09 conn = 22:03:09 method = 'GET' 22:03:09 url = '/rests/data/transportpce-portmapping:network/nodes=ROADM-A1/node-info' 22:03:09 body = None 22:03:09 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='} 22:03:09 retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) 22:03:09 timeout = Timeout(connect=30, read=30, total=None), chunked = False 22:03:09 response_conn = 22:03:09 preload_content = False, decode_content = False, enforce_content_length = True 22:03:09 22:03:09 def _make_request( 22:03:09 self, 22:03:09 conn: BaseHTTPConnection, 22:03:09 method: str, 22:03:09 url: str, 22:03:09 body: _TYPE_BODY | None = None, 22:03:09 headers: typing.Mapping[str, str] | None = None, 22:03:09 retries: Retry | None = None, 22:03:09 timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, 22:03:09 chunked: bool = False, 22:03:09 response_conn: BaseHTTPConnection | None = None, 22:03:09 preload_content: bool = True, 22:03:09 decode_content: bool = True, 22:03:09 enforce_content_length: bool = True, 22:03:09 ) -> BaseHTTPResponse: 22:03:09 """ 22:03:09 Perform a request on a given urllib connection object taken from our 22:03:09 pool. 22:03:09 22:03:09 :param conn: 22:03:09 a connection from one of our connection pools 22:03:09 22:03:09 :param method: 22:03:09 HTTP request method (such as GET, POST, PUT, etc.) 22:03:09 22:03:09 :param url: 22:03:09 The URL to perform the request on. 22:03:09 22:03:09 :param body: 22:03:09 Data to send in the request body, either :class:`str`, :class:`bytes`, 22:03:09 an iterable of :class:`str`/:class:`bytes`, or a file-like object. 22:03:09 22:03:09 :param headers: 22:03:09 Dictionary of custom headers to send, such as User-Agent, 22:03:09 If-None-Match, etc. If None, pool headers are used. If provided, 22:03:09 these headers completely replace any pool-specific headers. 22:03:09 22:03:09 :param retries: 22:03:09 Configure the number of retries to allow before raising a 22:03:09 :class:`~urllib3.exceptions.MaxRetryError` exception. 22:03:09 22:03:09 Pass ``None`` to retry until you receive a response. Pass a 22:03:09 :class:`~urllib3.util.retry.Retry` object for fine-grained control 22:03:09 over different types of retries. 22:03:09 Pass an integer number to retry connection errors that many times, 22:03:09 but no other types of errors. Pass zero to never retry. 22:03:09 22:03:09 If ``False``, then retries are disabled and any exception is raised 22:03:09 immediately. Also, instead of raising a MaxRetryError on redirects, 22:03:09 the redirect response will be returned. 22:03:09 22:03:09 :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. 22:03:09 22:03:09 :param timeout: 22:03:09 If specified, overrides the default timeout for this one 22:03:09 request. It may be a float (in seconds) or an instance of 22:03:09 :class:`urllib3.util.Timeout`. 22:03:09 22:03:09 :param chunked: 22:03:09 If True, urllib3 will send the body using chunked transfer 22:03:09 encoding. Otherwise, urllib3 will send the body using the standard 22:03:09 content-length form. Defaults to False. 22:03:09 22:03:09 :param response_conn: 22:03:09 Set this to ``None`` if you will handle releasing the connection or 22:03:09 set the connection to have the response release it. 22:03:09 22:03:09 :param preload_content: 22:03:09 If True, the response's body will be preloaded during construction. 22:03:09 22:03:09 :param decode_content: 22:03:09 If True, will attempt to decode the body based on the 22:03:09 'content-encoding' header. 22:03:09 22:03:09 :param enforce_content_length: 22:03:09 Enforce content length checking. Body returned by server must match 22:03:09 value of Content-Length header, if present. Otherwise, raise error. 22:03:09 """ 22:03:09 self.num_requests += 1 22:03:09 22:03:09 timeout_obj = self._get_timeout(timeout) 22:03:09 timeout_obj.start_connect() 22:03:09 conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) 22:03:09 22:03:09 try: 22:03:09 # Trigger any extra validation we need to do. 22:03:09 try: 22:03:09 self._validate_conn(conn) 22:03:09 except (SocketTimeout, BaseSSLError) as e: 22:03:09 self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) 22:03:09 raise 22:03:09 22:03:09 # _validate_conn() starts the connection to an HTTPS proxy 22:03:09 # so we need to wrap errors with 'ProxyError' here too. 22:03:09 except ( 22:03:09 OSError, 22:03:09 NewConnectionError, 22:03:09 TimeoutError, 22:03:09 BaseSSLError, 22:03:09 CertificateError, 22:03:09 SSLError, 22:03:09 ) as e: 22:03:09 new_e: Exception = e 22:03:09 if isinstance(e, (BaseSSLError, CertificateError)): 22:03:09 new_e = SSLError(e) 22:03:09 # If the connection didn't successfully connect to it's proxy 22:03:09 # then there 22:03:09 if isinstance( 22:03:09 new_e, (OSError, NewConnectionError, TimeoutError, SSLError) 22:03:09 ) and (conn and conn.proxy and not conn.has_connected_to_proxy): 22:03:09 new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) 22:03:09 raise new_e 22:03:09 22:03:09 # conn.request() calls http.client.*.request, not the method in 22:03:09 # urllib3.request. It also calls makefile (recv) on the socket. 22:03:09 try: 22:03:09 conn.request( 22:03:09 method, 22:03:09 url, 22:03:09 body=body, 22:03:09 headers=headers, 22:03:09 chunked=chunked, 22:03:09 preload_content=preload_content, 22:03:09 decode_content=decode_content, 22:03:09 enforce_content_length=enforce_content_length, 22:03:09 ) 22:03:09 22:03:09 # We are swallowing BrokenPipeError (errno.EPIPE) since the server is 22:03:09 # legitimately able to close the connection after sending a valid response. 22:03:09 # With this behaviour, the received response is still readable. 22:03:09 except BrokenPipeError: 22:03:09 pass 22:03:09 except OSError as e: 22:03:09 # MacOS/Linux 22:03:09 # EPROTOTYPE and ECONNRESET are needed on macOS 22:03:09 # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ 22:03:09 # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. 22:03:09 if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: 22:03:09 raise 22:03:09 22:03:09 # Reset the timeout for the recv() on the socket 22:03:09 read_timeout = timeout_obj.read_timeout 22:03:09 22:03:09 if not conn.is_closed: 22:03:09 # In Python 3 socket.py will catch EAGAIN and return None when you 22:03:09 # try and read into the file pointer created by http.client, which 22:03:09 # instead raises a BadStatusLine exception. Instead of catching 22:03:09 # the exception and assuming all BadStatusLine exceptions are read 22:03:09 # timeouts, check for a zero timeout before making the request. 22:03:09 if read_timeout == 0: 22:03:09 raise ReadTimeoutError( 22:03:09 self, url, f"Read timed out. (read timeout={read_timeout})" 22:03:09 ) 22:03:09 conn.timeout = read_timeout 22:03:09 22:03:09 # Receive the response from the server 22:03:09 try: 22:03:09 > response = conn.getresponse() 22:03:09 ^^^^^^^^^^^^^^^^^^ 22:03:09 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:534: 22:03:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connection.py:571: in getresponse 22:03:09 httplib_response = super().getresponse() 22:03:09 ^^^^^^^^^^^^^^^^^^^^^ 22:03:09 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1395: in getresponse 22:03:09 response.begin() 22:03:09 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:325: in begin 22:03:09 version, status, reason = self._read_status() 22:03:09 ^^^^^^^^^^^^^^^^^^^ 22:03:09 /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:286: in _read_status 22:03:09 line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:09 22:03:09 self = 22:03:09 b = 22:03:09 22:03:09 def readinto(self, b): 22:03:09 """Read up to len(b) bytes into the writable buffer *b* and return 22:03:09 the number of bytes read. If the socket is non-blocking and no bytes 22:03:09 are available, None is returned. 22:03:09 22:03:09 If *b* is non-empty, a 0 return value indicates that the connection 22:03:09 was shutdown at the other end. 22:03:09 """ 22:03:09 self._checkClosed() 22:03:09 self._checkReadable() 22:03:09 if self._timeout_occurred: 22:03:09 raise OSError("cannot read from timed out object") 22:03:09 while True: 22:03:09 try: 22:03:09 > return self._sock.recv_into(b) 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 E TimeoutError: timed out 22:03:09 22:03:09 /opt/pyenv/versions/3.11.10/lib/python3.11/socket.py:718: TimeoutError 22:03:09 22:03:09 The above exception was the direct cause of the following exception: 22:03:09 22:03:09 self = 22:03:09 request = , stream = False 22:03:09 timeout = Timeout(connect=30, read=30, total=None), verify = True, cert = None 22:03:09 proxies = OrderedDict() 22:03:09 22:03:09 def send( 22:03:09 self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 22:03:09 ): 22:03:09 """Sends PreparedRequest object. Returns Response object. 22:03:09 22:03:09 :param request: The :class:`PreparedRequest ` being sent. 22:03:09 :param stream: (optional) Whether to stream the request content. 22:03:09 :param timeout: (optional) How long to wait for the server to send 22:03:09 data before giving up, as a float, or a :ref:`(connect timeout, 22:03:09 read timeout) ` tuple. 22:03:09 :type timeout: float or tuple or urllib3 Timeout object 22:03:09 :param verify: (optional) Either a boolean, in which case it controls whether 22:03:09 we verify the server's TLS certificate, or a string, in which case it 22:03:09 must be a path to a CA bundle to use 22:03:09 :param cert: (optional) Any user-provided SSL certificate to be trusted. 22:03:09 :param proxies: (optional) The proxies dictionary to apply to the request. 22:03:09 :rtype: requests.Response 22:03:09 """ 22:03:09 22:03:09 try: 22:03:09 conn = self.get_connection_with_tls_context( 22:03:09 request, verify, proxies=proxies, cert=cert 22:03:09 ) 22:03:09 except LocationValueError as e: 22:03:09 raise InvalidURL(e, request=request) 22:03:09 22:03:09 self.cert_verify(conn, request.url, verify, cert) 22:03:09 url = self.request_url(request, proxies) 22:03:09 self.add_headers( 22:03:09 request, 22:03:09 stream=stream, 22:03:09 timeout=timeout, 22:03:09 verify=verify, 22:03:09 cert=cert, 22:03:09 proxies=proxies, 22:03:09 ) 22:03:09 22:03:09 chunked = not (request.body is None or "Content-Length" in request.headers) 22:03:09 22:03:09 if isinstance(timeout, tuple): 22:03:09 try: 22:03:09 connect, read = timeout 22:03:09 timeout = TimeoutSauce(connect=connect, read=read) 22:03:09 except ValueError: 22:03:09 raise ValueError( 22:03:09 f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 22:03:09 f"or a single float to set both timeouts to the same value." 22:03:09 ) 22:03:09 elif isinstance(timeout, TimeoutSauce): 22:03:09 pass 22:03:09 else: 22:03:09 timeout = TimeoutSauce(connect=timeout, read=timeout) 22:03:09 22:03:09 try: 22:03:09 > resp = conn.urlopen( 22:03:09 method=request.method, 22:03:09 url=url, 22:03:09 body=request.body, 22:03:09 headers=request.headers, 22:03:09 redirect=False, 22:03:09 assert_same_host=False, 22:03:09 preload_content=False, 22:03:09 decode_content=False, 22:03:09 retries=self.max_retries, 22:03:09 timeout=timeout, 22:03:09 chunked=chunked, 22:03:09 ) 22:03:09 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:644: 22:03:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:841: in urlopen 22:03:09 retries = retries.increment( 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/retry.py:490: in increment 22:03:09 raise reraise(type(error), error, _stacktrace) 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/util/util.py:39: in reraise 22:03:09 raise value 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:787: in urlopen 22:03:09 response = self._make_request( 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:536: in _make_request 22:03:09 self._raise_timeout(err=e, url=url, timeout_value=read_timeout) 22:03:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:09 22:03:09 self = 22:03:09 err = TimeoutError('timed out') 22:03:09 url = '/rests/data/transportpce-portmapping:network/nodes=ROADM-A1/node-info' 22:03:09 timeout_value = 30 22:03:09 22:03:09 def _raise_timeout( 22:03:09 self, 22:03:09 err: BaseSSLError | OSError | SocketTimeout, 22:03:09 url: str, 22:03:09 timeout_value: _TYPE_TIMEOUT | None, 22:03:09 ) -> None: 22:03:09 """Is the error actually a timeout? Will raise a ReadTimeout or pass""" 22:03:09 22:03:09 if isinstance(err, SocketTimeout): 22:03:09 > raise ReadTimeoutError( 22:03:09 self, url, f"Read timed out. (read timeout={timeout_value})" 22:03:09 ) from err 22:03:09 E urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) 22:03:09 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/urllib3/connectionpool.py:367: ReadTimeoutError 22:03:09 22:03:09 During handling of the above exception, another exception occurred: 22:03:09 22:03:09 self = 22:03:09 22:03:09 def test_03_rdm_portmapping_info(self): 22:03:09 > response = test_utils.get_portmapping_node_attr("ROADM-A1", "node-info", None) 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 22:03:09 transportpce_tests/2.2.1/test01_portmapping.py:60: 22:03:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:09 transportpce_tests/common/test_utils.py:514: in get_portmapping_node_attr 22:03:09 response = get_request(target_url) 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 transportpce_tests/common/test_utils.py:117: in get_request 22:03:09 return requests.request( 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/requests/api.py:59: in request 22:03:09 return session.request(method=method, url=url, **kwargs) 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:589: in request 22:03:09 resp = self.send(prep, **send_kwargs) 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/requests/sessions.py:703: in send 22:03:09 r = adapter.send(request, **kwargs) 22:03:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:03:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:03:09 22:03:09 self = 22:03:09 request = , stream = False 22:03:09 timeout = Timeout(connect=30, read=30, total=None), verify = True, cert = None 22:03:09 proxies = OrderedDict() 22:03:09 22:03:09 def send( 22:03:09 self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None 22:03:09 ): 22:03:09 """Sends PreparedRequest object. Returns Response object. 22:03:09 22:03:09 :param request: The :class:`PreparedRequest ` being sent. 22:03:09 :param stream: (optional) Whether to stream the request content. 22:03:09 :param timeout: (optional) How long to wait for the server to send 22:03:09 data before giving up, as a float, or a :ref:`(connect timeout, 22:03:09 read timeout) ` tuple. 22:03:09 :type timeout: float or tuple or urllib3 Timeout object 22:03:09 :param verify: (optional) Either a boolean, in which case it controls whether 22:03:09 we verify the server's TLS certificate, or a string, in which case it 22:03:09 must be a path to a CA bundle to use 22:03:09 :param cert: (optional) Any user-provided SSL certificate to be trusted. 22:03:09 :param proxies: (optional) The proxies dictionary to apply to the request. 22:03:09 :rtype: requests.Response 22:03:09 """ 22:03:09 22:03:09 try: 22:03:09 conn = self.get_connection_with_tls_context( 22:03:09 request, verify, proxies=proxies, cert=cert 22:03:09 ) 22:03:09 except LocationValueError as e: 22:03:09 raise InvalidURL(e, request=request) 22:03:09 22:03:09 self.cert_verify(conn, request.url, verify, cert) 22:03:09 url = self.request_url(request, proxies) 22:03:09 self.add_headers( 22:03:09 request, 22:03:09 stream=stream, 22:03:09 timeout=timeout, 22:03:09 verify=verify, 22:03:09 cert=cert, 22:03:09 proxies=proxies, 22:03:09 ) 22:03:09 22:03:09 chunked = not (request.body is None or "Content-Length" in request.headers) 22:03:09 22:03:09 if isinstance(timeout, tuple): 22:03:09 try: 22:03:09 connect, read = timeout 22:03:09 timeout = TimeoutSauce(connect=connect, read=read) 22:03:09 except ValueError: 22:03:09 raise ValueError( 22:03:09 f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " 22:03:09 f"or a single float to set both timeouts to the same value." 22:03:09 ) 22:03:09 elif isinstance(timeout, TimeoutSauce): 22:03:09 pass 22:03:09 else: 22:03:09 timeout = TimeoutSauce(connect=timeout, read=timeout) 22:03:09 22:03:09 try: 22:03:09 resp = conn.urlopen( 22:03:09 method=request.method, 22:03:09 url=url, 22:03:09 body=request.body, 22:03:09 headers=request.headers, 22:03:09 redirect=False, 22:03:09 assert_same_host=False, 22:03:09 preload_content=False, 22:03:09 decode_content=False, 22:03:09 retries=self.max_retries, 22:03:09 timeout=timeout, 22:03:09 chunked=chunked, 22:03:09 ) 22:03:09 22:03:09 except (ProtocolError, OSError) as err: 22:03:09 raise ConnectionError(err, request=request) 22:03:09 22:03:09 except MaxRetryError as e: 22:03:09 if isinstance(e.reason, ConnectTimeoutError): 22:03:09 # TODO: Remove this in 3.0.0: see #2811 22:03:09 if not isinstance(e.reason, NewConnectionError): 22:03:09 raise ConnectTimeout(e, request=request) 22:03:09 22:03:09 if isinstance(e.reason, ResponseError): 22:03:09 raise RetryError(e, request=request) 22:03:09 22:03:09 if isinstance(e.reason, _ProxyError): 22:03:09 raise ProxyError(e, request=request) 22:03:09 22:03:09 if isinstance(e.reason, _SSLError): 22:03:09 # This branch is for urllib3 v1.22 and later. 22:03:09 raise SSLError(e, request=request) 22:03:09 22:03:09 raise ConnectionError(e, request=request) 22:03:09 22:03:09 except ClosedPoolError as e: 22:03:09 raise ConnectionError(e, request=request) 22:03:09 22:03:09 except _ProxyError as e: 22:03:09 raise ProxyError(e) 22:03:09 22:03:09 except (_SSLError, _HTTPError) as e: 22:03:09 if isinstance(e, _SSLError): 22:03:09 # This branch is for urllib3 versions earlier than v1.22 22:03:09 raise SSLError(e, request=request) 22:03:09 elif isinstance(e, ReadTimeoutError): 22:03:09 > raise ReadTimeout(e, request=request) 22:03:09 E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8183): Read timed out. (read timeout=30) 22:03:09 22:03:09 ../.tox/tests221/lib/python3.11/site-packages/requests/adapters.py:690: ReadTimeout 22:03:09 ----------------------------- Captured stdout call ----------------------------- 22:03:09 execution of test_03_rdm_portmapping_info 22:03:09 ______ TestTransportPCEPortmapping.test_04_rdm_portmapping_DEG1_TTP_TXRX _______ 22:03:09 22:03:09 self = 22:03:09 22:03:09 def test_04_rdm_portmapping_DEG1_TTP_TXRX(self): 22:03:09 response = test_utils.get_portmapping_node_attr("ROADM-A1", "mapping", "DEG1-TTP-TXRX") 22:03:09 > self.assertEqual(response['status_code'], requests.codes.ok) 22:03:09 E AssertionError: 409 != 200 22:03:09 22:03:09 transportpce_tests/2.2.1/test01_portmapping.py:73: AssertionError 22:03:09 ----------------------------- Captured stdout call ----------------------------- 22:03:09 execution of test_04_rdm_portmapping_DEG1_TTP_TXRX 22:03:09 _ TestTransportPCEPortmapping.test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms _ 22:03:09 22:03:09 self = 22:03:09 22:03:09 def test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms(self): 22:03:09 response = test_utils.get_portmapping_node_attr("ROADM-A1", "mapping", "DEG2-TTP-TXRX") 22:03:09 > self.assertEqual(response['status_code'], requests.codes.ok) 22:03:09 E AssertionError: 409 != 200 22:03:09 22:03:09 transportpce_tests/2.2.1/test01_portmapping.py:82: AssertionError 22:03:09 ----------------------------- Captured stdout call ----------------------------- 22:03:09 execution of test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms 22:03:09 ______ TestTransportPCEPortmapping.test_06_rdm_portmapping_SRG1_PP3_TXRX _______ 22:03:09 22:03:09 self = 22:03:09 22:03:09 def test_06_rdm_portmapping_SRG1_PP3_TXRX(self): 22:03:09 response = test_utils.get_portmapping_node_attr("ROADM-A1", "mapping", "SRG1-PP3-TXRX") 22:03:09 > self.assertEqual(response['status_code'], requests.codes.ok) 22:03:09 E AssertionError: 409 != 200 22:03:09 22:03:09 transportpce_tests/2.2.1/test01_portmapping.py:93: AssertionError 22:03:09 ----------------------------- Captured stdout call ----------------------------- 22:03:09 execution of test_06_rdm_portmapping_SRG1_PP3_TXRX 22:03:09 =========================== short test summary info ============================ 22:03:09 FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_01_rdm_device_connection 22:03:09 FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_02_rdm_device_connected 22:03:09 FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_03_rdm_portmapping_info 22:03:09 FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_04_rdm_portmapping_DEG1_TTP_TXRX 22:03:09 FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms 22:03:09 FAILED transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_06_rdm_portmapping_SRG1_PP3_TXRX 22:03:09 6 failed, 29 passed in 239.58s (0:03:59) 22:03:09 tests221: exit 1 (240.08 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 pid=19442 22:03:09 tests221: FAIL ✖ in 4 minutes 9.36 seconds 22:03:09 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 22:03:19 .....Ftests_hybrid: freeze> python -m pip freeze --all 22:03:35 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 22:03:35 tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid 22:03:35 using environment variables from ./karaf221.env 22:03:35 pytest -q transportpce_tests/hybrid/test01_device_change_notifications.py 22:03:35 FFFFF.F..F.FFFF..FFFF.........E.F.. [100%] 22:07:15 ==================================== ERRORS ==================================== 22:07:15 _ ERROR at setup of TestTransportPCERendererRegenMode.test_01_xpdr_device_connection _ 22:07:15 22:07:15 cls = 22:07:15 22:07:15 @classmethod 22:07:15 def setUpClass(cls): 22:07:15 > cls.processes = test_utils.start_tpce() 22:07:15 ^^^^^^^^^^^^^^^^^^^^^^^ 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:67: 22:07:15 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:15 22:07:15 def start_tpce(): 22:07:15 if 'NO_ODL_STARTUP' in os.environ: 22:07:15 print('No OpenDaylight instance to start!') 22:07:15 return [] 22:07:15 print('starting OpenDaylight...') 22:07:15 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 22:07:15 process = start_lighty() 22:07:15 else: 22:07:15 process = start_karaf() 22:07:15 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 22:07:15 print('OpenDaylight started !') 22:07:15 else: 22:07:15 print('OpenDaylight failed to start !') 22:07:15 shutdown_process(process) 22:07:15 for pid in process_list: 22:07:15 shutdown_process(pid) 22:07:15 > sys.exit(1) 22:07:15 E SystemExit: 1 22:07:15 22:07:15 transportpce_tests/common/test_utils.py:232: SystemExit 22:07:15 ---------------------------- Captured stdout setup ----------------------------- 22:07:15 starting OpenDaylight... 22:07:15 starting KARAF (karaf71) TransportPCE build... 22:07:15 Searching for patterns in karaf.log... Pattern not found after 100 seconds! OpenDaylight failed to start ! 22:07:15 =================================== FAILURES =================================== 22:07:15 __________ TestTransportPCERendererRegenMode.test_02_check_xpdr_type ___________ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_02_check_xpdr_type(self): 22:07:15 response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK1") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 E AssertionError: 409 != 200 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:92: AssertionError 22:07:15 ---------------------------- Captured stdout setup ----------------------------- 22:07:15 starting OpenDaylight... 22:07:15 starting KARAF (karaf71) TransportPCE build... 22:07:15 Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! 22:07:15 starting simulator xpdra2 in OpenROADM device version 7.1... 22:07:15 Searching for patterns in xpdra2-71.log... Pattern found! simulator for xpdra2 started 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_02_check_xpdr_type 22:07:15 __________ TestTransportPCERendererRegenMode.test_03_check_xpdr_type ___________ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_03_check_xpdr_type(self): 22:07:15 response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK2") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 E AssertionError: 409 != 200 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:103: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_03_check_xpdr_type 22:07:15 ___ TestTransportPCERendererRegenMode.test_04_400g_regen_service_path_create ___ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_04_400g_regen_service_path_create(self): 22:07:15 response = test_utils.transportpce_api_rpc_request( 22:07:15 "transportpce-device-renderer", "service-path", 22:07:15 { 22:07:15 "service-name": "service_400g_regen", 22:07:15 "wave-number": "0", 22:07:15 "modulation-format": "dp-qam16", 22:07:15 "operation": "create", 22:07:15 "nodes": [ 22:07:15 { 22:07:15 "node-id": "XPDR-A2", 22:07:15 "src-tp": "XPDR4-NETWORK1", 22:07:15 "dest-tp": "XPDR4-NETWORK2" 22:07:15 } 22:07:15 ], 22:07:15 "center-freq": 195.0, 22:07:15 "nmc-width": 75, 22:07:15 "mc-width": 87.5, 22:07:15 "min-freq": 194.95625, 22:07:15 "max-freq": 195.04375, 22:07:15 "lower-spectral-slot-number": 582, 22:07:15 "higher-spectral-slot-number": 595, 22:07:15 }) 22:07:15 self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 > self.assertIn("Interfaces created successfully for nodes: ", response["output"]["result"]) 22:07:15 E AssertionError: 'Interfaces created successfully for nodes: ' not found in 'XPDR-A2 is not mounted on the controller' 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:134: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_04_400g_regen_service_path_create 22:07:15 ______ TestTransportPCERendererRegenMode.test_05_get_portmapping_network1 ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_05_get_portmapping_network1(self): 22:07:15 response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK1") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 E AssertionError: 409 != 200 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:159: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_05_get_portmapping_network1 22:07:15 ______ TestTransportPCERendererRegenMode.test_06_get_portmapping_network1 ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_06_get_portmapping_network1(self): 22:07:15 response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK2") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 E AssertionError: 409 != 200 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:172: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_06_get_portmapping_network1 22:07:15 _______ TestTransportPCERendererRegenMode.test_07_check_interface_oduc4 ________ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_07_check_interface_oduc4(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK1-ODUC4") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 E AssertionError: 503 != 200 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:188: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_07_check_interface_oduc4 22:07:15 _______ TestTransportPCERendererRegenMode.test_08_check_interface_oduc4 ________ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_08_check_interface_oduc4(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK2-ODUC4") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 E AssertionError: 503 != 200 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:211: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_08_check_interface_oduc4 22:07:15 _____ TestTransportPCERendererRegenMode.test_09_service_path_delete_regen ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_09_service_path_delete_regen(self): 22:07:15 response = test_utils.transportpce_api_rpc_request( 22:07:15 "transportpce-device-renderer", "service-path", 22:07:15 { 22:07:15 "modulation-format": "dp-qam16", 22:07:15 "operation": "delete", 22:07:15 "service-name": "test1_regen", 22:07:15 "wave-number": "0", 22:07:15 "center-freq": 195.0, 22:07:15 "nmc-width": 75, 22:07:15 "mc-width": 87.5, 22:07:15 "min-freq": 194.95625, 22:07:15 "max-freq": 195.04375, 22:07:15 "lower-spectral-slot-number": 582, 22:07:15 "higher-spectral-slot-number": 595, 22:07:15 "nodes": [ 22:07:15 { 22:07:15 "node-id": "XPDR-A2", 22:07:15 "src-tp": "XPDR4-NETWORK1", 22:07:15 "dest-tp": "XPDR4-NETWORK2" 22:07:15 } 22:07:15 ] 22:07:15 }) 22:07:15 self.assertEqual(response["status_code"], requests.codes.ok) 22:07:15 > self.assertIn("Request processed", response["output"]["result"]) 22:07:15 E AssertionError: 'Request processed' not found in 'XPDR-A2 is not mounted on the controller' 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:257: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_09_service_path_delete_regen 22:07:15 ______ TestTransportPCERendererRegenMode.test_10_check_no_interface_oduc4 ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_10_check_no_interface_oduc4(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK1-ODUC4") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:262: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_10_check_no_interface_oduc4 22:07:15 ______ TestTransportPCERendererRegenMode.test_11_check_no_interface_oduc4 ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_11_check_no_interface_oduc4(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK2-ODUC4") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:267: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_11_check_no_interface_oduc4 22:07:15 ______ TestTransportPCERendererRegenMode.test_12_check_no_interface_otuc4 ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_12_check_no_interface_otuc4(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK1-OTUC1") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:272: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_12_check_no_interface_otuc4 22:07:15 ______ TestTransportPCERendererRegenMode.test_13_check_no_interface_otuc4 ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_13_check_no_interface_otuc4(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK2-OTUC1") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:277: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_13_check_no_interface_otuc4 22:07:15 ______ TestTransportPCERendererRegenMode.test_16_check_no_interface_otsig ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_16_check_no_interface_otsig(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK1-OTSIGROUP-400G") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:291: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_16_check_no_interface_otsig 22:07:15 ______ TestTransportPCERendererRegenMode.test_17_check_no_interface_otsig ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_17_check_no_interface_otsig(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK2-OTSIGROUP-400G") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:296: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_17_check_no_interface_otsig 22:07:15 ______ TestTransportPCERendererRegenMode.test_18_check_no_interface_otsi _______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_18_check_no_interface_otsi(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK1-582:595") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:301: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_18_check_no_interface_otsi 22:07:15 ______ TestTransportPCERendererRegenMode.test_19_check_no_interface_otsi _______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_19_check_no_interface_otsi(self): 22:07:15 response = test_utils.check_node_attribute_request( 22:07:15 "XPDR-A2", "interface", "XPDR4-NETWORK2-582:595") 22:07:15 > self.assertEqual(response["status_code"], requests.codes.conflict) 22:07:15 E AssertionError: 503 != 409 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:306: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_19_check_no_interface_otsi 22:07:15 _____ TestTransportPCERendererRegenMode.test_20_xpdr_device_disconnection ______ 22:07:15 22:07:15 self = 22:07:15 22:07:15 def test_20_xpdr_device_disconnection(self): 22:07:15 response = test_utils.unmount_device("XPDR-A2") 22:07:15 > self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) 22:07:15 E AssertionError: 409 not found in (200, 204) 22:07:15 22:07:15 transportpce_tests/7.1/test04_renderer_regen_mode.py:311: AssertionError 22:07:15 ----------------------------- Captured stdout call ----------------------------- 22:07:15 execution of test_20_xpdr_device_disconnection 22:07:15 Searching for patterns in karaf.log... Pattern not found after 180 seconds! Node XPDR-A2 still not deleted from tpce topology... 22:07:15 =========================== short test summary info ============================ 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_02_check_xpdr_type 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_03_check_xpdr_type 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_04_400g_regen_service_path_create 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_05_get_portmapping_network1 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_06_get_portmapping_network1 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_07_check_interface_oduc4 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_08_check_interface_oduc4 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_09_service_path_delete_regen 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_10_check_no_interface_oduc4 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_11_check_no_interface_oduc4 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_12_check_no_interface_otuc4 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_13_check_no_interface_otuc4 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_16_check_no_interface_otsig 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_17_check_no_interface_otsig 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_18_check_no_interface_otsi 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_19_check_no_interface_otsi 22:07:15 FAILED transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_20_xpdr_device_disconnection 22:07:15 ERROR transportpce_tests/7.1/test04_renderer_regen_mode.py::TestTransportPCERendererRegenMode::test_01_xpdr_device_connection 22:07:15 17 failed, 4 passed, 1 error in 352.86s (0:05:52) 22:07:15 tests71: exit 1 (922.25 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 pid=12087 22:07:30 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] 22:07:30 ==================================== ERRORS ==================================== 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_01_connect_xpdrA _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 sims_list = [('xpdra', '1.2.1'), ('roadma', '2.2.1'), ('roadmc', '2.2.1'), ('xpdrc', '7.1')] 22:07:30 22:07:30 def start_sims(sims_list): 22:07:30 if SIMS_TO_USE == 'None': 22:07:30 return None 22:07:30 if SIMS_TO_USE == 'honeynode': 22:07:30 start_method = start_honeynode 22:07:30 else: 22:07:30 start_method = start_lightynode 22:07:30 for sim in sims_list: 22:07:30 print('starting simulator ' + sim[0] + ' in OpenROADM device version ' + sim[1] + '...') 22:07:30 log_file = os.path.join(SIM_LOG_DIRECTORY, SIMS[sim]['logfile']) 22:07:30 process = start_method(log_file, sim) 22:07:30 if wait_until_log_contains(log_file, [HONEYNODE_OK_START_MSG, LIGHTYNODE_OK_START_MSG], 100): 22:07:30 print('simulator for ' + sim[0] + ' started') 22:07:30 else: 22:07:30 print('simulator for ' + sim[0] + ' failed to start') 22:07:30 shutdown_process(process) 22:07:30 for pid in process_list: 22:07:30 shutdown_process(pid) 22:07:30 > sys.exit(3) 22:07:30 E SystemExit: 3 22:07:30 22:07:30 transportpce_tests/common/test_utils.py:211: SystemExit 22:07:30 ---------------------------- Captured stdout setup ----------------------------- 22:07:30 starting OpenDaylight... 22:07:30 starting KARAF (karaf221) TransportPCE build... 22:07:30 Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! 22:07:30 starting simulator xpdra in OpenROADM device version 1.2.1... 22:07:30 Searching for patterns in xpdra-121.log... Pattern not found after 100 seconds! simulator for xpdra failed to start 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_02_connect_xpdrC _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 ---------------------------- Captured stdout setup ----------------------------- 22:07:30 starting OpenDaylight... 22:07:30 starting KARAF (karaf221) TransportPCE build... 22:07:30 Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! 22:07:30 starting simulator xpdra in OpenROADM device version 1.2.1... 22:07:30 Searching for patterns in xpdra-121.log... Pattern not found after 100 seconds! simulator for xpdra failed to start 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_03_connect_rdmA _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_04_connect_rdmC _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_05_connect_xpdrA_N1_to_roadmA_PP1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_06_connect_roadmA_PP1_to_xpdrA_N1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_07_connect_xpdrC_N1_to_roadmC_PP1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_08_connect_roadmC_PP1_to_xpdrC_N1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_09_add_omsAttributes_ROADMA_ROADMC _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_10_add_omsAttributes_ROADMC_ROADMA _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_11_create_eth_service1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_12_get_eth_service1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_13_change_status_line_port_xpdra _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_14_check_update_portmapping _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_15_check_update_openroadm_topo _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_16_check_update_service1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_17_restore_status_line_port_xpdra _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_18_check_update_portmapping_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_19_check_update_openroadm_topo_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_20_check_update_service1_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_21_change_status_port_roadma_srg _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_22_check_update_portmapping _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_23_check_update_openroadm_topo _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_24_restore_status_port_roadma_srg _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_25_check_update_portmapping_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_26_check_update_openroadm_topo_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_27_check_update_service1_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_28_change_status_line_port_roadma_deg _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_29_check_update_portmapping _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_30_check_update_openroadm_topo _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_31_restore_status_line_port_roadma_srg _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_32_check_update_portmapping_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_33_check_update_openroadm_topo_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_34_check_update_service1_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_35_change_status_line_port_xpdrc _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_36_check_update_portmapping _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_37_check_update_openroadm_topo _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_38_restore_status_line_port_xpdrc _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_39_check_update_portmapping_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_40_check_update_openroadm_topo_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_41_check_update_service1_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_42_change_status_port_roadma_srg _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_43_check_update_portmapping _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_44_check_update_openroadm_topo _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_45_check_update_service1_ok _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_46_delete_eth_service1 _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_47_disconnect_xponders_from_roadm _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_48_disconnect_XPDRA _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_49_disconnect_XPDRC _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_50_disconnect_ROADMA _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_51_disconnect_ROADMC _ 22:07:30 22:07:30 cls = 22:07:30 22:07:30 @classmethod 22:07:30 def setUpClass(cls): 22:07:30 cls.processes = test_utils.start_tpce() 22:07:30 > cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_121), 22:07:30 ('roadma', cls.NODE_VERSION_221), 22:07:30 ('roadmc', cls.NODE_VERSION_221), 22:07:30 ('xpdrc', cls.NODE_VERSION_71)]) 22:07:30 22:07:30 transportpce_tests/hybrid/test01_device_change_notifications.py:78: 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 transportpce_tests/common/test_utils.py:210: in start_sims 22:07:30 shutdown_process(pid) 22:07:30 transportpce_tests/common/test_utils.py:286: in shutdown_process 22:07:30 for child in psutil.Process(process.pid).children(): 22:07:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:314: in __init__ 22:07:30 self._init(pid) 22:07:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22:07:30 22:07:30 self = psutil.Process(pid=22334, status='terminated'), pid = 22334 22:07:30 _ignore_nsp = False 22:07:30 22:07:30 def _init(self, pid, _ignore_nsp=False): 22:07:30 if pid is None: 22:07:30 pid = os.getpid() 22:07:30 else: 22:07:30 if pid < 0: 22:07:30 msg = f"pid must be a positive integer (got {pid})" 22:07:30 raise ValueError(msg) 22:07:30 try: 22:07:30 _psplatform.cext.check_pid_range(pid) 22:07:30 except OverflowError as err: 22:07:30 msg = "process PID out of range" 22:07:30 raise NoSuchProcess(pid, msg=msg) from err 22:07:30 22:07:30 self._pid = pid 22:07:30 self._name = None 22:07:30 self._exe = None 22:07:30 self._create_time = None 22:07:30 self._gone = False 22:07:30 self._pid_reused = False 22:07:30 self._hash = None 22:07:30 self._lock = threading.RLock() 22:07:30 # used for caching on Windows only (on POSIX ppid may change) 22:07:30 self._ppid = None 22:07:30 # platform-specific modules define an _psplatform.Process 22:07:30 # implementation class 22:07:30 self._proc = _psplatform.Process(pid) 22:07:30 self._last_sys_cpu_times = None 22:07:30 self._last_proc_cpu_times = None 22:07:30 self._exitcode = _SENTINEL 22:07:30 self._ident = (self.pid, None) 22:07:30 try: 22:07:30 self._ident = self._get_ident() 22:07:30 except AccessDenied: 22:07:30 # This should happen on Windows only, since we use the fast 22:07:30 # create time method. AFAIK, on all other platforms we are 22:07:30 # able to get create time for all PIDs. 22:07:30 pass 22:07:30 except ZombieProcess: 22:07:30 # Zombies can still be queried by this class (although 22:07:30 # not always) and pids() return them so just go on. 22:07:30 pass 22:07:30 except NoSuchProcess: 22:07:30 if not _ignore_nsp: 22:07:30 msg = "process PID not found" 22:07:30 > raise NoSuchProcess(pid, msg=msg) from None 22:07:30 E psutil.NoSuchProcess: process PID not found (pid=22334) 22:07:30 22:07:30 ../.tox/tests_hybrid/lib/python3.11/site-packages/psutil/__init__.py:360: NoSuchProcess 22:07:30 =========================== short test summary info ============================ 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_01_connect_xpdrA 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_02_connect_xpdrC 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_03_connect_rdmA 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_04_connect_rdmC 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_05_connect_xpdrA_N1_to_roadmA_PP1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_06_connect_roadmA_PP1_to_xpdrA_N1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_07_connect_xpdrC_N1_to_roadmC_PP1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_08_connect_roadmC_PP1_to_xpdrC_N1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_09_add_omsAttributes_ROADMA_ROADMC 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_10_add_omsAttributes_ROADMC_ROADMA 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_11_create_eth_service1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_12_get_eth_service1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_13_change_status_line_port_xpdra 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_14_check_update_portmapping 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_15_check_update_openroadm_topo 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_16_check_update_service1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_17_restore_status_line_port_xpdra 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_18_check_update_portmapping_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_19_check_update_openroadm_topo_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_20_check_update_service1_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_21_change_status_port_roadma_srg 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_22_check_update_portmapping 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_23_check_update_openroadm_topo 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_24_restore_status_port_roadma_srg 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_25_check_update_portmapping_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_26_check_update_openroadm_topo_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_27_check_update_service1_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_28_change_status_line_port_roadma_deg 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_29_check_update_portmapping 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_30_check_update_openroadm_topo 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_31_restore_status_line_port_roadma_srg 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_32_check_update_portmapping_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_33_check_update_openroadm_topo_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_34_check_update_service1_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_35_change_status_line_port_xpdrc 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_36_check_update_portmapping 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_37_check_update_openroadm_topo 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_38_restore_status_line_port_xpdrc 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_39_check_update_portmapping_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_40_check_update_openroadm_topo_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_41_check_update_service1_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_42_change_status_port_roadma_srg 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_43_check_update_portmapping 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_44_check_update_openroadm_topo 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_45_check_update_service1_ok 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_46_delete_eth_service1 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_47_disconnect_xponders_from_roadm 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_48_disconnect_XPDRA 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_49_disconnect_XPDRC 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_50_disconnect_ROADMA 22:07:30 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_51_disconnect_ROADMC 22:07:30 51 errors in 235.19s (0:03:55) 22:07:30 tests71: FAIL ✖ in 15 minutes 29.34 seconds 22:07:30 tests_hybrid: exit 1 (235.51 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid pid=22324 22:09:15 ..... [100%] 22:09:19 54 passed in 625.06s (0:10:25) 22:09:19 tests_hybrid: FAIL ✖ in 4 minutes 21.58 seconds 22:09:19 buildcontroller: OK (130.96=setup[8.64]+cmd[122.32] seconds) 22:09:19 sims: OK (22.16=setup[19.01]+cmd[3.15] seconds) 22:09:19 build_karaf_tests121: OK (74.62=setup[11.46]+cmd[63.15] seconds) 22:09:19 testsPCE: OK (289.70=setup[56.67]+cmd[233.03] seconds) 22:09:19 tests121: OK (1269.14=setup[10.40]+cmd[1258.74] seconds) 22:09:19 build_karaf_tests221: OK (82.37=setup[11.83]+cmd[70.53] seconds) 22:09:19 tests_tapi: FAIL code 1 (649.63=setup[10.48]+cmd[639.16] seconds) 22:09:19 tests221: FAIL code 1 (249.36=setup[9.28]+cmd[240.08] seconds) 22:09:19 build_karaf_tests71: OK (90.53=setup[12.68]+cmd[77.85] seconds) 22:09:19 tests71: FAIL code 1 (929.34=setup[7.09]+cmd[922.25] seconds) 22:09:19 build_karaf_tests190: OK (90.52=setup[12.51]+cmd[78.01] seconds) 22:09:19 tests190: OK (216.48=setup[10.34]+cmd[206.14] seconds) 22:09:19 tests_hybrid: FAIL code 1 (261.58=setup[26.07]+cmd[235.51] seconds) 22:09:19 buildlighty: OK (47.70=setup[26.53]+cmd[21.17] seconds) 22:09:19 docs: OK (29.35=setup[26.70]+cmd[2.65] seconds) 22:09:19 docs-linkcheck: OK (30.83=setup[26.91]+cmd[3.92] seconds) 22:09:19 checkbashisms: OK (3.28=setup[2.00]+cmd[0.01,0.05,1.22] seconds) 22:09:19 pre-commit: OK (44.86=setup[3.06]+cmd[0.00,0.01,33.31,8.49] seconds) 22:09:19 pylint: OK (28.94=setup[3.58]+cmd[25.36] seconds) 22:09:19 evaluation failed :( (1780.38 seconds) 22:09:19 + tox_status=255 22:09:19 + echo '---> Completed tox runs' 22:09:19 ---> Completed tox runs 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/build_karaf_tests121/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=build_karaf_tests121 22:09:19 + cp -r .tox/build_karaf_tests121/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests121 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/build_karaf_tests190/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=build_karaf_tests190 22:09:19 + cp -r .tox/build_karaf_tests190/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests190 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/build_karaf_tests221/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=build_karaf_tests221 22:09:19 + cp -r .tox/build_karaf_tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests221 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/build_karaf_tests71/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=build_karaf_tests71 22:09:19 + cp -r .tox/build_karaf_tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests71 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/buildcontroller/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=buildcontroller 22:09:19 + cp -r .tox/buildcontroller/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildcontroller 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/buildlighty/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=buildlighty 22:09:19 + cp -r .tox/buildlighty/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildlighty 22:09:19 + for i in .tox/*/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 ++ echo .tox/checkbashisms/log 22:09:19 + tox_env=checkbashisms 22:09:19 + cp -r .tox/checkbashisms/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/checkbashisms 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/docs-linkcheck/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=docs-linkcheck 22:09:19 + cp -r .tox/docs-linkcheck/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs-linkcheck 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/docs/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=docs 22:09:19 + cp -r .tox/docs/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/pre-commit/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=pre-commit 22:09:19 + cp -r .tox/pre-commit/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pre-commit 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/pylint/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=pylint 22:09:19 + cp -r .tox/pylint/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pylint 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/sims/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=sims 22:09:19 + cp -r .tox/sims/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/sims 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/tests121/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=tests121 22:09:19 + cp -r .tox/tests121/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests121 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/tests190/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=tests190 22:09:19 + cp -r .tox/tests190/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests190 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/tests221/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=tests221 22:09:19 + cp -r .tox/tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests221 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/tests71/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=tests71 22:09:19 + cp -r .tox/tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests71 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/testsPCE/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=testsPCE 22:09:19 + cp -r .tox/testsPCE/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/testsPCE 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/tests_hybrid/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=tests_hybrid 22:09:19 + cp -r .tox/tests_hybrid/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_hybrid 22:09:19 + for i in .tox/*/log 22:09:19 ++ echo .tox/tests_tapi/log 22:09:19 ++ awk -F/ '{print $2}' 22:09:19 + tox_env=tests_tapi 22:09:19 + cp -r .tox/tests_tapi/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_tapi 22:09:19 + DOC_DIR=docs/_build/html 22:09:19 + [[ -d docs/_build/html ]] 22:09:19 + echo '---> Archiving generated docs' 22:09:19 ---> Archiving generated docs 22:09:19 + mv docs/_build/html /w/workspace/transportpce-tox-verify-transportpce-master/archives/docs 22:09:19 + echo '---> tox-run.sh ends' 22:09:19 ---> tox-run.sh ends 22:09:19 + test 255 -eq 0 22:09:19 + exit 255 22:09:19 ++ '[' 1 = 1 ']' 22:09:19 ++ '[' -x /usr/bin/clear_console ']' 22:09:19 ++ /usr/bin/clear_console -q 22:09:19 Build step 'Execute shell' marked build as failure 22:09:45 $ ssh-agent -k 22:09:45 unset SSH_AUTH_SOCK; 22:09:45 unset SSH_AGENT_PID; 22:09:45 echo Agent pid 1568 killed; 22:09:45 [ssh-agent] Stopped. 22:09:45 [PostBuildScript] - [INFO] Executing post build scripts. 22:09:45 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins6390110874865428232.sh 22:09:45 ---> sysstat.sh 22:09:46 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins13319405725075733531.sh 22:09:46 ---> package-listing.sh 22:09:46 ++ facter osfamily 22:09:46 ++ tr '[:upper:]' '[:lower:]' 22:09:46 + OS_FAMILY=debian 22:09:46 + workspace=/w/workspace/transportpce-tox-verify-transportpce-master 22:09:46 + START_PACKAGES=/tmp/packages_start.txt 22:09:46 + END_PACKAGES=/tmp/packages_end.txt 22:09:46 + DIFF_PACKAGES=/tmp/packages_diff.txt 22:09:46 + PACKAGES=/tmp/packages_start.txt 22:09:46 + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' 22:09:46 + PACKAGES=/tmp/packages_end.txt 22:09:46 + case "${OS_FAMILY}" in 22:09:46 + dpkg -l 22:09:46 + grep '^ii' 22:09:46 + '[' -f /tmp/packages_start.txt ']' 22:09:46 + '[' -f /tmp/packages_end.txt ']' 22:09:46 + diff /tmp/packages_start.txt /tmp/packages_end.txt 22:09:46 + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' 22:09:46 + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/ 22:09:46 + cp -f /tmp/packages_diff.txt /tmp/packages_end.txt /tmp/packages_start.txt /w/workspace/transportpce-tox-verify-transportpce-master/archives/ 22:09:46 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins11330357654890196443.sh 22:09:46 ---> capture-instance-metadata.sh 22:09:46 Setup pyenv: 22:09:46 system 22:09:46 3.8.20 22:09:46 3.9.20 22:09:46 3.10.15 22:09:46 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 22:09:46 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv 22:09:46 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 22:09:46 lf-activate-venv(): INFO: Attempting to install with network-safe options... 22:09:49 lf-activate-venv(): INFO: Base packages installed successfully 22:09:49 lf-activate-venv(): INFO: Installing additional packages: lftools 22:10:05 lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH 22:10:05 INFO: Running in OpenStack, capturing instance metadata 22:10:05 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins11937297657533005233.sh 22:10:05 provisioning config files... 22:10:06 Could not find credentials [logs] for transportpce-tox-verify-transportpce-master #4237 22:10:06 copy managed file [jenkins-log-archives-settings] to file:/w/workspace/transportpce-tox-verify-transportpce-master@tmp/config5383410263196339565tmp 22:10:06 Regular expression run condition: Expression=[^.*logs-s3.*], Label=[odl-logs-s3-cloudfront-index] 22:10:06 Run condition [Regular expression match] enabling perform for step [Provide Configuration files] 22:10:06 provisioning config files... 22:10:06 copy managed file [jenkins-s3-log-ship] to file:/home/jenkins/.aws/credentials 22:10:06 [EnvInject] - Injecting environment variables from a build step. 22:10:06 [EnvInject] - Injecting as environment variables the properties content 22:10:06 SERVER_ID=logs 22:10:06 22:10:06 [EnvInject] - Variables injected successfully. 22:10:06 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins12415498801337904990.sh 22:10:06 ---> create-netrc.sh 22:10:06 WARN: Log server credential not found. 22:10:06 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins2487131502824493930.sh 22:10:06 ---> python-tools-install.sh 22:10:06 Setup pyenv: 22:10:06 system 22:10:06 3.8.20 22:10:06 3.9.20 22:10:06 3.10.15 22:10:06 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 22:10:06 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv 22:10:06 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 22:10:06 lf-activate-venv(): INFO: Attempting to install with network-safe options... 22:10:08 lf-activate-venv(): INFO: Base packages installed successfully 22:10:08 lf-activate-venv(): INFO: Installing additional packages: lftools 22:10:19 lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH 22:10:19 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins7193673045225040898.sh 22:10:19 ---> sudo-logs.sh 22:10:19 Archiving 'sudo' log.. 22:10:19 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins17365346275947276614.sh 22:10:19 ---> job-cost.sh 22:10:19 Setup pyenv: 22:10:19 system 22:10:19 3.8.20 22:10:19 3.9.20 22:10:19 3.10.15 22:10:19 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 22:10:20 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv 22:10:20 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 22:10:20 lf-activate-venv(): INFO: Attempting to install with network-safe options... 22:10:22 lf-activate-venv(): INFO: Base packages installed successfully 22:10:22 lf-activate-venv(): INFO: Installing additional packages: zipp==1.1.0 python-openstackclient urllib3~=1.26.15 22:10:30 lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH 22:10:30 INFO: No Stack... 22:10:30 INFO: Retrieving Pricing Info for: v3-standard-4 22:10:31 INFO: Archiving Costs 22:10:31 [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins17047057319708982122.sh 22:10:31 ---> logs-deploy.sh 22:10:31 Setup pyenv: 22:10:31 system 22:10:31 3.8.20 22:10:31 3.9.20 22:10:31 3.10.15 22:10:31 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 22:10:31 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-GDFm from file:/tmp/.os_lf_venv 22:10:31 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 22:10:31 lf-activate-venv(): INFO: Attempting to install with network-safe options... 22:10:33 lf-activate-venv(): INFO: Base packages installed successfully 22:10:33 lf-activate-venv(): INFO: Installing additional packages: lftools urllib3~=1.26.15 22:10:43 lf-activate-venv(): INFO: Adding /tmp/venv-GDFm/bin to PATH 22:10:43 WARNING: Nexus logging server not set 22:10:43 INFO: S3 path logs/releng/vex-yul-odl-jenkins-1/transportpce-tox-verify-transportpce-master/4237/ 22:10:43 INFO: archiving logs to S3 22:10:46 ---> uname -a: 22:10:46 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 22:10:46 22:10:46 22:10:46 ---> lscpu: 22:10:46 Architecture: x86_64 22:10:46 CPU op-mode(s): 32-bit, 64-bit 22:10:46 Address sizes: 40 bits physical, 48 bits virtual 22:10:46 Byte Order: Little Endian 22:10:46 CPU(s): 4 22:10:46 On-line CPU(s) list: 0-3 22:10:46 Vendor ID: AuthenticAMD 22:10:46 Model name: AMD EPYC-Rome Processor 22:10:46 CPU family: 23 22:10:46 Model: 49 22:10:46 Thread(s) per core: 1 22:10:46 Core(s) per socket: 1 22:10:46 Socket(s): 4 22:10:46 Stepping: 0 22:10:46 BogoMIPS: 5600.00 22:10:46 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 22:10:46 Virtualization: AMD-V 22:10:46 Hypervisor vendor: KVM 22:10:46 Virtualization type: full 22:10:46 L1d cache: 128 KiB (4 instances) 22:10:46 L1i cache: 128 KiB (4 instances) 22:10:46 L2 cache: 2 MiB (4 instances) 22:10:46 L3 cache: 64 MiB (4 instances) 22:10:46 NUMA node(s): 1 22:10:46 NUMA node0 CPU(s): 0-3 22:10:46 Vulnerability Gather data sampling: Not affected 22:10:46 Vulnerability Indirect target selection: Not affected 22:10:46 Vulnerability Itlb multihit: Not affected 22:10:46 Vulnerability L1tf: Not affected 22:10:46 Vulnerability Mds: Not affected 22:10:46 Vulnerability Meltdown: Not affected 22:10:46 Vulnerability Mmio stale data: Not affected 22:10:46 Vulnerability Reg file data sampling: Not affected 22:10:46 Vulnerability Retbleed: Mitigation; untrained return thunk; SMT disabled 22:10:46 Vulnerability Spec rstack overflow: Mitigation; SMT disabled 22:10:46 Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp 22:10:46 Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization 22:10:46 Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected 22:10:46 Vulnerability Srbds: Not affected 22:10:46 Vulnerability Tsa: Not affected 22:10:46 Vulnerability Tsx async abort: Not affected 22:10:46 Vulnerability Vmscape: Not affected 22:10:46 22:10:46 22:10:46 ---> nproc: 22:10:46 4 22:10:46 22:10:46 22:10:46 ---> df -h: 22:10:46 Filesystem Size Used Avail Use% Mounted on 22:10:46 tmpfs 1.6G 1.1M 1.6G 1% /run 22:10:46 /dev/vda1 78G 17G 61G 22% / 22:10:46 tmpfs 7.9G 0 7.9G 0% /dev/shm 22:10:46 tmpfs 5.0M 0 5.0M 0% /run/lock 22:10:46 /dev/vda15 105M 6.1M 99M 6% /boot/efi 22:10:46 tmpfs 1.6G 4.0K 1.6G 1% /run/user/1001 22:10:46 22:10:46 22:10:46 ---> free -m: 22:10:46 total used free shared buff/cache available 22:10:46 Mem: 15989 1586 10592 3 3810 14060 22:10:46 Swap: 1023 0 1023 22:10:46 22:10:46 22:10:46 ---> ip addr: 22:10:46 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 22:10:46 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 22:10:46 inet 127.0.0.1/8 scope host lo 22:10:46 valid_lft forever preferred_lft forever 22:10:46 inet6 ::1/128 scope host 22:10:46 valid_lft forever preferred_lft forever 22:10:46 2: ens3: mtu 1458 qdisc mq state UP group default qlen 1000 22:10:46 link/ether fa:16:3e:3c:ca:fb brd ff:ff:ff:ff:ff:ff 22:10:46 altname enp0s3 22:10:46 inet 10.30.170.158/23 metric 100 brd 10.30.171.255 scope global dynamic ens3 22:10:46 valid_lft 84365sec preferred_lft 84365sec 22:10:46 inet6 fe80::f816:3eff:fe3c:cafb/64 scope link 22:10:46 valid_lft forever preferred_lft forever 22:10:46 3: docker0: mtu 1458 qdisc noqueue state DOWN group default 22:10:46 link/ether ce:18:24:84:bd:84 brd ff:ff:ff:ff:ff:ff 22:10:46 inet 10.250.0.254/24 brd 10.250.0.255 scope global docker0 22:10:46 valid_lft forever preferred_lft forever 22:10:46 22:10:46 22:10:46 ---> sar -b -r -n DEV: 22:10:46 Linux 5.15.0-164-generic (prd-ubuntu2204-docker-4c-16g-5080) 01/27/26 _x86_64_ (4 CPU) 22:10:46 22:10:46 21:36:54 LINUX RESTART (4 CPU) 22:10:46 22:10:46 21:40:16 tps rtps wtps dtps bread/s bwrtn/s bdscd/s 22:10:46 21:50:16 100.29 3.06 93.15 4.08 190.40 34622.97 9444.98 22:10:46 22:01:17 50.44 20.38 28.47 1.59 227.66 1880.55 1343.31 22:10:46 22:10:01 15.85 2.03 13.15 0.68 144.87 803.39 273.12 22:10:46 Average: 57.06 9.18 45.72 2.16 190.85 12573.87 3753.51 22:10:46 22:10:46 21:40:16 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 22:10:46 21:50:16 161816 5489368 10438120 63.75 250420 4935348 13378968 76.80 2049072 13452216 588 22:10:46 22:01:17 3192272 6476040 9457880 57.76 262276 2998036 10604356 60.87 2016016 10584108 632 22:10:46 22:10:01 10895080 14388316 1549544 9.46 267188 3191424 2163232 12.42 2074936 2833336 17812 22:10:46 Average: 4749723 8784575 7148515 43.66 259961 3708269 8715519 50.03 2046675 8956553 6344 22:10:46 22:10:46 21:40:16 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 22:10:46 21:50:16 lo 4.41 4.41 5.19 5.19 0.00 0.00 0.00 0.00 22:10:46 21:50:16 ens3 86.98 65.68 1253.03 6.97 0.00 0.00 0.00 0.00 22:10:46 21:50:16 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22:10:46 22:01:17 lo 40.26 40.26 22.12 22.12 0.00 0.00 0.00 0.00 22:10:46 22:01:17 ens3 2.06 1.90 0.49 1.03 0.00 0.00 0.00 0.00 22:10:46 22:01:17 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22:10:46 22:10:01 lo 22.87 22.87 7.64 7.64 0.00 0.00 0.00 0.00 22:10:46 22:10:01 ens3 3.19 3.05 1.18 1.68 0.00 0.00 0.00 0.00 22:10:46 22:10:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22:10:46 Average: lo 23.11 23.11 12.18 12.18 0.00 0.00 0.00 0.00 22:10:46 Average: ens3 30.95 23.68 421.84 3.22 0.00 0.00 0.00 0.00 22:10:46 Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22:10:46 22:10:46 22:10:46 ---> sar -P ALL: 22:10:46 Linux 5.15.0-164-generic (prd-ubuntu2204-docker-4c-16g-5080) 01/27/26 _x86_64_ (4 CPU) 22:10:46 22:10:46 21:36:54 LINUX RESTART (4 CPU) 22:10:46 22:10:46 21:40:16 CPU %user %nice %system %iowait %steal %idle 22:10:46 21:50:16 all 48.95 0.00 2.29 4.18 0.11 44.47 22:10:46 21:50:16 0 46.42 0.00 2.16 3.13 0.11 48.17 22:10:46 21:50:16 1 51.06 0.00 2.21 4.75 0.12 41.86 22:10:46 21:50:16 2 47.58 0.00 2.26 4.32 0.11 45.73 22:10:46 21:50:16 3 50.73 0.00 2.52 4.54 0.12 42.10 22:10:46 22:01:17 all 50.19 0.00 2.06 9.90 0.17 37.68 22:10:46 22:01:17 0 49.96 0.00 2.37 9.57 0.25 37.85 22:10:46 22:01:17 1 49.37 0.00 1.92 10.50 0.14 38.08 22:10:46 22:01:17 2 50.67 0.00 1.95 8.34 0.15 38.90 22:10:46 22:01:17 3 50.77 0.00 2.00 11.19 0.15 35.90 22:10:46 22:10:01 all 15.88 0.00 1.00 4.17 0.12 78.83 22:10:46 22:10:01 0 15.06 0.00 1.01 2.29 0.13 81.51 22:10:46 22:10:01 1 16.64 0.00 1.04 1.35 0.12 80.86 22:10:46 22:10:01 2 16.16 0.00 1.03 0.62 0.12 82.07 22:10:46 22:10:01 3 15.66 0.00 0.93 12.41 0.12 70.88 22:10:46 Average: all 39.66 0.00 1.82 6.28 0.14 52.10 22:10:46 Average: 0 38.49 0.00 1.90 5.25 0.17 54.20 22:10:46 Average: 1 40.29 0.00 1.76 5.86 0.12 51.96 22:10:46 Average: 2 39.44 0.00 1.78 4.70 0.13 53.94 22:10:46 Average: 3 40.40 0.00 1.86 9.30 0.13 48.31 22:10:46 22:10:46 22:10:46