[LTP] [PATCH] add cpuplugd testcase
Elif Aslan
elas@linux.vnet.ibm.com
Wed Feb 27 16:30:38 CET 2019
---
runtest/s390x_tests | 3 +
testcases/commands/cpuplugd/README.md | 35 ++
testcases/commands/cpuplugd/cmm.conf | 10 +
testcases/commands/cpuplugd/cpu.conf | 8 +
testcases/commands/cpuplugd/cpuplugd.conf | 15 +
testcases/commands/cpuplugd/cpuplugd.sh | 477 ++++++++++++++++++
testcases/commands/cpuplugd/cpuplugdcmm.conf | 10 +
testcases/commands/cpuplugd/cpuplugdtemp.conf | 15 +
testcases/commands/cpuplugd/mon_fsstatd.sh | 154 ++++++
9 files changed, 727 insertions(+)
create mode 100644 runtest/s390x_tests
create mode 100644 testcases/commands/cpuplugd/README.md
create mode 100644 testcases/commands/cpuplugd/cmm.conf
create mode 100644 testcases/commands/cpuplugd/cpu.conf
create mode 100644 testcases/commands/cpuplugd/cpuplugd.conf
create mode 100644 testcases/commands/cpuplugd/cpuplugd.sh
create mode 100644 testcases/commands/cpuplugd/cpuplugdcmm.conf
create mode 100644 testcases/commands/cpuplugd/cpuplugdtemp.conf
create mode 100644 testcases/commands/cpuplugd/mon_fsstatd.sh
diff --git a/runtest/s390x_tests b/runtest/s390x_tests
new file mode 100644
index 000000000..b05b2f58b
--- /dev/null
+++ b/runtest/s390x_tests
@@ -0,0 +1,3 @@
+# Those tests are designed to be executed in s390x environment (zVM or LPAR)
+cpuplugd cpuplugd.sh
+mon_fsstatd mon_fsstatd.sh
diff --git a/testcases/commands/cpuplugd/README.md b/testcases/commands/cpuplugd/README.md
new file mode 100644
index 000000000..6cf33f212
--- /dev/null
+++ b/testcases/commands/cpuplugd/README.md
@@ -0,0 +1,35 @@
+# cpuplugd mon_fsstatd tools test
+
+cpuplugd: Daemon that manages CPU and memory resources based on a set of rules.
+Depending on the workload CPUs can be enabled or disabled.
+The amount of memory can be increased or decreased exploiting the Cooperative Memory Management (CMM1) feature.
+
+## Getting started
+
+The test case contains the following scripts:
+
+- **cmm.conf** _configuration file_
+- **cpu.conf** _configuration file_
+- **cpuplugd.conf** _configuration file_
+- **cpuplugd.sh** _verification of cpuplugd tool_
+- **cpuplugdcmm.conf** _configuration file_
+- **cpuplugdtemp.conf** _configuration file_
+- **mon_fsstatd.sh** _mon tool tests_
+
+## Prerequisites
+
+z/VM guest or LPAR must be prepared to be populated with guest OS
+
+## Installation
+
+Scripts are to be copied into the target test system
+
+## Running the tests
+
+runtest/s390x_tests contains all the necessary commands to be executed:
+`./cpuplugd.sh`
+`./mon_fsstatd.sh`
+
+## License
+
+The files in this directory are licensed under the GPL v2+ license.
diff --git a/testcases/commands/cpuplugd/cmm.conf b/testcases/commands/cpuplugd/cmm.conf
new file mode 100644
index 000000000..59e71f726
--- /dev/null
+++ b/testcases/commands/cpuplugd/cmm.conf
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+UPDATE="1"
+
+CMM_MIN="5000"
+CMM_INC="100"
+CMM_MAX="20000"
+
+MEMPLUG="swaprate < 200"
+MEMUNPLUG="swaprate > 5000"
diff --git a/testcases/commands/cpuplugd/cpu.conf b/testcases/commands/cpuplugd/cpu.conf
new file mode 100644
index 000000000..6a84d8177
--- /dev/null
+++ b/testcases/commands/cpuplugd/cpu.conf
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+CPU_MIN="1"
+CPU_MAX="3"
+UPDATE="1"
+
+HOTPLUG="(loadavg > onumcpus + 0.75) & (idle < 10.0)"
+HOTUNPLUG="(loadavg < onumcpus - 0.25) | (idle > 50)"
diff --git a/testcases/commands/cpuplugd/cpuplugd.conf b/testcases/commands/cpuplugd/cpuplugd.conf
new file mode 100644
index 000000000..09d76b993
--- /dev/null
+++ b/testcases/commands/cpuplugd/cpuplugd.conf
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+CPU_MIN="1"
+CPU_MAX="3"
+UPDATE="1"
+
+HOTPLUG="(loadavg > onumcpus + 0.75) & (idle < 10.0)"
+HOTUNPLUG="(loadavg < onumcpus - 0.25) | (idle > 50)"
+
+CMM_MIN="0"
+CMM_INC="10"
+CMM_MAX="10"
+
+MEMPLUG="swaprate < 200"
+MEMUNPLUG="swaprate > 5000"
diff --git a/testcases/commands/cpuplugd/cpuplugd.sh b/testcases/commands/cpuplugd/cpuplugd.sh
new file mode 100644
index 000000000..2a3b2964f
--- /dev/null
+++ b/testcases/commands/cpuplugd/cpuplugd.sh
@@ -0,0 +1,477 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+#!/bin/sh
+
+TST_CNT=11
+TST_TESTFUNC=cpuplugd_test
+. tst_test.sh
+
+number_of_cpus=$(grep -c ^processor /proc/cpuinfo)
+SLEEP_X=$((number_of_cpus*2))
+CMM_MOD="$(grep "CONFIG_CMM=" /boot/config-$(uname -r) | cut -d= -f2 | tr '[:upper:]' '[:lower:]')"
+
+
+load_vmcp(){
+ local GUESTNAME=""
+
+ if [ ! -e /proc/sysinfo ] ; then
+ echo "Cannot access /proc/sysinfo" >&1
+ exit 1
+ fi
+
+ GUESTNAME="$(cat /proc/sysinfo | grep -i VM00.Name | sed 's/^.*:[[:space:]]*//g;s/[[:space:]]//g' | tr '[a-z]' '[A-Z]')"
+
+ if [ -n "$GUESTNAME" ];then
+ `vmcp q cpus > /dev/null 2>&1`
+ if [ $? -ne 0 ];then
+ modprobe vmcp >/dev/null 2>&1
+ echo "Module vmcp loaded"
+ fi
+ return 0
+ fi
+ return 1
+}
+
+isVM(){
+ local GUESTNAME=""
+ local GUESTNO=""
+
+ if [ ! -e /proc/sysinfo ] ; then
+ echo "Cannot access /proc/sysinfo" >&1
+ exit 1
+ fi
+
+ GUESTNAME="$(cat /proc/sysinfo | grep -i VM00.Name | sed 's/^.*:[[:space:]]*//g;s/[[:space:]]//g' | tr '[a-z]' '[A-Z]')"
+
+ if [ -z "$GUESTNAME" ];then
+ return 1
+ fi
+ if [ -n "$GUESTNAME" ];then
+ load_vmcp
+ return 0
+ fi
+ return 1
+}
+
+assert_cpuplugd_running() {
+ local NOT_RUNNING="$1"
+ local WARN="$2"
+
+ if [ "$NOT_RUNNING" -eq "0" ]; then
+ MESSAGE="cpuplugd is running"
+ elif [ "$NOT_RUNNING" -eq "1" ]; then
+ MESSAGE="cpuplugd is not running"
+ fi
+
+ ps -e | grep -q cpuplugd
+ local RC=$?
+
+ if [ "$WARN" -eq "1" ]; then
+ if [ "$RC" -eq "$NOT_RUNNING" ]; then
+ tst_res TPASS "$MESSAGE"
+ else
+ tst_res TFAIL "$MESSAGE"
+ fi
+ fi
+
+ return $RC
+}
+
+stop_cpuplugd() {
+ echo "stop cpuplugd"
+
+ if [ -e /run/cpuplugd.pid ]; then
+ kill $(cat /run/cpuplugd.pid)
+ elif [ -e /var/run/cpuplugd.pid ]; then
+ kill $(cat /var/run/cpuplugd.pid)
+ else
+ kill $(ps -e | grep -i cpuplugd | awk '{print $1}')
+ fi
+
+ until ! assert_cpuplugd_running 1 0; do
+ echo "cpuplugd is still running"
+ sleep 1
+ done
+
+ echo "check cpuplugd is not running"
+ if [ $? -eq 0 ]; then
+ tst_res TPASS "Test passed"
+ else
+ tst_res TFAIL "Test failed"
+ fi
+
+}
+
+#Function to remove the given entry ($1) from test configuration file
+prepare_incomplete_cpu_test_config() {
+ rm -rf cpuplugdtest.conf
+ cp cpuplugd.conf cpuplugdtest.conf
+ sed -e 's/'$1'/#'$1'/' -i cpuplugdtest.conf
+}
+
+prepare_incomplete_cmm_test_config() {
+ rm -rf cpuplugdtest.conf
+ cp cpuplugdcmm.conf cpuplugdtest.conf
+ sed -e 's/'$1'/#'$1'/' -i cpuplugdtest.conf
+}
+
+#run cpuplgd with cpuplugdtest.conf and verify change in number of cpus before/during/after running the daemon
+cpu_test_with_error_in_cpuplgdtest_conf() {
+ local NOT_RUNNING="$1"
+ local WARN="$2"
+
+ # cmm must not be loaded so that cpuplugd will only consider the cpu configuration
+ if [ "$CMM_MOD" = "m" ]; then
+ rmmod cmm
+ fi
+
+ assert_cpuplugd_running 1 0
+ local RC=$?
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+
+ cpusbefore=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+ echo "start cpuplugd -V -c cpuplugdtest.conf -f"
+ cpuplugd -V -c cpuplugdtest.conf -f >> cpuf &
+ sleep 2
+
+ if [ "$CMM_MOD" = "m" ]; then
+ assert_cpuplugd_running $NOT_RUNNING $WARN
+ else
+ assert_cpuplugd_running $NOT_RUNNING $WARN
+ fi
+
+ local RC=$?
+
+ # Wait a little to allow for (undesired) cpu configuration change
+ sleep $SLEEP_X
+ cpusrunning=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+
+ local cpusafter=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+ local i=0
+
+ if (( "$cpusbefore" == "$cpusrunning" )) && (( "$cpusrunning" == "$cpusafter" )); then
+ i=1
+ fi
+
+ echo "Verify that CPU configuration does not change: cpusbefore=$cpusbefore, cpusduring=$cpusrunning, cpusafterter=$cpusafter"
+ if [ $i -eq 1 ]; then
+ tst_res TPASS "Test passed"
+ else
+ tst_res TFAIL "Test failed"
+ fi
+}
+
+#run cpuplgd with cpuplugdtest.conf and verify change in number of cmm pagess before/during/after running the daemon
+cmm_test_with_error_in_cpuplgdtest_conf() {
+ local NOT_RUNNING="$1"
+ local WARN="$2"
+
+ assert_cpuplugd_running 1 0
+ local RC=$?
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+
+ if [ "$CMM_MOD" = "m" ]; then
+ modprobe cmm
+ fi
+
+ echo 1000 > /proc/sys/vm/cmm_pages
+ sleep 2
+
+ cmm_pages_before=$(cat /proc/sys/vm/cmm_pages)
+
+ echo "start cpuplugd -V -c cpuplugdtest.conf -f"
+ cpuplugd -V -c cpuplugdtest.conf -f >> cmm &
+ sleep 2
+
+ assert_cpuplugd_running $NOT_RUNNING $WARN
+ local RC=$?
+
+ # Wait a little to allow for (undesired) cpu configuration change
+ sleep $SLEEP_X
+ local cmm_pages_running=$(cat /proc/sys/vm/cmm_pages)
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+
+ local cmm_pages_after=$(cat /proc/sys/vm/cmm_pages)
+ i=0
+
+ if (( "$cmm_pages_before" == "$cmm_pages_running" )) && (( "$cmm_pages_running" == "$cmm_pages_after" )); then
+ i=1
+ fi
+
+ echo "Verify that the number of available CMM pages does not change: cmm_pages_before=$cmm_pages_before, cmm_pages_running=$cmm_pages_running, cmm_pages_after=$cmm_pages_after"
+ if [ "${i}" -eq "1" ]; then
+ tst_res TPASS "Test passed"
+ else
+ tst_res TFAIL "Test failed"
+ fi
+
+ if [ "$CMM_MOD" = "m" ]; then
+ rmmod cmm
+ fi
+}
+
+exec_cpu_test_with_error_in_cpuplugd_conf()
+{
+ local notrun=1
+ isVM && [ "$CMM_MOD" = "y" ] && notrun=0
+ cpu_test_with_error_in_cpuplgdtest_conf $notrun 1
+}
+
+cpuplugd_run()
+{
+
+ $1
+ if [ "$?" -eq "$2" ]; then
+ tst_res TPASS "'$1' returned '$2'"
+ else
+ tst_res TFAIL "'$1' did not return '$2'"
+ fi
+}
+
+cpuplugd_test1()
+{
+ tst_res TINFO "Cpuplugd version"
+ local cpuplugd=$(cpuplugd -v | head -n 1 | cut -d":" -f2 | cut -d" " -f10)
+ cpuplugd_run "cpuplugd -v" 0
+ echo "Cpuplugd version $cpuplugd"
+}
+cpuplugd_test2()
+{
+ tst_res TINFO "Cpuplugd Help information checking"
+ echo "Checking for Help information with -h option"
+ cpuplugd_run "cpuplugd -h" 0
+ echo "Checking for Help information with --help option"
+ cpuplugd_run "cpuplugd --help" 0
+}
+
+# Run several tests with incomplete/broken configuration.
+# Correct behavior for the daemon is not to start.
+cpuplugd_test3()
+{
+ tst_res TINFO "Invalid options checking"
+ echo "Checking for Invalid option -H"
+ cpuplugd_run "cpuplugd -H" 1
+ echo "Checking for Invalid option -1234"
+ cpuplugd_run "cpuplugd -1234" 1
+}
+
+cpuplugd_test4()
+{
+ tst_res TINFO "Run daemon without UPDATE entry in config"
+ prepare_incomplete_cpu_test_config UPDATE
+ cpu_test_with_error_in_cpuplgdtest_conf 1 1
+}
+
+cpuplugd_test5()
+{
+ tst_res TINFO "Run Daemon without CPU_MIN entry"
+ prepare_incomplete_cpu_test_config CPU_MIN
+ exec_cpu_test_with_error_in_cpuplugd_conf
+}
+
+cpuplugd_test6()
+{
+ tst_res TINFO "Run Daemon without CPU_MAX entry"
+ prepare_incomplete_cpu_test_config CPU_MAX
+ cpu_test_with_error_in_cpuplgdtest_conf 1 1
+}
+
+cpuplugd_test7()
+{
+ tst_res TINFO "Run Daemon without HOTPLUG entry"
+ prepare_incomplete_cpu_test_config HOTPLUG
+ exec_cpu_test_with_error_in_cpuplugd_conf
+}
+
+cpuplugd_test8()
+{
+ tst_res TINFO "Run Daemon without HOTUNPLUG entry"
+ prepare_incomplete_cpu_test_config HOTUNPLUG
+ exec_cpu_test_with_error_in_cpuplugd_conf
+}
+
+# Good path test for CPU plugging.
+# Run daemon with only cpu configuration in configuration file
+# CPU Hotplug with 3 Active cpus and CPU_MIN=1 and CPU_MAX=3
+# Verify that number of CPUs is reduced after daemon is started
+# and restored after daemon is stopped.
+cpuplugd_test9()
+{
+ tst_res TINFO "Run Daemon with only cpu configuration"
+
+ assert_cpuplugd_running 1 1
+
+ local cpusbefore=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+ echo "running daemon with only cpu config" > cpuf
+ echo "start cpuplugd -V -c cpu.conf -f "
+ cpuplugd -V -c cpu.conf -f >> cpuf &
+ sleep 2
+
+ assert_cpuplugd_running 0 1
+ local RC=$?
+ echo "Let Daemon run for few seconds, so that it does the hotplugging"
+ sleep $SLEEP_X
+
+ local cpusrunning=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+
+ sleep 2
+ local cpusafter=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+ i=0
+
+ if [ "$cpusbefore" != "$cpusrunning" ] && [ "$cpusbefore" == "$cpusafter" ]; then
+ tst_res TPASS "Verify that number of CPUs before, while and after the daemon runs changes: cpusbefore=$cpusbefore, cpusduring=$cpusrunning, cpusafterter=$cpusafter"
+ else
+ tst_res TFAIL "Verify that number of CPUs before, while and after the daemon runs changes: cpusbefore=$cpusbefore, cpusduring=$cpusrunning, cpusafterter=$cpusafter"
+ fi
+}
+
+cpuplugd_test10()
+{
+ tst_res TINFO "Memory Hotplug tests (z/VM only)"
+
+ if ! isVM; then
+ # if it is LPAR, Memory Hotplug cannot be done
+ tst_res TINFO "This must be an LPAR. Skip CMM Tests"
+ return;
+ fi
+
+ # Run several tests with incomplete/broken configuration.
+ # Correct behavior for the daemon is not to start.
+
+ tst_res TINFO "Run Daemon without loading CMM module"
+ if [ "$CMM_MOD" != "m" ]; then
+ tst_res TINFO "This test is not possible to be performed since CMM was builtin within the kernel and cannot be unloaded."
+ else
+ assert_cpuplugd_running 1 0
+ local RC=$?
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+
+ rmmod cmm
+ lsmod | grep -q cmm
+
+ if [ "$?" -eq "1" ]; then
+ tst_res TPASS "Verify that CMM module is not loaded"
+ else
+ tst_res TFAIL "Verify that CMM module is not loaded"
+ fi
+
+ cpuplugd -V -c cmm.conf -f >> cmm.log &
+ echo "Daemon should fail to run as CMM module is not loaded"
+ sleep 2
+
+ assert_cpuplugd_running 1 1
+ local RC=$?
+
+ rm -rf cmm.log
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+ fi
+
+
+ tst_res TINFO "Run Daemon without CMM_MIN entry"
+ prepare_incomplete_cmm_test_config CMM_MIN
+ cmm_test_with_error_in_cpuplgdtest_conf 1 1
+
+
+ tst_res TINFO "Run Daemon without CMM_MAX entry"
+ prepare_incomplete_cmm_test_config CMM_MAX
+ cmm_test_with_error_in_cpuplgdtest_conf 1 1
+
+
+ tst_res TINFO "Run Daemon without CMM_INC entry"
+ prepare_incomplete_cmm_test_config CMM_INC
+ cmm_test_with_error_in_cpuplgdtest_conf 1 1
+
+
+ tst_res TINFO "Run Daemon without MEMPLUG entry"
+ prepare_incomplete_cmm_test_config MEMPLUG
+ cmm_test_with_error_in_cpuplgdtest_conf 1 1
+
+
+ tst_res TINFO "Run Daemon without MEMUNPLUG entry"
+ prepare_incomplete_cmm_test_config MEMUNPLUG
+ cmm_test_with_error_in_cpuplgdtest_conf 1 1
+
+
+ # Good path test for CMM plugging
+
+ tst_res TINFO "Run Daemon with only CMM configuration"
+ if [ "$CMM_MOD" = "m" ]; then
+ modprobe cmm
+ fi
+
+ echo 1000 > /proc/sys/vm/cmm_pages
+ sleep 1
+
+ local cmm_pages_before=$(cat /proc/sys/vm/cmm_pages)
+ local cpusbefore=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+ cpuplugd -V -c cmm.conf -f >> cmm.log &
+ sleep 2
+
+ assert_cpuplugd_running 0 1
+ local RC=$?
+ sleep 4
+
+ local cmm_pages_running=$(cat /proc/sys/vm/cmm_pages)
+ local cpusrunning=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+
+ if [ "$RC" -eq "0" ]; then
+ stop_cpuplugd
+ fi
+
+ sleep 2
+
+ local cmm_pages_after=$(cat /proc/sys/vm/cmm_pages)
+ local cpusafter=$(grep "processors" /proc/cpuinfo | cut -d":" -f2)
+ local i=0
+
+ if [ "$cmm_pages_before" != "$cmm_pages_running" ] && [ "$cmm_pages_before" == "$cmm_pages_after" ]; then
+ if [ "$cpusbefore" == "$cpusrunning" ] && [ "$cpusbefore" == "$cpusafter" ]; then
+ i=1
+ fi
+ fi
+
+ if [ "$i" -eq "1" ];then
+ tst_res TPASS "Verify that the number of cmm_pages before, while and after the daemon runs changes: cmm_pages_before=$cmm_pages_before, cmm_pages_running=$cmm_pages_running, cmm_pages_after=$cmm_pages_after. CPU hotplugging should not happen and cpu configuration should remain constant: cpus_before=$cpusbefore, cpus_during=$cpusrunning, cpus_after=$cpusafter"
+ else
+ tst_res TFAIL "Verify that the number of cmm_pages before, while and after the daemon runs changes: cmm_pages_before=$cmm_pages_before, cmm_pages_running=$cmm_pages_running, cmm_pages_after=$cmm_pages_after. CPU hotplugging should not happen and cpu configuration should remain constant: cpus_before=$cpusbefore, cpus_during=$cpusrunning, cpus_after=$cpusafter"
+ fi
+
+}
+
+cpuplugd_test11()
+{
+ tst_res TINFO "Doing the cleanup tasks ..."
+ cpuplugd_run "service cpuplugd stop" 0
+
+ if [ "$CMM_MOD" = "m" ]; then
+ cpuplugd_run "rmmod cmm" 0
+ fi
+
+ cpuplugd_run "rm -rf cpuf cmm log cmm.log cpuplugdtest.conf te.tes out.txt.tmp" 0
+
+}
+
+tst_run
diff --git a/testcases/commands/cpuplugd/cpuplugdcmm.conf b/testcases/commands/cpuplugd/cpuplugdcmm.conf
new file mode 100644
index 000000000..ca393249e
--- /dev/null
+++ b/testcases/commands/cpuplugd/cpuplugdcmm.conf
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+UPDATE="1"
+
+CMM_MIN="0"
+CMM_INC="10"
+CMM_MAX="10"
+
+MEMPLUG="swaprate < 200"
+MEMUNPLUG="swaprate > 5000"
diff --git a/testcases/commands/cpuplugd/cpuplugdtemp.conf b/testcases/commands/cpuplugd/cpuplugdtemp.conf
new file mode 100644
index 000000000..157422780
--- /dev/null
+++ b/testcases/commands/cpuplugd/cpuplugdtemp.conf
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+CPU_MIN="1"
+CPU_MAX="3"
+UPDATE="1"
+
+HOTPLUG="(loadavg > onumcpus + 0.75) & (idle < 10.0)"
+HOTUNPLUG="(loadavg < onumcpus - 0.25) | (idle > 50)"
+
+#CMM_MIN="0"
+CMM_INC="10"
+CMM_MAX="10"
+
+MEMPLUG="swaprate < 200"
+MEMUNPLUG="swaprate > 5000"
diff --git a/testcases/commands/cpuplugd/mon_fsstatd.sh b/testcases/commands/cpuplugd/mon_fsstatd.sh
new file mode 100644
index 000000000..0a8d5b8c2
--- /dev/null
+++ b/testcases/commands/cpuplugd/mon_fsstatd.sh
@@ -0,0 +1,154 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+#!/bin/sh
+
+sed -i 's/FSSTAT="no"/FSSTAT="yes"/' /etc/sysconfig/mon_statd
+sed -i 's/PROC="no"/PROC="yes"/' /etc/sysconfig/mon_statd
+
+TST_CNT=1
+TST_TESTFUNC=mon_fsstatd_test
+. tst_test.sh
+
+load_vmcp(){
+ local GUESTNAME=""
+
+ if [ ! -e /proc/sysinfo ] ; then
+ echo "Cannot access /proc/sysinfo" >&1
+ exit 1
+ fi
+
+ GUESTNAME="$(cat /proc/sysinfo | grep -i VM00.Name | sed 's/^.*:[[:space:]]*//g;s/[[:space:]]//g' | tr '[a-z]' '[A-Z]')"
+
+ if [ -n "$GUESTNAME" ];then
+ `vmcp q cpus > /dev/null 2>&1`
+ if [ $? -ne 0 ];then
+ modprobe vmcp >/dev/null 2>&1
+ echo "Module vmcp loaded"
+ fi
+ return 0
+ fi
+ return 1
+}
+
+s390_config_check(){
+ local config="$1"
+ local config_line=$(env | grep "$config=")
+
+ if [ $? -ne 0 ]; then
+ tst_res TFAIL "Config option $config not defined"
+ exit 1
+ else
+ local value=$(echo $config_line | awk -F = '{print $2}')
+ echo "USING CONFIG: $config=$value"
+ fi
+}
+
+isVM(){
+ local GUESTNAME=""
+ local GUESTNO=""
+
+ if [ ! -e /proc/sysinfo ] ; then
+ echo "Cannot access /proc/sysinfo" >&1
+ exit 1
+ fi
+
+ GUESTNAME="$(cat /proc/sysinfo | grep -i VM00.Name | sed 's/^.*:[[:space:]]*//g;s/[[:space:]]//g' | tr '[a-z]' '[A-Z]')"
+
+ if [ -z "$GUESTNAME" ];then
+ return 1
+ fi
+ if [ -n "$GUESTNAME" ];then
+ load_vmcp
+ return 0
+ fi
+ return 1
+}
+
+s390_config_check S390_mon_statd
+
+
+mon_fsstatd_run()
+{
+ $2
+ if [ "$?" -eq "$1" ]; then
+ tst_res TPASS "'$2' returned '$1'"
+ else
+ tst_res TFAIL "'$2' did not return '$1'"
+ fi
+}
+
+mon_fsstatd_test1()
+{
+ if ! isVM; then
+ tst_res TINFO "This must be an LPAR. Not applicable in LPAR"
+ return;
+ fi
+
+ tst_res TINFO "Basic User option Verification"
+ mon_fsstatd_run 0 "modprobe monwriter max_bufs=8192"
+
+ sleep 2
+ service mon_statd status
+ [ $? -eq 3 ] && tst_res TINFO "mon_statd is not started yet"
+
+ sleep 2
+ mon_fsstatd_run 0 "service mon_statd stop"
+
+ sleep 2
+ mon_fsstatd_run 0 "service mon_statd start"
+
+ sleep 2
+ mon_fsstatd_run 0 "pidof mon_fsstatd"
+ mon_fsstatd_run 0 "pidof mon_procd"
+
+ sleep 2
+ mon_fsstatd_run 0 "service mon_statd restart"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_fsstatd -h"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_fsstatd --help"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_fsstatd -v"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_fsstatd --version"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_fsstatd -i 30"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_procd -h"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_procd --help"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_procd -v"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_procd --version"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_procd -i 30"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_procd -a &"
+
+ sleep 2
+ mon_fsstatd_run 0 "killall mon_procd"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_fsstatd -a &"
+
+ sleep 2
+ mon_fsstatd_run 0 "killall mon_fsstatd"
+
+ sleep 2
+ mon_fsstatd_run 0 "mon_procd -v"
+
+}
+
+tst_run
--
2.17.2 (Apple Git-113)
More information about the ltp
mailing list