blob: 16c88c63aaec5dbf247df6f175a2e58190fef18b [file] [log] [blame]
#!/bin/sh
#
# Test Case 6 - top
#
TST_TOTAL=${HOTPLUG06_LOOPS:-${LOOPS}}
export TCID="hotplug06.top"
export TST_COUNT=1
export TST_TOTAL=${HOTPLUG06_LOOPS:-1}
CPU_TO_TEST=$1
if [ -z "$CPU_TO_TEST" ]; then
echo "Usage: ${0##*/} <CPU to offline>"
exit_clean 1
fi
# Includes:
LHCS_PATH=${LHCS_PATH:-${LTPROOT:+$LTPROOT/testcases/bin/cpu_hotplug}}
. $LHCS_PATH/include/testsuite.fns
. $LHCS_PATH/include/hotplug.fns
cat <<EOF
Name: $TCID
Date: `date`
Desc: Does top work properly when CPU hotplug events occur?
EOF
# Verify that the specified CPU is available
if ! cpu_is_valid "${CPU_TO_TEST}" ; then
tst_resm TBROK "CPU${CPU_TO_TEST} not found"
exit_clean 1
fi
# Check that the specified CPU is online; if not, online it
if ! cpu_is_online "${CPU_TO_TEST}" ; then
if ! online_cpu ${CPU_TO_TEST}; then
tst_resm TFAIL "CPU${CPU_TO_TEST} cannot be onlined"
exit_clean 1
fi
fi
do_clean()
{
pid_is_valid ${TOP_PID} && kill_pid ${TOP_PID}
online_cpu ${CPU_TO_TEST}
}
until [ $TST_COUNT -gt $TST_TOTAL ]; do
# Start up top and give it a little time to run
top -b -d 00.10 > /dev/null 2>&1 &
TOP_PID=$!
sleep 1
# Now offline the CPU
if ! offline_cpu ${CPU_TO_TEST} ; then
tst_resm TBROK "CPU${CPU_TO_TEST} cannot be onlined"
exit_clean 1
fi
# Wait a little time for top to notice the CPU is gone
sleep 1
# Check that top hasn't crashed
if pid_is_valid ${TOP_PID} ; then
tst_resm TPASS "PID ${TOP_PID} still running."
online_cpu ${CPU_TO_TEST}
kill_pid ${TOP_PID}
else
tst_resm TFAIL "PID ${TOP_PID} no longer running"
exit_clean 1
fi
: $(( TST_COUNT += 1 ))
done
exit_clean