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