Triggered by Gerrit: https://git.opendaylight.org/gerrit/c/transportpce/+/114581 Running as SYSTEM [EnvInject] - Loading node environment variables. Building remotely on prd-ubuntu2004-docker-4c-16g-11399 (ubuntu2004-docker-4c-16g) in workspace /w/workspace/transportpce-tox-verify-transportpce-master [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-OvyJvalY9mWd/agent.12994 SSH_AGENT_PID=12997 [ssh-agent] Started. Running ssh-add (command line suppressed) Identity added: /w/workspace/transportpce-tox-verify-transportpce-master@tmp/private_key_11544857198271751647.key (/w/workspace/transportpce-tox-verify-transportpce-master@tmp/private_key_11544857198271751647.key) [ssh-agent] Using credentials jenkins (jenkins-ssh) The recommended git tool is: NONE using credential jenkins-ssh Wiping out workspace first. Cloning the remote Git repository Cloning repository git://devvexx.opendaylight.org/mirror/transportpce > git init /w/workspace/transportpce-tox-verify-transportpce-master # timeout=10 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce > git --version # timeout=10 > git --version # 'git version 2.25.1' using GIT_SSH to set credentials jenkins-ssh Verifying host key using known hosts file You're using 'Known hosts file' strategy to verify ssh host keys, but your known_hosts file does not exist, please go to 'Manage Jenkins' -> 'Security' -> 'Git Host Key Verification Configuration' and configure host key verification. > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce using GIT_SSH to set credentials jenkins-ssh Verifying host key using known hosts file You're using 'Known hosts file' strategy to verify ssh host keys, but your known_hosts file does not exist, please go to 'Manage Jenkins' -> 'Security' -> 'Git Host Key Verification Configuration' and configure host key verification. > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce refs/changes/81/114581/2 # timeout=10 > git rev-parse 4c8673f59ecc73cb2e4cc7fa6a4c2101bd65408b^{commit} # timeout=10 JENKINS-19022: warning: possible memory leak due to Git plugin usage; see: https://plugins.jenkins.io/git/#remove-git-plugin-buildsbybranch-builddata-script Checking out Revision 4c8673f59ecc73cb2e4cc7fa6a4c2101bd65408b (refs/changes/81/114581/2) > git config core.sparsecheckout # timeout=10 > git checkout -f 4c8673f59ecc73cb2e4cc7fa6a4c2101bd65408b # timeout=10 Commit message: "Enhancements for discovering OpenConfig XPDRs." > git rev-parse FETCH_HEAD^{commit} # timeout=10 > git rev-list --no-walk 14a38aa83db06d38e73ac00c316ac3db70ebc64f # timeout=10 > git remote # timeout=10 > git submodule init # timeout=10 > git submodule sync # timeout=10 > git config --get remote.origin.url # timeout=10 > git submodule init # timeout=10 > git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10 ERROR: No submodules found. provisioning config files... copy managed file [npmrc] to file:/home/jenkins/.npmrc copy managed file [pipconf] to file:/home/jenkins/.config/pip/pip.conf [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins15122249136482397661.sh ---> python-tools-install.sh Setup pyenv: * system (set by /opt/pyenv/version) * 3.8.20 (set by /opt/pyenv/version) * 3.9.20 (set by /opt/pyenv/version) * 3.10.15 (set by /opt/pyenv/version) * 3.11.10 (set by /opt/pyenv/version) lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-LvpY lf-activate-venv(): INFO: Save venv in file: /tmp/.os_lf_venv lf-activate-venv(): INFO: Installing: lftools lf-activate-venv(): INFO: Adding /tmp/venv-LvpY/bin to PATH Generating Requirements File Python 3.11.10 pip 24.3.1 from /tmp/venv-LvpY/lib/python3.11/site-packages/pip (python 3.11) appdirs==1.4.4 argcomplete==3.5.1 aspy.yaml==1.3.0 attrs==24.2.0 autopage==0.5.2 beautifulsoup4==4.12.3 boto3==1.35.71 botocore==1.35.71 bs4==0.0.2 cachetools==5.5.0 certifi==2024.8.30 cffi==1.17.1 cfgv==3.4.0 chardet==5.2.0 charset-normalizer==3.4.0 click==8.1.7 cliff==4.8.0 cmd2==2.5.7 cryptography==3.3.2 debtcollector==3.0.0 decorator==5.1.1 defusedxml==0.7.1 Deprecated==1.2.15 distlib==0.3.9 dnspython==2.7.0 docker==4.2.2 dogpile.cache==1.3.3 durationpy==0.9 email_validator==2.2.0 filelock==3.16.1 future==1.0.0 gitdb==4.0.11 GitPython==3.1.43 google-auth==2.36.0 httplib2==0.22.0 identify==2.6.3 idna==3.10 importlib-resources==1.5.0 iso8601==2.1.0 Jinja2==3.1.4 jmespath==1.0.1 jsonpatch==1.33 jsonpointer==3.0.0 jsonschema==4.23.0 jsonschema-specifications==2024.10.1 keystoneauth1==5.9.1 kubernetes==31.0.0 lftools==0.37.10 lxml==5.3.0 MarkupSafe==3.0.2 msgpack==1.1.0 multi_key_dict==2.0.3 munch==4.0.0 netaddr==1.3.0 netifaces==0.11.0 niet==1.4.2 nodeenv==1.9.1 oauth2client==4.1.3 oauthlib==3.2.2 openstacksdk==4.1.0 os-client-config==2.1.0 os-service-types==1.7.0 osc-lib==3.2.0 oslo.config==9.7.0 oslo.context==5.7.0 oslo.i18n==6.5.0 oslo.log==6.2.0 oslo.serialization==5.6.0 oslo.utils==7.4.0 packaging==24.2 pbr==6.1.0 platformdirs==4.3.6 prettytable==3.12.0 psutil==6.1.0 pyasn1==0.6.1 pyasn1_modules==0.4.1 pycparser==2.22 pygerrit2==2.0.15 PyGithub==2.5.0 PyJWT==2.10.1 PyNaCl==1.5.0 pyparsing==2.4.7 pyperclip==1.9.0 pyrsistent==0.20.0 python-cinderclient==9.6.0 python-dateutil==2.9.0.post0 python-heatclient==4.0.0 python-jenkins==1.8.2 python-keystoneclient==5.5.0 python-magnumclient==4.7.0 python-openstackclient==7.2.1 python-swiftclient==4.6.0 PyYAML==6.0.2 referencing==0.35.1 requests==2.32.3 requests-oauthlib==2.0.0 requestsexceptions==1.4.0 rfc3986==2.0.0 rpds-py==0.21.0 rsa==4.9 ruamel.yaml==0.18.6 ruamel.yaml.clib==0.2.12 s3transfer==0.10.4 simplejson==3.19.3 six==1.16.0 smmap==5.0.1 soupsieve==2.6 stevedore==5.4.0 tabulate==0.9.0 toml==0.10.2 tomlkit==0.13.2 tqdm==4.67.1 typing_extensions==4.12.2 tzdata==2024.2 urllib3==1.26.20 virtualenv==20.28.0 wcwidth==0.2.13 websocket-client==1.8.0 wrapt==1.17.0 xdg==6.0.0 xmltodict==0.14.2 yq==3.4.3 [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties content PYTHON=python3 [EnvInject] - Variables injected successfully. [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins4784999262933040037.sh ---> tox-install.sh + source /home/jenkins/lf-env.sh + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 ++ mktemp -d /tmp/venv-XXXX + lf_venv=/tmp/venv-bx7u + local venv_file=/tmp/.os_lf_venv + local python=python3 + local options + local set_path=true + local install_args= ++ getopt -o np:v: -l no-path,system-site-packages,python:,venv-file: -n lf-activate-venv -- --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 + true + case $1 in + venv_file=/tmp/.toxenv + shift 2 + true + case $1 in + shift + break + case $python in + local pkg_list= + [[ -d /opt/pyenv ]] + echo 'Setup pyenv:' Setup pyenv: + export PYENV_ROOT=/opt/pyenv + PYENV_ROOT=/opt/pyenv + export PATH=/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + PATH=/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + pyenv versions system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) + command -v pyenv ++ pyenv init - --no-rehash + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; fi; done; echo "${paths[*]}"'\'')" export PATH="/opt/pyenv/shims:${PATH}" export PYENV_SHELL=bash source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")" ;; *) command pyenv "$command" "$@" ;; esac }' +++ bash --norc -ec 'IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; fi; done; echo "${paths[*]}"' ++ PATH=/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PATH=/opt/pyenv/shims:/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ PATH=/opt/pyenv/shims:/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PYENV_SHELL=bash ++ PYENV_SHELL=bash ++ source /opt/pyenv/libexec/../completions/pyenv.bash +++ complete -F _pyenv pyenv ++ lf-pyver python3 ++ local py_version_xy=python3 ++ local py_version_xyz= ++ pyenv versions ++ sed 's/^[ *]* //' ++ local command ++ command=versions ++ '[' 1 -gt 0 ']' ++ shift ++ case "$command" in ++ command pyenv versions ++ pyenv versions ++ awk '{ print $1 }' ++ grep -E '^[0-9.]*[0-9]$' ++ [[ ! -s /tmp/.pyenv_versions ]] +++ grep '^3' /tmp/.pyenv_versions +++ sort -V +++ tail -n 1 ++ py_version_xyz=3.11.10 ++ [[ -z 3.11.10 ]] ++ echo 3.11.10 ++ return 0 + pyenv local 3.11.10 + local command + command=local + '[' 2 -gt 0 ']' + shift + case "$command" in + command pyenv local 3.11.10 + pyenv local 3.11.10 + for arg in "$@" + case $arg in + pkg_list+='tox ' + for arg in "$@" + case $arg in + pkg_list+='virtualenv ' + for arg in "$@" + case $arg in + pkg_list+='urllib3~=1.26.15 ' + [[ -f /tmp/.toxenv ]] + [[ ! -f /tmp/.toxenv ]] + [[ -n '' ]] + python3 -m venv /tmp/venv-bx7u + echo 'lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-bx7u' lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-bx7u + echo /tmp/venv-bx7u + echo 'lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv' lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv + /tmp/venv-bx7u/bin/python3 -m pip install --upgrade --quiet pip virtualenv + [[ -z tox virtualenv urllib3~=1.26.15 ]] + echo 'lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 ' lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 + /tmp/venv-bx7u/bin/python3 -m pip install --upgrade --quiet --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 + type python3 + true + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-bx7u/bin to PATH' lf-activate-venv(): INFO: Adding /tmp/venv-bx7u/bin to PATH + PATH=/tmp/venv-bx7u/bin:/opt/pyenv/shims:/opt/pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + return 0 + python3 --version Python 3.11.10 + python3 -m pip --version pip 24.3.1 from /tmp/venv-bx7u/lib/python3.11/site-packages/pip (python 3.11) + python3 -m pip freeze cachetools==5.5.0 chardet==5.2.0 colorama==0.4.6 distlib==0.3.9 filelock==3.16.1 packaging==24.2 platformdirs==4.3.6 pluggy==1.5.0 pyproject-api==1.8.0 tox==4.23.2 urllib3==1.26.20 virtualenv==20.28.0 [transportpce-tox-verify-transportpce-master] $ /bin/sh -xe /tmp/jenkins16709218374341680168.sh [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties content PARALLEL=True [EnvInject] - Variables injected successfully. [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins17354264900059483658.sh ---> tox-run.sh + PATH=/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + ARCHIVE_TOX_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/tox + ARCHIVE_DOC_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/docs + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox + cd /w/workspace/transportpce-tox-verify-transportpce-master/. + source /home/jenkins/lf-env.sh + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 ++ mktemp -d /tmp/venv-XXXX + lf_venv=/tmp/venv-khPu + local venv_file=/tmp/.os_lf_venv + local python=python3 + local options + local set_path=true + local install_args= ++ getopt -o np:v: -l no-path,system-site-packages,python:,venv-file: -n lf-activate-venv -- --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 + true + case $1 in + venv_file=/tmp/.toxenv + shift 2 + true + case $1 in + shift + break + case $python in + local pkg_list= + [[ -d /opt/pyenv ]] + echo 'Setup pyenv:' Setup pyenv: + export PYENV_ROOT=/opt/pyenv + PYENV_ROOT=/opt/pyenv + export PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + pyenv versions system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) + command -v pyenv ++ pyenv init - --no-rehash + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; fi; done; echo "${paths[*]}"'\'')" export PATH="/opt/pyenv/shims:${PATH}" export PYENV_SHELL=bash source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")" ;; *) command pyenv "$command" "$@" ;; esac }' +++ bash --norc -ec 'IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; fi; done; echo "${paths[*]}"' ++ PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ export PYENV_SHELL=bash ++ PYENV_SHELL=bash ++ source /opt/pyenv/libexec/../completions/pyenv.bash +++ complete -F _pyenv pyenv ++ lf-pyver python3 ++ local py_version_xy=python3 ++ local py_version_xyz= ++ pyenv versions ++ local command ++ command=versions ++ '[' 1 -gt 0 ']' ++ shift ++ case "$command" in ++ command pyenv versions ++ pyenv versions ++ sed 's/^[ *]* //' ++ awk '{ print $1 }' ++ grep -E '^[0-9.]*[0-9]$' ++ [[ ! -s /tmp/.pyenv_versions ]] +++ grep '^3' /tmp/.pyenv_versions +++ sort -V +++ tail -n 1 ++ py_version_xyz=3.11.10 ++ [[ -z 3.11.10 ]] ++ echo 3.11.10 ++ return 0 + pyenv local 3.11.10 + local command + command=local + '[' 2 -gt 0 ']' + shift + case "$command" in + command pyenv local 3.11.10 + pyenv local 3.11.10 + for arg in "$@" + case $arg in + pkg_list+='tox ' + for arg in "$@" + case $arg in + pkg_list+='virtualenv ' + for arg in "$@" + case $arg in + pkg_list+='urllib3~=1.26.15 ' + [[ -f /tmp/.toxenv ]] ++ cat /tmp/.toxenv + lf_venv=/tmp/venv-bx7u + echo 'lf-activate-venv(): INFO: Reuse venv:/tmp/venv-bx7u from' file:/tmp/.toxenv lf-activate-venv(): INFO: Reuse venv:/tmp/venv-bx7u from file:/tmp/.toxenv + /tmp/venv-bx7u/bin/python3 -m pip install --upgrade --quiet pip virtualenv + [[ -z tox virtualenv urllib3~=1.26.15 ]] + echo 'lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 ' lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 + /tmp/venv-bx7u/bin/python3 -m pip install --upgrade --quiet --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 + type python3 + true + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-bx7u/bin to PATH' lf-activate-venv(): INFO: Adding /tmp/venv-bx7u/bin to PATH + PATH=/tmp/venv-bx7u/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + return 0 + [[ -d /opt/pyenv ]] + echo '---> Setting up pyenv' ---> Setting up pyenv + export PYENV_ROOT=/opt/pyenv + PYENV_ROOT=/opt/pyenv + export PATH=/opt/pyenv/bin:/tmp/venv-bx7u/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin + PATH=/opt/pyenv/bin:/tmp/venv-bx7u/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin ++ pwd + PYTHONPATH=/w/workspace/transportpce-tox-verify-transportpce-master + export PYTHONPATH + export TOX_TESTENV_PASSENV=PYTHONPATH + TOX_TESTENV_PASSENV=PYTHONPATH + tox --version 4.23.2 from /tmp/venv-bx7u/lib/python3.11/site-packages/tox/__init__.py + PARALLEL=True + TOX_OPTIONS_LIST= + [[ -n '' ]] + case ${PARALLEL,,} in + TOX_OPTIONS_LIST=' --parallel auto --parallel-live' + tox --parallel auto --parallel-live + tee -a /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tox.log docs: install_deps> python -I -m pip install -r docs/requirements.txt docs-linkcheck: install_deps> python -I -m pip install -r docs/requirements.txt checkbashisms: freeze> python -m pip freeze --all buildcontroller: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt checkbashisms: pip==24.3.1,setuptools==75.6.0,wheel==0.45.1 checkbashisms: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh checkbashisms: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sh -c 'command checkbashisms>/dev/null || sudo yum install -y devscripts-checkbashisms || sudo yum install -y devscripts-minimal || sudo yum install -y devscripts || sudo yum install -y https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Everything/x86_64/os/Packages/d/devscripts-checkbashisms-2.19.6-2.fc31.x86_64.rpm || (echo "checkbashisms command not found - please install it (e.g. sudo apt-get install devscripts | yum install devscripts-minimal )" >&2 && exit 1)' checkbashisms: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> find . -not -path '*/\.*' -name '*.sh' -exec checkbashisms -f '{}' + script ./reflectwarn.sh does not appear to have a #! interpreter line; you may get strange results checkbashisms: OK ✔ in 2.89 seconds pre-commit: install_deps> python -I -m pip install pre-commit pre-commit: freeze> python -m pip freeze --all pre-commit: cfgv==3.4.0,distlib==0.3.9,filelock==3.16.1,identify==2.6.3,nodeenv==1.9.1,pip==24.3.1,platformdirs==4.3.6,pre_commit==4.0.1,PyYAML==6.0.2,setuptools==75.6.0,virtualenv==20.28.0,wheel==0.45.1 pre-commit: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh pre-commit: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sh -c 'which cpan || sudo yum install -y perl-CPAN || (echo "cpan command not found - please install it (e.g. sudo apt-get install perl-modules | yum install perl-CPAN )" >&2 && exit 1)' /usr/bin/cpan pre-commit: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run --all-files --show-diff-on-failure [WARNING] hook id `remove-tabs` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. [WARNING] hook id `perltidy` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. [WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this. if it does not -- consider reporting an issue to that repo. [INFO] Initializing environment for https://github.com/jorisroovers/gitlint. [INFO] Initializing environment for https://github.com/jorisroovers/gitlint:./gitlint-core[trusted-deps]. [INFO] Initializing environment for https://github.com/Lucas-C/pre-commit-hooks. [INFO] Initializing environment for https://github.com/pre-commit/mirrors-autopep8. [INFO] Initializing environment for https://github.com/perltidy/perltidy. [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... buildcontroller: freeze> python -m pip freeze --all buildcontroller: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 buildcontroller: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_controller.sh + update-java-alternatives -l java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64 java-1.12.0-openjdk-amd64 1211 /usr/lib/jvm/java-1.12.0-openjdk-amd64 java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64 java-1.21.0-openjdk-amd64 2111 /usr/lib/jvm/java-1.21.0-openjdk-amd64 java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64 + sudo update-java-alternatives -s java-1.21.0-openjdk-amd64 + sed -n ;s/.* version "\(.*\)\.\(.*\)\..*".*$/\1/p; + java -version + JAVA_VER=21 + echo 21 21 + javac -version + sed -n ;s/javac \(.*\)\.\(.*\)\..*.*$/\1/p; + JAVAC_VER=21 + echo 21 21 ok, java is 21 or newer + [ 21 -ge 21 ] + [ 21 -ge 21 ] + echo ok, java is 21 or newer + wget -nv https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz -P /tmp [INFO] Installing environment for https://github.com/Lucas-C/pre-commit-hooks. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... 2024-11-29 08:48:46 URL:https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz [9083702/9083702] -> "/tmp/apache-maven-3.9.8-bin.tar.gz" [1] + sudo mkdir -p /opt + sudo tar xf /tmp/apache-maven-3.9.8-bin.tar.gz -C /opt + sudo ln -s /opt/apache-maven-3.9.8 /opt/maven + sudo ln -s /opt/maven/bin/mvn /usr/bin/mvn + mvn --version Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256) Maven home: /opt/maven Java version: 21.0.4, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64 Default locale: en, platform encoding: UTF-8 OS name: "linux", version: "5.4.0-200-generic", arch: "amd64", family: "unix" NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable [INFO] Installing environment for https://github.com/pre-commit/mirrors-autopep8. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... [INFO] Installing environment for https://github.com/perltidy/perltidy. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... trim trailing whitespace.................................................Passed Tabs remover.............................................................Failed - hook id: remove-tabs - exit code: 1 - files were modified by this hook Substituting tabs in: tests/sample_configs/openroadm/OC/sample-openconfig-mpdr.xml by 4 whitespaces Tabs have been successfully removed. Now aborting the commit. You can check the changes made. Then simply "git add --update ." and re-commit autopep8.................................................................Failed - hook id: autopep8 - files were modified by this hook perltidy.................................................................docs-linkcheck: freeze> python -m pip freeze --all Passed pre-commit hook(s) made changes. If you are seeing this message in CI, reproduce locally with: `pre-commit run --all-files`. To run `pre-commit` as part of git workflow, use `pre-commit install`. All changes made by hooks: diff --git a/tests/sample_configs/openroadm/OC/sample-openconfig-mpdr.xml b/tests/sample_configs/openroadm/OC/sample-openconfig-mpdr.xml index 147cc8ff..0b00d31d 100644 --- a/tests/sample_configs/openroadm/OC/sample-openconfig-mpdr.xml +++ b/tests/sample_configs/openroadm/OC/sample-openconfig-mpdr.xml @@ -12,7 +12,7 @@ - + 24300101 24300101 diff --git a/tests/transportpce_tests/OC/test01_portmapping.py b/tests/transportpce_tests/OC/test01_portmapping.py index 21783e39..463a1839 100644 --- a/tests/transportpce_tests/OC/test01_portmapping.py +++ b/tests/transportpce_tests/OC/test01_portmapping.py @@ -122,7 +122,8 @@ class TransportpceOCPortMappingTesting(unittest.TestCase): len(response['switching-pool-lcp'][0]['non-blocking-list'])) actual_lcp_list = response['switching-pool-lcp'][0]['non-blocking-list'][0]['lcp-list'] sorted_actual_lcp_list = sorted(actual_lcp_list) - expected_lcp_list = sorted(['XPDR1-CLIENT4', 'XPDR1-CLIENT3', 'XPDR1-NETWORK5', 'XPDR1-CLIENT2', 'XPDR1-CLIENT1']) + expected_lcp_list = sorted(['XPDR1-CLIENT4', 'XPDR1-CLIENT3', + 'XPDR1-NETWORK5', 'XPDR1-CLIENT2', 'XPDR1-CLIENT1']) self.assertEqual(sorted_actual_lcp_list, expected_lcp_list) def test_09_check_mccapprofile(self): @@ -137,6 +138,5 @@ class TransportpceOCPortMappingTesting(unittest.TestCase): self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content)) - if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/tests/transportpce_tests/common/test_utils.py b/tests/transportpce_tests/common/test_utils.py index 40a07a09..08a543e3 100644 --- a/tests/transportpce_tests/common/test_utils.py +++ b/tests/transportpce_tests/common/test_utils.py @@ -366,6 +366,7 @@ def mount_device(node: str, sim: str): # TODO an else-clause to abort test would probably be nice here return response + def metadata_input(): url = {'rfc8040': '{}/data/open-terminal-meta-data:open-terminal-meta-data', 'draft-bierman02': '{}/config/data/open-terminal-meta-data:open-terminal-meta-data'} @@ -460,6 +461,7 @@ def metadata_input(): response = put_request(url[RESTCONF_VERSION], body) return response + def catlog_input(): url = {'rfc8040': '{}/operations/org-openroadm-service:add-specific-operational-modes-to-catalog', 'draft-bierman02': '{}/config/operations/org-openroadm-service:add-specific-operational-modes-to-catalog'} @@ -680,12 +682,14 @@ def del_portmapping(): response = delete_request(url[RESTCONF_VERSION].format('{}')) return {'status_code': response.status_code} + def del_metadata(): url = {'rfc8040': '{}/data/open-terminal-meta-data:open-terminal-meta-data', 'draft-bierman02': '{}/config/data/open-terminal-meta-data:open-terminal-meta-data'} response = delete_request(url[RESTCONF_VERSION].format('{}')) return {'status_code': response.status_code} + def get_portmapping_node_attr(node: str, attr: str, value: str): # pylint: disable=consider-using-f-string url = {'rfc8040': '{}/data/transportpce-portmapping:network/nodes={}', pre-commit: exit 1 (51.13 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run --all-files --show-diff-on-failure pid=29150 pre-commit: FAIL ✖ in 54.48 seconds pylint: install_deps> python -I -m pip install 'pylint>=2.6.0' docs-linkcheck: alabaster==1.0.0,attrs==24.2.0,babel==2.16.0,blockdiag==3.0.0,certifi==2024.8.30,charset-normalizer==3.4.0,contourpy==1.3.1,cycler==0.12.1,docutils==0.21.2,fonttools==4.55.0,funcparserlib==2.0.0a0,future==1.0.0,idna==3.10,imagesize==1.4.1,Jinja2==3.1.4,jsonschema==3.2.0,kiwisolver==1.4.7,lfdocs-conf==0.9.0,MarkupSafe==3.0.2,matplotlib==3.9.2,numpy==2.1.3,nwdiag==3.0.0,packaging==24.2,pillow==11.0.0,pip==24.3.1,Pygments==2.18.0,pyparsing==3.2.0,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.2,requests==2.32.3,requests-file==1.5.1,seqdiag==3.0.0,setuptools==75.6.0,six==1.16.0,snowballstemmer==2.2.0,Sphinx==8.1.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-rtd-theme==3.0.2,sphinx-tabs==3.4.7,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.30,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.2.3,webcolors==24.11.1,wheel==0.45.1 docs-linkcheck: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sphinx-build -q -b linkcheck -d /w/workspace/transportpce-tox-verify-transportpce-master/.tox/docs-linkcheck/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-transportpce-master/docs/_build/linkcheck docs: freeze> python -m pip freeze --all docs: alabaster==1.0.0,attrs==24.2.0,babel==2.16.0,blockdiag==3.0.0,certifi==2024.8.30,charset-normalizer==3.4.0,contourpy==1.3.1,cycler==0.12.1,docutils==0.21.2,fonttools==4.55.0,funcparserlib==2.0.0a0,future==1.0.0,idna==3.10,imagesize==1.4.1,Jinja2==3.1.4,jsonschema==3.2.0,kiwisolver==1.4.7,lfdocs-conf==0.9.0,MarkupSafe==3.0.2,matplotlib==3.9.2,numpy==2.1.3,nwdiag==3.0.0,packaging==24.2,pillow==11.0.0,pip==24.3.1,Pygments==2.18.0,pyparsing==3.2.0,pyrsistent==0.20.0,python-dateutil==2.9.0.post0,PyYAML==6.0.2,requests==2.32.3,requests-file==1.5.1,seqdiag==3.0.0,setuptools==75.6.0,six==1.16.0,snowballstemmer==2.2.0,Sphinx==8.1.3,sphinx-bootstrap-theme==0.8.1,sphinx-data-viewer==0.1.5,sphinx-rtd-theme==3.0.2,sphinx-tabs==3.4.7,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-blockdiag==3.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-needs==0.7.9,sphinxcontrib-nwdiag==2.0.0,sphinxcontrib-plantuml==0.30,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-seqdiag==3.0.0,sphinxcontrib-serializinghtml==2.0.0,sphinxcontrib-swaggerdoc==0.1.7,urllib3==2.2.3,webcolors==24.11.1,wheel==0.45.1 docs: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sphinx-build -q -W --keep-going -b html -n -d /w/workspace/transportpce-tox-verify-transportpce-master/.tox/docs/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-transportpce-master/docs/_build/html docs: OK ✔ in 1 minute 0.46 seconds pylint: freeze> python -m pip freeze --all pylint: astroid==3.3.5,dill==0.3.9,isort==5.13.2,mccabe==0.7.0,pip==24.3.1,platformdirs==4.3.6,pylint==3.3.1,setuptools==75.6.0,tomlkit==0.13.2,wheel==0.45.1 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}$' '{}' + ************* Module common.test_utils transportpce_tests/common/test_utils.py:1:0: C0302: Too many lines in module (1013/1000) (too-many-lines) ************* Module OC transportpce_tests/OC/__init__.py:1:0: C0103: Module name "OC" doesn't conform to '([a-z0-9_]+$)|([0-9.]{1,30}$)' pattern (invalid-name) ------------------------------------ Your code has been rated at 10.00/10 docs-linkcheck: OK ✔ in 1 minute 2.33 seconds pylint: exit 1 (18.97 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> find transportpce_tests/ -name '*.py' -exec pylint --fail-under=10 --max-line-length=120 --disable=missing-docstring,import-error --disable=fixme --disable=duplicate-code '--module-rgx=([a-z0-9_]+$)|([0-9.]{1,30}$)' '--method-rgx=(([a-z_][a-zA-Z0-9_]{2,})|(_[a-z0-9_]*)|(__[a-zA-Z][a-zA-Z0-9_]+__))$' '--variable-rgx=[a-zA-Z_][a-zA-Z0-9_]{1,30}$' '{}' + pid=30118 pylint: FAIL ✖ in 23.72 seconds buildcontroller: OK ✔ in 1 minute 55.95 seconds sims: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 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 testsPCE: install_deps> python -I -m pip install gnpy4tpce==2.4.7 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests221: freeze> python -m pip freeze --all build_karaf_tests121: freeze> python -m pip freeze --all sims: freeze> python -m pip freeze --all build_karaf_tests221: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 build_karaf_tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable build_karaf_tests121: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 build_karaf_tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable sims: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 sims: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_lightynode.sh Using lighynode version 20.1.0.2 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory sims: OK ✔ in 10.81 seconds build_karaf_tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests71: freeze> python -m pip freeze --all build_karaf_tests71: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 build_karaf_tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable build_karaf_tests221: OK ✔ in 53.2 seconds sims190: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests121: OK ✔ in 55.11 seconds build_karaf_tests190: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests71: OK ✔ in 48.94 seconds build_karaf_tests_hybrid: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt sims190: freeze> python -m pip freeze --all sims190: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 sims190: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_sims.sh Using lighynode version 20.1.0.2 lightynode simulator in version 20.1.0.2 is alreay installed sims190: OK ✔ in 7.87 seconds build_karaf_tests190: freeze> python -m pip freeze --all build_karaf_tests190: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 build_karaf_tests190: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable build_karaf_tests_hybrid: freeze> python -m pip freeze --all build_karaf_tests_hybrid: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 build_karaf_tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.nio.fs=ALL-UNNAMED -Xlog:disable testsPCE: freeze> python -m pip freeze --all testsPCE: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,click==8.1.7,contourpy==1.3.1,cryptography==3.3.2,cycler==0.12.1,dict2xml==1.7.6,Flask==2.1.3,Flask-Injector==0.14.0,fonttools==4.55.0,gnpy4tpce==2.4.7,idna==3.10,iniconfig==2.0.0,injector==0.22.0,itsdangerous==2.2.0,Jinja2==3.1.4,kiwisolver==1.4.7,lxml==5.3.0,MarkupSafe==3.0.2,matplotlib==3.9.2,netconf-client==3.1.2,networkx==2.8.8,numpy==1.26.4,packaging==24.2,pandas==1.5.3,paramiko==3.5.0,pbr==5.11.1,pillow==11.0.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pyparsing==3.2.0,pytest==8.3.3,python-dateutil==2.9.0.post0,pytz==2024.2,requests==2.32.3,scipy==1.14.1,setuptools==50.3.2,six==1.16.0,urllib3==2.2.3,Werkzeug==2.0.3,wheel==0.45.1,xlrd==1.2.0 testsPCE: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh pce pytest -q transportpce_tests/pce/test01_pce.py build_karaf_tests190: OK ✔ in 48.16 seconds tests190: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt build_karaf_tests_hybrid: OK ✔ in 49.5 seconds tests190: freeze> python -m pip freeze --all tests190: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 tests190: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_lightynode.sh Using lighynode version 20.1.0.2 lightynode simulator in version 20.1.0.2 is alreay installed tests190: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh OC using environment variables from ./karafOC.env pytest -q transportpce_tests/OC/test01_portmapping.py ........FF............ [100%] 20 passed in 114.18s (0:01:54) pytest -q transportpce_tests/pce/test02_pce_400G.py ......... [100%] 9 passed in 38.55s pytest -q transportpce_tests/pce/test03_gnpy.py ........ [100%] 8 passed in 37.56s pytest -q transportpce_tests/pce/test04_pce_bug_fix.py ... [100%] 3 passed in 36.43s testsPCE: OK ✔ in 4 minutes 59.88 seconds tests_tapi: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests_tapi: freeze> python -m pip freeze --all tests_tapi: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 tests_tapi: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi using environment variables from ./karaf221.env pytest -q transportpce_tests/tapi/test01_abstracted_topology.py FFFFFFFFE [100%] ==================================== ERRORS ==================================== _ ERROR at teardown of TransportpceOCPortMappingTesting.test_10_xpdr_device_disconnection _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'DELETE' url = '/rests/data/open-terminal-meta-data:open-terminal-meta-data', body = None headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/open-terminal-meta-data:open-terminal-meta-data', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1298: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1058: in _send_output self.send(msg) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:996: in send self.connect() ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'DELETE' url = '/rests/data/open-terminal-meta-data:open-terminal-meta-data' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/open-terminal-meta-data:open-terminal-meta-data (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: cls = @classmethod def tearDownClass(cls): # pylint: disable=not-an-iterable > test_utils.del_metadata() transportpce_tests/OC/test01_portmapping.py:37: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:689: in del_metadata response = delete_request(url[RESTCONF_VERSION].format('{}')) transportpce_tests/common/test_utils.py:133: in delete_request return requests.request( ../.tox/tests190/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) > raise ConnectionError(e, request=request) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/open-terminal-meta-data:open-terminal-meta-data (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_10_xpdr_device_disconnection =================================== FAILURES =================================== _________ TransportpceOCPortMappingTesting.test_01_meta_data_insertion _________ self = def test_01_meta_data_insertion(self): response = test_utils.metadata_input() > self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201) E AssertionError: 404 != 201 : Http status code should be 201 transportpce_tests/OC/test01_portmapping.py:49: AssertionError ---------------------------- Captured stdout setup ----------------------------- starting OpenDaylight... starting KARAF TransportPCE build... Searching for patterns in karaf.log... Pattern found! OpenDaylight started ! starting simulator sample-openconfig-mpdr in OpenROADM device version OC... Searching for patterns in sample-openconfig-mpdr.log... Pattern found! simulator for sample-openconfig-mpdr started ----------------------------- Captured stdout call ----------------------------- execution of test_01_meta_data_insertion _______ TransportpceOCPortMappingTesting.test_02_catlog_input_insertion ________ self = def test_02_catlog_input_insertion(self): response = test_utils.catlog_input() > self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200) E AssertionError: 404 != 200 : Http status code should be 200 transportpce_tests/OC/test01_portmapping.py:54: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_02_catlog_input_insertion _______ TransportpceOCPortMappingTesting.test_03_xpdr_device_connection ________ self = def test_03_xpdr_device_connection(self): response = test_utils.mount_device("XPDR-OC", ('sample-openconfig-mpdr', self.NODE_VERSION)) > self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201) E AssertionError: 404 != 201 : Http status code should be 201 transportpce_tests/OC/test01_portmapping.py:60: AssertionError ----------------------------- Captured stdout call ----------------------------- execution of test_03_xpdr_device_connection Searching for patterns in karaf.log... Pattern not found after 180 seconds! Node XPDR-OC still not added to tpce topology... ________ TransportpceOCPortMappingTesting.test_04_xpdr_device_connected ________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'GET' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC?content=nonconfig' body = None headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC', query='content=nonconfig', fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1298: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1058: in _send_output self.send(msg) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:996: in send self.connect() ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'GET' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC?content=nonconfig' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC?content=nonconfig (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_04_xpdr_device_connected(self): > response = test_utils.check_device_connection("XPDR-OC") transportpce_tests/OC/test01_portmapping.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:596: in check_device_connection response = get_request(url[RESTCONF_VERSION].format('{}', node)) transportpce_tests/common/test_utils.py:116: in get_request return requests.request( ../.tox/tests190/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) > raise ConnectionError(e, request=request) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC?content=nonconfig (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_04_xpdr_device_connected ________ TransportpceOCPortMappingTesting.test_05_xpdr_portmapping_info ________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'GET' url = '/rests/data/transportpce-portmapping:network/nodes=XPDR-OC/node-info' body = None headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/transportpce-portmapping:network/nodes=XPDR-OC/node-info', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1298: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1058: in _send_output self.send(msg) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:996: in send self.connect() ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'GET' url = '/rests/data/transportpce-portmapping:network/nodes=XPDR-OC/node-info' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/transportpce-portmapping:network/nodes=XPDR-OC/node-info (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_05_xpdr_portmapping_info(self): > response = test_utils.get_portmapping_node_attr("XPDR-OC", "node-info", None) transportpce_tests/OC/test01_portmapping.py:69: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:705: in get_portmapping_node_attr response = get_request(target_url) transportpce_tests/common/test_utils.py:116: in get_request return requests.request( ../.tox/tests190/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) > raise ConnectionError(e, request=request) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/transportpce-portmapping:network/nodes=XPDR-OC/node-info (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_05_xpdr_portmapping_info ______ TransportpceOCPortMappingTesting.test_06_mpdr_portmapping_NETWORK1 ______ self = , kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: > return complexjson.loads(self.text, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/models.py:974: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /opt/pyenv/versions/3.11.10/lib/python3.11/json/__init__.py:346: in loads return _default_decoder.decode(s) /opt/pyenv/versions/3.11.10/lib/python3.11/json/decoder.py:337: in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , s = '', idx = 0 def raw_decode(self, s, idx=0): """Decode a JSON document from ``s`` (a ``str`` beginning with a JSON document) and return a 2-tuple of the Python representation and the index in ``s`` where the document ended. This can be used to decode a JSON document from a string that may have extraneous data at the end. """ try: obj, end = self.scan_once(s, idx) except StopIteration as err: > raise JSONDecodeError("Expecting value", s, err.value) from None E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) /opt/pyenv/versions/3.11.10/lib/python3.11/json/decoder.py:355: JSONDecodeError During handling of the above exception, another exception occurred: self = def test_06_mpdr_portmapping_NETWORK1(self): > response = test_utils.get_portmapping_node_attr("XPDR-OC", "mapping", "XPDR1-NETWORK5") transportpce_tests/OC/test01_portmapping.py:82: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:706: in get_portmapping_node_attr res = response.json() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: return complexjson.loads(self.text, **kwargs) except JSONDecodeError as e: # Catch JSON-related errors and raise as requests.JSONDecodeError # This aliases json.JSONDecodeError and simplejson.JSONDecodeError > raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) E requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ../.tox/tests190/lib/python3.11/site-packages/requests/models.py:978: JSONDecodeError ----------------------------- Captured stdout call ----------------------------- execution of test_06_mpdr_portmapping_NETWORK1 ______ TransportpceOCPortMappingTesting.test_07_mpdr_portmapping_CLIENT1 _______ self = , kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: > return complexjson.loads(self.text, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/models.py:974: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /opt/pyenv/versions/3.11.10/lib/python3.11/json/__init__.py:346: in loads return _default_decoder.decode(s) /opt/pyenv/versions/3.11.10/lib/python3.11/json/decoder.py:337: in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , s = '', idx = 0 def raw_decode(self, s, idx=0): """Decode a JSON document from ``s`` (a ``str`` beginning with a JSON document) and return a 2-tuple of the Python representation and the index in ``s`` where the document ended. This can be used to decode a JSON document from a string that may have extraneous data at the end. """ try: obj, end = self.scan_once(s, idx) except StopIteration as err: > raise JSONDecodeError("Expecting value", s, err.value) from None E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) /opt/pyenv/versions/3.11.10/lib/python3.11/json/decoder.py:355: JSONDecodeError During handling of the above exception, another exception occurred: self = def test_07_mpdr_portmapping_CLIENT1(self): > response = test_utils.get_portmapping_node_attr("XPDR-OC", "mapping", "XPDR1-CLIENT1") transportpce_tests/OC/test01_portmapping.py:100: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:706: in get_portmapping_node_attr res = response.json() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: return complexjson.loads(self.text, **kwargs) except JSONDecodeError as e: # Catch JSON-related errors and raise as requests.JSONDecodeError # This aliases json.JSONDecodeError and simplejson.JSONDecodeError > raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) E requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ../.tox/tests190/lib/python3.11/site-packages/requests/models.py:978: JSONDecodeError ----------------------------- Captured stdout call ----------------------------- execution of test_07_mpdr_portmapping_CLIENT1 _________ TransportpceOCPortMappingTesting.test_08_mpdr_switching_pool _________ self = , kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: > return complexjson.loads(self.text, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/models.py:974: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /opt/pyenv/versions/3.11.10/lib/python3.11/json/__init__.py:346: in loads return _default_decoder.decode(s) /opt/pyenv/versions/3.11.10/lib/python3.11/json/decoder.py:337: in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , s = '', idx = 0 def raw_decode(self, s, idx=0): """Decode a JSON document from ``s`` (a ``str`` beginning with a JSON document) and return a 2-tuple of the Python representation and the index in ``s`` where the document ended. This can be used to decode a JSON document from a string that may have extraneous data at the end. """ try: obj, end = self.scan_once(s, idx) except StopIteration as err: > raise JSONDecodeError("Expecting value", s, err.value) from None E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) /opt/pyenv/versions/3.11.10/lib/python3.11/json/decoder.py:355: JSONDecodeError During handling of the above exception, another exception occurred: self = def test_08_mpdr_switching_pool(self): > response = test_utils.get_portmapping_node_attr("XPDR-OC", "switching-pool-lcp", "1") transportpce_tests/OC/test01_portmapping.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:706: in get_portmapping_node_attr res = response.json() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: return complexjson.loads(self.text, **kwargs) except JSONDecodeError as e: # Catch JSON-related errors and raise as requests.JSONDecodeError # This aliases json.JSONDecodeError and simplejson.JSONDecodeError > raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) E requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ../.tox/tests190/lib/python3.11/site-packages/requests/models.py:978: JSONDecodeError ----------------------------- Captured stdout call ----------------------------- execution of test_08_mpdr_switching_pool _________ TransportpceOCPortMappingTesting.test_09_check_mccapprofile __________ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'GET' url = '/rests/data/transportpce-portmapping:network/nodes=XPDR-OC/mc-capabilities=XPDR-mcprofile' body = None headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/transportpce-portmapping:network/nodes=XPDR-OC/mc-capabilities=XPDR-mcprofile', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1298: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1058: in _send_output self.send(msg) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:996: in send self.connect() ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'GET' url = '/rests/data/transportpce-portmapping:network/nodes=XPDR-OC/mc-capabilities=XPDR-mcprofile' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/transportpce-portmapping:network/nodes=XPDR-OC/mc-capabilities=XPDR-mcprofile (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_09_check_mccapprofile(self): > res = test_utils.get_portmapping_node_attr("XPDR-OC", "mc-capabilities", "XPDR-mcprofile") transportpce_tests/OC/test01_portmapping.py:130: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:705: in get_portmapping_node_attr response = get_request(target_url) transportpce_tests/common/test_utils.py:116: in get_request return requests.request( ../.tox/tests190/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) > raise ConnectionError(e, request=request) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/transportpce-portmapping:network/nodes=XPDR-OC/mc-capabilities=XPDR-mcprofile (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_09_check_mccapprofile ______ TransportpceOCPortMappingTesting.test_10_xpdr_device_disconnection ______ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: > sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:85: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('localhost', 8182), timeout = 10, source_address = None socket_options = [(6, 1, 1)] def create_connection( address: tuple[str, int], timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, source_address: tuple[str, int] | None = None, socket_options: _TYPE_SOCKET_OPTIONS | None = None, ) -> socket.socket: """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: raise LocationParseError(f"'{host}', label empty or too long") from None for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not _DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError The above exception was the direct cause of the following exception: self = method = 'DELETE' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC' body = None headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10, read=10, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None, preload_content = False decode_content = False, response_kw = {} parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( # type: ignore[override] self, method: str, url: str, body: _TYPE_BODY | None = None, headers: typing.Mapping[str, str] | None = None, retries: Retry | bool | int | None = None, redirect: bool = True, assert_same_host: bool = True, timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, pool_timeout: int | None = None, release_conn: bool | None = None, chunked: bool = False, body_pos: _TYPE_BODY_POSITION | None = None, preload_content: bool = True, decode_content: bool = True, **response_kw: typing.Any, ) -> BaseHTTPResponse: """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param bool preload_content: If True, the response's body will be preloaded into memory. :param bool decode_content: If True, will attempt to decode the body based on the 'content-encoding' header. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``preload_content`` which defaults to ``True``. :param bool chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = preload_content # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = to_str(_encode_target(url)) else: url = to_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() # type: ignore[attr-defined] headers.update(self.proxy_headers) # type: ignore[union-attr] # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] # Is this a closed/new connection that requires CONNECT tunnelling? if self.proxy is not None and http_tunnel_required and conn.is_closed: try: self._prepare_proxy(conn) except (BaseSSLError, OSError, SocketTimeout) as e: self._raise_timeout( err=e, url=self.proxy.url, timeout_value=conn.timeout ) raise # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Make the request on the HTTPConnection object > response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, retries=retries, response_conn=response_conn, preload_content=preload_content, decode_content=decode_content, **response_kw, ) ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:789: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request conn.request( ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:441: in request self.endheaders() /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1298: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:1058: in _send_output self.send(msg) /opt/pyenv/versions/3.11.10/lib/python3.11/http/client.py:996: in send self.connect() ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:279: in connect self.sock = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self) -> socket.socket: """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ try: sock = connection.create_connection( (self._dns_host, self.port), self.timeout, source_address=self.source_address, socket_options=self.socket_options, ) except socket.gaierror as e: raise NameResolutionError(self.host, self, e) from e except SocketTimeout as e: raise ConnectTimeoutError( self, f"Connection to {self.host} timed out. (connect timeout={self.timeout})", ) from e except OSError as e: > raise NewConnectionError( self, f"Failed to establish a new connection: {e}" ) from e E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused ../.tox/tests190/lib/python3.11/site-packages/urllib3/connection.py:214: NewConnectionError The above exception was the direct cause of the following exception: self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:667: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../.tox/tests190/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'DELETE' url = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC' response = None error = NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused') _pool = _stacktrace = def increment( self, method: str | None = None, url: str | None = None, response: BaseHTTPResponse | None = None, error: Exception | None = None, _pool: ConnectionPool | None = None, _stacktrace: TracebackType | None = None, ) -> Self: """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.BaseHTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or method is None or not self._is_method_retryable(method): raise reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" response_redirect_location = response.get_redirect_location() if response_redirect_location: redirect_location = response_redirect_location status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): reason = error or ResponseError(cause) > raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError During handling of the above exception, another exception occurred: self = def test_10_xpdr_device_disconnection(self): > response = test_utils.unmount_device("XPDR-OC") transportpce_tests/OC/test01_portmapping.py:137: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ transportpce_tests/common/test_utils.py:585: in unmount_device response = delete_request(url[RESTCONF_VERSION].format('{}', node)) transportpce_tests/common/test_utils.py:133: in delete_request return requests.request( ../.tox/tests190/lib/python3.11/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../.tox/tests190/lib/python3.11/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10, read=10, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection_with_tls_context( request, verify, proxies=proxies, cert=cert ) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) > raise ConnectionError(e, request=request) E requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8182): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=topology-netconf/node=XPDR-OC (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) ../.tox/tests190/lib/python3.11/site-packages/requests/adapters.py:700: ConnectionError ----------------------------- Captured stdout call ----------------------------- execution of test_10_xpdr_device_disconnection =========================== short test summary info ============================ FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_01_meta_data_insertion FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_02_catlog_input_insertion FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_03_xpdr_device_connection FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_04_xpdr_device_connected FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_05_xpdr_portmapping_info FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_06_mpdr_portmapping_NETWORK1 FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_07_mpdr_portmapping_CLIENT1 FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_08_mpdr_switching_pool FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_09_check_mccapprofile FAILED transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_10_xpdr_device_disconnection ERROR transportpce_tests/OC/test01_portmapping.py::TransportpceOCPortMappingTesting::test_10_xpdr_device_disconnection 10 failed, 1 error in 219.88s (0:03:39) tests190: exit 1 (220.39 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh OC pid=31976 ................................................... [100%] 51 passed in 389.25s (0:06:29) pytest -q transportpce_tests/tapi/test02_full_topology.py ............................... [100%] 31 passed in 288.69s (0:04:48) pytest -q transportpce_tests/tapi/test03_tapi_device_change_notifications.py ....................................................................... [100%] 71 passed in 285.54s (0:04:45) pytest -q transportpce_tests/tapi/test04_topo_extension.py ................... [100%] 19 passed in 140.61s (0:02:20) tests190: FAIL ✖ in 3 minutes 48.83 seconds tests_tapi: OK ✔ in 18 minutes 31.49 seconds tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests71: freeze> python -m pip freeze --all tests71: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 using environment variables from ./karaf71.env pytest -q transportpce_tests/7.1/test01_portmapping.py ............ [100%] 12 passed in 43.86s pytest -q transportpce_tests/7.1/test02_otn_renderer.py .............................................................. [100%] 62 passed in 155.49s (0:02:35) pytest -q transportpce_tests/7.1/test03_renderer_or_modes.py ................................................ [100%] 48 passed in 134.28s (0:02:14) pytest -q transportpce_tests/7.1/test04_renderer_regen_mode.py ...................... [100%] 22 passed in 73.12s (0:01:13) tests71: OK ✔ in 6 minutes 53.66 seconds tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests221: freeze> python -m pip freeze --all tests221: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 using environment variables from ./karaf221.env pytest -q transportpce_tests/2.2.1/test01_portmapping.py ................................... [100%] 35 passed in 74.88s (0:01:14) pytest -q transportpce_tests/2.2.1/test02_topo_portmapping.py ...... [100%] 6 passed in 44.19s pytest -q transportpce_tests/2.2.1/test03_topology.py ............................................ [100%] 44 passed in 135.70s (0:02:15) pytest -q transportpce_tests/2.2.1/test04_otn_topology.py ............ [100%] 12 passed in 58.29s pytest -q transportpce_tests/2.2.1/test05_flex_grid.py ................ [100%] 16 passed in 113.58s (0:01:53) pytest -q transportpce_tests/2.2.1/test06_renderer_service_path_nominal.py ............................... [100%] 31 passed in 34.94s pytest -q transportpce_tests/2.2.1/test07_otn_renderer.py .......................... [100%] 26 passed in 89.73s (0:01:29) pytest -q transportpce_tests/2.2.1/test08_otn_sh_renderer.py ...................... [100%] 22 passed in 98.59s (0:01:38) pytest -q transportpce_tests/2.2.1/test09_olm.py ........................................ [100%] 40 passed in 180.60s (0:03:00) pytest -q transportpce_tests/2.2.1/test11_otn_end2end.py ........................................................................ [ 74%] ......................... [100%] 97 passed in 489.77s (0:08:09) pytest -q transportpce_tests/2.2.1/test12_end2end.py ...................................................... [100%] 54 passed in 447.40s (0:07:27) pytest -q transportpce_tests/2.2.1/test14_otn_switch_end2end.py ........................................................................ [ 71%] ............................. [100%] 101 passed in 490.64s (0:08:10) pytest -q transportpce_tests/2.2.1/test15_otn_end2end_with_intermediate_switch.py ........................................................................ [ 67%] ................................... [100%] 107 passed in 779.02s (0:12:59) tests221: OK ✔ in 50 minutes 46.55 seconds tests121: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests121: freeze> python -m pip freeze --all tests121: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 tests121: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 1.2.1 using environment variables from ./karaf121.env pytest -q transportpce_tests/1.2.1/test01_portmapping.py ..................... [100%] 21 passed in 269.42s (0:04:29) pytest -q transportpce_tests/1.2.1/test02_topo_portmapping.py ...... [100%] 6 passed in 45.97s pytest -q transportpce_tests/1.2.1/test03_topology.py ............................................ [100%] 44 passed in 138.24s (0:02:18) pytest -q transportpce_tests/1.2.1/test04_renderer_service_path_nominal.py ........................ [100%] 24 passed in 82.78s (0:01:22) pytest -q transportpce_tests/1.2.1/test05_olm.py ........................................ [100%] 40 passed in 181.29s (0:03:01) pytest -q transportpce_tests/1.2.1/test06_end2end.py ...................................................... [100%] 54 passed in 533.55s (0:08:53) tests121: OK ✔ in 21 minutes 3.45 seconds tests_hybrid: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt tests_hybrid: freeze> python -m pip freeze --all tests_hybrid: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid using environment variables from ./karaf121.env pytest -q transportpce_tests/hybrid/test01_device_change_notifications.py ................................................... [100%] 51 passed in 152.11s (0:02:32) pytest -q transportpce_tests/hybrid/test02_B100G_end2end.py ........................................................................ [ 66%] ..................................... [100%] 109 passed in 428.20s (0:07:08) pytest -q transportpce_tests/hybrid/test03_autonomous_reroute.py ..................................................... [100%] 53 passed in 260.57s (0:04:20) tests_hybrid: OK ✔ in 14 minutes 7.69 seconds buildlighty: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt buildlighty: freeze> python -m pip freeze --all buildlighty: bcrypt==4.2.1,certifi==2024.8.30,cffi==1.17.1,charset-normalizer==3.4.0,cryptography==44.0.0,dict2xml==1.7.6,idna==3.10,iniconfig==2.0.0,lxml==5.3.0,netconf-client==3.1.2,packaging==24.2,paramiko==3.5.0,pip==24.3.1,pluggy==1.5.0,psutil==6.1.0,pycparser==2.22,PyNaCl==1.5.0,pytest==8.3.3,requests==2.32.3,setuptools==75.6.0,urllib3==2.2.3,wheel==0.45.1 buildlighty: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED buildcontroller: OK (115.95=setup[9.31]+cmd[106.64] seconds) testsPCE: OK (299.88=setup[71.94]+cmd[227.94] seconds) sims: OK (10.81=setup[7.13]+cmd[3.68] seconds) build_karaf_tests121: OK (55.11=setup[7.10]+cmd[48.01] seconds) tests121: OK (1263.45=setup[10.80]+cmd[1252.65] seconds) build_karaf_tests221: OK (53.19=setup[7.04]+cmd[46.15] seconds) tests_tapi: OK (1111.49=setup[6.45]+cmd[1105.04] seconds) tests221: OK (3046.55=setup[6.25]+cmd[3040.30] seconds) build_karaf_tests71: OK (48.94=setup[11.93]+cmd[37.00] seconds) tests71: OK (413.66=setup[6.02]+cmd[407.64] seconds) sims190: OK (7.87=setup[7.85]+cmd[0.02] seconds) build_karaf_tests190: OK (48.16=setup[6.82]+cmd[41.34] seconds) tests190: FAIL code 1 (228.83=setup[8.39]+cmd[0.06,220.39] seconds) build_karaf_tests_hybrid: OK (49.50=setup[6.31]+cmd[43.19] seconds) tests_hybrid: OK (847.69=setup[6.12]+cmd[841.57] seconds) buildlighty: OK (25.62=setup[5.99]+cmd[19.63] seconds) docs: OK (60.46=setup[58.18]+cmd[2.28] seconds) docs-linkcheck: OK (62.33=setup[57.60]+cmd[4.73] seconds) checkbashisms: OK (2.89=setup[1.92]+cmd[0.02,0.05,0.90] seconds) pre-commit: FAIL code 1 (54.48=setup[3.31]+cmd[0.01,0.02,51.13] seconds) pylint: FAIL code 1 (23.72=setup[4.75]+cmd[18.97] seconds) evaluation failed :( (7124.37 seconds) + tox_status=255 + echo '---> Completed tox runs' ---> Completed tox runs + for i in .tox/*/log ++ awk -F/ '{print $2}' ++ echo .tox/build_karaf_tests121/log + tox_env=build_karaf_tests121 + cp -r .tox/build_karaf_tests121/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests121 + for i in .tox/*/log ++ echo .tox/build_karaf_tests190/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests190 + cp -r .tox/build_karaf_tests190/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests190 + for i in .tox/*/log ++ echo .tox/build_karaf_tests221/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests221 + cp -r .tox/build_karaf_tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests221 + for i in .tox/*/log ++ echo .tox/build_karaf_tests71/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests71 + cp -r .tox/build_karaf_tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests71 + for i in .tox/*/log ++ echo .tox/build_karaf_tests_hybrid/log ++ awk -F/ '{print $2}' + tox_env=build_karaf_tests_hybrid + cp -r .tox/build_karaf_tests_hybrid/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests_hybrid + for i in .tox/*/log ++ echo .tox/buildcontroller/log ++ awk -F/ '{print $2}' + tox_env=buildcontroller + cp -r .tox/buildcontroller/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildcontroller + for i in .tox/*/log ++ echo .tox/buildlighty/log ++ awk -F/ '{print $2}' + tox_env=buildlighty + cp -r .tox/buildlighty/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildlighty + for i in .tox/*/log ++ awk -F/ '{print $2}' ++ echo .tox/checkbashisms/log + tox_env=checkbashisms + cp -r .tox/checkbashisms/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/checkbashisms + for i in .tox/*/log ++ echo .tox/docs-linkcheck/log ++ awk -F/ '{print $2}' + tox_env=docs-linkcheck + cp -r .tox/docs-linkcheck/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs-linkcheck + for i in .tox/*/log ++ echo .tox/docs/log ++ awk -F/ '{print $2}' + tox_env=docs + cp -r .tox/docs/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs + for i in .tox/*/log ++ echo .tox/pre-commit/log ++ awk -F/ '{print $2}' + tox_env=pre-commit + cp -r .tox/pre-commit/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pre-commit + for i in .tox/*/log ++ echo .tox/pylint/log ++ awk -F/ '{print $2}' + tox_env=pylint + cp -r .tox/pylint/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pylint + for i in .tox/*/log ++ echo .tox/sims/log ++ awk -F/ '{print $2}' + tox_env=sims + cp -r .tox/sims/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/sims + for i in .tox/*/log ++ echo .tox/sims190/log ++ awk -F/ '{print $2}' + tox_env=sims190 + cp -r .tox/sims190/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/sims190 + for i in .tox/*/log ++ echo .tox/tests121/log ++ awk -F/ '{print $2}' + tox_env=tests121 + cp -r .tox/tests121/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests121 + for i in .tox/*/log ++ echo .tox/tests190/log ++ awk -F/ '{print $2}' + tox_env=tests190 + cp -r .tox/tests190/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests190 + for i in .tox/*/log ++ echo .tox/tests221/log ++ awk -F/ '{print $2}' + tox_env=tests221 + cp -r .tox/tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests221 + for i in .tox/*/log ++ echo .tox/tests71/log ++ awk -F/ '{print $2}' + tox_env=tests71 + cp -r .tox/tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests71 + for i in .tox/*/log ++ echo .tox/testsPCE/log ++ awk -F/ '{print $2}' + tox_env=testsPCE + cp -r .tox/testsPCE/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/testsPCE + for i in .tox/*/log ++ echo .tox/tests_hybrid/log ++ awk -F/ '{print $2}' + tox_env=tests_hybrid + cp -r .tox/tests_hybrid/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_hybrid + for i in .tox/*/log ++ echo .tox/tests_tapi/log ++ awk -F/ '{print $2}' + tox_env=tests_tapi + cp -r .tox/tests_tapi/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_tapi + DOC_DIR=docs/_build/html + [[ -d docs/_build/html ]] + echo '---> Archiving generated docs' ---> Archiving generated docs + mv docs/_build/html /w/workspace/transportpce-tox-verify-transportpce-master/archives/docs + echo '---> tox-run.sh ends' ---> tox-run.sh ends + test 255 -eq 0 + exit 255 ++ '[' 1 = 1 ']' ++ '[' -x /usr/bin/clear_console ']' ++ /usr/bin/clear_console -q Build step 'Execute shell' marked build as failure $ ssh-agent -k unset SSH_AUTH_SOCK; unset SSH_AGENT_PID; echo Agent pid 12997 killed; [ssh-agent] Stopped. [PostBuildScript] - [INFO] Executing post build scripts. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins17906662187250579398.sh ---> sysstat.sh [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins15593294061840178892.sh ---> package-listing.sh ++ tr '[:upper:]' '[:lower:]' ++ facter osfamily + OS_FAMILY=debian + workspace=/w/workspace/transportpce-tox-verify-transportpce-master + START_PACKAGES=/tmp/packages_start.txt + END_PACKAGES=/tmp/packages_end.txt + DIFF_PACKAGES=/tmp/packages_diff.txt + PACKAGES=/tmp/packages_start.txt + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' + PACKAGES=/tmp/packages_end.txt + case "${OS_FAMILY}" in + dpkg -l + grep '^ii' + '[' -f /tmp/packages_start.txt ']' + '[' -f /tmp/packages_end.txt ']' + diff /tmp/packages_start.txt /tmp/packages_end.txt + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/ + cp -f /tmp/packages_diff.txt /tmp/packages_end.txt /tmp/packages_start.txt /w/workspace/transportpce-tox-verify-transportpce-master/archives/ [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins8945528607614494267.sh ---> capture-instance-metadata.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-LvpY from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing: lftools lf-activate-venv(): INFO: Adding /tmp/venv-LvpY/bin to PATH INFO: Running in OpenStack, capturing instance metadata [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins1167153896431350739.sh provisioning config files... Could not find credentials [logs] for transportpce-tox-verify-transportpce-master #2279 copy managed file [jenkins-log-archives-settings] to file:/w/workspace/transportpce-tox-verify-transportpce-master@tmp/config17741200272885358275tmp Regular expression run condition: Expression=[^.*logs-s3.*], Label=[odl-logs-s3-cloudfront-index] Run condition [Regular expression match] enabling perform for step [Provide Configuration files] provisioning config files... copy managed file [jenkins-s3-log-ship] to file:/home/jenkins/.aws/credentials [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties content SERVER_ID=logs [EnvInject] - Variables injected successfully. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins2000744622952977861.sh ---> create-netrc.sh WARN: Log server credential not found. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins5447294237994556247.sh ---> python-tools-install.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-LvpY from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing: lftools lf-activate-venv(): INFO: Adding /tmp/venv-LvpY/bin to PATH [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins7048916874869959528.sh ---> sudo-logs.sh Archiving 'sudo' log.. [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins13474740512875610795.sh ---> job-cost.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-LvpY from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing: zipp==1.1.0 python-openstackclient urllib3~=1.26.15 lf-activate-venv(): INFO: Adding /tmp/venv-LvpY/bin to PATH INFO: No Stack... INFO: Retrieving Pricing Info for: v3-standard-4 INFO: Archiving Costs [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins5035707180861638599.sh ---> logs-deploy.sh Setup pyenv: system 3.8.20 3.9.20 3.10.15 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) lf-activate-venv(): INFO: Reuse venv:/tmp/venv-LvpY from file:/tmp/.os_lf_venv lf-activate-venv(): INFO: Installing: lftools lf-activate-venv(): INFO: Adding /tmp/venv-LvpY/bin to PATH WARNING: Nexus logging server not set INFO: S3 path logs/releng/vex-yul-odl-jenkins-1/transportpce-tox-verify-transportpce-master/2279/ INFO: archiving logs to S3 ---> uname -a: Linux prd-ubuntu2004-docker-4c-16g-11399 5.4.0-200-generic #220-Ubuntu SMP Fri Sep 27 13:19:16 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux ---> lscpu: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian Address sizes: 40 bits physical, 48 bits virtual CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 4 NUMA node(s): 1 Vendor ID: AuthenticAMD CPU family: 23 Model: 49 Model name: AMD EPYC-Rome Processor Stepping: 0 CPU MHz: 2800.000 BogoMIPS: 5600.00 Virtualization: AMD-V Hypervisor vendor: KVM Virtualization type: full L1d cache: 128 KiB L1i cache: 128 KiB L2 cache: 2 MiB L3 cache: 64 MiB NUMA node0 CPU(s): 0-3 Vulnerability Gather data sampling: Not affected Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Not affected Vulnerability Retbleed: Vulnerable Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected 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 ---> nproc: 4 ---> df -h: Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 1.1M 1.6G 1% /run /dev/vda1 78G 18G 60G 24% / tmpfs 7.9G 0 7.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/loop0 68M 68M 0 100% /snap/lxd/22753 /dev/loop1 62M 62M 0 100% /snap/core20/1405 /dev/loop2 44M 44M 0 100% /snap/snapd/15177 /dev/vda15 105M 6.1M 99M 6% /boot/efi tmpfs 1.6G 0 1.6G 0% /run/user/1001 /dev/loop3 64M 64M 0 100% /snap/core20/2434 /dev/loop4 92M 92M 0 100% /snap/lxd/29619 ---> free -m: total used free shared buff/cache available Mem: 15997 2254 4702 1 9040 13403 Swap: 1023 0 1023 ---> ip addr: 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: mtu 1458 qdisc mq state UP group default qlen 1000 link/ether fa:16:3e:98:c7:21 brd ff:ff:ff:ff:ff:ff inet 10.30.171.76/23 metric 100 brd 10.30.171.255 scope global dynamic ens3 valid_lft 79102sec preferred_lft 79102sec inet6 fe80::f816:3eff:fe98:c721/64 scope link valid_lft forever preferred_lft forever 3: docker0: mtu 1458 qdisc noqueue state DOWN group default link/ether 02:42:5c:ea:c9:76 brd ff:ff:ff:ff:ff:ff inet 10.250.0.254/24 brd 10.250.0.255 scope global docker0 valid_lft forever preferred_lft forever ---> sar -b -r -n DEV: Linux 5.4.0-200-generic (prd-ubuntu2004-docker-4c-16g-11399) 11/29/24 _x86_64_ (4 CPU) 08:46:32 LINUX RESTART (4 CPU) 08:47:02 tps rtps wtps dtps bread/s bwrtn/s bdscd/s 08:48:01 340.52 152.48 188.04 0.00 11938.18 12988.31 0.00 08:49:01 142.26 23.91 118.35 0.00 1882.35 19261.21 0.00 08:50:01 145.24 18.65 126.60 0.00 920.11 47508.88 0.00 08:51:01 123.83 1.07 122.76 0.00 55.45 76132.22 0.00 08:52:01 203.32 11.31 192.00 0.00 4544.04 151546.21 0.00 08:53:01 169.33 5.05 164.28 0.00 355.08 59434.72 0.00 08:54:01 85.50 0.00 85.50 0.00 0.00 1492.02 0.00 08:55:01 76.04 0.05 75.99 0.00 3.47 1193.93 0.00 08:56:01 185.97 0.35 185.62 0.00 23.33 4602.70 0.00 08:57:01 96.85 2.10 94.75 0.00 131.82 9979.61 0.00 08:58:01 3.45 0.25 3.20 0.00 4.13 106.25 0.00 08:59:01 2.07 0.07 2.00 0.00 1.20 58.79 0.00 09:00:01 2.03 0.00 2.03 0.00 0.00 34.26 0.00 09:01:01 1.57 0.00 1.57 0.00 0.00 21.73 0.00 09:02:01 68.53 3.60 64.93 0.00 417.46 1422.59 0.00 09:03:01 64.42 1.20 63.22 0.00 145.84 2254.29 0.00 09:04:01 49.14 0.00 49.14 0.00 0.00 751.21 0.00 09:05:01 3.77 0.02 3.75 0.00 0.27 77.04 0.00 09:06:01 1.93 0.00 1.93 0.00 0.00 33.72 0.00 09:07:01 86.47 0.00 86.47 0.00 0.00 1668.50 0.00 09:08:01 91.62 0.00 91.62 0.00 0.00 2508.65 0.00 09:09:01 3.67 0.77 2.90 0.00 21.33 69.98 0.00 09:10:01 1.75 0.02 1.73 0.00 0.13 34.93 0.00 09:11:01 2.27 0.00 2.27 0.00 0.00 45.73 0.00 09:12:01 103.67 0.00 103.67 0.00 0.00 2703.73 0.00 09:13:01 84.19 0.02 84.17 0.00 0.13 1996.07 0.00 09:14:01 72.00 0.03 71.97 0.00 2.40 1546.28 0.00 09:15:01 136.85 2.85 134.01 0.00 74.78 11322.49 0.00 09:16:01 67.46 0.48 66.97 0.00 15.33 1233.13 0.00 09:17:01 2.75 0.05 2.70 0.00 1.07 47.06 0.00 09:18:01 79.67 0.00 79.67 0.00 0.00 1185.80 0.00 09:19:01 1.72 0.00 1.72 0.00 0.00 33.99 0.00 09:20:01 23.71 0.00 23.71 0.00 0.00 408.60 0.00 09:21:01 67.11 0.00 67.11 0.00 0.00 1156.21 0.00 09:22:01 89.30 0.00 89.30 0.00 0.00 3579.94 0.00 09:23:01 91.12 0.00 91.12 0.00 0.00 1266.06 0.00 09:24:01 83.07 0.02 83.06 0.00 0.13 1489.50 0.00 09:25:01 3.25 0.00 3.25 0.00 0.00 53.72 0.00 09:26:01 75.32 0.00 75.32 0.00 0.00 1112.21 0.00 09:27:01 73.72 0.02 73.70 0.00 0.13 1091.55 0.00 09:28:01 1.88 0.00 1.88 0.00 0.00 32.13 0.00 09:29:01 98.17 0.00 98.17 0.00 0.00 1507.62 0.00 09:30:01 58.91 0.00 58.91 0.00 0.00 821.06 0.00 09:31:01 78.25 0.00 78.25 0.00 0.00 1157.14 0.00 09:32:01 16.98 0.00 16.98 0.00 0.00 308.88 0.00 09:33:01 65.72 0.02 65.71 0.00 0.13 939.04 0.00 09:34:01 1.47 0.00 1.47 0.00 0.00 33.86 0.00 09:35:01 16.11 0.00 16.11 0.00 0.00 301.28 0.00 09:36:01 70.40 0.00 70.40 0.00 0.00 996.10 0.00 09:37:01 2.68 0.00 2.68 0.00 0.00 50.92 0.00 09:38:01 2.43 0.00 2.43 0.00 0.00 43.86 0.00 09:39:01 2.98 0.00 2.98 0.00 0.00 47.46 0.00 09:40:01 1.70 0.00 1.70 0.00 0.00 35.06 0.00 09:41:01 2.77 0.00 2.77 0.00 0.00 55.06 0.00 09:42:01 1.78 0.00 1.78 0.00 0.00 26.00 0.00 09:43:01 2.32 0.00 2.32 0.00 0.00 46.26 0.00 09:44:01 82.84 0.00 82.84 0.00 0.00 1229.26 0.00 09:45:01 3.13 0.00 3.13 0.00 0.00 76.25 0.00 09:46:01 2.95 0.00 2.95 0.00 0.00 61.19 0.00 09:47:01 3.75 0.00 3.75 0.00 0.00 72.79 0.00 09:48:01 1.70 0.00 1.70 0.00 0.00 37.32 0.00 09:49:01 2.30 0.00 2.30 0.00 0.00 45.73 0.00 09:50:01 2.35 0.00 2.35 0.00 0.00 67.46 0.00 09:51:01 27.38 0.00 27.38 0.00 0.00 472.53 0.00 09:52:01 59.97 0.00 59.97 0.00 0.00 850.39 0.00 09:53:01 3.68 0.00 3.68 0.00 0.00 74.65 0.00 09:54:01 2.63 0.00 2.63 0.00 0.00 52.39 0.00 09:55:01 2.93 0.00 2.93 0.00 0.00 49.99 0.00 09:56:01 2.83 0.00 2.83 0.00 0.00 58.26 0.00 09:57:01 4.13 0.00 4.13 0.00 0.00 73.99 0.00 09:58:01 2.63 0.00 2.63 0.00 0.00 47.18 0.00 09:59:01 26.30 0.00 26.30 0.00 0.00 569.51 0.00 10:00:01 62.97 0.00 62.97 0.00 0.00 887.72 0.00 10:01:01 3.17 0.00 3.17 0.00 0.00 66.66 0.00 10:02:01 1.82 0.00 1.82 0.00 0.00 42.39 0.00 10:03:01 2.98 0.00 2.98 0.00 0.00 49.86 0.00 10:04:01 2.25 0.00 2.25 0.00 0.00 40.52 0.00 10:05:01 2.23 0.00 2.23 0.00 0.00 38.00 0.00 10:06:01 2.23 0.00 2.23 0.00 0.00 42.39 0.00 10:07:01 3.30 0.00 3.30 0.00 0.00 55.32 0.00 10:08:01 2.07 0.00 2.07 0.00 0.00 47.06 0.00 10:09:01 1.75 0.00 1.75 0.00 0.00 29.46 0.00 10:10:01 1.97 0.00 1.97 0.00 0.00 25.46 0.00 10:11:02 2.17 0.00 2.17 0.00 0.00 27.73 0.00 10:12:01 12.20 0.05 12.15 0.00 0.41 1088.12 0.00 10:13:01 37.21 1.30 35.91 0.00 31.19 8982.37 0.00 10:14:01 2.33 0.00 2.33 0.00 0.00 45.06 0.00 10:15:01 2.03 0.00 2.03 0.00 0.00 27.47 0.00 10:16:01 1.30 0.00 1.30 0.00 0.00 15.86 0.00 10:17:01 61.00 0.00 61.00 0.00 0.00 1238.92 0.00 10:18:01 74.32 0.13 74.18 0.00 9.60 1381.47 0.00 10:19:01 3.67 0.00 3.67 0.00 0.00 59.99 0.00 10:20:01 70.31 0.00 70.31 0.00 0.00 1323.96 0.00 10:21:01 17.33 0.25 17.08 0.00 8.27 310.00 0.00 10:22:01 53.76 0.13 53.62 0.00 10.53 779.34 0.00 10:23:01 3.40 0.02 3.38 0.00 0.13 66.92 0.00 10:24:01 16.89 0.00 16.89 0.00 0.00 307.10 0.00 10:25:01 60.68 0.00 60.68 0.00 0.00 876.91 0.00 10:26:01 2.17 0.00 2.17 0.00 0.00 43.99 0.00 10:27:01 2.08 0.00 2.08 0.00 0.00 49.86 0.00 10:28:01 2.27 0.00 2.27 0.00 0.00 41.86 0.00 10:29:01 2.88 0.00 2.88 0.00 0.00 55.19 0.00 10:30:01 1.40 0.00 1.40 0.00 0.00 30.26 0.00 10:31:01 1.95 0.00 1.95 0.00 0.00 41.99 0.00 10:32:01 2.05 0.00 2.05 0.00 0.00 40.26 0.00 10:33:01 11.15 0.00 11.15 0.00 0.00 1205.67 0.00 10:34:01 92.34 0.00 92.34 0.00 0.00 9485.90 0.00 10:35:01 4.63 0.00 4.63 0.00 0.00 126.38 0.00 10:36:01 35.36 0.00 35.36 0.00 0.00 854.66 0.00 10:37:01 37.96 0.00 37.96 0.00 0.00 551.37 0.00 10:38:01 2.55 0.00 2.55 0.00 0.00 48.39 0.00 10:39:01 2.85 0.00 2.85 0.00 0.00 46.26 0.00 10:40:01 2.25 0.00 2.25 0.00 0.00 34.26 0.00 10:41:01 3.60 0.02 3.58 0.00 0.13 76.79 0.00 10:42:01 2.15 0.00 2.15 0.00 0.00 42.79 0.00 10:43:01 26.63 0.00 26.63 0.00 0.00 580.97 0.00 10:44:01 46.53 0.13 46.39 0.00 4.13 677.62 0.00 10:45:01 3.23 0.00 3.23 0.00 0.00 199.17 0.00 10:46:01 3.38 0.02 3.37 0.00 0.13 80.92 0.00 10:47:01 14.53 3.20 11.33 0.00 63.99 877.45 0.00 10:48:01 67.14 14.46 52.68 0.00 1224.78 31998.00 0.00 Average: 37.47 2.00 35.48 0.00 179.33 4121.28 0.00 08:47:02 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 08:48:01 13432952 15466924 513536 3.13 68452 2163292 1233304 7.08 767840 1906516 145160 08:49:01 11897664 14904672 1053764 6.43 103640 3039548 1882064 10.80 1432104 2691972 593456 08:50:01 9992584 13975716 1980760 12.09 139764 3902364 2607692 14.96 2485032 3463704 323408 08:51:01 6932708 13158812 2796104 17.07 174840 6014220 3594468 20.62 3820628 5085700 285816 08:52:01 4139288 13541048 2400272 14.65 218632 9014128 3343540 19.18 4351220 7200952 45432 08:53:01 2602248 12913232 3028644 18.49 235160 9871980 4050576 23.24 5533608 7519520 4136 08:54:01 2790324 13105744 2836244 17.31 239152 9872544 3909572 22.43 5366424 7498652 844 08:55:01 3581092 13900384 2041700 12.46 242328 9873028 3142568 18.03 4588660 7487788 500 08:56:01 1290568 11881728 4059092 24.78 254960 10117924 6243512 35.82 6667776 7676800 226908 08:57:01 165420 8732740 7206500 43.99 250120 8132072 8852792 50.79 9549380 5943528 992 08:58:01 172736 8186976 7751952 47.32 250140 7588432 9071960 52.05 10029040 5463468 572 08:59:01 152720 8167768 7771092 47.44 250172 7589204 9087984 52.14 10048364 5463948 492 09:00:01 170488 8166360 7772492 47.45 250208 7570612 9087984 52.14 10048080 5446900 260 09:01:01 168512 8164412 7774440 47.46 250224 7570620 9087984 52.14 10049728 5446900 244 09:02:01 527664 7552892 8385644 51.19 251852 6621376 9924420 56.94 10573104 4583760 1320 09:03:01 3831480 10864136 5076148 30.99 253248 6627472 6745472 38.70 7290996 4575584 1932 09:04:01 2982708 10017740 5922056 36.15 255028 6627992 6960484 39.93 8138312 4573636 408 09:05:01 2895760 9931264 6008352 36.68 255076 6628416 7025392 40.31 8223616 4573964 36 09:06:01 2872112 9907816 6031756 36.82 255108 6628584 7025392 40.31 8246068 4574088 116 09:07:01 6409588 13446368 2495052 15.23 256648 6628100 3565348 20.46 4735964 4563212 1260 09:08:01 3145812 10186036 5753768 35.12 258360 6629816 6950676 39.88 7985496 4564468 412 09:09:01 2882908 9924352 6015068 36.72 258380 6631016 7131064 40.91 8245804 4564940 56 09:10:01 2843848 9885536 6053828 36.96 258392 6631288 7149684 41.02 8284760 4565148 200 09:11:01 2810292 9852432 6086904 37.16 258416 6631672 7167568 41.12 8316928 4565572 688 09:12:01 4678640 11723144 4217580 25.75 260264 6632136 6205192 35.60 6458848 4565028 2144 09:13:01 3136512 10182840 5756856 35.14 261588 6632604 6820604 39.13 7994148 4564984 532 09:14:01 6848920 13912516 2028644 12.38 263456 6646972 3101656 17.80 4283560 4578848 16164 09:15:01 6022296 13329228 2611852 15.94 269952 6878324 3662972 21.02 4945992 4735240 1300 09:16:01 4979768 12288152 3652152 22.29 270708 6879016 4636092 26.60 5992940 4726536 104 09:17:01 4963940 12272484 3667792 22.39 270716 6879156 4668072 26.78 6007756 4726660 328 09:18:01 4218900 11528332 4411576 26.93 271408 6879320 5419676 31.09 6762060 4715636 348 09:19:01 4158876 11468540 4471248 27.29 271424 6879544 5467836 31.37 6821068 4715780 440 09:20:01 5149436 12459372 3481228 21.25 271508 6879688 4549520 26.10 5835884 4714800 412 09:21:01 6472232 13849500 2091428 12.77 274152 6940420 3425524 19.65 4455556 4774348 61688 09:22:01 3502832 10881220 5058260 30.88 274944 6940740 6166196 35.38 7411764 4774656 108 09:23:01 6424744 13803836 2136984 13.05 275408 6940912 3440516 19.74 4516932 4760428 460 09:24:01 3026512 10406460 5532716 33.77 275832 6941304 6814052 39.09 7900456 4760816 264 09:25:01 2738212 10118220 5820932 35.53 275832 6941364 6882184 39.48 8188020 4760860 48 09:26:01 4906740 12287168 3653000 22.30 276156 6941448 4668764 26.79 6028676 4759472 108 09:27:01 4712808 12093984 3846160 23.48 276624 6941668 4861332 27.89 6221984 4759392 140 09:28:01 4662164 12043372 3896756 23.79 276628 6941700 4927508 28.27 6273324 4759404 84 09:29:01 5137552 12519788 3420564 20.88 277060 6942276 4653056 26.70 5799444 4759520 656 09:30:01 4800896 12183464 3756512 22.93 277276 6942372 4782084 27.44 6134120 4759608 96 09:31:01 4123256 11506348 4433192 27.06 277468 6942684 5393468 30.94 6809096 4759900 376 09:32:01 5890880 13274112 2666696 16.28 277476 6942808 3675836 21.09 5048588 4759960 436 09:33:01 2744072 10127772 5811124 35.47 277680 6943028 6942920 39.83 8181848 4760152 128 09:34:01 2530188 9914216 6024552 36.78 277680 6943352 7055852 40.48 8396024 4760480 264 09:35:01 5887544 13271772 2668768 16.29 277688 6943544 3683092 21.13 5048616 4760592 692 09:36:01 2764872 10149512 5789368 35.34 277992 6943652 6791332 38.96 8157308 4760680 168 09:37:01 2608332 9993320 5945332 36.29 277992 6943996 6905268 39.62 8317060 4761024 268 09:38:01 2582596 9967892 5970752 36.45 277992 6944304 6921348 39.71 8341796 4761328 200 09:39:01 2568672 9954024 5984624 36.53 277992 6944356 6921348 39.71 8355600 4761384 104 09:40:01 2550872 9936632 6001896 36.64 277992 6944772 6937436 39.80 8372044 4761792 612 09:41:01 2544448 9930412 6008124 36.68 277992 6944968 6937436 39.80 8378140 4761992 108 09:42:01 2493252 9879308 6059152 36.99 277992 6945060 6986648 40.08 8428664 4762084 228 09:43:01 3439572 10825772 5112856 31.21 277992 6945204 6090604 34.94 7483376 4762224 304 09:44:01 2705872 10092280 5846492 35.69 278108 6945300 6909708 39.64 8212992 4762240 220 09:45:01 2513852 9900844 6037584 36.86 278116 6945884 7058264 40.50 8408176 4762816 236 09:46:01 2490636 9878088 6060296 37.00 278120 6946316 7058264 40.50 8429352 4763256 100 09:47:01 2458168 9846100 6092392 37.19 278120 6946792 7058264 40.50 8461472 4763736 120 09:48:01 2443008 9831344 6107068 37.28 278120 6947212 7058264 40.50 8476696 4764136 300 09:49:01 2427580 9816252 6122208 37.37 278124 6947524 7058264 40.50 8492576 4764464 348 09:50:01 2391544 9780996 6157460 37.59 278124 6948296 7090320 40.68 8527148 4765240 120 09:51:01 3713836 11103084 4836272 29.52 278140 6948072 6624764 38.01 7208008 4764980 420 09:52:01 1176264 8565432 7372512 45.01 278260 6947868 8318872 47.73 9740368 4764772 384 09:53:01 1039944 8429528 7508268 45.83 278260 6948284 8416420 48.29 9873912 4765176 140 09:54:01 953248 8343100 7594588 46.36 278260 6948552 8465508 48.57 9961536 4765444 212 09:55:01 939576 8329552 7608132 46.44 278264 6948672 8465508 48.57 9974888 4765564 200 09:56:01 905800 8296100 7641576 46.65 278264 6948996 8481516 48.66 10006848 4765888 152 09:57:01 882748 8273456 7664176 46.79 278272 6949392 8497528 48.75 10029812 4766280 52 09:58:01 849792 8240748 7696840 46.99 278276 6949640 8513556 48.84 10062164 4766524 8 09:59:01 4754420 12145392 3794216 23.16 278324 6949604 5290472 30.35 6170904 4766368 800 10:00:01 1190336 8581248 7356616 44.91 278460 6949404 8358376 47.95 9722996 4766152 228 10:01:01 1032204 8423520 7514164 45.87 278460 6949812 8456932 48.52 9880284 4766556 256 10:02:01 961808 8353496 7584060 46.30 278464 6950172 8506380 48.80 9950040 4766920 252 10:03:01 951224 8343008 7594548 46.36 278464 6950268 8506380 48.80 9960120 4767016 172 10:04:01 932040 8324008 7613600 46.48 278464 6950456 8554396 49.08 9978648 4767200 232 10:05:01 918140 8310244 7627348 46.56 278468 6950592 8554396 49.08 9992268 4767332 336 10:06:01 903956 8296200 7641368 46.65 278468 6950724 8554396 49.08 10006060 4767472 204 10:07:01 869912 8262324 7675200 46.85 278472 6950888 8570464 49.17 10040100 4767636 100 10:08:01 827356 8220300 7717152 47.11 278476 6951416 8603596 49.36 10082152 4768164 136 10:09:01 824520 8217508 7719944 47.13 278484 6951452 8619584 49.45 10084852 4768196 312 10:10:01 823080 8216068 7721364 47.14 278484 6951452 8619584 49.45 10085788 4768196 68 10:11:02 821372 8214372 7723048 47.15 278492 6951456 8619584 49.45 10087276 4768200 308 10:12:01 5319276 12967508 2972628 18.15 284500 7193904 4035096 23.15 5384808 4984044 227088 10:13:01 3893500 11543596 4395592 26.83 284636 7195640 5407792 31.03 6835540 4953416 660 10:14:01 3890280 11540396 4398824 26.85 284636 7195660 5407792 31.03 6838660 4953392 32 10:15:01 3888288 11538408 4400892 26.87 284636 7195664 5407792 31.03 6840944 4953380 60 10:16:01 3887052 11537172 4402128 26.87 284636 7195664 5423796 31.12 6842552 4953380 204 10:17:01 3926352 11576968 4362320 26.63 284768 7195964 5389588 30.92 6822716 4932860 324 10:18:01 2881596 10533020 5405564 33.00 284872 7196584 6745300 38.70 7875548 4920956 284 10:19:01 2460688 10112196 5826304 35.57 284872 7196664 6863540 39.38 8296800 4920948 8 10:20:01 3950868 11602692 4336472 26.47 285024 7196832 5375276 30.84 6809988 4920860 252 10:21:01 5422884 13075104 2864996 17.49 285028 7197204 3855068 22.12 5345388 4920484 444 10:22:01 2522388 10175368 5763000 35.18 285180 7197816 6853216 39.32 8236428 4920580 72 10:23:01 2226240 9879516 6058712 36.99 285200 7198088 6968176 39.98 8529724 4920828 360 10:24:01 5554884 13208296 2731664 16.68 285208 7198216 3662716 21.01 5214616 4920696 700 10:25:01 2403416 10057224 5880908 35.90 285316 7198504 6919364 39.70 8355000 4920236 368 10:26:01 2332668 9986740 5951380 36.33 285316 7198768 6919364 39.70 8424824 4920500 136 10:27:01 2208180 9862764 6075348 37.09 285316 7199276 7000436 40.16 8548116 4920988 344 10:28:01 2175924 9830772 6107340 37.28 285316 7199540 7000436 40.16 8579932 4921252 232 10:29:01 2167064 9822232 6115864 37.33 285316 7199856 7000436 40.16 8588768 4921568 232 10:30:01 2160488 9816040 6122004 37.37 285316 7200252 7000436 40.16 8594220 4921952 268 10:31:01 2156196 9812084 6125900 37.40 285316 7200592 7000436 40.16 8598012 4922288 556 10:32:01 2153644 9809916 6128064 37.41 285316 7200980 7000436 40.16 8599860 4922672 328 10:33:01 5276024 13184224 2755552 16.82 291340 7440152 3660936 21.00 5274256 5131212 233624 10:34:01 1997872 9911856 6025916 36.79 291584 7445508 6938760 39.81 8564388 5107028 2088 10:35:01 1850992 9765284 6172332 37.68 291584 7445796 7065816 40.54 8711208 5107168 72 10:36:01 2429844 10344324 5593812 34.15 291664 7445812 6719392 38.55 8157264 5087684 248 10:37:01 1976844 9891812 6045676 36.91 291716 7446244 6938448 39.81 8607444 5085444 196 10:38:01 1968276 9883436 6054020 36.96 291716 7446436 6938448 39.81 8615684 5085580 288 10:39:01 1948604 9864068 6073468 37.08 291716 7446740 6970440 39.99 8634776 5085876 344 10:40:01 1939720 9855400 6082132 37.13 291716 7446964 6970440 39.99 8643200 5086092 240 10:41:01 1894160 9810384 6126940 37.40 291724 7447480 6986480 40.08 8687204 5086600 116 10:42:01 1872616 9789176 6148148 37.53 291724 7447812 6986480 40.08 8708456 5086936 4 10:43:01 3286424 11202772 4735572 28.91 291744 7447548 5966860 34.23 7312528 5075052 424 10:44:01 1199724 9116432 6820764 41.64 291768 7447884 7683168 44.08 9392640 5075148 220 10:45:01 1118476 9035712 6901344 42.13 291768 7448396 7733924 44.37 9471368 5075600 428 10:46:01 1066368 8984352 6952692 42.44 291768 7449144 7749972 44.46 9523340 5076344 160 10:47:01 5561712 13551336 2387724 14.58 294076 7514188 3328884 19.10 4979344 5137644 48432 10:48:01 4859228 13737848 2201644 13.44 296876 8372848 3036848 17.42 5011684 5779492 15580 Average: 3086719 10584866 5354843 32.69 270448 7068955 6388746 36.65 7690035 4915111 18726 08:47:02 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 08:48:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:48:01 lo 0.88 0.88 0.09 0.09 0.00 0.00 0.00 0.00 08:48:01 ens3 372.84 268.85 1675.47 73.58 0.00 0.00 0.00 0.00 08:49:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:49:01 lo 3.67 3.67 0.35 0.35 0.00 0.00 0.00 0.00 08:49:01 ens3 370.95 294.33 5412.24 33.14 0.00 0.00 0.00 0.00 08:50:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:50:01 lo 3.00 3.00 0.32 0.32 0.00 0.00 0.00 0.00 08:50:01 ens3 278.72 245.69 4323.02 26.49 0.00 0.00 0.00 0.00 08:51:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:51:01 lo 1.13 1.13 0.11 0.11 0.00 0.00 0.00 0.00 08:51:01 ens3 258.60 165.43 3840.86 16.73 0.00 0.00 0.00 0.00 08:52:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:52:01 lo 1.13 1.13 0.12 0.12 0.00 0.00 0.00 0.00 08:52:01 ens3 272.70 189.52 3868.33 15.50 0.00 0.00 0.00 0.00 08:53:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:53:01 lo 6.15 6.15 13.78 13.78 0.00 0.00 0.00 0.00 08:53:01 ens3 2.72 2.92 1.30 0.93 0.00 0.00 0.00 0.00 08:54:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:54:01 lo 4.20 4.20 2.11 2.11 0.00 0.00 0.00 0.00 08:54:01 ens3 0.70 0.57 0.12 0.11 0.00 0.00 0.00 0.00 08:55:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:55:01 lo 9.70 9.70 6.29 6.29 0.00 0.00 0.00 0.00 08:55:01 ens3 0.92 0.85 0.16 0.15 0.00 0.00 0.00 0.00 08:56:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:56:01 lo 5.25 5.25 1.23 1.23 0.00 0.00 0.00 0.00 08:56:01 ens3 1.92 2.12 0.83 0.74 0.00 0.00 0.00 0.00 08:57:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:57:01 lo 16.14 16.14 12.57 12.57 0.00 0.00 0.00 0.00 08:57:01 ens3 6.90 6.00 1.36 3.85 0.00 0.00 0.00 0.00 08:58:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:58:01 lo 33.06 33.06 25.82 25.82 0.00 0.00 0.00 0.00 08:58:01 ens3 0.78 0.82 0.24 0.18 0.00 0.00 0.00 0.00 08:59:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:59:01 lo 26.38 26.38 11.88 11.88 0.00 0.00 0.00 0.00 08:59:01 ens3 1.03 0.67 0.36 0.26 0.00 0.00 0.00 0.00 09:00:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:00:01 lo 0.42 0.42 0.04 0.04 0.00 0.00 0.00 0.00 09:00:01 ens3 0.07 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:01:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:01:01 lo 0.73 0.73 0.07 0.07 0.00 0.00 0.00 0.00 09:01:01 ens3 0.17 0.10 0.01 0.01 0.00 0.00 0.00 0.00 09:02:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:02:01 lo 2.42 2.42 0.29 0.29 0.00 0.00 0.00 0.00 09:02:01 ens3 0.28 0.27 0.04 0.04 0.00 0.00 0.00 0.00 09:03:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:03:01 lo 3.57 3.57 0.37 0.37 0.00 0.00 0.00 0.00 09:03:01 ens3 0.88 0.72 0.21 0.14 0.00 0.00 0.00 0.00 09:04:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:04:01 lo 18.15 18.15 19.96 19.96 0.00 0.00 0.00 0.00 09:04:01 ens3 0.63 0.57 0.12 0.12 0.00 0.00 0.00 0.00 09:05:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:05:01 lo 21.44 21.44 10.79 10.79 0.00 0.00 0.00 0.00 09:05:01 ens3 0.45 0.25 0.05 0.04 0.00 0.00 0.00 0.00 09:06:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:06:01 lo 14.13 14.13 5.59 5.59 0.00 0.00 0.00 0.00 09:06:01 ens3 1.00 0.43 0.34 0.24 0.00 0.00 0.00 0.00 09:07:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:07:01 lo 21.34 21.34 6.00 6.00 0.00 0.00 0.00 0.00 09:07:01 ens3 0.65 0.52 0.11 0.09 0.00 0.00 0.00 0.00 09:08:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:08:01 lo 13.20 13.20 5.96 5.96 0.00 0.00 0.00 0.00 09:08:01 ens3 0.78 0.70 0.20 0.13 0.00 0.00 0.00 0.00 09:09:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:09:01 lo 25.01 25.01 8.48 8.48 0.00 0.00 0.00 0.00 09:09:01 ens3 0.87 0.85 0.15 0.15 0.00 0.00 0.00 0.00 09:10:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:10:01 lo 11.36 11.36 8.24 8.24 0.00 0.00 0.00 0.00 09:10:01 ens3 1.08 1.40 0.22 0.22 0.00 0.00 0.00 0.00 09:11:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:11:01 lo 30.36 30.36 12.87 12.87 0.00 0.00 0.00 0.00 09:11:01 ens3 1.33 1.15 0.22 0.18 0.00 0.00 0.00 0.00 09:12:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:12:01 lo 6.00 6.00 1.38 1.38 0.00 0.00 0.00 0.00 09:12:01 ens3 0.98 1.12 0.36 0.32 0.00 0.00 0.00 0.00 09:13:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:13:01 lo 16.15 16.15 15.24 15.24 0.00 0.00 0.00 0.00 09:13:01 ens3 0.88 0.83 0.21 0.15 0.00 0.00 0.00 0.00 09:14:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:14:01 lo 4.88 4.88 3.42 3.42 0.00 0.00 0.00 0.00 09:14:01 ens3 1.33 1.27 0.43 0.36 0.00 0.00 0.00 0.00 09:15:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:15:01 lo 10.45 10.45 15.66 15.66 0.00 0.00 0.00 0.00 09:15:01 ens3 2.18 2.48 0.87 0.78 0.00 0.00 0.00 0.00 09:16:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:16:01 lo 19.41 19.41 9.27 9.27 0.00 0.00 0.00 0.00 09:16:01 ens3 0.82 1.13 0.17 0.18 0.00 0.00 0.00 0.00 09:17:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:17:01 lo 25.91 25.91 8.53 8.53 0.00 0.00 0.00 0.00 09:17:01 ens3 1.13 1.55 0.23 0.24 0.00 0.00 0.00 0.00 09:18:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:18:01 lo 15.83 15.83 9.94 9.94 0.00 0.00 0.00 0.00 09:18:01 ens3 1.03 1.22 0.28 0.23 0.00 0.00 0.00 0.00 09:19:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:19:01 lo 34.99 34.99 11.85 11.85 0.00 0.00 0.00 0.00 09:19:01 ens3 1.25 1.57 0.24 0.26 0.00 0.00 0.00 0.00 09:20:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:20:01 lo 21.51 21.51 6.51 6.51 0.00 0.00 0.00 0.00 09:20:01 ens3 0.98 1.18 0.18 0.18 0.00 0.00 0.00 0.00 09:21:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:21:01 lo 27.18 27.18 11.73 11.73 0.00 0.00 0.00 0.00 09:21:01 ens3 2.25 2.92 0.91 0.85 0.00 0.00 0.00 0.00 09:22:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:22:01 lo 13.51 13.51 9.80 9.80 0.00 0.00 0.00 0.00 09:22:01 ens3 1.23 1.52 0.23 0.24 0.00 0.00 0.00 0.00 09:23:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:23:01 lo 15.13 15.13 4.84 4.84 0.00 0.00 0.00 0.00 09:23:01 ens3 1.52 1.75 0.35 0.31 0.00 0.00 0.00 0.00 09:24:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:24:01 lo 9.60 9.60 4.23 4.23 0.00 0.00 0.00 0.00 09:24:01 ens3 0.73 0.80 0.11 0.11 0.00 0.00 0.00 0.00 09:25:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:25:01 lo 20.60 20.60 9.17 9.17 0.00 0.00 0.00 0.00 09:25:01 ens3 1.13 1.50 0.23 0.24 0.00 0.00 0.00 0.00 09:26:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:26:01 lo 5.65 5.65 6.39 6.39 0.00 0.00 0.00 0.00 09:26:01 ens3 0.78 0.85 0.13 0.13 0.00 0.00 0.00 0.00 09:27:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:27:01 lo 7.80 7.80 2.87 2.87 0.00 0.00 0.00 0.00 09:27:01 ens3 1.35 1.18 0.41 0.33 0.00 0.00 0.00 0.00 09:28:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:01 lo 4.38 4.38 1.02 1.02 0.00 0.00 0.00 0.00 09:28:01 ens3 0.73 0.75 0.22 0.16 0.00 0.00 0.00 0.00 09:29:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:29:01 lo 28.81 28.81 9.46 9.46 0.00 0.00 0.00 0.00 09:29:01 ens3 0.93 1.03 0.14 0.15 0.00 0.00 0.00 0.00 09:30:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:30:01 lo 18.68 18.68 12.84 12.84 0.00 0.00 0.00 0.00 09:30:01 ens3 1.07 1.05 0.42 0.36 0.00 0.00 0.00 0.00 09:31:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:31:01 lo 15.43 15.43 16.39 16.39 0.00 0.00 0.00 0.00 09:31:01 ens3 0.75 0.62 0.10 0.10 0.00 0.00 0.00 0.00 09:32:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:32:01 lo 12.75 12.75 5.82 5.82 0.00 0.00 0.00 0.00 09:32:01 ens3 1.48 0.90 0.24 0.19 0.00 0.00 0.00 0.00 09:33:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:33:01 lo 24.78 24.78 10.47 10.47 0.00 0.00 0.00 0.00 09:33:01 ens3 1.38 1.13 0.53 0.40 0.00 0.00 0.00 0.00 09:34:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:34:01 lo 46.76 46.76 14.42 14.42 0.00 0.00 0.00 0.00 09:34:01 ens3 0.53 0.52 0.11 0.10 0.00 0.00 0.00 0.00 09:35:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:35:01 lo 24.03 24.03 7.11 7.11 0.00 0.00 0.00 0.00 09:35:01 ens3 0.75 0.65 0.13 0.12 0.00 0.00 0.00 0.00 09:36:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:36:01 lo 16.23 16.23 15.64 15.64 0.00 0.00 0.00 0.00 09:36:01 ens3 0.80 0.70 0.17 0.11 0.00 0.00 0.00 0.00 09:37:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:37:01 lo 19.29 19.29 9.16 9.16 0.00 0.00 0.00 0.00 09:37:01 ens3 0.67 0.45 0.11 0.08 0.00 0.00 0.00 0.00 09:38:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:38:01 lo 18.78 18.78 9.94 9.94 0.00 0.00 0.00 0.00 09:38:01 ens3 1.02 0.93 0.29 0.22 0.00 0.00 0.00 0.00 09:39:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:39:01 lo 6.33 6.33 3.52 3.52 0.00 0.00 0.00 0.00 09:39:01 ens3 0.95 0.67 0.14 0.11 0.00 0.00 0.00 0.00 09:40:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:40:01 lo 31.71 31.71 12.49 12.49 0.00 0.00 0.00 0.00 09:40:01 ens3 1.00 0.90 0.41 0.34 0.00 0.00 0.00 0.00 09:41:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:41:01 lo 10.51 10.51 4.76 4.76 0.00 0.00 0.00 0.00 09:41:01 ens3 0.60 0.22 0.07 0.03 0.00 0.00 0.00 0.00 09:42:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:42:01 lo 15.10 15.10 6.94 6.94 0.00 0.00 0.00 0.00 09:42:01 ens3 1.05 0.68 0.19 0.14 0.00 0.00 0.00 0.00 09:43:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:43:01 lo 24.08 24.08 8.76 8.76 0.00 0.00 0.00 0.00 09:43:01 ens3 1.30 0.53 0.34 0.17 0.00 0.00 0.00 0.00 09:44:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:44:01 lo 16.83 16.83 6.97 6.97 0.00 0.00 0.00 0.00 09:44:01 ens3 1.02 0.75 0.14 0.13 0.00 0.00 0.00 0.00 09:45:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:45:01 lo 37.29 37.29 12.48 12.48 0.00 0.00 0.00 0.00 09:45:01 ens3 0.70 0.58 0.13 0.11 0.00 0.00 0.00 0.00 09:46:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:46:01 lo 46.36 46.36 13.71 13.71 0.00 0.00 0.00 0.00 09:46:01 ens3 0.33 0.18 0.05 0.04 0.00 0.00 0.00 0.00 09:47:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:47:01 lo 29.16 29.16 8.80 8.80 0.00 0.00 0.00 0.00 09:47:01 ens3 0.62 0.52 0.10 0.10 0.00 0.00 0.00 0.00 09:48:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:48:01 lo 32.71 32.71 9.67 9.67 0.00 0.00 0.00 0.00 09:48:01 ens3 0.57 0.48 0.18 0.12 0.00 0.00 0.00 0.00 09:49:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:49:01 lo 21.16 21.16 5.93 5.93 0.00 0.00 0.00 0.00 09:49:01 ens3 0.18 0.15 0.02 0.02 0.00 0.00 0.00 0.00 09:50:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:50:01 lo 58.01 58.01 18.64 18.64 0.00 0.00 0.00 0.00 09:50:01 ens3 0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:51:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:51:01 lo 24.95 24.95 6.90 6.90 0.00 0.00 0.00 0.00 09:51:01 ens3 0.77 0.70 0.10 0.10 0.00 0.00 0.00 0.00 09:52:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:52:01 lo 22.33 22.33 22.37 22.37 0.00 0.00 0.00 0.00 09:52:01 ens3 1.43 1.10 0.42 0.33 0.00 0.00 0.00 0.00 09:53:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:53:01 lo 33.44 33.44 13.70 13.70 0.00 0.00 0.00 0.00 09:53:01 ens3 1.13 0.63 0.28 0.16 0.00 0.00 0.00 0.00 09:54:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:54:01 lo 18.28 18.28 7.73 7.73 0.00 0.00 0.00 0.00 09:54:01 ens3 1.02 0.80 0.39 0.32 0.00 0.00 0.00 0.00 09:55:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:55:01 lo 11.63 11.63 4.74 4.74 0.00 0.00 0.00 0.00 09:55:01 ens3 0.87 0.70 0.15 0.14 0.00 0.00 0.00 0.00 09:56:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:56:01 lo 35.31 35.31 14.05 14.05 0.00 0.00 0.00 0.00 09:56:01 ens3 0.35 0.33 0.07 0.07 0.00 0.00 0.00 0.00 09:57:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:57:01 lo 29.31 29.31 11.89 11.89 0.00 0.00 0.00 0.00 09:57:01 ens3 0.85 0.65 0.14 0.12 0.00 0.00 0.00 0.00 09:58:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:58:01 lo 24.34 24.34 9.19 9.19 0.00 0.00 0.00 0.00 09:58:01 ens3 0.58 0.68 0.21 0.15 0.00 0.00 0.00 0.00 09:59:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:01 lo 4.80 4.80 2.15 2.15 0.00 0.00 0.00 0.00 09:59:01 ens3 0.80 0.85 0.12 0.12 0.00 0.00 0.00 0.00 10:00:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:00:01 lo 21.66 21.66 22.30 22.30 0.00 0.00 0.00 0.00 10:00:01 ens3 0.70 0.72 0.10 0.10 0.00 0.00 0.00 0.00 10:01:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:01:01 lo 33.43 33.43 13.72 13.72 0.00 0.00 0.00 0.00 10:01:01 ens3 0.85 0.97 0.14 0.16 0.00 0.00 0.00 0.00 10:02:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:02:01 lo 19.10 19.10 10.19 10.19 0.00 0.00 0.00 0.00 10:02:01 ens3 0.47 0.35 0.06 0.06 0.00 0.00 0.00 0.00 10:03:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:03:01 lo 10.33 10.33 5.72 5.72 0.00 0.00 0.00 0.00 10:03:01 ens3 0.93 1.15 0.27 0.22 0.00 0.00 0.00 0.00 10:04:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:04:01 lo 24.23 24.23 12.62 12.62 0.00 0.00 0.00 0.00 10:04:01 ens3 0.52 0.63 0.10 0.10 0.00 0.00 0.00 0.00 10:05:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:05:01 lo 8.37 8.37 5.73 5.73 0.00 0.00 0.00 0.00 10:05:01 ens3 0.70 0.72 0.11 0.11 0.00 0.00 0.00 0.00 10:06:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:06:01 lo 15.73 15.73 7.90 7.90 0.00 0.00 0.00 0.00 10:06:01 ens3 0.43 0.58 0.09 0.09 0.00 0.00 0.00 0.00 10:07:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:07:01 lo 15.90 15.90 8.98 8.98 0.00 0.00 0.00 0.00 10:07:01 ens3 0.82 0.53 0.12 0.08 0.00 0.00 0.00 0.00 10:08:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:08:01 lo 38.14 38.14 13.84 13.84 0.00 0.00 0.00 0.00 10:08:01 ens3 0.73 0.50 0.46 0.32 0.00 0.00 0.00 0.00 10:09:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:09:01 lo 4.18 4.18 2.52 2.52 0.00 0.00 0.00 0.00 10:09:01 ens3 0.47 0.43 0.08 0.08 0.00 0.00 0.00 0.00 10:10:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:10:01 lo 0.38 0.38 0.04 0.04 0.00 0.00 0.00 0.00 10:10:01 ens3 0.12 0.00 0.01 0.00 0.00 0.00 0.00 0.00 10:11:02 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:11:02 lo 0.47 0.47 0.03 0.03 0.00 0.00 0.00 0.00 10:11:02 ens3 0.13 0.10 0.01 0.01 0.00 0.00 0.00 0.00 10:12:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:12:01 lo 1.56 1.56 0.14 0.14 0.00 0.00 0.00 0.00 10:12:01 ens3 1.61 1.88 0.78 0.69 0.00 0.00 0.00 0.00 10:13:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:13:01 lo 11.15 11.15 10.37 10.37 0.00 0.00 0.00 0.00 10:13:01 ens3 0.77 0.67 0.22 0.15 0.00 0.00 0.00 0.00 10:14:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:14:01 lo 1.88 1.88 0.26 0.26 0.00 0.00 0.00 0.00 10:14:01 ens3 0.87 0.38 0.13 0.08 0.00 0.00 0.00 0.00 10:15:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:15:01 lo 0.20 0.20 0.01 0.01 0.00 0.00 0.00 0.00 10:15:01 ens3 0.42 0.28 0.26 0.20 0.00 0.00 0.00 0.00 10:16:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:16:01 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:16:01 ens3 0.12 0.00 0.01 0.00 0.00 0.00 0.00 0.00 10:17:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:17:01 lo 15.29 15.29 5.43 5.43 0.00 0.00 0.00 0.00 10:17:01 ens3 0.62 0.57 0.09 0.09 0.00 0.00 0.00 0.00 10:18:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:18:01 lo 9.23 9.23 3.60 3.60 0.00 0.00 0.00 0.00 10:18:01 ens3 1.13 0.88 0.26 0.18 0.00 0.00 0.00 0.00 10:19:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:19:01 lo 23.30 23.30 12.74 12.74 0.00 0.00 0.00 0.00 10:19:01 ens3 1.10 1.50 0.22 0.24 0.00 0.00 0.00 0.00 10:20:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:20:01 lo 10.28 10.28 5.21 5.21 0.00 0.00 0.00 0.00 10:20:01 ens3 0.82 0.97 0.14 0.15 0.00 0.00 0.00 0.00 10:21:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:21:01 lo 15.97 15.97 4.36 4.36 0.00 0.00 0.00 0.00 10:21:01 ens3 1.03 1.37 0.20 0.21 0.00 0.00 0.00 0.00 10:22:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:22:01 lo 22.26 22.26 11.29 11.29 0.00 0.00 0.00 0.00 10:22:01 ens3 0.93 1.10 0.16 0.16 0.00 0.00 0.00 0.00 10:23:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:23:01 lo 40.59 40.59 11.82 11.82 0.00 0.00 0.00 0.00 10:23:01 ens3 0.78 0.95 0.24 0.19 0.00 0.00 0.00 0.00 10:24:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:24:01 lo 15.39 15.39 4.76 4.76 0.00 0.00 0.00 0.00 10:24:01 ens3 0.63 0.73 0.12 0.12 0.00 0.00 0.00 0.00 10:25:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:25:01 lo 32.24 32.24 13.35 13.35 0.00 0.00 0.00 0.00 10:25:01 ens3 1.42 1.18 0.40 0.32 0.00 0.00 0.00 0.00 10:26:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:01 lo 17.80 17.80 5.29 5.29 0.00 0.00 0.00 0.00 10:26:01 ens3 0.67 0.88 0.13 0.14 0.00 0.00 0.00 0.00 10:27:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:27:01 lo 40.89 40.89 12.51 12.51 0.00 0.00 0.00 0.00 10:27:01 ens3 0.47 0.48 0.07 0.07 0.00 0.00 0.00 0.00 10:28:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:28:01 lo 18.13 18.13 5.08 5.08 0.00 0.00 0.00 0.00 10:28:01 ens3 0.60 0.67 0.21 0.15 0.00 0.00 0.00 0.00 10:29:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:29:01 lo 23.45 23.45 7.23 7.23 0.00 0.00 0.00 0.00 10:29:01 ens3 0.42 0.32 0.05 0.04 0.00 0.00 0.00 0.00 10:30:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:30:01 lo 23.10 23.10 6.44 6.44 0.00 0.00 0.00 0.00 10:30:01 ens3 0.33 0.32 0.25 0.21 0.00 0.00 0.00 0.00 10:31:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:31:01 lo 25.01 25.01 6.78 6.78 0.00 0.00 0.00 0.00 10:31:01 ens3 0.22 0.13 0.02 0.01 0.00 0.00 0.00 0.00 10:32:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:32:01 lo 22.00 22.00 6.37 6.37 0.00 0.00 0.00 0.00 10:32:01 ens3 0.62 0.00 0.06 0.00 0.00 0.00 0.00 0.00 10:33:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:33:01 lo 11.26 11.26 2.58 2.58 0.00 0.00 0.00 0.00 10:33:01 ens3 2.27 2.18 1.18 0.96 0.00 0.00 0.00 0.00 10:34:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:34:01 lo 34.61 34.61 32.54 32.54 0.00 0.00 0.00 0.00 10:34:01 ens3 0.60 0.60 0.08 0.08 0.00 0.00 0.00 0.00 10:35:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:35:01 lo 35.64 35.64 14.38 14.38 0.00 0.00 0.00 0.00 10:35:01 ens3 1.35 1.83 0.28 0.29 0.00 0.00 0.00 0.00 10:36:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:36:01 lo 3.62 3.62 0.81 0.81 0.00 0.00 0.00 0.00 10:36:01 ens3 0.67 0.70 0.09 0.10 0.00 0.00 0.00 0.00 10:37:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:37:01 lo 38.19 38.19 19.52 19.52 0.00 0.00 0.00 0.00 10:37:01 ens3 0.90 1.20 0.18 0.19 0.00 0.00 0.00 0.00 10:38:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:38:01 lo 12.06 12.06 5.38 5.38 0.00 0.00 0.00 0.00 10:38:01 ens3 1.42 1.22 0.34 0.25 0.00 0.00 0.00 0.00 10:39:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:39:01 lo 21.66 21.66 8.32 8.32 0.00 0.00 0.00 0.00 10:39:01 ens3 0.82 0.95 0.34 0.30 0.00 0.00 0.00 0.00 10:40:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:40:01 lo 20.78 20.78 8.06 8.06 0.00 0.00 0.00 0.00 10:40:01 ens3 0.75 0.92 0.14 0.15 0.00 0.00 0.00 0.00 10:41:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:41:01 lo 40.96 40.96 14.45 14.45 0.00 0.00 0.00 0.00 10:41:01 ens3 1.13 0.97 0.18 0.16 0.00 0.00 0.00 0.00 10:42:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:42:01 lo 36.71 36.71 11.96 11.96 0.00 0.00 0.00 0.00 10:42:01 ens3 0.78 0.90 0.35 0.31 0.00 0.00 0.00 0.00 10:43:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:43:01 lo 5.47 5.47 1.19 1.19 0.00 0.00 0.00 0.00 10:43:01 ens3 1.10 0.95 0.28 0.20 0.00 0.00 0.00 0.00 10:44:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:44:01 lo 43.86 43.86 21.64 21.64 0.00 0.00 0.00 0.00 10:44:01 ens3 0.72 0.62 0.12 0.11 0.00 0.00 0.00 0.00 10:45:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:45:01 lo 40.21 40.21 14.54 14.54 0.00 0.00 0.00 0.00 10:45:01 ens3 0.85 0.82 0.17 0.16 0.00 0.00 0.00 0.00 10:46:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:46:01 lo 62.29 62.29 21.47 21.47 0.00 0.00 0.00 0.00 10:46:01 ens3 1.23 1.48 0.14 7.05 0.00 0.00 0.00 0.00 10:47:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:47:01 lo 70.84 70.84 23.15 23.15 0.00 0.00 0.00 0.00 10:47:01 ens3 4.73 5.53 27.13 1.30 0.00 0.00 0.00 0.00 10:48:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:48:01 lo 0.93 0.93 0.09 0.09 0.00 0.00 0.00 0.00 10:48:01 ens3 125.70 105.18 1585.75 20.11 0.00 0.00 0.00 0.00 Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: lo 19.28 19.28 8.59 8.59 0.00 0.00 0.00 0.00 Average: ens3 14.75 11.34 171.39 1.80 0.00 0.00 0.00 0.00 ---> sar -P ALL: Linux 5.4.0-200-generic (prd-ubuntu2004-docker-4c-16g-11399) 11/29/24 _x86_64_ (4 CPU) 08:46:32 LINUX RESTART (4 CPU) 08:47:02 CPU %user %nice %system %iowait %steal %idle 08:48:01 all 20.74 14.86 12.10 4.29 0.12 47.89 08:48:01 0 14.57 15.58 11.86 4.31 0.12 53.56 08:48:01 1 24.24 13.26 11.85 3.95 0.10 46.59 08:48:01 2 14.90 16.59 12.30 3.75 0.12 52.34 08:48:01 3 29.23 14.03 12.38 5.14 0.14 39.07 08:49:01 all 34.77 0.00 3.34 5.93 0.09 55.88 08:49:01 0 26.19 0.00 3.32 5.14 0.10 65.25 08:49:01 1 44.33 0.00 3.83 2.62 0.12 49.10 08:49:01 2 38.69 0.00 3.85 7.84 0.08 49.53 08:49:01 3 29.91 0.00 2.35 8.13 0.05 59.57 08:50:01 all 81.43 0.00 2.78 2.92 0.12 12.75 08:50:01 0 84.24 0.00 2.44 0.97 0.10 12.25 08:50:01 1 81.57 0.00 2.62 2.30 0.12 13.39 08:50:01 2 76.94 0.00 3.71 7.06 0.12 12.18 08:50:01 3 83.00 0.00 2.35 1.32 0.14 13.20 08:51:01 all 59.88 0.00 3.40 1.55 0.12 35.05 08:51:01 0 50.57 0.00 3.55 1.27 0.14 44.48 08:51:01 1 66.16 0.00 3.22 0.61 0.14 29.87 08:51:01 2 52.06 0.00 2.97 0.42 0.10 44.45 08:51:01 3 70.71 0.00 3.86 3.87 0.12 21.44 08:52:01 all 80.81 0.00 4.86 8.75 0.15 5.43 08:52:01 0 81.41 0.00 4.96 6.67 0.15 6.81 08:52:01 1 80.57 0.00 5.44 9.50 0.17 4.32 08:52:01 2 82.24 0.00 4.57 5.02 0.14 8.03 08:52:01 3 79.02 0.00 4.48 13.79 0.13 2.58 08:53:01 all 65.16 0.00 2.57 2.77 0.13 29.38 08:53:01 0 62.32 0.00 3.49 3.49 0.12 30.59 08:53:01 1 67.40 0.00 2.20 1.02 0.15 29.23 08:53:01 2 63.79 0.00 2.53 5.62 0.12 27.93 08:53:01 3 67.11 0.00 2.07 0.96 0.12 29.75 08:54:01 all 22.06 0.00 0.81 0.29 0.08 76.76 08:54:01 0 23.61 0.00 0.80 0.03 0.08 75.47 08:54:01 1 19.03 0.00 0.96 0.74 0.08 79.19 08:54:01 2 21.42 0.00 0.75 0.32 0.07 77.45 08:54:01 3 24.17 0.00 0.72 0.07 0.10 74.95 08:55:01 all 23.75 0.00 0.93 0.27 0.08 74.96 08:55:01 0 25.15 0.00 0.92 0.03 0.08 73.81 08:55:01 1 21.51 0.00 1.21 0.66 0.10 76.52 08:55:01 2 24.74 0.00 0.45 0.03 0.07 74.70 08:55:01 3 23.60 0.00 1.13 0.36 0.08 74.82 08:56:01 all 54.31 0.00 1.83 0.65 0.10 43.12 08:56:01 0 57.56 0.00 2.35 0.75 0.10 39.24 08:56:01 1 54.91 0.00 2.13 1.68 0.08 41.20 08:56:01 2 58.89 0.00 1.24 0.13 0.10 39.63 08:56:01 3 45.86 0.00 1.59 0.03 0.10 52.42 08:57:01 all 63.40 0.00 2.32 0.52 0.10 33.66 08:57:01 0 65.86 0.00 2.73 1.66 0.10 29.64 08:57:01 1 64.03 0.00 2.34 0.08 0.12 33.43 08:57:01 2 68.48 0.00 1.86 0.10 0.10 29.46 08:57:01 3 55.20 0.00 2.35 0.22 0.10 42.13 08:58:01 all 13.97 0.00 0.53 0.02 0.10 85.38 08:58:01 0 15.87 0.00 0.42 0.03 0.10 83.58 08:58:01 1 13.16 0.00 0.59 0.00 0.10 86.15 08:58:01 2 12.89 0.00 0.53 0.02 0.10 86.46 08:58:01 3 13.96 0.00 0.59 0.02 0.12 85.32 08:58:01 CPU %user %nice %system %iowait %steal %idle 08:59:01 all 3.59 0.00 0.33 0.01 0.09 95.98 08:59:01 0 3.11 0.00 0.32 0.03 0.10 96.43 08:59:01 1 3.45 0.00 0.30 0.00 0.10 96.15 08:59:01 2 3.99 0.00 0.32 0.00 0.08 95.61 08:59:01 3 3.80 0.00 0.39 0.02 0.08 95.71 09:00:01 all 0.66 0.00 0.23 0.01 0.08 99.01 09:00:01 0 0.47 0.00 0.15 0.03 0.07 99.28 09:00:01 1 0.75 0.00 0.27 0.00 0.08 98.90 09:00:01 2 0.72 0.00 0.30 0.00 0.10 98.88 09:00:01 3 0.71 0.00 0.22 0.02 0.08 98.97 09:01:01 all 0.58 0.00 0.23 0.01 0.09 99.08 09:01:01 0 0.45 0.00 0.18 0.05 0.08 99.23 09:01:01 1 0.95 0.00 0.37 0.00 0.12 98.56 09:01:01 2 0.50 0.00 0.25 0.00 0.10 99.15 09:01:01 3 0.42 0.00 0.13 0.00 0.07 99.38 09:02:01 all 11.56 0.00 0.75 0.41 0.09 87.19 09:02:01 0 12.47 0.00 0.80 0.85 0.07 85.81 09:02:01 1 12.49 0.00 0.65 0.05 0.12 86.69 09:02:01 2 11.53 0.00 0.52 0.18 0.08 87.68 09:02:01 3 9.75 0.00 1.01 0.55 0.10 88.59 09:03:01 all 70.41 0.00 2.22 0.98 0.12 26.27 09:03:01 0 74.18 0.00 2.05 1.91 0.10 21.76 09:03:01 1 71.84 0.00 1.98 0.58 0.12 25.48 09:03:01 2 71.68 0.00 2.26 0.17 0.14 25.76 09:03:01 3 63.95 0.00 2.61 1.23 0.12 32.09 09:04:01 all 15.75 0.00 0.42 0.26 0.10 83.46 09:04:01 0 15.61 0.00 0.54 0.74 0.10 83.01 09:04:01 1 16.33 0.00 0.27 0.07 0.10 83.23 09:04:01 2 15.26 0.00 0.44 0.05 0.12 84.14 09:04:01 3 15.80 0.00 0.43 0.20 0.10 83.47 09:05:01 all 6.32 0.00 0.25 0.02 0.07 93.34 09:05:01 0 5.90 0.00 0.15 0.03 0.07 93.85 09:05:01 1 5.54 0.00 0.34 0.05 0.07 94.01 09:05:01 2 6.56 0.00 0.34 0.00 0.07 93.04 09:05:01 3 7.26 0.00 0.20 0.00 0.07 92.47 09:06:01 all 2.18 0.00 0.17 0.03 0.08 97.55 09:06:01 0 2.21 0.00 0.13 0.00 0.05 97.61 09:06:01 1 2.05 0.00 0.20 0.10 0.08 97.57 09:06:01 2 2.23 0.00 0.12 0.00 0.08 97.57 09:06:01 3 2.24 0.00 0.24 0.00 0.08 97.44 09:07:01 all 23.88 0.00 0.90 0.41 0.08 74.73 09:07:01 0 24.16 0.00 0.82 0.02 0.08 74.92 09:07:01 1 22.92 0.00 0.86 1.26 0.08 74.88 09:07:01 2 25.64 0.00 1.12 0.08 0.08 73.07 09:07:01 3 22.82 0.00 0.79 0.25 0.08 76.06 09:08:01 all 70.74 0.00 2.01 0.45 0.11 26.68 09:08:01 0 68.96 0.00 2.12 0.02 0.12 28.78 09:08:01 1 71.03 0.00 1.85 1.02 0.12 25.99 09:08:01 2 72.88 0.00 2.28 0.74 0.12 23.99 09:08:01 3 70.09 0.00 1.80 0.03 0.10 27.98 09:09:01 all 7.87 0.00 0.43 0.02 0.08 91.59 09:09:01 0 8.13 0.00 0.45 0.00 0.08 91.34 09:09:01 1 8.28 0.00 0.57 0.07 0.08 91.00 09:09:01 2 7.75 0.00 0.48 0.02 0.10 91.65 09:09:01 3 7.30 0.00 0.23 0.00 0.07 92.40 09:09:01 CPU %user %nice %system %iowait %steal %idle 09:10:01 all 2.56 0.00 0.31 0.01 0.09 97.03 09:10:01 0 2.24 0.00 0.18 0.00 0.07 97.51 09:10:01 1 3.52 0.00 0.31 0.03 0.08 96.05 09:10:01 2 1.79 0.00 0.27 0.00 0.10 97.84 09:10:01 3 2.69 0.00 0.48 0.00 0.10 96.73 09:11:01 all 4.12 0.00 0.37 0.01 0.08 95.42 09:11:01 0 3.88 0.00 0.33 0.00 0.08 95.70 09:11:01 1 3.92 0.00 0.33 0.03 0.08 95.63 09:11:01 2 4.40 0.00 0.35 0.00 0.07 95.18 09:11:01 3 4.27 0.00 0.47 0.00 0.08 95.18 09:12:01 all 40.22 0.00 1.39 0.40 0.11 57.87 09:12:01 0 38.77 0.00 1.37 0.40 0.10 59.36 09:12:01 1 35.90 0.00 1.37 0.70 0.12 61.91 09:12:01 2 43.48 0.00 1.13 0.08 0.12 55.19 09:12:01 3 42.73 0.00 1.70 0.43 0.10 55.03 09:13:01 all 56.88 0.00 1.64 0.28 0.10 41.10 09:13:01 0 56.26 0.00 1.83 0.10 0.10 41.72 09:13:01 1 55.55 0.00 1.62 0.65 0.10 42.08 09:13:01 2 57.10 0.00 1.55 0.37 0.10 40.88 09:13:01 3 58.60 0.00 1.55 0.02 0.12 39.72 09:14:01 all 13.28 0.00 0.80 0.36 0.10 85.46 09:14:01 0 11.98 0.00 0.57 0.00 0.10 87.36 09:14:01 1 15.00 0.00 0.79 0.82 0.08 83.31 09:14:01 2 13.80 0.00 0.94 0.41 0.10 84.75 09:14:01 3 12.36 0.00 0.90 0.22 0.10 86.42 09:15:01 all 53.28 0.00 1.71 0.99 0.11 43.92 09:15:01 0 49.68 0.00 1.59 2.74 0.10 45.89 09:15:01 1 59.49 0.00 1.93 0.87 0.13 37.57 09:15:01 2 54.55 0.00 1.59 0.07 0.10 43.69 09:15:01 3 49.41 0.00 1.72 0.27 0.12 48.49 09:16:01 all 19.52 0.00 0.68 0.30 0.08 79.42 09:16:01 0 19.52 0.00 0.65 0.75 0.08 79.00 09:16:01 1 18.43 0.00 0.80 0.37 0.08 80.32 09:16:01 2 19.70 0.00 0.52 0.05 0.08 79.65 09:16:01 3 20.44 0.00 0.75 0.02 0.08 78.71 09:17:01 all 3.22 0.00 0.33 0.02 0.09 96.33 09:17:01 0 3.94 0.00 0.30 0.03 0.08 95.65 09:17:01 1 3.29 0.00 0.40 0.03 0.08 96.19 09:17:01 2 2.82 0.00 0.30 0.00 0.10 96.78 09:17:01 3 2.83 0.00 0.33 0.02 0.10 96.72 09:18:01 all 36.19 0.00 1.23 0.27 0.10 62.22 09:18:01 0 38.57 0.00 1.91 0.59 0.10 58.84 09:18:01 1 35.18 0.00 0.92 0.10 0.10 63.70 09:18:01 2 36.37 0.00 1.02 0.35 0.08 62.18 09:18:01 3 34.64 0.00 1.07 0.03 0.10 64.15 09:19:01 all 6.85 0.00 0.24 0.02 0.10 92.79 09:19:01 0 6.90 0.00 0.20 0.05 0.10 92.75 09:19:01 1 7.27 0.00 0.32 0.00 0.10 92.31 09:19:01 2 6.53 0.00 0.23 0.00 0.08 93.15 09:19:01 3 6.70 0.00 0.20 0.03 0.10 92.96 09:20:01 all 26.19 0.00 0.95 0.08 0.10 72.68 09:20:01 0 27.59 0.00 0.59 0.15 0.10 71.57 09:20:01 1 21.62 0.00 0.94 0.15 0.08 77.21 09:20:01 2 27.89 0.00 1.16 0.00 0.10 70.86 09:20:01 3 27.68 0.00 1.12 0.02 0.10 71.08 09:20:01 CPU %user %nice %system %iowait %steal %idle 09:21:01 all 12.50 0.00 0.58 0.42 0.10 86.40 09:21:01 0 10.33 0.00 0.74 1.56 0.10 87.28 09:21:01 1 18.32 0.00 0.75 0.10 0.10 80.73 09:21:01 2 10.60 0.00 0.49 0.02 0.08 88.82 09:21:01 3 10.69 0.00 0.35 0.02 0.10 88.83 09:22:01 all 41.40 0.00 1.14 0.54 0.10 56.82 09:22:01 0 43.26 0.00 1.17 1.10 0.10 54.36 09:22:01 1 43.38 0.00 1.21 0.15 0.10 55.16 09:22:01 2 37.48 0.00 1.34 0.00 0.12 61.06 09:22:01 3 41.46 0.00 0.82 0.90 0.10 56.71 09:23:01 all 37.27 0.00 1.29 0.29 0.11 61.04 09:23:01 0 39.31 0.00 1.76 0.87 0.10 57.96 09:23:01 1 39.11 0.00 1.34 0.20 0.10 59.25 09:23:01 2 33.39 0.00 0.87 0.02 0.13 65.59 09:23:01 3 37.27 0.00 1.19 0.07 0.12 61.35 09:24:01 all 43.65 0.00 1.23 0.29 0.09 54.73 09:24:01 0 41.68 0.00 1.53 0.70 0.10 55.99 09:24:01 1 44.95 0.00 1.14 0.10 0.08 53.73 09:24:01 2 43.29 0.00 1.47 0.30 0.10 54.83 09:24:01 3 44.68 0.00 0.80 0.05 0.08 54.39 09:25:01 all 5.17 0.00 0.33 0.02 0.10 94.39 09:25:01 0 5.24 0.00 0.40 0.02 0.10 94.24 09:25:01 1 5.56 0.00 0.33 0.02 0.10 93.99 09:25:01 2 4.53 0.00 0.28 0.00 0.10 95.08 09:25:01 3 5.34 0.00 0.28 0.03 0.10 94.24 09:26:01 all 28.06 0.00 1.01 0.24 0.10 70.59 09:26:01 0 28.71 0.00 0.75 0.45 0.08 70.00 09:26:01 1 26.16 0.00 1.16 0.44 0.12 72.13 09:26:01 2 28.93 0.00 1.12 0.00 0.12 69.84 09:26:01 3 28.44 0.00 1.01 0.07 0.08 70.41 09:27:01 all 29.03 0.00 0.95 0.28 0.10 69.64 09:27:01 0 25.11 0.00 1.01 0.80 0.10 72.98 09:27:01 1 29.74 0.00 0.77 0.02 0.10 69.38 09:27:01 2 30.18 0.00 1.06 0.27 0.10 68.39 09:27:01 3 31.09 0.00 0.97 0.03 0.10 67.81 09:28:01 all 1.63 0.00 0.25 0.01 0.08 98.03 09:28:01 0 1.60 0.00 0.25 0.03 0.08 98.03 09:28:01 1 2.08 0.00 0.37 0.00 0.08 97.47 09:28:01 2 1.49 0.00 0.20 0.00 0.08 98.23 09:28:01 3 1.35 0.00 0.18 0.02 0.05 98.40 09:29:01 all 60.69 0.00 1.75 0.34 0.08 37.14 09:29:01 0 60.19 0.00 1.96 0.89 0.07 36.90 09:29:01 1 62.74 0.00 1.68 0.03 0.08 35.47 09:29:01 2 59.16 0.00 1.69 0.12 0.08 38.95 09:29:01 3 60.66 0.00 1.69 0.32 0.10 37.23 09:30:01 all 10.79 0.00 0.37 0.22 0.10 88.53 09:30:01 0 11.11 0.00 0.29 0.44 0.10 88.07 09:30:01 1 11.43 0.00 0.42 0.08 0.10 87.97 09:30:01 2 10.45 0.00 0.37 0.00 0.10 89.08 09:30:01 3 10.16 0.00 0.42 0.35 0.08 88.99 09:31:01 all 38.85 0.00 1.09 0.29 0.10 59.68 09:31:01 0 39.95 0.00 1.70 0.91 0.08 57.37 09:31:01 1 39.54 0.00 0.69 0.02 0.10 59.65 09:31:01 2 37.33 0.00 0.99 0.03 0.10 61.54 09:31:01 3 38.58 0.00 0.97 0.20 0.10 60.14 09:31:01 CPU %user %nice %system %iowait %steal %idle 09:32:01 all 15.59 0.00 0.57 0.06 0.09 83.68 09:32:01 0 15.93 0.00 0.33 0.05 0.08 83.60 09:32:01 1 15.19 0.00 0.71 0.15 0.08 83.87 09:32:01 2 15.03 0.00 0.77 0.00 0.10 84.09 09:32:01 3 16.21 0.00 0.49 0.03 0.10 83.17 09:33:01 all 37.61 0.00 1.02 0.27 0.09 61.01 09:33:01 0 38.40 0.00 1.12 0.52 0.10 59.86 09:33:01 1 39.89 0.00 1.22 0.20 0.10 58.59 09:33:01 2 38.67 0.00 0.89 0.28 0.08 60.07 09:33:01 3 33.52 0.00 0.85 0.07 0.08 65.48 09:34:01 all 7.61 0.00 0.31 0.01 0.10 91.97 09:34:01 0 7.68 0.00 0.28 0.00 0.08 91.95 09:34:01 1 7.49 0.00 0.35 0.00 0.10 92.06 09:34:01 2 6.90 0.00 0.32 0.00 0.10 92.68 09:34:01 3 8.37 0.00 0.28 0.05 0.10 91.20 09:35:01 all 13.19 0.00 0.59 0.06 0.08 86.08 09:35:01 0 11.43 0.00 0.58 0.17 0.08 87.74 09:35:01 1 14.12 0.00 0.57 0.00 0.07 85.25 09:35:01 2 13.69 0.00 0.55 0.00 0.08 85.68 09:35:01 3 13.52 0.00 0.67 0.07 0.10 85.64 09:36:01 all 39.38 0.00 1.01 0.29 0.09 59.23 09:36:01 0 35.72 0.00 0.80 0.47 0.08 62.93 09:36:01 1 41.27 0.00 0.84 0.00 0.10 57.79 09:36:01 2 39.12 0.00 0.82 0.02 0.08 59.96 09:36:01 3 41.44 0.00 1.59 0.67 0.08 56.21 09:37:01 all 6.90 0.00 0.25 0.01 0.10 92.73 09:37:01 0 6.69 0.00 0.29 0.00 0.12 92.91 09:37:01 1 6.83 0.00 0.27 0.00 0.10 92.80 09:37:01 2 6.75 0.00 0.23 0.00 0.10 92.91 09:37:01 3 7.33 0.00 0.22 0.05 0.08 92.32 09:38:01 all 3.23 0.00 0.20 0.01 0.08 96.48 09:38:01 0 2.97 0.00 0.20 0.00 0.07 96.76 09:38:01 1 3.40 0.00 0.20 0.02 0.07 96.31 09:38:01 2 2.73 0.00 0.22 0.00 0.08 96.96 09:38:01 3 3.81 0.00 0.17 0.03 0.10 95.89 09:39:01 all 1.27 0.00 0.13 0.03 0.09 98.48 09:39:01 0 0.87 0.00 0.15 0.02 0.10 98.86 09:39:01 1 0.76 0.00 0.15 0.00 0.10 98.99 09:39:01 2 1.99 0.00 0.12 0.00 0.08 97.81 09:39:01 3 1.47 0.00 0.12 0.08 0.08 98.25 09:40:01 all 3.02 0.00 0.20 0.01 0.09 96.69 09:40:01 0 3.07 0.00 0.24 0.00 0.10 96.59 09:40:01 1 2.85 0.00 0.18 0.00 0.08 96.88 09:40:01 2 3.05 0.00 0.18 0.00 0.10 96.66 09:40:01 3 3.09 0.00 0.18 0.03 0.08 96.61 09:41:01 all 1.41 0.00 0.15 0.04 0.10 98.30 09:41:01 0 1.66 0.00 0.08 0.00 0.12 98.14 09:41:01 1 1.28 0.00 0.15 0.07 0.08 98.42 09:41:01 2 1.24 0.00 0.12 0.00 0.12 98.52 09:41:01 3 1.46 0.00 0.23 0.10 0.10 98.11 09:42:01 all 1.64 0.00 0.15 0.01 0.09 98.11 09:42:01 0 1.90 0.00 0.17 0.00 0.12 97.82 09:42:01 1 1.59 0.00 0.12 0.00 0.07 98.22 09:42:01 2 1.46 0.00 0.10 0.00 0.07 98.37 09:42:01 3 1.61 0.00 0.20 0.05 0.10 98.03 09:42:01 CPU %user %nice %system %iowait %steal %idle 09:43:01 all 2.38 0.00 0.19 0.01 0.08 97.34 09:43:01 0 2.57 0.00 0.17 0.00 0.07 97.19 09:43:01 1 1.91 0.00 0.12 0.00 0.05 97.92 09:43:01 2 2.59 0.00 0.25 0.00 0.08 97.07 09:43:01 3 2.43 0.00 0.24 0.05 0.12 97.16 09:44:01 all 49.43 0.00 1.78 0.31 0.10 48.39 09:44:01 0 47.13 0.00 1.72 0.05 0.08 51.02 09:44:01 1 50.71 0.00 1.66 0.10 0.12 47.42 09:44:01 2 49.91 0.00 1.67 0.22 0.10 48.10 09:44:01 3 49.97 0.00 2.06 0.85 0.10 47.02 09:45:01 all 8.91 0.00 0.45 0.02 0.10 90.53 09:45:01 0 9.86 0.00 0.28 0.00 0.10 89.76 09:45:01 1 8.62 0.00 0.53 0.00 0.08 90.76 09:45:01 2 8.49 0.00 0.47 0.00 0.10 90.94 09:45:01 3 8.65 0.00 0.50 0.08 0.10 90.66 09:46:01 all 4.70 0.00 0.36 0.02 0.11 94.81 09:46:01 0 4.51 0.00 0.37 0.00 0.12 95.01 09:46:01 1 4.91 0.00 0.42 0.00 0.12 94.56 09:46:01 2 4.81 0.00 0.38 0.00 0.10 94.70 09:46:01 3 4.58 0.00 0.25 0.08 0.12 94.96 09:47:01 all 2.96 0.00 0.34 0.03 0.08 96.59 09:47:01 0 2.62 0.00 0.37 0.02 0.08 96.91 09:47:01 1 3.42 0.00 0.28 0.00 0.08 96.22 09:47:01 2 3.05 0.00 0.30 0.00 0.10 96.55 09:47:01 3 2.75 0.00 0.40 0.08 0.07 96.69 09:48:01 all 2.35 0.00 0.32 0.03 0.08 97.21 09:48:01 0 2.17 0.00 0.27 0.03 0.07 97.46 09:48:01 1 2.14 0.00 0.27 0.00 0.07 97.52 09:48:01 2 1.96 0.00 0.35 0.00 0.08 97.60 09:48:01 3 3.13 0.00 0.40 0.08 0.12 96.27 09:49:01 all 1.89 0.00 0.30 0.49 0.08 97.23 09:49:01 0 1.17 0.00 0.33 0.28 0.08 98.13 09:49:01 1 1.14 0.00 0.15 0.00 0.07 98.65 09:49:01 2 2.23 0.00 0.33 0.42 0.08 96.94 09:49:01 3 3.05 0.00 0.38 1.27 0.10 95.20 09:50:01 all 4.07 0.00 0.38 0.05 0.08 95.42 09:50:01 0 3.97 0.00 0.32 0.00 0.07 95.64 09:50:01 1 3.06 0.00 0.32 0.00 0.07 96.56 09:50:01 2 3.55 0.00 0.42 0.00 0.07 95.97 09:50:01 3 5.69 0.00 0.47 0.18 0.13 93.52 09:51:01 all 35.84 0.00 1.33 0.04 0.10 62.69 09:51:01 0 37.67 0.00 0.97 0.02 0.10 61.25 09:51:01 1 36.45 0.00 1.32 0.00 0.10 62.12 09:51:01 2 30.48 0.00 1.26 0.03 0.10 68.12 09:51:01 3 38.82 0.00 1.74 0.10 0.12 59.22 09:52:01 all 30.28 0.00 0.89 0.26 0.09 68.47 09:52:01 0 28.29 0.00 0.74 0.00 0.08 70.89 09:52:01 1 28.79 0.00 0.96 0.00 0.08 70.17 09:52:01 2 30.72 0.00 1.14 0.42 0.10 67.62 09:52:01 3 33.33 0.00 0.74 0.64 0.10 65.19 09:53:01 all 8.67 0.00 0.30 0.02 0.08 90.93 09:53:01 0 7.89 0.00 0.32 0.00 0.08 91.71 09:53:01 1 8.91 0.00 0.22 0.00 0.08 90.78 09:53:01 2 9.01 0.00 0.32 0.00 0.08 90.59 09:53:01 3 8.87 0.00 0.34 0.08 0.07 90.65 09:53:01 CPU %user %nice %system %iowait %steal %idle 09:54:01 all 3.69 0.00 0.21 0.01 0.08 96.00 09:54:01 0 3.76 0.00 0.20 0.00 0.08 95.95 09:54:01 1 3.89 0.00 0.25 0.00 0.10 95.75 09:54:01 2 4.08 0.00 0.20 0.00 0.08 95.63 09:54:01 3 3.02 0.00 0.20 0.05 0.07 96.67 09:55:01 all 2.35 0.00 0.16 0.02 0.09 97.39 09:55:01 0 2.11 0.00 0.20 0.00 0.08 97.60 09:55:01 1 2.79 0.00 0.13 0.00 0.07 97.01 09:55:01 2 2.44 0.00 0.15 0.00 0.12 97.29 09:55:01 3 2.05 0.00 0.13 0.07 0.10 97.65 09:56:01 all 3.75 0.00 0.24 0.02 0.10 95.90 09:56:01 0 3.67 0.00 0.13 0.02 0.08 96.09 09:56:01 1 3.83 0.00 0.34 0.00 0.12 95.72 09:56:01 2 3.73 0.00 0.27 0.00 0.08 95.92 09:56:01 3 3.79 0.00 0.20 0.05 0.10 95.86 09:57:01 all 2.54 0.00 0.21 0.03 0.08 97.14 09:57:01 0 2.55 0.00 0.27 0.02 0.08 97.08 09:57:01 1 2.77 0.00 0.25 0.02 0.07 96.89 09:57:01 2 2.57 0.00 0.10 0.00 0.08 97.24 09:57:01 3 2.25 0.00 0.22 0.07 0.10 97.37 09:58:01 all 2.85 0.00 0.16 0.02 0.11 96.86 09:58:01 0 2.15 0.00 0.20 0.00 0.13 97.52 09:58:01 1 2.51 0.00 0.15 0.03 0.10 97.20 09:58:01 2 3.33 0.00 0.15 0.02 0.12 96.39 09:58:01 3 3.40 0.00 0.15 0.02 0.10 96.33 09:59:01 all 25.55 0.00 0.90 0.04 0.08 73.43 09:59:01 0 27.46 0.00 0.73 0.02 0.08 71.71 09:59:01 1 25.50 0.00 1.14 0.10 0.08 73.17 09:59:01 2 23.71 0.00 0.67 0.00 0.08 75.53 09:59:01 3 25.52 0.00 1.05 0.03 0.07 73.33 10:00:01 all 37.69 0.00 1.17 0.26 0.11 60.77 10:00:01 0 39.94 0.00 1.48 0.07 0.12 58.40 10:00:01 1 39.45 0.00 0.96 0.50 0.10 58.99 10:00:01 2 35.76 0.00 1.16 0.45 0.12 62.51 10:00:01 3 35.63 0.00 1.08 0.00 0.12 63.17 10:01:01 all 8.71 0.00 0.30 0.08 0.08 90.82 10:01:01 0 8.35 0.00 0.29 0.00 0.07 91.30 10:01:01 1 9.18 0.00 0.34 0.17 0.08 90.24 10:01:01 2 8.82 0.00 0.29 0.00 0.08 90.81 10:01:01 3 8.51 0.00 0.30 0.17 0.10 90.92 10:02:01 all 4.06 0.00 0.25 0.03 0.10 95.55 10:02:01 0 3.92 0.00 0.25 0.00 0.10 95.73 10:02:01 1 3.72 0.00 0.15 0.10 0.10 95.93 10:02:01 2 4.64 0.00 0.28 0.00 0.13 94.95 10:02:01 3 3.95 0.00 0.32 0.03 0.08 95.61 10:03:01 all 2.46 0.00 0.15 0.13 0.09 97.17 10:03:01 0 2.10 0.00 0.10 0.00 0.07 97.74 10:03:01 1 3.61 0.00 0.22 0.15 0.18 95.84 10:03:01 2 1.98 0.00 0.10 0.00 0.05 97.87 10:03:01 3 2.16 0.00 0.18 0.35 0.07 97.23 10:04:01 all 2.93 0.00 0.24 0.02 0.08 96.73 10:04:01 0 2.70 0.00 0.27 0.00 0.08 96.95 10:04:01 1 2.87 0.00 0.25 0.07 0.08 96.73 10:04:01 2 2.60 0.00 0.24 0.00 0.10 97.06 10:04:01 3 3.53 0.00 0.20 0.02 0.07 96.19 10:04:01 CPU %user %nice %system %iowait %steal %idle 10:05:01 all 1.03 0.00 0.16 0.02 0.08 98.72 10:05:01 0 1.27 0.00 0.15 0.00 0.08 98.49 10:05:01 1 0.86 0.00 0.13 0.03 0.08 98.89 10:05:01 2 1.21 0.00 0.20 0.00 0.08 98.50 10:05:01 3 0.77 0.00 0.13 0.03 0.07 98.99 10:06:01 all 1.93 0.00 0.15 0.02 0.10 97.80 10:06:01 0 1.98 0.00 0.15 0.00 0.08 97.79 10:06:01 1 2.02 0.00 0.12 0.07 0.07 97.73 10:06:01 2 1.73 0.00 0.15 0.00 0.12 98.00 10:06:01 3 2.00 0.00 0.17 0.02 0.12 97.69 10:07:01 all 1.76 0.00 0.16 0.02 0.06 98.01 10:07:01 0 1.97 0.00 0.12 0.02 0.05 97.85 10:07:01 1 1.64 0.00 0.10 0.02 0.05 98.19 10:07:01 2 1.61 0.00 0.24 0.00 0.08 98.07 10:07:01 3 1.81 0.00 0.17 0.03 0.07 97.92 10:08:01 all 3.01 0.00 0.26 0.02 0.08 96.63 10:08:01 0 2.51 0.00 0.34 0.00 0.07 97.08 10:08:01 1 3.29 0.00 0.22 0.05 0.07 96.37 10:08:01 2 3.70 0.00 0.30 0.00 0.10 95.89 10:08:01 3 2.54 0.00 0.19 0.03 0.08 97.15 10:09:01 all 0.61 0.00 0.13 0.05 0.08 99.13 10:09:01 0 0.57 0.00 0.13 0.00 0.07 99.23 10:09:01 1 0.72 0.00 0.10 0.03 0.10 99.04 10:09:01 2 0.72 0.00 0.18 0.00 0.08 99.01 10:09:01 3 0.43 0.00 0.08 0.18 0.07 99.23 10:10:01 all 0.42 0.00 0.15 0.05 0.08 99.30 10:10:01 0 0.67 0.00 0.15 0.00 0.07 99.12 10:10:01 1 0.57 0.00 0.20 0.18 0.07 98.98 10:10:01 2 0.29 0.00 0.15 0.00 0.10 99.46 10:10:01 3 0.15 0.00 0.12 0.02 0.07 99.65 10:11:02 all 0.23 0.00 0.14 0.28 0.11 99.24 10:11:02 0 0.37 0.00 0.20 0.00 0.10 99.33 10:11:02 1 0.15 0.00 0.12 0.55 0.15 99.03 10:11:02 2 0.18 0.00 0.10 0.35 0.05 99.31 10:11:02 3 0.20 0.00 0.15 0.20 0.15 99.30 10:12:01 all 13.22 0.00 1.00 2.31 0.10 83.38 10:12:01 0 13.65 0.00 1.11 1.93 0.09 83.22 10:12:01 1 15.56 0.00 1.42 6.35 0.12 76.55 10:12:01 2 11.45 0.00 0.70 0.75 0.07 87.02 10:12:01 3 12.23 0.00 0.79 0.22 0.12 86.65 10:13:01 all 33.32 0.00 1.20 2.77 0.13 62.57 10:13:01 0 35.78 0.00 0.93 1.50 0.14 61.65 10:13:01 1 35.47 0.00 1.11 0.77 0.14 62.52 10:13:01 2 28.59 0.00 1.47 8.38 0.12 61.45 10:13:01 3 33.49 0.00 1.30 0.38 0.12 64.71 10:14:01 all 0.56 0.00 0.11 0.02 0.07 99.25 10:14:01 0 0.61 0.00 0.12 0.02 0.08 99.18 10:14:01 1 0.74 0.00 0.15 0.00 0.05 99.06 10:14:01 2 0.42 0.00 0.08 0.03 0.07 99.39 10:14:01 3 0.47 0.00 0.07 0.02 0.08 99.36 10:15:01 all 0.31 0.00 0.10 0.01 0.08 99.51 10:15:01 0 0.17 0.00 0.10 0.00 0.07 99.66 10:15:01 1 0.42 0.00 0.10 0.00 0.08 99.40 10:15:01 2 0.29 0.00 0.12 0.02 0.08 99.50 10:15:01 3 0.35 0.00 0.07 0.02 0.07 99.50 10:15:01 CPU %user %nice %system %iowait %steal %idle 10:16:01 all 0.25 0.00 0.11 0.01 0.08 99.55 10:16:01 0 0.22 0.00 0.07 0.00 0.07 99.65 10:16:01 1 0.20 0.00 0.07 0.00 0.08 99.65 10:16:01 2 0.39 0.00 0.22 0.02 0.12 99.26 10:16:01 3 0.20 0.00 0.08 0.02 0.07 99.63 10:17:01 all 36.21 0.00 1.33 0.41 0.11 61.94 10:17:01 0 37.53 0.00 1.06 0.17 0.10 61.13 10:17:01 1 36.32 0.00 1.29 1.18 0.10 61.11 10:17:01 2 38.01 0.00 1.30 0.12 0.10 60.46 10:17:01 3 32.97 0.00 1.67 0.19 0.12 65.06 10:18:01 all 45.62 0.00 1.67 0.59 0.11 52.01 10:18:01 0 47.26 0.00 1.87 0.36 0.14 50.38 10:18:01 1 46.84 0.00 1.72 1.25 0.10 50.10 10:18:01 2 47.48 0.00 1.48 0.02 0.08 50.94 10:18:01 3 40.95 0.00 1.64 0.74 0.12 56.56 10:19:01 all 7.76 0.00 0.44 0.01 0.08 91.70 10:19:01 0 7.50 0.00 0.38 0.02 0.08 92.01 10:19:01 1 8.16 0.00 0.33 0.00 0.08 91.42 10:19:01 2 7.30 0.00 0.65 0.03 0.08 91.93 10:19:01 3 8.08 0.00 0.38 0.00 0.08 91.45 10:20:01 all 35.30 0.00 1.20 0.28 0.10 63.12 10:20:01 0 36.55 0.00 1.12 0.67 0.08 61.58 10:20:01 1 33.72 0.00 1.35 0.12 0.10 64.70 10:20:01 2 35.53 0.00 1.29 0.07 0.10 63.02 10:20:01 3 35.42 0.00 1.04 0.25 0.10 63.18 10:21:01 all 20.34 0.00 0.84 0.05 0.10 78.67 10:21:01 0 18.10 0.00 0.97 0.18 0.10 80.64 10:21:01 1 21.28 0.00 0.74 0.00 0.10 77.88 10:21:01 2 21.77 0.00 0.84 0.00 0.08 77.31 10:21:01 3 20.21 0.00 0.82 0.02 0.10 78.86 10:22:01 all 34.74 0.00 1.00 0.29 0.09 63.88 10:22:01 0 32.68 0.00 0.99 0.77 0.08 65.47 10:22:01 1 34.10 0.00 0.89 0.03 0.08 64.89 10:22:01 2 35.38 0.00 0.89 0.29 0.10 63.35 10:22:01 3 36.80 0.00 1.22 0.07 0.10 61.82 10:23:01 all 7.03 0.00 0.27 0.04 0.08 92.58 10:23:01 0 6.91 0.00 0.24 0.15 0.10 92.60 10:23:01 1 7.15 0.00 0.30 0.00 0.07 92.48 10:23:01 2 7.03 0.00 0.25 0.00 0.08 92.64 10:23:01 3 7.03 0.00 0.28 0.00 0.08 92.60 10:24:01 all 15.45 0.00 0.71 0.07 0.08 83.69 10:24:01 0 13.14 0.00 0.82 0.22 0.08 85.74 10:24:01 1 16.24 0.00 0.45 0.00 0.08 83.23 10:24:01 2 16.03 0.00 0.71 0.00 0.08 83.18 10:24:01 3 16.38 0.00 0.87 0.05 0.08 82.61 10:25:01 all 38.19 0.00 1.13 0.27 0.16 60.24 10:25:01 0 35.85 0.00 1.16 0.62 0.10 62.26 10:25:01 1 38.81 0.00 1.02 0.00 0.34 59.83 10:25:01 2 40.19 0.00 1.12 0.15 0.10 58.44 10:25:01 3 37.91 0.00 1.23 0.30 0.10 60.46 10:26:01 all 2.74 0.00 0.16 0.02 0.08 96.99 10:26:01 0 2.88 0.00 0.24 0.03 0.08 96.76 10:26:01 1 2.78 0.00 0.10 0.00 0.10 97.02 10:26:01 2 2.66 0.00 0.12 0.05 0.07 97.10 10:26:01 3 2.62 0.00 0.20 0.00 0.08 97.09 10:26:01 CPU %user %nice %system %iowait %steal %idle 10:27:01 all 4.05 0.00 0.29 0.21 0.09 95.36 10:27:01 0 3.74 0.00 0.35 0.64 0.08 95.19 10:27:01 1 4.19 0.00 0.27 0.00 0.08 95.46 10:27:01 2 3.95 0.00 0.27 0.18 0.10 95.50 10:27:01 3 4.32 0.00 0.25 0.02 0.10 95.31 10:28:01 all 2.18 0.00 0.17 0.01 0.09 97.55 10:28:01 0 2.20 0.00 0.17 0.02 0.08 97.53 10:28:01 1 2.45 0.00 0.18 0.00 0.10 97.26 10:28:01 2 2.00 0.00 0.20 0.03 0.08 97.68 10:28:01 3 2.07 0.00 0.13 0.00 0.08 97.71 10:29:01 all 2.11 0.00 0.18 0.05 0.09 97.57 10:29:01 0 2.05 0.00 0.20 0.10 0.10 97.55 10:29:01 1 2.03 0.00 0.18 0.02 0.08 97.68 10:29:01 2 2.17 0.00 0.17 0.05 0.08 97.53 10:29:01 3 2.18 0.00 0.18 0.03 0.08 97.52 10:30:01 all 2.14 0.00 0.19 0.10 0.08 97.49 10:30:01 0 2.45 0.00 0.18 0.40 0.07 96.90 10:30:01 1 2.06 0.00 0.23 0.00 0.08 97.62 10:30:01 2 1.85 0.00 0.20 0.00 0.10 97.85 10:30:01 3 2.18 0.00 0.15 0.00 0.08 97.58 10:31:01 all 2.13 0.00 0.16 0.06 0.08 97.57 10:31:01 0 1.66 0.00 0.18 0.05 0.08 98.02 10:31:01 1 2.04 0.00 0.17 0.00 0.08 97.70 10:31:01 2 2.72 0.00 0.15 0.00 0.08 97.05 10:31:01 3 2.08 0.00 0.15 0.20 0.07 97.50 10:32:01 all 2.18 0.00 0.19 0.07 0.09 97.47 10:32:01 0 2.18 0.00 0.18 0.20 0.10 97.33 10:32:01 1 1.83 0.00 0.15 0.00 0.07 97.96 10:32:01 2 2.26 0.00 0.18 0.00 0.10 97.46 10:32:01 3 2.46 0.00 0.23 0.07 0.10 97.14 10:33:01 all 16.23 0.00 0.90 0.24 0.09 82.54 10:33:01 0 14.29 0.00 0.81 0.47 0.07 84.37 10:33:01 1 22.06 0.00 1.36 0.08 0.12 76.38 10:33:01 2 15.58 0.00 0.71 0.00 0.10 83.61 10:33:01 3 13.00 0.00 0.72 0.42 0.08 85.78 10:34:01 all 48.03 0.00 1.51 0.72 0.10 49.63 10:34:01 0 46.32 0.00 1.39 0.67 0.10 51.52 10:34:01 1 46.14 0.00 1.40 1.39 0.10 50.96 10:34:01 2 51.04 0.00 2.05 0.34 0.10 46.46 10:34:01 3 48.65 0.00 1.21 0.47 0.12 49.55 10:35:01 all 5.32 0.00 0.41 0.03 0.09 94.14 10:35:01 0 4.92 0.00 0.47 0.05 0.10 94.46 10:35:01 1 6.03 0.00 0.37 0.03 0.08 93.49 10:35:01 2 5.10 0.00 0.37 0.02 0.08 94.44 10:35:01 3 5.25 0.00 0.45 0.03 0.08 94.19 10:36:01 all 40.93 0.00 1.41 0.15 0.11 57.40 10:36:01 0 42.37 0.00 2.04 0.12 0.12 55.35 10:36:01 1 34.90 0.00 1.14 0.07 0.12 63.77 10:36:01 2 43.07 0.00 1.13 0.34 0.12 55.35 10:36:01 3 43.41 0.00 1.32 0.07 0.08 55.12 10:37:01 all 18.00 0.00 0.52 0.25 0.08 81.15 10:37:01 0 19.02 0.00 0.64 0.24 0.07 80.04 10:37:01 1 16.67 0.00 0.49 0.03 0.08 82.73 10:37:01 2 17.90 0.00 0.50 0.70 0.08 80.81 10:37:01 3 18.41 0.00 0.47 0.02 0.10 81.01 10:37:01 CPU %user %nice %system %iowait %steal %idle 10:38:01 all 2.43 0.00 0.25 0.01 0.08 97.24 10:38:01 0 2.44 0.00 0.29 0.00 0.08 97.20 10:38:01 1 2.75 0.00 0.20 0.00 0.07 96.98 10:38:01 2 2.06 0.00 0.25 0.02 0.07 97.60 10:38:01 3 2.46 0.00 0.25 0.03 0.08 97.18 10:39:01 all 2.37 0.00 0.20 0.01 0.08 97.33 10:39:01 0 2.42 0.00 0.20 0.00 0.07 97.31 10:39:01 1 2.47 0.00 0.20 0.00 0.08 97.25 10:39:01 2 2.19 0.00 0.18 0.02 0.10 97.51 10:39:01 3 2.42 0.00 0.22 0.03 0.08 97.25 10:40:01 all 2.54 0.00 0.19 0.02 0.08 97.17 10:40:01 0 3.24 0.00 0.20 0.00 0.08 96.47 10:40:01 1 2.26 0.00 0.18 0.00 0.08 97.47 10:40:01 2 2.14 0.00 0.20 0.03 0.08 97.54 10:40:01 3 2.53 0.00 0.17 0.03 0.08 97.19 10:41:01 all 4.18 0.00 0.27 0.07 0.08 95.41 10:41:01 0 4.76 0.00 0.33 0.00 0.07 94.84 10:41:01 1 4.12 0.00 0.20 0.08 0.08 95.51 10:41:01 2 3.53 0.00 0.22 0.05 0.05 96.15 10:41:01 3 4.29 0.00 0.32 0.15 0.10 95.14 10:42:01 all 2.69 0.00 0.22 0.02 0.09 96.99 10:42:01 0 2.33 0.00 0.24 0.00 0.08 97.35 10:42:01 1 2.60 0.00 0.22 0.00 0.10 97.08 10:42:01 2 2.85 0.00 0.20 0.02 0.08 96.85 10:42:01 3 2.98 0.00 0.22 0.05 0.08 96.67 10:43:01 all 32.88 0.00 1.21 0.05 0.10 65.76 10:43:01 0 34.49 0.00 0.77 0.03 0.10 64.60 10:43:01 1 34.80 0.00 1.74 0.05 0.10 63.31 10:43:01 2 31.10 0.00 1.36 0.10 0.08 67.35 10:43:01 3 31.14 0.00 0.96 0.03 0.10 67.77 10:44:01 all 32.77 0.00 0.84 0.26 0.10 66.03 10:44:01 0 31.67 0.00 0.79 0.08 0.10 67.36 10:44:01 1 34.51 0.00 1.14 0.07 0.10 64.19 10:44:01 2 32.93 0.00 0.70 0.22 0.10 66.05 10:44:01 3 31.96 0.00 0.72 0.67 0.12 66.53 10:45:01 all 6.09 0.00 0.31 0.04 0.09 93.47 10:45:01 0 6.56 0.00 0.33 0.07 0.10 92.94 10:45:01 1 5.96 0.00 0.29 0.00 0.08 93.67 10:45:01 2 5.42 0.00 0.37 0.00 0.10 94.11 10:45:01 3 6.40 0.00 0.25 0.10 0.07 93.18 10:46:01 all 6.39 0.00 0.34 0.09 0.08 93.10 10:46:01 0 6.48 0.00 0.33 0.10 0.07 93.02 10:46:01 1 6.46 0.00 0.34 0.10 0.10 93.00 10:46:01 2 6.26 0.00 0.47 0.05 0.08 93.14 10:46:01 3 6.37 0.00 0.20 0.10 0.08 93.25 10:47:01 all 10.47 0.00 0.73 0.17 0.12 88.51 10:47:01 0 8.50 0.00 0.86 0.08 0.12 90.44 10:47:01 1 16.08 0.00 0.94 0.10 0.08 82.80 10:47:01 2 9.47 0.00 0.42 0.00 0.18 89.93 10:47:01 3 7.80 0.00 0.70 0.50 0.10 90.90 10:48:01 all 28.37 0.00 1.58 4.86 0.09 65.10 10:48:01 0 18.36 0.00 1.59 4.76 0.10 75.19 10:48:01 1 26.62 0.00 2.18 4.99 0.10 66.11 10:48:01 2 51.14 0.00 1.37 2.88 0.08 44.52 10:48:01 3 17.33 0.00 1.17 6.83 0.08 74.58 Average: CPU %user %nice %system %iowait %steal %idle Average: all 18.65 0.12 0.85 0.44 0.09 79.84 Average: 0 18.36 0.13 0.86 0.47 0.09 80.09 Average: 1 19.03 0.11 0.86 0.41 0.10 79.49 Average: 2 18.75 0.13 0.83 0.42 0.09 79.77 Average: 3 18.47 0.11 0.83 0.47 0.09 80.02