diff --git a/agent/base b/agent/base index 8e85a1600e..205749c07e 100755 --- a/agent/base +++ b/agent/base @@ -155,36 +155,12 @@ function get_redhat_version() { cat /etc/redhat-release | awk '{ print $7 }' } -function check_enable_copr { - local copr_user=$1 - local copr_name=$2 - - if is_fedora ; then - dnf copr enable ${copr_user}/${copr_name} - else - if is_redhat ; then - rhel_version=$(get_redhat_version) - rhel_major=${rhel_version%.*} - cd /etc/yum.repos.d/ - local copr_url=https://copr.fedorainfracloud.org - local repo_file=${copr_user}-${copr_name}-epel-${rhel_major}.repo - [[ ! -f ${repo_file} ]] && wget -c ${copr_url}/coprs/${copr_user}/${copr_name}/repo/epel-${rhel_major}/${repo_file} - else - echo "Unsupported distribution" - fi - fi -} - function check_install_rpm { _n="${1}" _v="${2}" - require-rpm "${_n}" "${_v}" + _m="${3}" + _rpm=$(require-rpm "${_n}" "${_v}" "${_m}") local rc=${?} - if [[ ! -z "${_v}" ]]; then - _rpm="${_n}-${_v}" - else - _rpm="${_n}" - fi if [[ ${rc} -ne 0 ]]; then error_log "[check_install_rpm] ${_rpm} is not installed" else diff --git a/agent/bench-scripts/pbench-dbench b/agent/bench-scripts/pbench-dbench index 1768ff0ede..b1d6778f77 100755 --- a/agent/bench-scripts/pbench-dbench +++ b/agent/bench-scripts/pbench-dbench @@ -33,6 +33,7 @@ if [[ -z "${ver}" ]]; then error_log "${script_name}: package version is missing in config file" exit 1 fi +match="$(pbench-config match ${benchmark})" # Every bench-script follows a similar sequence: # 1) process bench script arguments @@ -65,10 +66,10 @@ client_nodes="" sysinfo="default" function install_dbench { - if check_install_rpm $benchmark_rpm $ver; then - debug_log "[$script_name]$benchmark_rpm is installed" + if check_install_rpm "${benchmark_rpm}" "${ver}" "${match}"; then + debug_log "[${script_name}]${benchmark_rpm}-${ver} is installed" else - error_log "[$script_name]$benchmark_rpm installation failed, exiting" + error_log "[${script_name}]${benchmark_rpm}-${ver} installation failed, exiting" exit 1 fi } diff --git a/agent/bench-scripts/pbench-fio b/agent/bench-scripts/pbench-fio index e5ea25fe6b..90af108667 100755 --- a/agent/bench-scripts/pbench-fio +++ b/agent/bench-scripts/pbench-fio @@ -26,6 +26,7 @@ if [[ -z "${ver}" ]]; then error_log "${script_name}: package version is missing in config file" exit 1 fi +match="$(pbench-config match ${benchmark})" fio_server_port="$(pbench-config server_port ${benchmark})" if [[ -z "${fio_server_port}" ]]; then error_log "${script_name}: server_port is missing in config file" @@ -174,7 +175,7 @@ function usage { } function fio_local_check_install() { - if check_install_rpm ${benchmark_rpm} ${ver}; then + if check_install_rpm "${benchmark_rpm}" "${ver}" "${match}"; then debug_log "[${script_name}] ${benchmark_rpm}-${ver} is installed" _rc=0 else diff --git a/agent/bench-scripts/pbench-iozone b/agent/bench-scripts/pbench-iozone index 15f7a19c99..6b9e8f0b2b 100755 --- a/agent/bench-scripts/pbench-iozone +++ b/agent/bench-scripts/pbench-iozone @@ -34,6 +34,7 @@ if [[ -z "${ver}" ]]; then error_log "${script_name}: package version is missing in config file" exit 1 fi +match="$(pbench-config match ${benchmark})" # Every bench-script follows a similar sequence: # 1) process bench script arguments @@ -176,10 +177,10 @@ verify_common_bench_script_options $tool_group $sysinfo ## Ensure the right version of the benchmark is installed -if check_install_rpm $benchmark_rpm $ver; then - debug_log "[$script_name]$benchmark_rpm is installed" +if check_install_rpm "${benchmark_rpm}" "${ver}" "${match}"; then + debug_log "[${script_name}]${benchmark_rpm}-${ver} is installed" else - debug_log "[$script_name]$benchmark_rpm installation failed, exiting" + debug_log "[${script_name}]${benchmark_rpm}-${ver} installation failed, exiting" exit 1 fi diff --git a/agent/bench-scripts/pbench-netperf b/agent/bench-scripts/pbench-netperf index f5620ac561..56a6a7ffb4 100755 --- a/agent/bench-scripts/pbench-netperf +++ b/agent/bench-scripts/pbench-netperf @@ -48,6 +48,7 @@ if [[ -z "${ver}" ]]; then error_log "${script_name}: package version is missing in config file" exit 1 fi +match="$(pbench-config match ${benchmark})" # Formatting spacing for output report. spacing=25 @@ -129,10 +130,10 @@ function start_server { } function install_netperf { - if check_install_rpm $benchmark_rpm $ver; then - debug_log "[$script_name]$benchmark_rpm is installed" + if check_install_rpm "${benchmark_rpm}" "${ver}" "${match}"; then + debug_log "[${script_name}]${benchmark_rpm}-${ver} is installed" else - error_log "[$script_name]$benchmark_rpm installation failed, exiting" + error_log "[${script_name}]${benchmark_rpm}-${ver} installation failed, exiting" exit 1 fi } diff --git a/agent/bench-scripts/pbench-uperf b/agent/bench-scripts/pbench-uperf index 7935067c6f..caf3ea717e 100755 --- a/agent/bench-scripts/pbench-uperf +++ b/agent/bench-scripts/pbench-uperf @@ -38,6 +38,7 @@ if [[ -z "${ver}" ]]; then error_log "${script_name}: package version is missing in config file" exit 1 fi +match="$(pbench-config match ${benchmark})" # Every bench-script follows a similar sequence: # 1) process bench script arguments @@ -191,10 +192,10 @@ function stop_server { } function install_uperf { - if check_install_rpm ${benchmark_rpm} ${ver}; then - debug_log "[$script_name] ${benchmark_rpm}-${ver} is installed" + if check_install_rpm "${benchmark_rpm}" "${ver}" "${match}"; then + debug_log "[${script_name}] ${benchmark_rpm}-${ver} is installed" else - error_log "[$script_name] ${benchmark_rpm}-${ver} is not installed, exiting" + error_log "[${script_name}] ${benchmark_rpm}-${ver} is not installed, exiting" exit 1 fi } diff --git a/agent/bench-scripts/test-bin/require-rpm b/agent/bench-scripts/test-bin/require-rpm new file mode 100755 index 0000000000..6d81b1de48 --- /dev/null +++ b/agent/bench-scripts/test-bin/require-rpm @@ -0,0 +1,13 @@ +#!/bin/bash + +args="${@}" +echo "${0} ${args}" >> ${_testlog} + +# Mimic behavior of require-rpm by exiting with 0 (for unit tests we always +# find the RPM) and emitting the RPM version that was found (whatever was given +# as arguments). +_rpm="${1}" +_ver="${2:+-${2}}" +_match="${3}" +echo "${_rpm}${_ver}" +exit 0 diff --git a/agent/bench-scripts/tests/pbench-fio/test-03.txt b/agent/bench-scripts/tests/pbench-fio/test-03.txt index 88fc0fe13c..121cca7fe3 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-03.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-03.txt @@ -14,3 +14,6 @@ [debug][1900-01-01T00:00:00.000000] [check_install_rpm] fio-3.21 is installed [debug][1900-01-01T00:00:00.000000] [pbench-fio] fio-3.21 is installed --- pbench.log file contents ++++ test-execution.log file contents +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte +--- test-execution.log file contents diff --git a/agent/bench-scripts/tests/pbench-fio/test-04.txt b/agent/bench-scripts/tests/pbench-fio/test-04.txt index d38e45b8d2..ad6461fe7e 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-04.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-04.txt @@ -851,6 +851,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-04_1900.01.01T00.00.00/6-randrw-1024KiB/sample5 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte --- test-execution.log file contents +++ fio_test-04_1900.01.01T00.00.00/metadata.log file contents [pbench] diff --git a/agent/bench-scripts/tests/pbench-fio/test-05.txt b/agent/bench-scripts/tests/pbench-fio/test-05.txt index e727b5623c..253b19149d 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-05.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-05.txt @@ -200,6 +200,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-05_1900.01.01T00.00.00/3-rw-1024KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no bar /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no bar firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no bar firewall-cmd --add-port=8765/tcp >/dev/null diff --git a/agent/bench-scripts/tests/pbench-fio/test-06.txt b/agent/bench-scripts/tests/pbench-fio/test-06.txt index 78fc561e84..c1bbe9781b 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-06.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-06.txt @@ -209,6 +209,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-06_1900.01.01T00.00.00/3-rw-1024KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no bar /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no bar firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no bar firewall-cmd --add-port=8765/tcp >/dev/null diff --git a/agent/bench-scripts/tests/pbench-fio/test-07.txt b/agent/bench-scripts/tests/pbench-fio/test-07.txt index b54b840a1d..37a38f1d4a 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-07.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-07.txt @@ -231,6 +231,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-07_1900.01.01T00.00.00/1-read-4KiB/sample5 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 firewall-cmd --add-port=8765/tcp >/dev/null diff --git a/agent/bench-scripts/tests/pbench-fio/test-08.txt b/agent/bench-scripts/tests/pbench-fio/test-08.txt index 78597b2b0b..65ea0bebe7 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-08.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-08.txt @@ -219,6 +219,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-08_1900.01.01T00.00.00/1-read-4KiB/sample5 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 firewall-cmd --add-port=8765/tcp >/dev/null diff --git a/agent/bench-scripts/tests/pbench-fio/test-13.txt b/agent/bench-scripts/tests/pbench-fio/test-13.txt index b4877c01e7..556bbbef77 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-13.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-13.txt @@ -418,6 +418,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-13_1900.01.01T00.00.00/2-read-4KiB-rbd1/sample5 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.121.112 firewall-cmd --add-port=8765/tcp >/dev/null diff --git a/agent/bench-scripts/tests/pbench-fio/test-15.txt b/agent/bench-scripts/tests/pbench-fio/test-15.txt index c87833a82f..303c58d0cf 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-15.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-15.txt @@ -323,6 +323,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-15_1900.01.01T00.00.00/6-randread-42KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte --- test-execution.log file contents +++ fio_test-15_1900.01.01T00.00.00/metadata.log file contents [pbench] diff --git a/agent/bench-scripts/tests/pbench-fio/test-16.txt b/agent/bench-scripts/tests/pbench-fio/test-16.txt index 0b70d88489..c25391c11d 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-16.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-16.txt @@ -89,6 +89,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-16_1900.01.01T00.00.00/1-rw-42KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.1.1 /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.1.1 firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no 192.168.1.1 if [ -L /dev/sda0 ]; then dev=/dev/; fi; test -b /dev/sda0 diff --git a/agent/bench-scripts/tests/pbench-fio/test-20.txt b/agent/bench-scripts/tests/pbench-fio/test-20.txt index 2ebff7b442..302f306bb8 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-20.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-20.txt @@ -233,6 +233,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-20_1900.01.01T00.00.00/3-read-1024KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no abc /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no abc firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no abc firewall-cmd --add-port=8765/tcp >/dev/null diff --git a/agent/bench-scripts/tests/pbench-fio/test-28.txt b/agent/bench-scripts/tests/pbench-fio/test-28.txt index a90bf0c551..5d17fe9e95 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-28.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-28.txt @@ -75,6 +75,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-28_1900.01.01T00.00.00/1-read-8KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte --- test-execution.log file contents +++ fio_test-28_1900.01.01T00.00.00/metadata.log file contents [pbench] diff --git a/agent/bench-scripts/tests/pbench-fio/test-30.txt b/agent/bench-scripts/tests/pbench-fio/test-30.txt index 20215714b5..23a86a7a04 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-30.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-30.txt @@ -84,6 +84,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-30_1900.01.01T00.00.00/1-read-4KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no nodeA /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no nodeA firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no nodeA killall fio >/dev/null 2>&1 diff --git a/agent/bench-scripts/tests/pbench-fio/test-31.txt b/agent/bench-scripts/tests/pbench-fio/test-31.txt index cf286c09c0..7220807833 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-31.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-31.txt @@ -84,6 +84,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-31_1900.01.01T00.00.00/1-read-4KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no nodeA /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no nodeA firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no nodeA killall fio >/dev/null 2>&1 diff --git a/agent/bench-scripts/tests/pbench-fio/test-32.txt b/agent/bench-scripts/tests/pbench-fio/test-32.txt index e0ecc1e914..f4cff5489d 100644 --- a/agent/bench-scripts/tests/pbench-fio/test-32.txt +++ b/agent/bench-scripts/tests/pbench-fio/test-32.txt @@ -119,6 +119,7 @@ fio job complete /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/fio_test-32_1900.01.01T00.00.00/1-rw-42KiB/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm fio 3.21 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no hist.bar /var/tmp/pbench-test-bench/opt/pbench-agent/bench-scripts/pbench-fio --install /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no hist.bar firewall-cmd --add-port=8765/tcp >/dev/null /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no hist.bar killall fio >/dev/null 2>&1 diff --git a/agent/bench-scripts/tests/pbench-trafficgen/test-39.txt b/agent/bench-scripts/tests/pbench-trafficgen/test-39.txt index fd8bcba98c..996e8a5cb6 100644 --- a/agent/bench-scripts/tests/pbench-trafficgen/test-39.txt +++ b/agent/bench-scripts/tests/pbench-trafficgen/test-39.txt @@ -115,4 +115,5 @@ Iteration 3-5000000-revunidirectional-74B-1000flows-0.0pct_drop complete (3 of 3 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/3-default/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=none default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=none default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm dpdk-tools --- test-execution.log file contents diff --git a/agent/bench-scripts/tests/pbench-trafficgen/test-40.txt b/agent/bench-scripts/tests/pbench-trafficgen/test-40.txt index ed5a24f3ba..a2d3812d42 100644 --- a/agent/bench-scripts/tests/pbench-trafficgen/test-40.txt +++ b/agent/bench-scripts/tests/pbench-trafficgen/test-40.txt @@ -103,4 +103,5 @@ Iteration 3-5000000-revunidirectional-74B-1000flows-0.0pct_drop complete (3 of 3 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-postprocess-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/3-5000000-revunidirectional-74B-1000flows-0.0pct_drop/sample1 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=none default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=none default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm dpdk-tools --- test-execution.log file contents diff --git a/agent/bench-scripts/tests/pbench-trafficgen/test-50.txt b/agent/bench-scripts/tests/pbench-trafficgen/test-50.txt index 7a1a58ecf1..bee5e59233 100644 --- a/agent/bench-scripts/tests/pbench-trafficgen/test-50.txt +++ b/agent/bench-scripts/tests/pbench-trafficgen/test-50.txt @@ -94,4 +94,5 @@ Iteration 1-none-bidirectional-1500B-128flows-0.002pct_drop complete (1 of 1), w /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/trafficgen_test-50_tg:trex_r:none_fs:1500_nf:128_fm:si_td:bi_ml:0.002_tt:bs_1900-01-01T00:00:00/1-default/sample3 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=none default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=none default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm dpdk-tools --- test-execution.log file contents diff --git a/agent/bench-scripts/tests/pbench-trafficgen/test-51.txt b/agent/bench-scripts/tests/pbench-trafficgen/test-51.txt index 39a0ef9f06..0e5f2ea5d2 100644 --- a/agent/bench-scripts/tests/pbench-trafficgen/test-51.txt +++ b/agent/bench-scripts/tests/pbench-trafficgen/test-51.txt @@ -299,4 +299,5 @@ Iteration 4-profile2-0.001pct_drop complete (4 of 4), with 1 pass and 0 failures /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/trafficgen_test-51_tg:trex-profile_pf:profile1,profile2_ml:0.002,0.001_tt:bs_1900-01-01T00:00:00/4-default/sample3 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=none default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=none default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm dpdk-tools --- test-execution.log file contents diff --git a/agent/bench-scripts/tests/pbench-uperf/test-00.txt b/agent/bench-scripts/tests/pbench-uperf/test-00.txt index 9cbac59513..27f86811d7 100644 --- a/agent/bench-scripts/tests/pbench-uperf/test-00.txt +++ b/agent/bench-scripts/tests/pbench-uperf/test-00.txt @@ -100,6 +100,7 @@ Iteration 2-tcp_stream-64B-1i complete (2 of 2), with 1 pass and 0 failures /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/uperf_test-00_1900.01.01T00.00.00/2-tcp_stream-64B-1i/sample2 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm uperf 1.0.7 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/scp -o StrictHostKeyChecking=no /var/tmp/pbench-test-bench/pbench-agent/uperf_test-00_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::127.0.0.1-server::127.0.0.1:20010--server_start.sh 127.0.0.1:/var/tmp/pbench-test-bench/pbench-agent/uperf_test-00_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::127.0.0.1-server::127.0.0.1:20010--server_start.sh /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/scp -o StrictHostKeyChecking=no /var/tmp/pbench-test-bench/pbench-agent/uperf_test-00_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::127.0.0.1-server::127.0.0.1:20010--server_start.sh 127.0.0.1:/var/tmp/pbench-test-bench/pbench-agent/uperf_test-00_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::127.0.0.1-server::127.0.0.1:20010--server_start.sh /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/scp -o StrictHostKeyChecking=no /var/tmp/pbench-test-bench/pbench-agent/uperf_test-00_1900.01.01T00.00.00/2-tcp_stream-64B-1i/client::127.0.0.1-server::127.0.0.1:20010--server_start.sh 127.0.0.1:/var/tmp/pbench-test-bench/pbench-agent/uperf_test-00_1900.01.01T00.00.00/2-tcp_stream-64B-1i/client::127.0.0.1-server::127.0.0.1:20010--server_start.sh diff --git a/agent/bench-scripts/tests/pbench-uperf/test-01.txt b/agent/bench-scripts/tests/pbench-uperf/test-01.txt index 18524f920a..3b26251352 100644 --- a/agent/bench-scripts/tests/pbench-uperf/test-01.txt +++ b/agent/bench-scripts/tests/pbench-uperf/test-01.txt @@ -141,6 +141,7 @@ Iteration 2-tcp_stream-64B-1i complete (2 of 2), with 1 pass and 0 failures /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-stop-tools --group=default --dir=/var/tmp/pbench-test-bench/pbench-agent/uperf_test-01_1900.01.01T00.00.00/2-tcp_stream-64B-1i/sample2 /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-start --sysinfo=default default /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/pbench-tool-meister-stop --sysinfo=default default +/var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/require-rpm uperf 1.0.7 gte /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/scp -o StrictHostKeyChecking=no /var/tmp/pbench-test-bench/pbench-agent/uperf_test-01_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::c1-server::s1:20010--client_start.sh c1:/var/tmp/pbench-test-bench/pbench-agent/uperf_test-01_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::c1-server::s1:20010--client_start.sh /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/scp -o StrictHostKeyChecking=no /var/tmp/pbench-test-bench/pbench-agent/uperf_test-01_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::c1-server::s1:20010--client_start.sh c1:/var/tmp/pbench-test-bench/pbench-agent/uperf_test-01_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::c1-server::s1:20010--client_start.sh /var/tmp/pbench-test-bench/opt/pbench-agent/unittest-scripts/scp -o StrictHostKeyChecking=no /var/tmp/pbench-test-bench/pbench-agent/uperf_test-01_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::c1-server::s1:20010--server_start.sh s1:/var/tmp/pbench-test-bench/pbench-agent/uperf_test-01_1900.01.01T00.00.00/1-tcp_rr-64B-1i/client::c1-server::s1:20010--server_start.sh diff --git a/agent/bench-scripts/unittests b/agent/bench-scripts/unittests index 8736abc4dc..7f39a94974 100755 --- a/agent/bench-scripts/unittests +++ b/agent/bench-scripts/unittests @@ -43,7 +43,7 @@ cp ${_tdir}/postprocess/* ${_testopt}/bench-scripts/postprocess let res=res+${?} cp ${_tdir}/templates/* ${_testopt}/bench-scripts/templates let res=res+${?} -cp -a $_tdir/../util-scripts/{require-rpm,validate-*,pbench-*} $_testopt/util-scripts/ +cp -a $_tdir/../util-scripts/{validate-*,pbench-*} $_testopt/util-scripts/ let res=res+$? cp -rH ${_tdir}/test-bin/* ${_testopt}/unittest-scripts/ let res=res+${?} diff --git a/agent/config/pbench-agent-default.cfg b/agent/config/pbench-agent-default.cfg index c6a041f745..ac0b7f16b2 100644 --- a/agent/config/pbench-agent-default.cfg +++ b/agent/config/pbench-agent-default.cfg @@ -39,17 +39,22 @@ interval = 30 [dbench] version = 4.00 +match = gte [fio] version = 3.21 +match = gte server_port = 8765 histogram_interval_msec = 10000 [iozone] version = 3.430 +match = gte [netperf] version = 2.7.0 +match = gte [uperf] version = 1.0.7 +match = gte diff --git a/agent/rpm/pbench-agent.spec.j2 b/agent/rpm/pbench-agent.spec.j2 index 2176a0399e..ec7eb781f2 100644 --- a/agent/rpm/pbench-agent.spec.j2 +++ b/agent/rpm/pbench-agent.spec.j2 @@ -40,8 +40,8 @@ Requires: perl, perl-Data-UUID, perl-JSON, %{?prefixjsonxs}perl-JSON-XS Requires: perl-Time-HiRes Requires: ansible, bc, bzip2, hostname, iproute, iputils, net-tools -Requires: openssh-clients, openssh-server, procps-ng, psmisc, redis, rsync -Requires: screen, sos, tar, xz +Requires: openssh-clients, openssh-server, procps-ng, psmisc, redis +Requires: rpmdevtools, rsync, screen, sos, tar, xz Obsoletes: pbench <= 0.34 Conflicts: pbench <= 0.34 diff --git a/agent/tool-scripts/base-tool b/agent/tool-scripts/base-tool index 120af6aa30..b6e5bca8d7 100755 --- a/agent/tool-scripts/base-tool +++ b/agent/tool-scripts/base-tool @@ -578,15 +578,15 @@ install) function require_rpm { _tpn="${1}" _tpv="${2}" - require-rpm ${_tpn} ${_tpv} + _installed_rpm="$(require-rpm "${_tpn}" "${_tpv}")" rc=${?} - if [[ ! -z "${_tpv}" ]]; then - _tpv="-${_tpv}" - fi if [[ ${rc} != 0 ]]; then + if [[ ! -z "${_tpv}" ]]; then + _tpv="-${_tpv}" + fi printf -- "%s: %s is not installed\n" "${tool}" "${_tpn}${_tpv}" >&2 else - printf -- "%s: %s is installed\n" "${tool}" "${_tpn}${_tpv}" + printf -- "%s: %s is installed\n" "${tool}" "${_installed_rpm}" fi return ${rc} } diff --git a/agent/tool-scripts/unittests b/agent/tool-scripts/unittests index 38fae375aa..3116ce8d02 100755 --- a/agent/tool-scripts/unittests +++ b/agent/tool-scripts/unittests @@ -76,9 +76,10 @@ if [[ ${?} -ne 0 ]]; then echo "ERROR: failed to create util-scripts directory" >&2 exit 1 fi -cp ${_tdir}/../util-scripts/require-rpm ${_optdir}/util-scripts/ 2> /dev/null +printf -- "#!/bin/bash\n\n_ver=\"\${2}\"\nif [[ ! -z \"\${_ver}\" ]]; then _ver=\"-\${_ver}\"; fi\necho \"\${1}\${_ver}\"\nexit 0\n" > ${_optdir}/util-scripts/require-rpm +chmod 775 ${_optdir}/util-scripts/require-rpm if [[ ${?} -ne 0 ]]; then - echo "ERROR: failed to copy util-scripts/require-rpm" >&2 + echo "ERROR: failed to create ${_optdir}/util-scripts/require-rpm" >&2 exit 1 fi diff --git a/agent/util-scripts/gold/test-client-tool-meister/test-53.txt b/agent/util-scripts/gold/test-client-tool-meister/test-53.txt index 0f12446984..bd24fd480a 100644 --- a/agent/util-scripts/gold/test-client-tool-meister/test-53.txt +++ b/agent/util-scripts/gold/test-client-tool-meister/test-53.txt @@ -247,4 +247,5 @@ scrape_configs: /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x mpstat /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pidof -x mpstat /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/prometheus --config.file=/var/tmp/pbench-test-utils/pbench/mock-run/tools-default/prometheus/prometheus.yml --storage.tsdb.path=/var/tmp/pbench-test-utils/pbench/mock-run/tools-default/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/consoles +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat --- test-execution.log file contents diff --git a/agent/util-scripts/gold/test-client-tool-meister/test-56.txt b/agent/util-scripts/gold/test-client-tool-meister/test-56.txt index f21601d4cd..4d90814914 100644 --- a/agent/util-scripts/gold/test-client-tool-meister/test-56.txt +++ b/agent/util-scripts/gold/test-client-tool-meister/test-56.txt @@ -619,6 +619,9 @@ scrape_configs: /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pmlogger --log=- --report -t 3s -c /var/tmp/pbench-test-utils/opt/pbench-agent/templates/pmlogger.conf --host=remote-c.example.com:55677 /var/tmp/pbench-test-utils/pbench/mock-run/tools-lite/pcp/data/red:remote-c.example.com/%Y%m%d.%H.%M /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pmproxy --log=- --foreground --timeseries --port=44566 --redishost=localhost --redisport=17001 --config=/var/tmp/pbench-test-utils/opt/pbench-agent/templates/pmproxy.conf /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/prometheus --config.file=/var/tmp/pbench-test-utils/pbench/mock-run/tools-lite/prometheus/prometheus.yml --storage.tsdb.path=/var/tmp/pbench-test-utils/pbench/mock-run/tools-lite/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/consoles +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no remote-a.example.com /var/tmp/pbench-test-utils/opt/pbench-agent/util-scripts/tool-meister/pbench-tool-meister-remote localhost 17001 tm-lite-remote-a.example.com yes /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no remote-b.example.com /var/tmp/pbench-test-utils/opt/pbench-agent/util-scripts/tool-meister/pbench-tool-meister-remote localhost 17001 tm-lite-remote-b.example.com yes /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no remote-c.example.com /var/tmp/pbench-test-utils/opt/pbench-agent/util-scripts/tool-meister/pbench-tool-meister-remote localhost 17001 tm-lite-remote-c.example.com yes diff --git a/agent/util-scripts/gold/test-client-tool-meister/test-57.txt b/agent/util-scripts/gold/test-client-tool-meister/test-57.txt index 7ebbf25b2b..97bfba94f4 100644 --- a/agent/util-scripts/gold/test-client-tool-meister/test-57.txt +++ b/agent/util-scripts/gold/test-client-tool-meister/test-57.txt @@ -575,6 +575,9 @@ scrape_configs: /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pmlogger --log=- --report -t 3s -c /var/tmp/pbench-test-utils/opt/pbench-agent/templates/pmlogger.conf --host=remote-c.example.com:55677 /var/tmp/pbench-test-utils/pbench/mock-run/tools-lite/pcp/data/red:remote-c.example.com/%Y%m%d.%H.%M /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/pmproxy --log=- --foreground --timeseries --port=44566 --redishost=localhost --redisport=17001 --config=/var/tmp/pbench-test-utils/opt/pbench-agent/templates/pmproxy.conf /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/prometheus --config.file=/var/tmp/pbench-test-utils/pbench/mock-run/tools-lite/prometheus/prometheus.yml --storage.tsdb.path=/var/tmp/pbench-test-utils/pbench/mock-run/tools-lite/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/consoles +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no remote-a.example.com /var/tmp/pbench-test-utils/opt/pbench-agent/util-scripts/tool-meister/pbench-tool-meister-remote localhost 17001 tm-lite-remote-a.example.com yes /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no remote-b.example.com /var/tmp/pbench-test-utils/opt/pbench-agent/util-scripts/tool-meister/pbench-tool-meister-remote localhost 17001 tm-lite-remote-b.example.com yes /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/ssh -o StrictHostKeyChecking=no remote-c.example.com /var/tmp/pbench-test-utils/opt/pbench-agent/util-scripts/tool-meister/pbench-tool-meister-remote localhost 17001 tm-lite-remote-c.example.com yes diff --git a/agent/util-scripts/gold/test-require-rpm/test-02.txt b/agent/util-scripts/gold/test-require-rpm/test-02.txt new file mode 100644 index 0000000000..498ea2b9c5 --- /dev/null +++ b/agent/util-scripts/gold/test-require-rpm/test-02.txt @@ -0,0 +1,150 @@ ++++ Running test-02 test-require-rpm + +Verify require-rpm with no arguments +require-rpm --> 1 ++++ stdout +--- stdout ++++ stderr +require-rpm: missing RPM name +--- stderr + +Verify require-rpm with 1 argument, RPM not found +require-rpm not-found --> 1 ++++ stdout +not-found +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 1 argument, RPM found +require-rpm found --> 0 ++++ stdout +found +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 2 arguments, RPM not found with that version +require-rpm not-found 1.0.0 --> 1 ++++ stdout +not-found-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 2 arguments, RPM found with that version +require-rpm found 1.0.0 --> 0 ++++ stdout +found-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument not recognized +require-rpm found 1.0.0 foo --> 3 ++++ stdout +--- stdout ++++ stderr +require-rpm: unrecognized 'match' argument, 'foo' +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'any', not found +require-rpm not-found 1.0.0 any --> 1 ++++ stdout +not-found-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'any', found +require-rpm found 1.0.0 any --> 0 ++++ stdout +found-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'equ', not equal +require-rpm not-equal 1.0.0 equ --> 1 ++++ stdout +not-equal-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'equ', equal +require-rpm equal 1.0.0 equ --> 0 ++++ stdout +equal-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'gte', not greater or equal +require-rpm not-greater-equal 1.0.0 gte --> 1 ++++ stdout +not-greater-equal-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'gte', greater or equal +require-rpm greater-equal 1.0.0 gte --> 0 ++++ stdout +greater-equal-1.0.42 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'gtr', not greater +require-rpm not-greater 1.0.0 gtr --> 1 ++++ stdout +not-greater-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, 3rd argument is 'gtr', greater +require-rpm greater 1.0.0 gtr --> 0 ++++ stdout +greater-1.0.42 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, multiple RPM version, 'equ', not equal +require-rpm not-equal-mult 1.0.0 equ --> 1 ++++ stdout +not-equal-mult-1.0.0 +--- stdout ++++ stderr +--- stderr + +Verify require-rpm with 3 arguments, multiple RPM version, 'equ', equal +require-rpm equal-mult 1.0.0 equ --> 0 ++++ stdout +equal-mult-1.0.0 +--- stdout ++++ stderr +--- stderr +--- Finished test-02 test-require-rpm (status=0) ++++ pbench tree state +/var/tmp/pbench-test-utils/pbench +--- pbench tree state ++++ test-execution.log file contents +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} not-found +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} found +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} not-found +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} found +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} found +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} not-found +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} found +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} not-equal +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} equal +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} not-greater-equal +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} greater-equal +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} not-greater +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} greater +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} not-equal-mult +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} equal-mult +--- test-execution.log file contents diff --git a/agent/util-scripts/gold/test-start-stop-tool-meister/test-51.txt b/agent/util-scripts/gold/test-start-stop-tool-meister/test-51.txt index 869589a7fd..c274045e55 100644 --- a/agent/util-scripts/gold/test-start-stop-tool-meister/test-51.txt +++ b/agent/util-scripts/gold/test-start-stop-tool-meister/test-51.txt @@ -255,5 +255,7 @@ testhost.example.com 0025 INFO pbench-tool-meister __exit__ -- testhost.example. testhost.example.com 0026 DEBUG pbench-tool-meister _send_client_status -- publish pbench-agent-cli-from-tms {"hostname": "testhost.example.com", "kind": "tm", "status": "terminated"} --- mock-run/tm/tm.logs file contents +++ test-execution.log file contents +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} perf /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/cp -rL /etc/ssh/ssh_config.d /var/tmp/pbench-test-utils/pbench/mock-run/ --- test-execution.log file contents diff --git a/agent/util-scripts/gold/test-start-stop-tool-meister/test-52.txt b/agent/util-scripts/gold/test-start-stop-tool-meister/test-52.txt index 78ddfb0eae..8eb078f236 100644 --- a/agent/util-scripts/gold/test-start-stop-tool-meister/test-52.txt +++ b/agent/util-scripts/gold/test-start-stop-tool-meister/test-52.txt @@ -255,5 +255,7 @@ testhost.example.com 0025 INFO pbench-tool-meister __exit__ -- testhost.example. testhost.example.com 0026 DEBUG pbench-tool-meister _send_client_status -- publish pbench-agent-cli-from-tms {"hostname": "testhost.example.com", "kind": "tm", "status": "terminated"} --- mock-run/tm/tm.logs file contents +++ test-execution.log file contents +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} pbench-sysstat +/var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/rpm --query --queryformat=%{EVR} perf /var/tmp/pbench-test-utils/opt/pbench-agent/unittest-scripts/cp -rL /etc/ssh/ssh_config.d /var/tmp/pbench-test-utils/pbench/mock-run/ --- test-execution.log file contents diff --git a/agent/util-scripts/require-rpm b/agent/util-scripts/require-rpm index c1fe08a7be..c0dd28fe68 100755 --- a/agent/util-scripts/require-rpm +++ b/agent/util-scripts/require-rpm @@ -1,20 +1,89 @@ #!/bin/bash # -*- mode: shell-script; indent-tabs-mode: t; sh-basic-offset: 4; sh-indentation: 4; tab-width: 8 -*- +# require-rpm - check to see if a RPM with the required version is installed. +# +# Usage: require-rpm [ []] +# +# Where the "rpm name" and "version" strings must be valid for an RPM, and the +# match parameter can be one of: 'any', 'equ', 'gtr', 'gte'. The default value +# for match is 'any' when no version is provided, and 'equ' when a version is +# provided. +# +# If a match is found, emits the RPM EVR (epoch, version, release) found that +# matches on stdout. If a match is not found, emits the RPM name and version +# arguments provided on stdout. +# +# Exits with 0 (success) if a match is found, 1 if a match is not found, 2 if +# an error occured during operation; 3 if the 3rd argument, match, is not +# recognized. + +if [[ -z "${1}" ]]; then + echo "require-rpm: missing RPM name" >&2 + exit 1 +fi _rpm="${1}" -if [[ ! -z "${2}" ]]; then - _version="-${2}" +_version=${2:+-${2}} +if [[ ! -z "${3}" ]]; then + _match="${3}" else - _version="" -fi -if [[ ! -z "${_PBENCH_UNIT_TESTS}" ]]; then - # Package changes are always successful for unit tests. - exit 0 + if [[ ! -z "${_version}" ]]; then + _match="equ" + else + _match="any" + fi fi -_status=$(rpm --query ${_rpm}${_version}) -rc=0 -if echo ${_status} | grep -q "is not installed"; then - rc=1 +# The inputs for the `rpmdev-vercmp` tool to compare are EVR tags. The first +# EVR is derived from a look up of the RPMs that are installed. Note well that +# this can be a list of multiple RPMs in some cases. An "EVR" stands for +# "epoch", "version", and "release". +_evr_list=$(rpm --query --queryformat="%{EVR}" ${_rpm} 2>/dev/null) +rc=1 +if echo ${_evr_list} | grep -q "is not installed"; then + echo "${_rpm}${_version}" +elif [[ "${_match}" == "any" ]]; then + echo "${_rpm}${_version}" + rc=0 +else + # Some RPMs might have multiple versions installed, iterate through all + # of them. + for rpm_installed in ${_evr_list}; do + # Exit status is 0 if the EVR's are equal, 11 if EVR1 is newer, and + # 12 if EVR2 is newer. Other exit statuses indicate problems. + _stderr=$(rpmdev-vercmp ${rpm_installed} ${_rpm}${_version} 2>&1 > /dev/null) + res=${?} + if [[ ${res} != 0 && ${res} != 11 && ${res} != 12 ]]; then + rc=2 + echo "require-rpm: rpmdev-vercmp - ${_stderr}" >&2 + break + fi + if [[ "${_match}" == "equ" ]]; then + if [[ ${res} -eq 0 ]]; then + rc=0 + echo "${rpm_installed}" + break + fi + elif [[ "${_match}" == "gte" ]]; then + if [[ ${res} -eq 0 || ${res} -eq 11 ]]; then + rc=0 + echo "${rpm_installed}" + break + fi + elif [[ "${_match}" == "gtr" ]]; then + if [[ ${res} -eq 11 ]]; then + rc=0 + echo "${rpm_installed}" + break + fi + else + rc=3 + echo "require-rpm: unrecognized 'match' argument, '${_match}'" >&2 + break + fi + done + if [[ ${rc} -eq 1 ]]; then + echo "${_rpm}${_version}" + fi fi exit ${rc} diff --git a/agent/util-scripts/test-bin/dcgm-exporter b/agent/util-scripts/test-bin/dcgm-exporter index c0498c63c5..fb0e672857 100755 --- a/agent/util-scripts/test-bin/dcgm-exporter +++ b/agent/util-scripts/test-bin/dcgm-exporter @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 import os import sys @@ -6,11 +6,11 @@ import time with open(os.environ["_testlog"], "a") as ofp: args = " ".join(sys.argv) - ofp.write("%s\n" % (args,)) + ofp.write(f"{args}\n") with open("dcgm.file", "a+") as ofp: args = " ".join(sys.argv) - ofp.write("%s\n" % (args,)) + ofp.write(f"{args}\n") time.sleep(9999) diff --git a/agent/util-scripts/test-bin/rpm b/agent/util-scripts/test-bin/rpm new file mode 100755 index 0000000000..fb5645c94d --- /dev/null +++ b/agent/util-scripts/test-bin/rpm @@ -0,0 +1,51 @@ +#!/bin/bash + +args="${@}" +echo "${0} ${args}" >> ${_testlog} + +# We are mocking out how the "rpm" command works by using certain names to +# drive behaviors. When not testing require-rpm itself, the special package +# names are not used, and we assume success and exit with 0. When the special +# package names are used, we behave as described for each. + +_rpm="${3}" +if [[ "${_rpm}" == "pbench-sysstat" ]]; then + echo "${_rpm}-12.0.3" + _rc=0 +elif [[ "${_rpm}" == "not-found" ]]; then + echo "package ${_rpm} is not installed" + _rc=1 +elif [[ "${_rpm}" == "found" || "${_rpm}" == "equal" || "${_rpm}" == "not-greater" ]]; then + # The version that will be used to test require-rpm is 1.0.0, so we "found" + # that version; same behavior for the "equal" and "not-greater" cases. + echo "${_rpm}-1.0.0" + _rc=0 +elif [[ "${_rpm}" == "not-equal" || "${_rpm}" == "greater" || "${_rpm}" == "greater-equal" ]]; then + # The version that will be used to test require-rpm is 1.0.0, so we find + # a version that is greater than the 1.0.0, satisfying the not-equal, + # greater than, and greater than or equal cases. + echo "${_rpm}-1.0.42" + _rc=0 +elif [[ "${_rpm}" == "not-greater-equal" ]]; then + # The version that will be used to test require-rpm is 1.0.0, so we find + # a version that is less than that. + echo "${_rpm}-0.0.42" + _rc=0 +elif [[ "${_rpm}" == "equal-mult" ]]; then + echo "${_rpm}-0.0.42" + echo "${_rpm}-1.0.0" + echo "${_rpm}-1.0.42" + _rc=0 +elif [[ "${_rpm}" == "not-equal-mult" ]]; then + echo "${_rpm}-0.0.42" + echo "${_rpm}-1.0.1" + echo "${_rpm}-1.0.42" + _rc=0 +else + # Mimic behavior of rpm by exiting with 0 (for unit tests we always find + # the RPM) and emitting the RPM version that was found (whatever was given + # as arguments). + echo "${_rpm}" + _rc=0 +fi +exit ${_rc} diff --git a/agent/util-scripts/test-bin/test-require-rpm b/agent/util-scripts/test-bin/test-require-rpm new file mode 100755 index 0000000000..8b0a89ccfb --- /dev/null +++ b/agent/util-scripts/test-bin/test-require-rpm @@ -0,0 +1,62 @@ +#!/bin/bash +# Test require-rpm via a series of simple invocations + +# The way we verify the behavior of require-rpm itself is by mocking out the +# behavior of `rpm` and `rpmdev-vercmp` to behave the way we want. The name +# of the RPM encodes the behavior. + +_tmp=$(dirname "${_testout}")/tmp +function _cleanup { + rm -rf ${_tmp} +} +trap _cleanup INT QUIT TERM EXIT +mkdir ${_tmp} +if [[ ${?} -ne 0 ]]; then + printf -- "test-require-rpm: failed to create temporary directory, %s\n" "${_tmp}" >&2 + exit 1 +fi + +_prefix="Verify require-rpm with" +function run_req_rpm { + _desc="${1}" + shift + printf -- "\n%s %s\n" "${_prefix}" "${_desc}" + require-rpm ${*} > ${_tmp}/std.out 2> ${_tmp}/std.err + echo "require-rpm ${*} --> ${?}" + echo "+++ stdout" + cat ${_tmp}/std.out + echo "--- stdout" + echo "+++ stderr" + cat ${_tmp}/std.err + echo "--- stderr" + rm -f ${_tmp}/std.{out,err} +} + +run_req_rpm "no arguments" + +run_req_rpm "1 argument, RPM not found" not-found + +run_req_rpm "1 argument, RPM found" found + +run_req_rpm "2 arguments, RPM not found with that version" not-found 1.0.0 + +run_req_rpm "2 arguments, RPM found with that version" found 1.0.0 + +run_req_rpm "3 arguments, 3rd argument not recognized" found 1.0.0 foo + +run_req_rpm "3 arguments, 3rd argument is 'any', not found" not-found 1.0.0 any +run_req_rpm "3 arguments, 3rd argument is 'any', found" found 1.0.0 any + +run_req_rpm "3 arguments, 3rd argument is 'equ', not equal" not-equal 1.0.0 equ +run_req_rpm "3 arguments, 3rd argument is 'equ', equal" equal 1.0.0 equ + +run_req_rpm "3 arguments, 3rd argument is 'gte', not greater or equal" not-greater-equal 1.0.0 gte +run_req_rpm "3 arguments, 3rd argument is 'gte', greater or equal" greater-equal 1.0.0 gte + +run_req_rpm "3 arguments, 3rd argument is 'gtr', not greater" not-greater 1.0.0 gtr +run_req_rpm "3 arguments, 3rd argument is 'gtr', greater" greater 1.0.0 gtr + +run_req_rpm "3 arguments, multiple RPM version, 'equ', not equal" not-equal-mult 1.0.0 equ +run_req_rpm "3 arguments, multiple RPM version, 'equ', equal" equal-mult 1.0.0 equ + +exit 0 diff --git a/agent/util-scripts/unittests b/agent/util-scripts/unittests index 602227379e..c931e7827c 100755 --- a/agent/util-scripts/unittests +++ b/agent/util-scripts/unittests @@ -31,7 +31,7 @@ mv ${_testopt}/config/pbench-agent.cfg ${_testopt}/config/pbench-agent.cfg.orig let res=res+${?} cp -a ${_tdir}/../templates/* ${_testopt}/templates/ let res=res+${?} -cp -a ${_tdir}/{require-rpm,validate-*,pbench-*} ${_testopt}/util-scripts/ +cp -a ${_tdir}/{pbench-*,require-rpm,validate-*} ${_testopt}/util-scripts/ let res=res+${?} cp -a ${_tdir}/tool-meister/pbench-* ${_testopt}/util-scripts/tool-meister/ let res=res+${?} @@ -346,6 +346,7 @@ let errs=0 declare -A tools=( [test-00]="pbench-register-tool" [test-01]="pbench-register-tool" + [test-02]="test-require-rpm" [test-05]="pbench-start-tools" [test-06]="pbench-stop-tools" [test-07]="pbench-postprocess-tools" diff --git a/contrib/agent/bench-scripts/pbench-mpt b/contrib/agent/bench-scripts/pbench-mpt index a5f0b829af..8f643f3575 100755 --- a/contrib/agent/bench-scripts/pbench-mpt +++ b/contrib/agent/bench-scripts/pbench-mpt @@ -197,8 +197,8 @@ function mpt_install() { # TODO: since msg-perf-tool is installed via COPR, check what is the # recommended approach - check_enable_copr orpiske litestomp - check_enable_copr orpiske msg-perf-tool + #check_enable_copr orpiske litestomp + #check_enable_copr orpiske msg-perf-tool if check_install_rpm $benchmark_rpm $ver; then debug_log "[$script_name]$benchmark_rpm $ver is installed" diff --git a/jenkins/development.Dockerfile b/jenkins/development.Dockerfile index e6012d59d2..4be267b2ad 100644 --- a/jenkins/development.Dockerfile +++ b/jenkins/development.Dockerfile @@ -95,6 +95,7 @@ RUN \ python3-tox-current-env \ python3-werkzeug \ redis \ + rpmdevtools \ rpmlint \ rpm-build \ rsync \ diff --git a/jenkins/run b/jenkins/run index 5668c28fca..edb74ff64f 100755 --- a/jenkins/run +++ b/jenkins/run @@ -63,7 +63,7 @@ fi # in the container. find . -name __pycache__ -exec rm -r {} \; > /dev/null 2>&1 -podman run -it --userns=keep-id \ +podman run -it --userns=keep-id --pull=always \ --volume ${_tmp}:/tmp:z \ --volume ${_var_tmp}:/var/tmp:z \ --volume ${_dev_log}:/dev/log:z \