03:43:45 Triggered by Gerrit: https://gerrit.o-ran-sc.org/r/c/ric-plt/xapp-frame-py/+/12317 03:43:45 Running as SYSTEM 03:43:45 [EnvInject] - Loading node environment variables. 03:43:45 Building remotely on prd-ubuntu1804-builder-2c-2g-2153 (ubuntu1804-builder-2c-2g ubuntu2004-builder-2c-2g) in workspace /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master 03:43:45 [ssh-agent] Looking for ssh-agent implementation... 03:43:46 [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) 03:43:46 $ ssh-agent 03:43:46 SSH_AUTH_SOCK=/tmp/ssh-LT8P26bQtLdZ/agent.6449 03:43:46 SSH_AGENT_PID=6453 03:43:46 [ssh-agent] Started. 03:43:46 Running ssh-add (command line suppressed) 03:43:46 Identity added: /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master@tmp/private_key_17664214889448068152.key (jenkins-ssh) 03:43:46 [ssh-agent] Using credentials jenkins (jenkins) 03:43:46 The recommended git tool is: NONE 03:43:48 using credential jenkins 03:43:48 Wiping out workspace first. 03:43:48 Cloning the remote Git repository 03:43:48 Cloning repository ssh://oran-jobbuilder@gerrit.o-ran-sc.org:29418/ric-plt/xapp-frame-py 03:43:48 > git init /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master # timeout=10 03:43:48 Fetching upstream changes from ssh://oran-jobbuilder@gerrit.o-ran-sc.org:29418/ric-plt/xapp-frame-py 03:43:48 > git --version # timeout=10 03:43:48 > git --version # 'git version 2.25.1' 03:43:48 using GIT_SSH to set credentials jenkins 03:43:48 > git fetch --tags --force --progress -- ssh://oran-jobbuilder@gerrit.o-ran-sc.org:29418/ric-plt/xapp-frame-py +refs/heads/*:refs/remotes/origin/* # timeout=10 03:43:48 > git config remote.origin.url ssh://oran-jobbuilder@gerrit.o-ran-sc.org:29418/ric-plt/xapp-frame-py # timeout=10 03:43:48 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 03:43:49 > git config remote.origin.url ssh://oran-jobbuilder@gerrit.o-ran-sc.org:29418/ric-plt/xapp-frame-py # timeout=10 03:43:49 Fetching upstream changes from ssh://oran-jobbuilder@gerrit.o-ran-sc.org:29418/ric-plt/xapp-frame-py 03:43:49 using GIT_SSH to set credentials jenkins 03:43:49 > git fetch --tags --force --progress -- ssh://oran-jobbuilder@gerrit.o-ran-sc.org:29418/ric-plt/xapp-frame-py refs/changes/17/12317/11 # timeout=10 03:43:49 > git rev-parse 5dcf93739246d4ad301db314e0a252fbb4e9376e^{commit} # timeout=10 03:43:49 JENKINS-19022: warning: possible memory leak due to Git plugin usage; see: https://plugins.jenkins.io/git/#remove-git-plugin-buildsbybranch-builddata-script 03:43:49 Checking out Revision 5dcf93739246d4ad301db314e0a252fbb4e9376e (refs/changes/17/12317/11) 03:43:49 > git config core.sparsecheckout # timeout=10 03:43:49 > git checkout -f 5dcf93739246d4ad301db314e0a252fbb4e9376e # timeout=10 03:43:52 Commit message: "RIC-1032: xapp-frame-py block xApp to register when communicating with Rtmgr" 03:43:52 > git rev-parse FETCH_HEAD^{commit} # timeout=10 03:43:53 > git rev-list --no-walk e0de19a1c51e607b7e7a4a71a326a09486583539 # timeout=10 03:43:53 > git remote # timeout=10 03:43:53 > git submodule init # timeout=10 03:43:53 > git submodule sync # timeout=10 03:43:53 > git config --get remote.origin.url # timeout=10 03:43:53 > git submodule init # timeout=10 03:43:53 > git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10 03:43:53 > git config --get submodule.nodeb-rnib.url # timeout=10 03:43:53 > git config -f .gitmodules --get submodule.nodeb-rnib.path # timeout=10 03:43:53 > git submodule update --init --recursive nodeb-rnib # timeout=10 03:43:53 provisioning config files... 03:43:53 copy managed file [npmrc] to file:/home/jenkins/.npmrc 03:43:53 copy managed file [pipconf] to file:/home/jenkins/.config/pip/pip.conf 03:43:53 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins8028685747023220107.sh 03:43:53 ---> python-tools-install.sh 03:43:53 Setup pyenv: 03:43:54 * system (set by /opt/pyenv/version) 03:43:54 * 3.8.13 (set by /opt/pyenv/version) 03:43:54 * 3.9.13 (set by /opt/pyenv/version) 03:43:54 * 3.10.6 (set by /opt/pyenv/version) 03:43:59 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-Tu2T 03:43:59 lf-activate-venv(): INFO: Save venv in file: /tmp/.os_lf_venv 03:44:02 lf-activate-venv(): INFO: Installing: lftools 03:44:41 lf-activate-venv(): INFO: Adding /tmp/venv-Tu2T/bin to PATH 03:44:41 Generating Requirements File 03:45:16 Python 3.10.6 03:45:16 pip 23.3.2 from /tmp/venv-Tu2T/lib/python3.10/site-packages/pip (python 3.10) 03:45:17 appdirs==1.4.4 03:45:17 argcomplete==3.2.1 03:45:17 aspy.yaml==1.3.0 03:45:17 attrs==23.1.0 03:45:17 autopage==0.5.2 03:45:17 Babel==2.14.0 03:45:17 beautifulsoup4==4.12.2 03:45:17 boto3==1.34.8 03:45:17 botocore==1.34.8 03:45:17 bs4==0.0.1 03:45:17 cachetools==5.3.2 03:45:17 certifi==2023.11.17 03:45:17 cffi==1.16.0 03:45:17 cfgv==3.4.0 03:45:17 chardet==5.2.0 03:45:17 charset-normalizer==3.3.2 03:45:17 click==8.1.7 03:45:17 cliff==4.4.0 03:45:17 cmd2==2.4.3 03:45:17 cryptography==3.3.2 03:45:17 debtcollector==2.5.0 03:45:17 decorator==5.1.1 03:45:17 defusedxml==0.7.1 03:45:17 Deprecated==1.2.14 03:45:17 distlib==0.3.8 03:45:17 dnspython==2.4.2 03:45:17 docker==4.2.2 03:45:17 dogpile.cache==1.3.0 03:45:17 email-validator==2.1.0.post1 03:45:17 filelock==3.13.1 03:45:17 future==0.18.3 03:45:17 gitdb==4.0.11 03:45:17 GitPython==3.1.40 03:45:17 google-auth==2.25.2 03:45:17 httplib2==0.22.0 03:45:17 identify==2.5.33 03:45:17 idna==3.6 03:45:17 importlib-metadata==7.0.1 03:45:17 importlib-resources==1.5.0 03:45:17 iso8601==2.1.0 03:45:17 Jinja2==3.1.2 03:45:17 jmespath==1.0.1 03:45:17 jsonpatch==1.33 03:45:17 jsonpointer==2.4 03:45:17 jsonschema==4.20.0 03:45:17 jsonschema-specifications==2023.12.1 03:45:17 keystoneauth1==5.4.0 03:45:17 kubernetes==28.1.0 03:45:17 lftools==0.37.8 03:45:17 lxml==4.9.4 03:45:17 MarkupSafe==2.1.3 03:45:17 msgpack==1.0.7 03:45:17 multi_key_dict==2.0.3 03:45:17 munch==4.0.0 03:45:17 netaddr==0.9.0 03:45:17 netifaces==0.11.0 03:45:17 niet==1.4.2 03:45:17 nodeenv==1.8.0 03:45:17 oauth2client==4.1.3 03:45:17 oauthlib==3.2.2 03:45:17 openstacksdk==0.62.0 03:45:17 os-client-config==2.1.0 03:45:17 os-service-types==1.7.0 03:45:17 osc-lib==2.9.0 03:45:17 oslo.config==9.2.0 03:45:17 oslo.context==5.3.0 03:45:17 oslo.i18n==6.2.0 03:45:17 oslo.log==5.4.0 03:45:17 oslo.serialization==5.2.0 03:45:17 oslo.utils==6.3.0 03:45:17 packaging==23.2 03:45:17 pbr==6.0.0 03:45:17 platformdirs==4.1.0 03:45:17 prettytable==3.9.0 03:45:17 pyasn1==0.5.1 03:45:17 pyasn1-modules==0.3.0 03:45:17 pycparser==2.21 03:45:17 pygerrit2==2.0.15 03:45:17 PyGithub==2.1.1 03:45:17 pyinotify==0.9.6 03:45:17 PyJWT==2.8.0 03:45:17 PyNaCl==1.5.0 03:45:17 pyparsing==2.4.7 03:45:17 pyperclip==1.8.2 03:45:17 pyrsistent==0.20.0 03:45:17 python-cinderclient==9.4.0 03:45:17 python-dateutil==2.8.2 03:45:17 python-heatclient==3.3.0 03:45:17 python-jenkins==1.8.2 03:45:17 python-keystoneclient==5.2.0 03:45:17 python-magnumclient==4.3.0 03:45:17 python-novaclient==18.4.0 03:45:17 python-openstackclient==6.0.0 03:45:17 python-swiftclient==4.4.0 03:45:17 pytz==2023.3.post1 03:45:17 PyYAML==6.0.1 03:45:17 referencing==0.32.0 03:45:17 requests==2.31.0 03:45:17 requests-oauthlib==1.3.1 03:45:17 requestsexceptions==1.4.0 03:45:17 rfc3986==2.0.0 03:45:17 rpds-py==0.15.2 03:45:17 rsa==4.9 03:45:17 ruamel.yaml==0.18.5 03:45:17 ruamel.yaml.clib==0.2.8 03:45:17 s3transfer==0.10.0 03:45:17 simplejson==3.19.2 03:45:17 six==1.16.0 03:45:17 smmap==5.0.1 03:45:17 soupsieve==2.5 03:45:17 stevedore==5.1.0 03:45:17 tabulate==0.9.0 03:45:17 toml==0.10.2 03:45:17 tomlkit==0.12.3 03:45:17 tqdm==4.66.1 03:45:17 typing_extensions==4.9.0 03:45:17 tzdata==2023.3 03:45:17 urllib3==1.26.18 03:45:17 virtualenv==20.25.0 03:45:17 wcwidth==0.2.12 03:45:17 websocket-client==1.7.0 03:45:17 wrapt==1.16.0 03:45:17 xdg==6.0.0 03:45:17 xmltodict==0.13.0 03:45:17 yq==3.2.3 03:45:17 zipp==3.17.0 03:45:17 [EnvInject] - Injecting environment variables from a build step. 03:45:17 [EnvInject] - Injecting as environment variables the properties content 03:45:17 PYTHON=python3 03:45:17 03:45:17 [EnvInject] - Variables injected successfully. 03:45:17 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash -l /tmp/jenkins12324868010554280329.sh 03:45:17 ---> tox-install.sh 03:45:17 + source /home/jenkins/lf-env.sh 03:45:17 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 03:45:17 ++ mktemp -d /tmp/venv-XXXX 03:45:17 + lf_venv=/tmp/venv-EUPy 03:45:17 + local venv_file=/tmp/.os_lf_venv 03:45:17 + local python=python3 03:45:17 + local options 03:45:17 + local set_path=true 03:45:17 + local install_args= 03:45:17 ++ 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 03:45:17 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 03:45:17 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 03:45:17 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 03:45:17 + true 03:45:17 + case $1 in 03:45:17 + venv_file=/tmp/.toxenv 03:45:17 + shift 2 03:45:17 + true 03:45:17 + case $1 in 03:45:17 + shift 03:45:17 + break 03:45:17 + case $python in 03:45:17 + local pkg_list= 03:45:17 + [[ -d /opt/pyenv ]] 03:45:17 + echo 'Setup pyenv:' 03:45:17 Setup pyenv: 03:45:17 + export PYENV_ROOT=/opt/pyenv 03:45:17 + PYENV_ROOT=/opt/pyenv 03:45:17 + 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 03:45:17 + 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 03:45:17 + pyenv versions 03:45:17 system 03:45:17 3.8.13 03:45:17 3.9.13 03:45:17 * 3.10.6 (set by /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.python-version) 03:45:17 + command -v pyenv 03:45:17 ++ pyenv init - --no-rehash 03:45:17 + 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[*]}"'\'')" 03:45:17 export PATH="/opt/pyenv/shims:${PATH}" 03:45:17 export PYENV_SHELL=bash 03:45:17 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 03:45:17 pyenv() { 03:45:17 local command 03:45:17 command="${1:-}" 03:45:17 if [ "$#" -gt 0 ]; then 03:45:17 shift 03:45:17 fi 03:45:17 03:45:17 case "$command" in 03:45:17 rehash|shell) 03:45:17 eval "$(pyenv "sh-$command" "$@")" 03:45:17 ;; 03:45:17 *) 03:45:17 command pyenv "$command" "$@" 03:45:17 ;; 03:45:17 esac 03:45:17 }' 03:45:17 +++ 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[*]}"' 03:45:17 ++ 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 03:45:17 ++ 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 03:45:17 ++ 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 03:45:17 ++ export PYENV_SHELL=bash 03:45:17 ++ PYENV_SHELL=bash 03:45:17 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 03:45:17 +++ complete -F _pyenv pyenv 03:45:17 ++ lf-pyver python3 03:45:17 ++ local py_version_xy=python3 03:45:17 ++ local py_version_xyz= 03:45:17 ++ grep -E '^[0-9.]*[0-9]$' 03:45:17 ++ awk '{ print $1 }' 03:45:17 ++ sed 's/^[ *]* //' 03:45:17 ++ pyenv versions 03:45:17 ++ local command 03:45:17 ++ command=versions 03:45:17 ++ '[' 1 -gt 0 ']' 03:45:17 ++ shift 03:45:17 ++ case "$command" in 03:45:17 ++ command pyenv versions 03:45:17 ++ pyenv versions 03:45:17 ++ [[ ! -s /tmp/.pyenv_versions ]] 03:45:17 +++ tail -n 1 03:45:17 +++ grep '^3' /tmp/.pyenv_versions 03:45:17 +++ sort -V 03:45:17 ++ py_version_xyz=3.10.6 03:45:17 ++ [[ -z 3.10.6 ]] 03:45:17 ++ echo 3.10.6 03:45:17 ++ return 0 03:45:17 + pyenv local 3.10.6 03:45:17 + local command 03:45:17 + command=local 03:45:17 + '[' 2 -gt 0 ']' 03:45:17 + shift 03:45:17 + case "$command" in 03:45:17 + command pyenv local 3.10.6 03:45:17 + pyenv local 3.10.6 03:45:17 + for arg in "$@" 03:45:17 + case $arg in 03:45:17 + pkg_list+='tox ' 03:45:17 + for arg in "$@" 03:45:17 + case $arg in 03:45:17 + pkg_list+='virtualenv ' 03:45:17 + for arg in "$@" 03:45:17 + case $arg in 03:45:17 + pkg_list+='urllib3~=1.26.15 ' 03:45:17 + [[ -f /tmp/.toxenv ]] 03:45:17 + [[ ! -f /tmp/.toxenv ]] 03:45:17 + [[ -n '' ]] 03:45:17 + python3 -m venv /tmp/venv-EUPy 03:45:21 + echo 'lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-EUPy' 03:45:21 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-EUPy 03:45:21 + echo /tmp/venv-EUPy 03:45:21 + echo 'lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv' 03:45:21 lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv 03:45:21 + /tmp/venv-EUPy/bin/python3 -m pip install --upgrade --quiet pip virtualenv 03:45:24 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 03:45:24 + echo 'lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 ' 03:45:24 lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 03:45:24 + /tmp/venv-EUPy/bin/python3 -m pip install --upgrade --quiet --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 03:45:26 + type python3 03:45:26 + true 03:45:26 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-EUPy/bin to PATH' 03:45:26 lf-activate-venv(): INFO: Adding /tmp/venv-EUPy/bin to PATH 03:45:26 + PATH=/tmp/venv-EUPy/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 03:45:26 + return 0 03:45:26 + python3 --version 03:45:26 Python 3.10.6 03:45:26 + python3 -m pip --version 03:45:26 pip 23.3.2 from /tmp/venv-EUPy/lib/python3.10/site-packages/pip (python 3.10) 03:45:27 + python3 -m pip freeze 03:45:27 cachetools==5.3.2 03:45:27 chardet==5.2.0 03:45:27 colorama==0.4.6 03:45:27 distlib==0.3.8 03:45:27 filelock==3.13.1 03:45:27 packaging==23.2 03:45:27 platformdirs==4.1.0 03:45:27 pluggy==1.3.0 03:45:27 pyproject-api==1.6.1 03:45:27 tomli==2.0.1 03:45:27 tox==4.11.4 03:45:27 urllib3==1.26.18 03:45:27 virtualenv==20.25.0 03:45:27 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins3664746453846437690.sh 03:45:27 ---> install-deb-rmr.sh 03:45:27 + version_file=rmr-version.yaml 03:45:27 + [[ -f rmr-version.yaml ]] 03:45:27 ++ grep '^repo:' rmr-version.yaml 03:45:27 ++ cut -d: -f2 03:45:27 ++ xargs 03:45:27 + repo= 03:45:27 ++ grep '^version:' rmr-version.yaml 03:45:27 ++ cut -d: -f2 03:45:27 ++ xargs 03:45:27 + ver=4.9.1 03:45:27 + [[ -z 4.9.1 ]] 03:45:27 + repo=release 03:45:27 + for deb in "rmr_${ver}_amd64.deb" "rmr-dev_${ver}_amd64.deb" 03:45:27 + wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr_4.9.1_amd64.deb/download.deb 03:45:27 2023-12-28 03:45:27 URL:https://d3fo0g5hm7lbuv.cloudfront.net/20756/10598/debian/package_files/4252893.deb?Expires=1703735427&Signature=DqU3dH-dZSIKwMXOXk5icw3TOCpTcMVWT4~D4TkSVyImdjYJyY8V-fv7ZUsEXr1mcNWBpnqnGISGKifsgySTIJZ7fOqX-q39rB4J813WStEriTyP04XVlVg4gNV3gG9k-3ZYR0avE2bhh8p91hJTWXbGcnhPZfY8n4KJq-1-dG2yYEooFRdOt00~-QhZj6YrbRlLr6qBWajo52KNwk1qDHwU9cqo4awW99EbPnha~dK-s~kSoLKCRyTqU7C6~CvZDnueWGXxJ7IIRZxNbGgvYTJxApV8qO0ocpjkP~16meUOTNeOJgU-kHykAtsQ2Sw4TFHvyYWZ5X2LqtqLXQ0wZA__&Key-Pair-Id=K1ZMSF1EKC3AZL [243050/243050] -> "rmr_4.9.1_amd64.deb" [1] 03:45:27 + sudo dpkg -i rmr_4.9.1_amd64.deb 03:45:27 Selecting previously unselected package rmr. 03:45:29 (Reading database ... 198606 files and directories currently installed.) 03:45:29 Preparing to unpack rmr_4.9.1_amd64.deb ... 03:45:29 Unpacking rmr (4.9.1) ... 03:45:29 Setting up rmr (4.9.1) ... 03:45:29 + rm -f rmr_4.9.1_amd64.deb 03:45:29 + for deb in "rmr_${ver}_amd64.deb" "rmr-dev_${ver}_amd64.deb" 03:45:29 + wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_4.9.1_amd64.deb/download.deb 03:45:29 2023-12-28 03:45:29 URL:https://d3fo0g5hm7lbuv.cloudfront.net/20756/10598/debian/package_files/4252891.deb?Expires=1703735429&Signature=d19Or8qrucS7QZwHTnXHKqfoKcxLu-eujxVJSvF4iQl7W1fYqxR2~OVYuMrmxoKb4XdK0t3C3PLgno6yVzhQVHtwSSyXBRcccULe8KrEqmx6Ul810rM5yZ~Krb1OhG3GpD158K2UnQ2BaSX3oTDUd08Y6lYmLsf1Jueh6v23ZGcbIMs0UhbquJQmrQDAGuUO13ASSLL0K5gEO8K3KHAw4sgKU7uoIEGog2dTaY7BCzHD955UPgI8jR-j1wrztoRIOHRNe~LsXX~OzQFQx9imvRopjxWFVFneO-FGbj4wCAmFkiwcttEZRecstJG1dV74p64IJM1b9drBe6YT~zzA9g__&Key-Pair-Id=K1ZMSF1EKC3AZL [126164/126164] -> "rmr-dev_4.9.1_amd64.deb" [1] 03:45:29 + sudo dpkg -i rmr-dev_4.9.1_amd64.deb 03:45:29 Selecting previously unselected package rmr-dev. 03:45:29 (Reading database ... 198614 files and directories currently installed.) 03:45:29 Preparing to unpack rmr-dev_4.9.1_amd64.deb ... 03:45:29 Unpacking rmr-dev (4.9.1) ... 03:45:30 Setting up rmr-dev (4.9.1) ... 03:45:30 + rm -f rmr-dev_4.9.1_amd64.deb 03:45:30 + echo '---> install-deb-rmr.sh ends' 03:45:30 ---> install-deb-rmr.sh ends 03:45:30 + echo '---> install-deb-e2ap.sh' 03:45:30 ---> install-deb-e2ap.sh 03:45:30 + set -eux 03:45:30 + version_file=e2ap-version.yaml 03:45:30 + [[ -f e2ap-version.yaml ]] 03:45:30 ++ grep '^repo:' e2ap-version.yaml 03:45:30 ++ cut -d: -f2 03:45:30 ++ xargs 03:45:30 + repo= 03:45:30 ++ grep '^version:' e2ap-version.yaml 03:45:30 ++ cut -d: -f2 03:45:30 ++ xargs 03:45:30 + ver=1.1.0 03:45:30 + [[ -z 1.1.0 ]] 03:45:30 + repo=release 03:45:30 + for deb in "riclibe2ap_${ver}_amd64.deb" "riclibe2ap-dev_${ver}_amd64.deb" 03:45:30 + wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/riclibe2ap_1.1.0_amd64.deb/download.deb 03:45:30 2023-12-28 03:45:30 URL:https://d3fo0g5hm7lbuv.cloudfront.net/20756/10598/debian/package_files/2517358.deb?Expires=1703735430&Signature=yjNhmLHKrbsjRKg-oDq9UUhDKincy0AXBKOjIpgY~dC4DvqwxefgxKKvGq1aFZmWDiNY1bcXrMwf4pmR3RwArvkNf7ox4VdGfB8xKyfty5bjiFMfloh8Z3NT2XwNvNubXELaHe7iVtbdOf-00NP1324L8rudOzYSX~sWjA51h3hj9fp0RCmx3VdOFaDMXVgzeXqy~AeBGgi5BIphRzBUN4MeLfxLgj8mc-4NIDcVoXeRg08DUqUBxL-baxicsyrXmNdunAp63RsZ1khEkeoLqDGx8Mqdl2Pb3h5qXAa3PBRk1B1Hf3SVFr~KGGEDZWbMr14daL9sXB4bYLTS3kenig__&Key-Pair-Id=K1ZMSF1EKC3AZL [341294/341294] -> "riclibe2ap_1.1.0_amd64.deb" [1] 03:45:30 + sudo dpkg -i riclibe2ap_1.1.0_amd64.deb 03:45:30 Selecting previously unselected package riclibe2ap. 03:45:30 (Reading database ... 198621 files and directories currently installed.) 03:45:30 Preparing to unpack riclibe2ap_1.1.0_amd64.deb ... 03:45:30 Unpacking riclibe2ap (1.1.0) ... 03:45:30 Setting up riclibe2ap (1.1.0) ... 03:45:30 + rm -f riclibe2ap_1.1.0_amd64.deb 03:45:30 + for deb in "riclibe2ap_${ver}_amd64.deb" "riclibe2ap-dev_${ver}_amd64.deb" 03:45:30 + wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/riclibe2ap-dev_1.1.0_amd64.deb/download.deb 03:45:30 2023-12-28 03:45:30 URL:https://d3fo0g5hm7lbuv.cloudfront.net/20756/10598/debian/package_files/2517359.deb?Expires=1703735430&Signature=vymOweboMYZaSx3sUoGr~jmok7Hx6a0vJRMD8ucURiFqWHFfD6S5ShDDvE6oTU8z69IajPHvUFNeCX-zKM9Mngf~mMOqJmDayvc4-5V9cA~C6MmYYXf4tJgbOBfgOa134SxttYrRbB9-hijOFt8th0al-jqFPqb~-6wLrqRb~z9r8iNjeuidZ5QPwG-6ba37EnqRiFJSbLNG6WFnjiBJpwEex~xBKUtF11RN4Wq-2X5VAPanz-XkZQniINgQSlL8Z2UgbWpN87NS-25e7x2OOVdbrsJ-tsXP3xjtmTApRtqp7oYvD4VXg9kr4PZ9JS5UWFjJ3Ba3zKhokc9kAc1UmQ__&Key-Pair-Id=K1ZMSF1EKC3AZL [823070/823070] -> "riclibe2ap-dev_1.1.0_amd64.deb" [1] 03:45:30 + sudo dpkg -i riclibe2ap-dev_1.1.0_amd64.deb 03:45:30 Selecting previously unselected package riclibe2ap-dev. 03:45:30 (Reading database ... 198624 files and directories currently installed.) 03:45:30 Preparing to unpack riclibe2ap-dev_1.1.0_amd64.deb ... 03:45:30 Unpacking riclibe2ap-dev (1.1.0) ... 03:45:30 Setting up riclibe2ap-dev (1.1.0) ... 03:45:30 + rm -f riclibe2ap-dev_1.1.0_amd64.deb 03:45:30 + echo '---> install-deb-e2ap.sh ends' 03:45:30 ---> install-deb-e2ap.sh ends 03:45:30 [EnvInject] - Injecting environment variables from a build step. 03:45:30 [EnvInject] - Injecting as environment variables the properties content 03:45:30 PARALLEL=False 03:45:30 03:45:30 [EnvInject] - Variables injected successfully. 03:45:30 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash -l /tmp/jenkins2445108546998757943.sh 03:45:30 ---> tox-run.sh 03:45:30 + 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 03:45:30 + ARCHIVE_TOX_DIR=/w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/tox 03:45:30 + ARCHIVE_DOC_DIR=/w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/docs 03:45:30 + mkdir -p /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/tox 03:45:30 + cd /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/. 03:45:30 + source /home/jenkins/lf-env.sh 03:45:30 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 03:45:30 ++ mktemp -d /tmp/venv-XXXX 03:45:30 + lf_venv=/tmp/venv-GnjJ 03:45:30 + local venv_file=/tmp/.os_lf_venv 03:45:30 + local python=python3 03:45:30 + local options 03:45:30 + local set_path=true 03:45:30 + local install_args= 03:45:30 ++ 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 03:45:30 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 03:45:30 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 03:45:30 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 03:45:30 + true 03:45:30 + case $1 in 03:45:30 + venv_file=/tmp/.toxenv 03:45:30 + shift 2 03:45:30 + true 03:45:30 + case $1 in 03:45:30 + shift 03:45:30 + break 03:45:30 + case $python in 03:45:30 + local pkg_list= 03:45:30 + [[ -d /opt/pyenv ]] 03:45:30 + echo 'Setup pyenv:' 03:45:30 Setup pyenv: 03:45:30 + export PYENV_ROOT=/opt/pyenv 03:45:30 + PYENV_ROOT=/opt/pyenv 03:45:30 + 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 03:45:30 + 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 03:45:30 + pyenv versions 03:45:31 system 03:45:31 3.8.13 03:45:31 3.9.13 03:45:31 * 3.10.6 (set by /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.python-version) 03:45:31 + command -v pyenv 03:45:31 ++ pyenv init - --no-rehash 03:45:31 + 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[*]}"'\'')" 03:45:31 export PATH="/opt/pyenv/shims:${PATH}" 03:45:31 export PYENV_SHELL=bash 03:45:31 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 03:45:31 pyenv() { 03:45:31 local command 03:45:31 command="${1:-}" 03:45:31 if [ "$#" -gt 0 ]; then 03:45:31 shift 03:45:31 fi 03:45:31 03:45:31 case "$command" in 03:45:31 rehash|shell) 03:45:31 eval "$(pyenv "sh-$command" "$@")" 03:45:31 ;; 03:45:31 *) 03:45:31 command pyenv "$command" "$@" 03:45:31 ;; 03:45:31 esac 03:45:31 }' 03:45:31 +++ 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[*]}"' 03:45:31 ++ 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 03:45:31 ++ 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 03:45:31 ++ 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 03:45:31 ++ export PYENV_SHELL=bash 03:45:31 ++ PYENV_SHELL=bash 03:45:31 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 03:45:31 +++ complete -F _pyenv pyenv 03:45:31 ++ lf-pyver python3 03:45:31 ++ local py_version_xy=python3 03:45:31 ++ local py_version_xyz= 03:45:31 ++ pyenv versions 03:45:31 ++ local command 03:45:31 ++ command=versions 03:45:31 ++ grep -E '^[0-9.]*[0-9]$' 03:45:31 ++ '[' 1 -gt 0 ']' 03:45:31 ++ shift 03:45:31 ++ case "$command" in 03:45:31 ++ command pyenv versions 03:45:31 ++ pyenv versions 03:45:31 ++ awk '{ print $1 }' 03:45:31 ++ sed 's/^[ *]* //' 03:45:31 ++ [[ ! -s /tmp/.pyenv_versions ]] 03:45:31 +++ grep '^3' /tmp/.pyenv_versions 03:45:31 +++ sort -V 03:45:31 +++ tail -n 1 03:45:31 ++ py_version_xyz=3.10.6 03:45:31 ++ [[ -z 3.10.6 ]] 03:45:31 ++ echo 3.10.6 03:45:31 ++ return 0 03:45:31 + pyenv local 3.10.6 03:45:31 + local command 03:45:31 + command=local 03:45:31 + '[' 2 -gt 0 ']' 03:45:31 + shift 03:45:31 + case "$command" in 03:45:31 + command pyenv local 3.10.6 03:45:31 + pyenv local 3.10.6 03:45:31 + for arg in "$@" 03:45:31 + case $arg in 03:45:31 + pkg_list+='tox ' 03:45:31 + for arg in "$@" 03:45:31 + case $arg in 03:45:31 + pkg_list+='virtualenv ' 03:45:31 + for arg in "$@" 03:45:31 + case $arg in 03:45:31 + pkg_list+='urllib3~=1.26.15 ' 03:45:31 + [[ -f /tmp/.toxenv ]] 03:45:31 ++ cat /tmp/.toxenv 03:45:31 + lf_venv=/tmp/venv-EUPy 03:45:31 + echo 'lf-activate-venv(): INFO: Reuse venv:/tmp/venv-EUPy from' file:/tmp/.toxenv 03:45:31 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-EUPy from file:/tmp/.toxenv 03:45:31 + /tmp/venv-EUPy/bin/python3 -m pip install --upgrade --quiet pip virtualenv 03:45:32 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 03:45:32 + echo 'lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 ' 03:45:32 lf-activate-venv(): INFO: Installing: tox virtualenv urllib3~=1.26.15 03:45:32 + /tmp/venv-EUPy/bin/python3 -m pip install --upgrade --quiet --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 03:45:33 + type python3 03:45:33 + true 03:45:33 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-EUPy/bin to PATH' 03:45:33 lf-activate-venv(): INFO: Adding /tmp/venv-EUPy/bin to PATH 03:45:33 + PATH=/tmp/venv-EUPy/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 03:45:33 + return 0 03:45:33 + [[ -d /opt/pyenv ]] 03:45:33 + echo '---> Setting up pyenv' 03:45:33 ---> Setting up pyenv 03:45:33 + export PYENV_ROOT=/opt/pyenv 03:45:33 + PYENV_ROOT=/opt/pyenv 03:45:33 + export PATH=/opt/pyenv/bin:/tmp/venv-EUPy/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 03:45:33 + PATH=/opt/pyenv/bin:/tmp/venv-EUPy/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 03:45:33 ++ pwd 03:45:33 + PYTHONPATH=/w/workspace/ric-plt-xapp-frame-py-pypi-verify-master 03:45:33 + export PYTHONPATH 03:45:33 + export TOX_TESTENV_PASSENV=PYTHONPATH 03:45:33 + TOX_TESTENV_PASSENV=PYTHONPATH 03:45:33 + tox --version 03:45:33 4.11.4 from /tmp/venv-EUPy/lib/python3.10/site-packages/tox/__init__.py 03:45:33 + PARALLEL=False 03:45:33 + TOX_OPTIONS_LIST= 03:45:33 + [[ -n code,flake8 ]] 03:45:33 + TOX_OPTIONS_LIST=' -e code,flake8' 03:45:33 + case ${PARALLEL,,} in 03:45:33 + tee -a /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/tox/tox.log 03:45:33 + tox -e code,flake8 03:45:34 code: install_deps> python -I -m pip install coverage pytest pytest-cov six 03:45:38 .pkg: install_requires> python -I -m pip install 'setuptools>=40.8.0' wheel 03:45:39 .pkg: _optional_hooks> python /tmp/venv-EUPy/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ 03:45:40 .pkg: get_requires_for_build_sdist> python /tmp/venv-EUPy/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ 03:45:40 .pkg: get_requires_for_build_wheel> python /tmp/venv-EUPy/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ 03:45:40 .pkg: install_requires_for_build_wheel> python -I -m pip install wheel 03:45:40 .pkg: freeze> python -m pip freeze --all 03:45:40 .pkg: pip==23.3.1,setuptools==69.0.2,wheel==0.42.0 03:45:40 .pkg: prepare_metadata_for_build_wheel> python /tmp/venv-EUPy/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ 03:45:41 .pkg: build_sdist> python /tmp/venv-EUPy/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ 03:45:41 code: install_package_deps> python -I -m pip install inotify inotify-simple mdclogpy msgpack 'protobuf<3.21.0' requests 'ricsdl<4.0.0,>=3.0.0' 03:45:48 code: install_package> python -I -m pip install --force-reinstall --no-deps /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.tox/.tmp/package/1/ricxappframe-3.2.2.tar.gz 03:45:50 code: freeze> python -m pip freeze --all 03:45:50 code: async-timeout==4.0.3,certifi==2023.11.17,charset-normalizer==3.3.2,coverage==7.3.4,exceptiongroup==1.2.0,hiredis==2.0.0,idna==3.6,iniconfig==2.0.0,inotify==0.2.10,inotify-simple==1.3.5,mdclogpy==1.1.4,msgpack==1.0.7,nose==1.3.7,packaging==23.2,pip==23.3.1,pluggy==1.3.0,protobuf==3.20.3,pytest==7.4.3,pytest-cov==4.1.0,redis==4.3.6,requests==2.31.0,ricsdl==3.1.3,ricxappframe @ file:///w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.tox/.tmp/package/1/ricxappframe-3.2.2.tar.gz#sha256=782fd4d0b041c273504f2108823d8758e0eb3c4bb203012343219f693a0dd9d3,setuptools==69.0.2,six==1.16.0,tomli==2.0.1,urllib3==2.1.0,wheel==0.42.0 03:45:50 code: commands[0]> pytest --cov ricxappframe --cov-report xml --cov-report term-missing --cov-report html --cov-fail-under=70 --junitxml=/tmp/tests.xml 03:45:51 ============================= test session starts ============================== 03:45:51 platform linux -- Python 3.10.6, pytest-7.4.3, pluggy-1.3.0 03:45:51 cachedir: .tox/code/.pytest_cache 03:45:51 rootdir: /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master 03:45:51 plugins: cov-4.1.0 03:45:51 collected 75 items 03:45:51 03:45:51 tests/test_Logger.py .............. [ 18%] 03:45:51 tests/test_alarm.py .. [ 21%] 03:45:56 tests/test_config.py FFF [ 25%] 03:46:02 tests/test_e2ap.py ........ [ 36%] 03:46:02 tests/test_init.py FFF [ 40%] 03:46:02 tests/test_metric.py .. [ 42%] 03:46:07 tests/test_rest.py . [ 44%] 03:46:07 tests/test_rmr.py ............. [ 61%] 03:46:16 tests/test_rmr_mocks.py ... [ 65%] 03:46:16 tests/test_rmrclib.py .. [ 68%] 03:46:16 tests/test_sdl.py ..... [ 74%] 03:46:18 tests/test_subscribe.py .... [ 80%] 03:46:18 tests/test_symptomdata.py .... [ 85%] 03:46:18 tests/test_xapps.py FFFFFFFFFFF [100%] 03:46:19 03:46:19 =================================== FAILURES =================================== 03:46:19 ______________________________ test_config_no_env ______________________________ 03:46:19 03:46:19 monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f682856ddb0> 03:46:19 03:46:19 def test_config_no_env(monkeypatch): 03:46:19 init_config_file() 03:46:19 monkeypatch.delenv(Constants.CONFIG_FILE_ENV, raising=False) 03:46:19 03:46:19 def default_rmr_handler(self, summary, sbuf): 03:46:19 pass 03:46:19 03:46:19 config_event_seen = False 03:46:19 03:46:19 def config_handler(self, json): 03:46:19 nonlocal config_event_seen 03:46:19 config_event_seen = True 03:46:19 03:46:19 global rmr_xapp_noconfig 03:46:19 > rmr_xapp_noconfig = RMRXapp(default_rmr_handler, config_handler=config_handler, rmr_port=4652, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_config.py:58: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 ricxappframe/xapp_frame.py:853: in __init__ 03:46:19 super().__init__( 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4652, rmr_wait_for_ready = True, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 _________________________ test_default_config_handler __________________________ 03:46:19 03:46:19 monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f682871cd30> 03:46:19 03:46:19 def test_default_config_handler(monkeypatch): 03:46:19 """Just for coverage""" 03:46:19 init_config_file() 03:46:19 monkeypatch.setenv(Constants.CONFIG_FILE_ENV, config_file_path) 03:46:19 03:46:19 def default_rmr_handler(self, summary, sbuf): 03:46:19 pass 03:46:19 03:46:19 # listen port is irrelevant, no messages arrive 03:46:19 global rmr_xapp_defconfig 03:46:19 rmr_xapp_defconfig = RMRXapp(default_rmr_handler, rmr_port=4567, use_fake_sdl=True) 03:46:19 # in unit tests we need to thread here or else execution is not returned! 03:46:19 rmr_xapp_defconfig.run(thread=True, rmr_timeout=1) 03:46:19 write_config_file() 03:46:19 # give the work loop a chance to timeout on RMR and process the config event 03:46:19 time.sleep(3) 03:46:19 > rmr_xapp_defconfig.stop() 03:46:19 03:46:19 tests/test_config.py:86: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 ricxappframe/xapp_frame.py:968: in stop 03:46:19 super().stop() 03:46:19 ricxappframe/xapp_frame.py:797: in stop 03:46:19 self.xapp_shutdown() 03:46:19 ricxappframe/xapp_frame.py:272: in xapp_shutdown 03:46:19 self.deregister() 03:46:19 ricxappframe/xapp_frame.py:249: in deregister 03:46:19 self._do_post(dereg_url, request_string) 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 url = 'http://service-ricplt-appmgr-http.ricplt:8080/ric/v1/deregister' 03:46:19 msg = {'appInstanceName': None, 'appName': None}, num_of_retries = 5 03:46:19 03:46:19 def _do_post(self, url, msg, num_of_retries=5): 03:46:19 """ 03:46:19 Method for xAPp to send POST request with retry mechanism 03:46:19 Parameters 03:46:19 ---------- 03:46:19 url: string 03:46:19 endpoint to send request 03:46:19 msg: string 03:46:19 json msg containing the xapp details 03:46:19 Returns 03:46:19 ------- 03:46:19 object 03:46:19 response from server 03:46:19 """ 03:46:19 retries = Retry(total=num_of_retries, 03:46:19 backoff_factor=1, 03:46:19 allowed_methods=frozenset(['GET', 'POST'])) 03:46:19 adapter = HTTPAdapter(max_retries=retries) 03:46:19 resp = None 03:46:19 03:46:19 with requests.Session() as session: 03:46:19 # set Retry mechanism for any failure 03:46:19 03:46:19 session.mount('http://', adapter) 03:46:19 session.mount('https://', adapter) 03:46:19 03:46:19 > resp = session.post(reg_url, request_string) 03:46:19 E NameError: name 'reg_url' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:181: NameError 03:46:19 ----------------------------- Captured stderr call ----------------------------- 03:46:19 1703735157356 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4652 target=127.0.0.1:4569 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735157356 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4652 target=127.0.0.1:4564 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735157356 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4652 target=127.0.0.1:3564 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735157356 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4652 target=127.0.0.1:3563 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735157429 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:4569 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735157429 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:4564 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735157429 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:3564 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735157429 28053/RMR [INFO] sends: ts=1703735157 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:3563 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 __________________________ test_custom_config_handler __________________________ 03:46:19 03:46:19 monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f68285e5de0> 03:46:19 03:46:19 def test_custom_config_handler(monkeypatch): 03:46:19 # point watcher at the file 03:46:19 init_config_file() 03:46:19 monkeypatch.setenv(Constants.CONFIG_FILE_ENV, config_file_path) 03:46:19 03:46:19 def default_handler(self, summary, sbuf): 03:46:19 pass 03:46:19 03:46:19 startup_config_event = False 03:46:19 change_config_event = False 03:46:19 03:46:19 def config_handler(self, json): 03:46:19 mdc_logger.info("config_handler: json {}".format(json)) 03:46:19 nonlocal startup_config_event 03:46:19 nonlocal change_config_event 03:46:19 if "start" in json: 03:46:19 startup_config_event = True 03:46:19 if "change" in json: 03:46:19 change_config_event = True 03:46:19 03:46:19 # listen port is irrelevant, no messages arrive 03:46:19 global rmr_xapp_config 03:46:19 rmr_xapp_config = RMRXapp(default_handler, config_handler=config_handler, rmr_port=4567, use_fake_sdl=True) 03:46:19 assert startup_config_event 03:46:19 rmr_xapp_config.run(thread=True, rmr_timeout=1) # in unit tests we need to thread here or else execution is not returned! 03:46:19 write_config_file() 03:46:19 # give the work loop a chance to timeout on RMR and process the config event 03:46:19 time.sleep(3) 03:46:19 assert change_config_event 03:46:19 > rmr_xapp_config.stop() 03:46:19 03:46:19 tests/test_config.py:119: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 ricxappframe/xapp_frame.py:968: in stop 03:46:19 super().stop() 03:46:19 ricxappframe/xapp_frame.py:797: in stop 03:46:19 self.xapp_shutdown() 03:46:19 ricxappframe/xapp_frame.py:272: in xapp_shutdown 03:46:19 self.deregister() 03:46:19 ricxappframe/xapp_frame.py:249: in deregister 03:46:19 self._do_post(dereg_url, request_string) 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 url = 'http://service-ricplt-appmgr-http.ricplt:8080/ric/v1/deregister' 03:46:19 msg = {'appInstanceName': None, 'appName': None}, num_of_retries = 5 03:46:19 03:46:19 def _do_post(self, url, msg, num_of_retries=5): 03:46:19 """ 03:46:19 Method for xAPp to send POST request with retry mechanism 03:46:19 Parameters 03:46:19 ---------- 03:46:19 url: string 03:46:19 endpoint to send request 03:46:19 msg: string 03:46:19 json msg containing the xapp details 03:46:19 Returns 03:46:19 ------- 03:46:19 object 03:46:19 response from server 03:46:19 """ 03:46:19 retries = Retry(total=num_of_retries, 03:46:19 backoff_factor=1, 03:46:19 allowed_methods=frozenset(['GET', 'POST'])) 03:46:19 adapter = HTTPAdapter(max_retries=retries) 03:46:19 resp = None 03:46:19 03:46:19 with requests.Session() as session: 03:46:19 # set Retry mechanism for any failure 03:46:19 03:46:19 session.mount('http://', adapter) 03:46:19 session.mount('https://', adapter) 03:46:19 03:46:19 > resp = session.post(reg_url, request_string) 03:46:19 E NameError: name 'reg_url' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:181: NameError 03:46:19 ----------------------------- Captured stderr call ----------------------------- 03:46:19 1703735160503 28053/RMR [INFO] sends: ts=1703735160 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:4569 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735160503 28053/RMR [INFO] sends: ts=1703735160 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:4564 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735160503 28053/RMR [INFO] sends: ts=1703735160 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:3564 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 1703735160503 28053/RMR [INFO] sends: ts=1703735160 src=prd-ubuntu1804-builder-2c-2g-2153:4567 target=127.0.0.1:3563 open=0 succ=0 fail=0 (hard=0 soft=0) 03:46:19 ________________________________ test_bad_init _________________________________ 03:46:19 03:46:19 def test_bad_init(): 03:46:19 """test that an xapp whose rmr fails to init blows up""" 03:46:19 03:46:19 def entry(self): 03:46:19 pass 03:46:19 03:46:19 with pytest.raises(InitFailed): 03:46:19 > bad_xapp = Xapp(entrypoint=entry, rmr_port=-1) 03:46:19 E TypeError: Xapp.__init__() got an unexpected keyword argument 'entrypoint' 03:46:19 03:46:19 tests/test_init.py:30: TypeError 03:46:19 ____________________________ test_init_general_xapp ____________________________ 03:46:19 03:46:19 def test_init_general_xapp(): 03:46:19 def entry(self): 03:46:19 # normally we would have some kind of loop here 03:46:19 print("bye") 03:46:19 03:46:19 > gen_xapp = Xapp(entrypoint=entry, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 E TypeError: Xapp.__init__() got an unexpected keyword argument 'entrypoint' 03:46:19 03:46:19 tests/test_init.py:46: TypeError 03:46:19 ______________________________ test_init_rmr_xapp ______________________________ 03:46:19 03:46:19 def test_init_rmr_xapp(): 03:46:19 def post_init(self): 03:46:19 print("hey") 03:46:19 03:46:19 def foo(self, _summary, _sbuf): 03:46:19 pass 03:46:19 03:46:19 > rmr_xapp = RMRXapp(foo, post_init=post_init, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_init.py:59: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 ricxappframe/xapp_frame.py:853: in __init__ 03:46:19 super().__init__( 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4562, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = .post_init at 0x7f68284b1090> 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 ________________________________ test_rmr_init _________________________________ 03:46:19 03:46:19 def test_rmr_init(): 03:46:19 03:46:19 # test variables 03:46:19 def_pay = None 03:46:19 sixty_pay = None 03:46:19 03:46:19 # create rmr app 03:46:19 03:46:19 def default_handler(self, summary, sbuf): 03:46:19 nonlocal def_pay 03:46:19 def_pay = json.loads(summary["payload"]) 03:46:19 self.rmr_free(sbuf) 03:46:19 03:46:19 def sixtythou_handler(self, summary, sbuf): 03:46:19 nonlocal sixty_pay 03:46:19 sixty_pay = json.loads(summary["payload"]) 03:46:19 self.rmr_free(sbuf) 03:46:19 03:46:19 global rmr_xapp 03:46:19 > rmr_xapp = RMRXapp(default_handler, rmr_port=4564, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:52: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 ricxappframe/xapp_frame.py:853: in __init__ 03:46:19 super().__init__( 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4564, rmr_wait_for_ready = True, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 _____________________________ test_rmr_healthcheck _____________________________ 03:46:19 03:46:19 def test_rmr_healthcheck(): 03:46:19 # thanos uses the rmr xapp to healthcheck the rmr xapp 03:46:19 03:46:19 # test variables 03:46:19 health_pay = None 03:46:19 03:46:19 def post_init(self): 03:46:19 self.rmr_send(b"", Constants.RIC_HEALTH_CHECK_REQ) 03:46:19 03:46:19 def default_handler(self, summary, sbuf): 03:46:19 pass 03:46:19 03:46:19 global rmr_xapp_health 03:46:19 > rmr_xapp_health = RMRXapp(default_handler, post_init=post_init, rmr_port=4666, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:100: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 ricxappframe/xapp_frame.py:853: in __init__ 03:46:19 super().__init__( 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4666, rmr_wait_for_ready = True, use_fake_sdl = True 03:46:19 post_init = .post_init at 0x7f6828144790> 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 ___________________________ test_rnib_get_list_nodeb ___________________________ 03:46:19 03:46:19 rnib_information = [b'\n\nnodeb_5678\x12\x14\n\tplmn_5678\x12\x07nb_5678\x18\x06', b''] 03:46:19 03:46:19 def test_rnib_get_list_nodeb(rnib_information): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:117: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 _________________________ test_rnib_get_list_all_nodeb _________________________ 03:46:19 03:46:19 rnib_information = [b'\n\nnodeb_5678\x12\x14\n\tplmn_5678\x12\x07nb_5678\x18\x06', b''] 03:46:19 03:46:19 def test_rnib_get_list_all_nodeb(rnib_information): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:145: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 ___________________________ test_rnib_get_list_cells ___________________________ 03:46:19 03:46:19 rnib_cellinformation = [b'\x08\x01', b'\x08\x01'] 03:46:19 03:46:19 def test_rnib_get_list_cells(rnib_cellinformation): 03:46:19 global rnib_xapp 03:46:19 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:166: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 ---------------------------- Captured stdout setup ----------------------------- 03:46:19 03:46:19 _____________________________ test_rnib_get_nodeb ______________________________ 03:46:19 03:46:19 rnib_helpers = 03:46:19 03:46:19 def test_rnib_get_nodeb(rnib_helpers): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:184: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 ______________________________ test_rnib_get_cell ______________________________ 03:46:19 03:46:19 rnib_helpers = 03:46:19 03:46:19 def test_rnib_get_cell(rnib_helpers): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:201: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 ___________________________ test_rnib_get_cell_by_id ___________________________ 03:46:19 03:46:19 rnib_helpers = 03:46:19 03:46:19 def test_rnib_get_cell_by_id(rnib_helpers): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:218: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 _____________________________ test_rnib_get_cells ______________________________ 03:46:19 03:46:19 rnib_helpers = 03:46:19 03:46:19 def test_rnib_get_cells(rnib_helpers): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:235: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 __________________________ test_rnib_get_global_nodeb __________________________ 03:46:19 03:46:19 rnib_helpers = 03:46:19 03:46:19 def test_rnib_get_global_nodeb(rnib_helpers): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:252: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 __________________________ test_rnib_get_ranfunction ___________________________ 03:46:19 03:46:19 rnib_helpers = 03:46:19 03:46:19 def test_rnib_get_ranfunction(rnib_helpers): 03:46:19 global rnib_xapp 03:46:19 > rnib_xapp = _BaseXapp(rmr_port=4777, rmr_wait_for_ready=False, use_fake_sdl=True) 03:46:19 03:46:19 tests/test_xapps.py:269: 03:46:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 03:46:19 03:46:19 self = 03:46:19 rmr_port = 4777, rmr_wait_for_ready = False, use_fake_sdl = True 03:46:19 post_init = None 03:46:19 03:46:19 def __init__(self, rmr_port=4562, rmr_wait_for_ready=True, use_fake_sdl=False, post_init=None): 03:46:19 """ 03:46:19 Documented in the class comment. 03:46:19 """ 03:46:19 # PUBLIC, can be used by xapps using self.(name): 03:46:19 self.logger = Logger(name=__name__) 03:46:19 self._appthread = None 03:46:19 self._is_registered = False 03:46:19 03:46:19 # Start rmr rcv thread 03:46:19 self._rmr_loop = xapp_rmr.RmrLoop(port=rmr_port, wait_for_ready=rmr_wait_for_ready) 03:46:19 self._mrc = self._rmr_loop.mrc # for convenience 03:46:19 03:46:19 # SDL 03:46:19 self.sdl = SDLWrapper(use_fake_sdl) 03:46:19 03:46:19 # Config 03:46:19 # The environment variable specifies the path to the Xapp config file 03:46:19 self._config_path = os.environ.get(Constants.CONFIG_FILE_ENV, None) 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 self._inotify = inotify_simple.INotify() 03:46:19 self._inotify.add_watch(self._config_path, inotify_simple.flags.MODIFY) 03:46:19 self.logger.debug("__init__: watching config file {}".format(self._config_path)) 03:46:19 else: 03:46:19 self._inotify = None 03:46:19 self.logger.warning("__init__: NOT watching any config file") 03:46:19 03:46:19 # configuration data for xapp registration and deregistration 03:46:19 self._config_data = None 03:46:19 if self._config_path and os.path.isfile(self._config_path): 03:46:19 with open(self._config_path) as json_file: 03:46:19 self._config_data = json.load(json_file) 03:46:19 else: 03:46:19 > elf.logger.error("__init__: Cannot Read config file for xapp Registration") 03:46:19 E NameError: name 'elf' is not defined 03:46:19 03:46:19 ricxappframe/xapp_frame.py:119: NameError 03:46:19 =============================== warnings summary =============================== 03:46:19 tests/test_metric.py::test_metric_set_get 03:46:19 /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.tox/code/lib/python3.10/site-packages/_pytest/threadexception.py:73: PytestUnhandledThreadExceptionWarning: Exception in thread Thread-5 (loop) 03:46:19 03:46:19 Traceback (most recent call last): 03:46:19 File "/w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/ricxappframe/xapp_frame.py", line 952, in loop 03:46:19 with open(self._config_path) as json_file: 03:46:19 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/file.json' 03:46:19 03:46:19 During handling of the above exception, another exception occurred: 03:46:19 03:46:19 Traceback (most recent call last): 03:46:19 File "/opt/pyenv/versions/3.10.6/lib/python3.10/threading.py", line 1016, in _bootstrap_inner 03:46:19 self.run() 03:46:19 File "/opt/pyenv/versions/3.10.6/lib/python3.10/threading.py", line 953, in run 03:46:19 self._target(*self._args, **self._kwargs) 03:46:19 File "/w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/ricxappframe/xapp_frame.py", line 957, in loop 03:46:19 raise XappError(f"Error occurred during polling configuration handler: {error.str()}") 03:46:19 AttributeError: 'FileNotFoundError' object has no attribute 'str' 03:46:19 03:46:19 warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg)) 03:46:19 03:46:19 -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 03:46:19 ---------------------- generated xml file: /tmp/tests.xml ---------------------- 03:46:19 03:46:19 ---------- coverage: platform linux, python 3.10.6-final-0 ----------- 03:46:19 Name Stmts Miss Cover Missing 03:46:19 ----------------------------------------------------------------------- 03:46:19 ricxappframe/__init__.py 0 0 100% 03:46:19 ricxappframe/alarm/__init__.py 0 0 100% 03:46:19 ricxappframe/alarm/alarm.py 94 2 98% 250-251 03:46:19 ricxappframe/alarm/exceptions.py 2 0 100% 03:46:19 ricxappframe/constants.py 5 0 100% 03:46:19 ricxappframe/e2ap/__init__.py 0 0 100% 03:46:19 ricxappframe/e2ap/asn1.py 224 0 100% 03:46:19 ricxappframe/e2ap/asn1clib/__init__.py 0 0 100% 03:46:19 ricxappframe/e2ap/asn1clib/asn1clib.py 2 0 100% 03:46:19 ricxappframe/e2ap/asn1clib/types.py 16 0 100% 03:46:19 ricxappframe/logger/__init__.py 0 0 100% 03:46:19 ricxappframe/logger/mdclogger.py 133 22 83% 83-87, 95, 188-189, 196, 198, 200, 202, 220-224, 227-234 03:46:19 ricxappframe/metric/__init__.py 0 0 100% 03:46:19 ricxappframe/metric/exceptions.py 2 0 100% 03:46:19 ricxappframe/metric/metric.py 58 3 95% 122, 201-202 03:46:19 ricxappframe/rmr/__init__.py 0 0 100% 03:46:19 ricxappframe/rmr/exceptions.py 4 0 100% 03:46:19 ricxappframe/rmr/helpers.py 28 0 100% 03:46:19 ricxappframe/rmr/rmr.py 156 4 97% 188, 257, 454, 544 03:46:19 ricxappframe/rmr/rmr_mocks/__init__.py 0 0 100% 03:46:19 ricxappframe/rmr/rmr_mocks/rmr_mocks.py 78 6 92% 39, 59, 79, 115, 133, 148 03:46:19 ricxappframe/rmr/rmrclib/__init__.py 0 0 100% 03:46:19 ricxappframe/rmr/rmrclib/rmrclib.py 38 1 97% 53 03:46:19 ricxappframe/util/__init__.py 0 0 100% 03:46:19 ricxappframe/util/constants.py 11 0 100% 03:46:19 ricxappframe/xapp_frame.py 277 142 49% 120, 124, 142-153, 183-186, 197-227, 251-255, 266, 273-274, 286-288, 308-318, 343-349, 364, 392, 420, 451, 467, 494-500, 520, 540, 567-572, 596-601, 626-632, 659-670, 687-692, 715-720, 743-751, 757, 781, 795, 799, 870-873, 939-943, 962, 969-970, 1003-1004, 1010-1011 03:46:19 ricxappframe/xapp_rest.py 91 12 87% 66, 72-74, 131-132, 142-143, 155-156, 191-193 03:46:19 ricxappframe/xapp_rmr.py 44 25 43% 76-94, 107-113, 126, 129-140 03:46:19 ricxappframe/xapp_sdl.py 94 2 98% 53, 655 03:46:19 ricxappframe/xapp_subscribe.py 54 3 94% 64, 103, 171 03:46:19 ricxappframe/xapp_symptomdata.py 119 20 83% 43, 111-116, 152, 154-156, 160-161, 200-201, 221-224, 228 03:46:19 ----------------------------------------------------------------------- 03:46:19 TOTAL 1530 242 84% 03:46:19 Coverage HTML written to dir htmlcov 03:46:19 Coverage XML written to file coverage.xml 03:46:19 03:46:19 Required test coverage of 70% reached. Total coverage: 84.18% 03:46:19 =========================== short test summary info ============================ 03:46:19 FAILED tests/test_config.py::test_config_no_env - NameError: name 'elf' is no... 03:46:19 FAILED tests/test_config.py::test_default_config_handler - NameError: name 'r... 03:46:19 FAILED tests/test_config.py::test_custom_config_handler - NameError: name 're... 03:46:19 FAILED tests/test_init.py::test_bad_init - TypeError: Xapp.__init__() got an ... 03:46:19 FAILED tests/test_init.py::test_init_general_xapp - TypeError: Xapp.__init__(... 03:46:19 FAILED tests/test_init.py::test_init_rmr_xapp - NameError: name 'elf' is not ... 03:46:19 FAILED tests/test_xapps.py::test_rmr_init - NameError: name 'elf' is not defined 03:46:19 FAILED tests/test_xapps.py::test_rmr_healthcheck - NameError: name 'elf' is n... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_list_nodeb - NameError: name 'elf' ... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_list_all_nodeb - NameError: name 'e... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_list_cells - NameError: name 'elf' ... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_nodeb - NameError: name 'elf' is no... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_cell - NameError: name 'elf' is not... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_cell_by_id - NameError: name 'elf' ... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_cells - NameError: name 'elf' is no... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_global_nodeb - NameError: name 'elf... 03:46:19 FAILED tests/test_xapps.py::test_rnib_get_ranfunction - NameError: name 'elf'... 03:46:19 ================== 17 failed, 58 passed, 1 warning in 28.38s =================== 03:46:19 code: exit 1 (28.89 seconds) /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master> pytest --cov ricxappframe --cov-report xml --cov-report term-missing --cov-report html --cov-fail-under=70 --junitxml=/tmp/tests.xml pid=28053 03:46:19 .pkg: _exit> python /tmp/venv-EUPy/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ 03:46:19 code: FAIL ✖ in 45.18 seconds 03:46:19 flake8: install_deps> python -I -m pip install flake8 03:46:21 flake8: freeze> python -m pip freeze --all 03:46:21 flake8: flake8==6.1.0,mccabe==0.7.0,pip==23.3.1,pycodestyle==2.11.1,pyflakes==3.1.0,setuptools==69.0.2,wheel==0.42.0 03:46:21 flake8: commands[0]> flake8 setup.py ricxappframe tests 03:46:22 ricxappframe/xapp_frame.py:119:13: F821 undefined name 'elf' 03:46:22 ricxappframe/xapp_frame.py:143:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_frame.py:169:46: W291 trailing whitespace 03:46:22 ricxappframe/xapp_frame.py:170:29: E127 continuation line over-indented for visual indent 03:46:22 ricxappframe/xapp_frame.py:171:29: E127 continuation line over-indented for visual indent 03:46:22 ricxappframe/xapp_frame.py:177:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_frame.py:181:33: F821 undefined name 'reg_url' 03:46:22 ricxappframe/xapp_frame.py:181:42: F821 undefined name 'request_string' 03:46:22 ricxappframe/xapp_frame.py:185:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_frame.py:191:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_frame.py:200:9: F841 local variable 'pltnamespace' is assigned to but never used 03:46:22 ricxappframe/xapp_frame.py:206:29: F541 f-string is missing placeholders 03:46:22 ricxappframe/xapp_frame.py:218:50: F821 undefined name 'plt_namespace' 03:46:22 ricxappframe/xapp_frame.py:218:65: F821 undefined name 'plt_namespace' 03:46:22 ricxappframe/xapp_frame.py:224:29: F541 f-string is missing placeholders 03:46:22 ricxappframe/xapp_frame.py:225:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_frame.py:232:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_frame.py:240:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_frame.py:252:29: F541 f-string is missing placeholders 03:46:22 ricxappframe/xapp_frame.py:252:63: W291 trailing whitespace 03:46:22 ricxappframe/xapp_rmr.py:127:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_rmr.py:130:76: F821 undefined name 'port' 03:46:22 ricxappframe/xapp_rmr.py:133:1: W293 blank line contains whitespace 03:46:22 ricxappframe/xapp_rmr.py:144:1: W391 blank line at end of file 03:46:22 flake8: exit 1 (0.79 seconds) /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master> flake8 setup.py ricxappframe tests pid=28316 03:46:22 code: FAIL code 1 (45.18=setup[16.29]+cmd[28.89] seconds) 03:46:22 flake8: FAIL code 1 (2.98=setup[2.19]+cmd[0.79] seconds) 03:46:22 evaluation failed :( (48.32 seconds) 03:46:22 + tox_status=255 03:46:22 + echo '---> Completed tox runs' 03:46:22 ---> Completed tox runs 03:46:22 + for i in .tox/*/log 03:46:22 ++ echo .tox/code/log 03:46:22 ++ awk -F/ '{print $2}' 03:46:22 + tox_env=code 03:46:22 + cp -r .tox/code/log /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/tox/code 03:46:22 + for i in .tox/*/log 03:46:22 ++ echo .tox/flake8/log 03:46:22 ++ awk -F/ '{print $2}' 03:46:22 + tox_env=flake8 03:46:22 + cp -r .tox/flake8/log /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/tox/flake8 03:46:22 + DOC_DIR=docs/_build/html 03:46:22 + [[ -d docs/_build/html ]] 03:46:22 + echo '---> tox-run.sh ends' 03:46:22 ---> tox-run.sh ends 03:46:22 + test 255 -eq 0 03:46:22 + exit 255 03:46:22 ++ '[' 1 = 1 ']' 03:46:22 ++ '[' -x /usr/bin/clear_console ']' 03:46:22 ++ /usr/bin/clear_console -q 03:46:22 Build step 'Execute shell' marked build as failure 03:46:22 $ ssh-agent -k 03:46:22 unset SSH_AUTH_SOCK; 03:46:22 unset SSH_AGENT_PID; 03:46:22 echo Agent pid 6453 killed; 03:46:22 [ssh-agent] Stopped. 03:46:22 [PostBuildScript] - [INFO] Executing post build scripts. 03:46:22 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins4421641168787532426.sh 03:46:22 ---> sysstat.sh 03:46:23 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins2690655537338076420.sh 03:46:23 ---> package-listing.sh 03:46:23 ++ facter osfamily 03:46:23 ++ tr '[:upper:]' '[:lower:]' 03:46:23 + OS_FAMILY=debian 03:46:23 + workspace=/w/workspace/ric-plt-xapp-frame-py-pypi-verify-master 03:46:23 + START_PACKAGES=/tmp/packages_start.txt 03:46:23 + END_PACKAGES=/tmp/packages_end.txt 03:46:23 + DIFF_PACKAGES=/tmp/packages_diff.txt 03:46:23 + PACKAGES=/tmp/packages_start.txt 03:46:23 + '[' /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master ']' 03:46:23 + PACKAGES=/tmp/packages_end.txt 03:46:23 + case "${OS_FAMILY}" in 03:46:23 + grep '^ii' 03:46:23 + dpkg -l 03:46:23 + '[' -f /tmp/packages_start.txt ']' 03:46:23 + '[' -f /tmp/packages_end.txt ']' 03:46:23 + diff /tmp/packages_start.txt /tmp/packages_end.txt 03:46:23 + true 03:46:23 + '[' /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master ']' 03:46:23 + mkdir -p /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/ 03:46:23 + cp -f /tmp/packages_diff.txt /tmp/packages_end.txt /tmp/packages_start.txt /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/archives/ 03:46:23 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins10027286266441624067.sh 03:46:23 ---> capture-instance-metadata.sh 03:46:23 Setup pyenv: 03:46:23 system 03:46:23 3.8.13 03:46:23 3.9.13 03:46:23 * 3.10.6 (set by /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.python-version) 03:46:23 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-Tu2T from file:/tmp/.os_lf_venv 03:46:25 lf-activate-venv(): INFO: Installing: lftools 03:46:39 lf-activate-venv(): INFO: Adding /tmp/venv-Tu2T/bin to PATH 03:46:39 INFO: Running in OpenStack, capturing instance metadata 03:46:39 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins1431443026874967845.sh 03:46:39 provisioning config files... 03:46:39 copy managed file [jenkins-log-archives-settings] to file:/w/workspace/ric-plt-xapp-frame-py-pypi-verify-master@tmp/config15068121381055634498tmp 03:46:39 Regular expression run condition: Expression=[^.*logs-s3.*], Label=[] 03:46:39 Run condition [Regular expression match] preventing perform for step [Provide Configuration files] 03:46:39 [EnvInject] - Injecting environment variables from a build step. 03:46:39 [EnvInject] - Injecting as environment variables the properties content 03:46:39 SERVER_ID=logs 03:46:39 03:46:39 [EnvInject] - Variables injected successfully. 03:46:39 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins8427498443183068264.sh 03:46:39 ---> create-netrc.sh 03:46:39 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins3278322201892204091.sh 03:46:39 ---> python-tools-install.sh 03:46:39 Setup pyenv: 03:46:39 system 03:46:39 3.8.13 03:46:39 3.9.13 03:46:39 * 3.10.6 (set by /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.python-version) 03:46:39 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-Tu2T from file:/tmp/.os_lf_venv 03:46:41 lf-activate-venv(): INFO: Installing: lftools 03:46:52 lf-activate-venv(): INFO: Adding /tmp/venv-Tu2T/bin to PATH 03:46:52 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins18079853771239929488.sh 03:46:52 ---> sudo-logs.sh 03:46:52 Archiving 'sudo' log.. 03:46:53 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash /tmp/jenkins3093890601378372984.sh 03:46:53 ---> job-cost.sh 03:46:53 Setup pyenv: 03:46:53 system 03:46:53 3.8.13 03:46:53 3.9.13 03:46:53 * 3.10.6 (set by /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.python-version) 03:46:53 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-Tu2T from file:/tmp/.os_lf_venv 03:46:54 lf-activate-venv(): INFO: Installing: zipp==1.1.0 python-openstackclient urllib3~=1.26.15 03:47:03 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. 03:47:03 lftools 0.37.8 requires openstacksdk<1.5.0, but you have openstacksdk 2.0.0 which is incompatible. 03:47:04 lf-activate-venv(): INFO: Adding /tmp/venv-Tu2T/bin to PATH 03:47:04 INFO: No Stack... 03:47:04 INFO: Retrieving Pricing Info for: v2-highcpu-2 03:47:04 INFO: Archiving Costs 03:47:04 [ric-plt-xapp-frame-py-pypi-verify-master] $ /bin/bash -l /tmp/jenkins13803740322375364207.sh 03:47:05 ---> logs-deploy.sh 03:47:05 Setup pyenv: 03:47:05 system 03:47:05 3.8.13 03:47:05 3.9.13 03:47:05 * 3.10.6 (set by /w/workspace/ric-plt-xapp-frame-py-pypi-verify-master/.python-version) 03:47:05 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-Tu2T from file:/tmp/.os_lf_venv 03:47:06 lf-activate-venv(): INFO: Installing: lftools 03:47:19 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. 03:47:19 python-openstackclient 6.4.0 requires openstacksdk>=2.0.0, but you have openstacksdk 1.4.0 which is incompatible. 03:47:19 lf-activate-venv(): INFO: Adding /tmp/venv-Tu2T/bin to PATH 03:47:19 INFO: Nexus URL https://nexus.o-ran-sc.org path production/vex-sjc-oran-jenkins-prod-1/ric-plt-xapp-frame-py-pypi-verify-master/261 03:47:19 INFO: archiving workspace using pattern(s): 03:47:20 Archives upload complete. 03:47:21 INFO: archiving logs to Nexus 03:47:21 ---> uname -a: 03:47:21 Linux prd-ubuntu1804-builder-2c-2g-2153 5.4.0-146-generic #163-Ubuntu SMP Fri Mar 17 18:26:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux 03:47:21 03:47:21 03:47:21 ---> lscpu: 03:47:21 Architecture: x86_64 03:47:21 CPU op-mode(s): 32-bit, 64-bit 03:47:21 Byte Order: Little Endian 03:47:21 Address sizes: 40 bits physical, 48 bits virtual 03:47:21 CPU(s): 2 03:47:21 On-line CPU(s) list: 0,1 03:47:21 Thread(s) per core: 1 03:47:21 Core(s) per socket: 1 03:47:21 Socket(s): 2 03:47:21 NUMA node(s): 1 03:47:21 Vendor ID: AuthenticAMD 03:47:21 CPU family: 23 03:47:21 Model: 49 03:47:21 Model name: AMD EPYC-Rome Processor 03:47:21 Stepping: 0 03:47:21 CPU MHz: 2800.000 03:47:21 BogoMIPS: 5600.00 03:47:21 Virtualization: AMD-V 03:47:21 Hypervisor vendor: KVM 03:47:21 Virtualization type: full 03:47:21 L1d cache: 64 KiB 03:47:21 L1i cache: 64 KiB 03:47:21 L2 cache: 1 MiB 03:47:21 L3 cache: 32 MiB 03:47:21 NUMA node0 CPU(s): 0,1 03:47:21 Vulnerability Itlb multihit: Not affected 03:47:21 Vulnerability L1tf: Not affected 03:47:21 Vulnerability Mds: Not affected 03:47:21 Vulnerability Meltdown: Not affected 03:47:21 Vulnerability Mmio stale data: Not affected 03:47:21 Vulnerability Retbleed: Vulnerable 03:47:21 Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp 03:47:21 Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization 03:47:21 Vulnerability Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected 03:47:21 Vulnerability Srbds: Not affected 03:47:21 Vulnerability Tsx async abort: Not affected 03:47:21 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 xsaves clzero xsaveerptr wbnoinvd arat npt nrip_save umip rdpid arch_capabilities 03:47:21 03:47:21 03:47:21 ---> nproc: 03:47:21 2 03:47:21 03:47:21 03:47:21 ---> df -h: 03:47:21 Filesystem Size Used Avail Use% Mounted on 03:47:21 udev 975M 0 975M 0% /dev 03:47:21 tmpfs 199M 1012K 198M 1% /run 03:47:21 /dev/vda1 20G 8.4G 11G 44% / 03:47:21 tmpfs 992M 0 992M 0% /dev/shm 03:47:21 tmpfs 5.0M 0 5.0M 0% /run/lock 03:47:21 tmpfs 992M 0 992M 0% /sys/fs/cgroup 03:47:21 /dev/loop0 62M 62M 0 100% /snap/core20/1405 03:47:21 /dev/loop1 44M 44M 0 100% /snap/snapd/15177 03:47:21 /dev/loop2 68M 68M 0 100% /snap/lxd/22753 03:47:21 /dev/vda15 105M 6.1M 99M 6% /boot/efi 03:47:21 tmpfs 199M 0 199M 0% /run/user/1001 03:47:21 03:47:21 03:47:21 ---> free -m: 03:47:21 total used free shared buff/cache available 03:47:21 Mem: 1983 407 137 2 1438 1394 03:47:21 Swap: 1023 0 1023 03:47:21 03:47:21 03:47:21 ---> ip addr: 03:47:21 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 03:47:21 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 03:47:21 inet 127.0.0.1/8 scope host lo 03:47:21 valid_lft forever preferred_lft forever 03:47:21 inet6 ::1/128 scope host 03:47:21 valid_lft forever preferred_lft forever 03:47:21 2: ens3: mtu 1450 qdisc fq_codel state UP group default qlen 1000 03:47:21 link/ether fa:16:3e:16:d7:70 brd ff:ff:ff:ff:ff:ff 03:47:21 inet 10.32.6.110/23 brd 10.32.7.255 scope global dynamic ens3 03:47:21 valid_lft 86163sec preferred_lft 86163sec 03:47:21 inet6 fe80::f816:3eff:fe16:d770/64 scope link 03:47:21 valid_lft forever preferred_lft forever 03:47:21 03:47:21 03:47:21 ---> sar -b -r -n DEV: 03:47:21 Linux 5.4.0-146-generic (prd-ubuntu1804-builder-2c-2g-2153) 12/28/23 _x86_64_ (2 CPU) 03:47:21 03:47:21 03:43:27 LINUX RESTART (2 CPU) 03:47:21 03:47:21 03:44:02 tps rtps wtps dtps bread/s bwrtn/s bdscd/s 03:47:21 03:45:01 181.75 77.60 104.15 0.00 1920.22 11729.13 0.00 03:47:21 03:46:01 120.08 30.54 89.54 0.00 1114.48 14285.75 0.00 03:47:21 03:47:01 31.29 6.72 24.58 0.00 607.77 2389.07 0.00 03:47:21 Average: 110.65 38.07 72.58 0.00 1210.21 9455.35 0.00 03:47:21 03:47:21 03:44:02 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 03:47:21 03:45:01 131140 1436816 366184 18.03 56152 1327668 823696 26.75 450220 1256856 110776 03:47:21 03:46:01 97192 1401832 394912 19.45 68960 1295784 1062688 34.51 506400 1208744 17992 03:47:21 03:47:01 138752 1421512 375024 18.47 73732 1266196 830016 26.96 483260 1188792 40544 03:47:21 Average: 122361 1420053 378707 18.65 66281 1296549 905467 29.41 479960 1218131 56437 03:47:21 03:47:21 03:44:02 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 03:47:21 03:45:01 ens3 75.06 69.31 1137.72 8.10 0.00 0.00 0.00 0.00 03:47:21 03:45:01 lo 0.88 0.88 0.08 0.08 0.00 0.00 0.00 0.00 03:47:21 03:46:01 ens3 33.53 31.38 97.43 6.14 0.00 0.00 0.00 0.00 03:47:21 03:46:01 lo 2.00 2.00 0.24 0.24 0.00 0.00 0.00 0.00 03:47:21 03:47:01 ens3 20.56 19.81 43.03 11.57 0.00 0.00 0.00 0.00 03:47:21 03:47:01 lo 3.95 3.95 0.55 0.55 0.00 0.00 0.00 0.00 03:47:21 Average: ens3 42.87 40.00 422.08 8.61 0.00 0.00 0.00 0.00 03:47:21 Average: lo 2.28 2.28 0.29 0.29 0.00 0.00 0.00 0.00 03:47:21 03:47:21 03:47:21 ---> sar -P ALL: 03:47:21 Linux 5.4.0-146-generic (prd-ubuntu1804-builder-2c-2g-2153) 12/28/23 _x86_64_ (2 CPU) 03:47:21 03:47:21 03:43:27 LINUX RESTART (2 CPU) 03:47:21 03:47:21 03:44:02 CPU %user %nice %system %iowait %steal %idle 03:47:21 03:45:01 all 35.56 17.19 13.16 6.94 0.12 27.02 03:47:21 03:45:01 0 37.02 18.13 13.94 7.69 0.12 23.10 03:47:21 03:45:01 1 34.08 16.25 12.38 6.19 0.12 30.98 03:47:21 03:46:01 all 32.13 0.00 3.22 9.27 0.10 55.27 03:47:21 03:46:01 0 50.29 0.00 3.86 10.99 0.10 34.75 03:47:21 03:46:01 1 14.22 0.00 2.59 7.57 0.10 75.51 03:47:21 03:47:01 all 28.19 0.00 1.62 1.91 0.07 68.21 03:47:21 03:47:01 0 43.69 0.00 2.05 2.70 0.08 51.48 03:47:21 03:47:01 1 12.71 0.00 1.18 1.12 0.07 84.93 03:47:21 Average: all 31.93 5.63 5.94 6.04 0.10 50.37 03:47:21 Average: 0 43.71 5.97 6.57 7.12 0.10 36.54 03:47:21 Average: 1 20.19 5.30 5.31 4.96 0.09 64.16 03:47:21 03:47:21 03:47:21