123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/bin/sh
- #
- # Test Case 6 - top
- #
- export TCID="cpuhotplug06"
- export TST_TOTAL=1
- # Includes:
- . test.sh
- . cpuhotplug_testsuite.sh
- . cpuhotplug_hotplug.sh
- cat <<EOF
- Name: $TCID
- Date: `date`
- Desc: Does top work properly when CPU hotplug events occur?
- EOF
- usage()
- {
- cat << EOF
- usage: $0 -c cpu -l loop
- OPTIONS
- -c cpu which is specified for testing
- -l number of cycle test
- EOF
- exit 1
- }
- do_clean()
- {
- pid_is_valid ${TOP_PID} && kill_pid ${TOP_PID}
- }
- while getopts c:l: OPTION; do
- case $OPTION in
- c)
- CPU_TO_TEST=$OPTARG;;
- l)
- HOTPLUG06_LOOPS=$OPTARG;;
- ?)
- usage;;
- esac
- done
- LOOP_COUNT=1
- if top -v | grep -q htop; then
- tst_brkm TCONF "htop is used instead of top (workaround: alias top='/path/to/real/top')"
- fi
- if [ $(get_present_cpus_num) -lt 2 ]; then
- tst_brkm TCONF "system doesn't have required CPU hotplug support"
- fi
- if [ -z "$CPU_TO_TEST" ]; then
- tst_brkm TBROK "Usage: ${0##*/} <CPU to offline>"
- fi
- # Verify that the specified CPU is available
- if ! cpu_is_valid "${CPU_TO_TEST}" ; then
- tst_brkm TCONF "cpu${CPU_TO_TEST} doesn't support hotplug"
- 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_brkm TBROK "CPU${CPU_TO_TEST} cannot be onlined"
- fi
- fi
- TST_CLEANUP=do_clean
- until [ $LOOP_COUNT -gt $HOTPLUG06_LOOPS ]; 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_brkm TBROK "CPU${CPU_TO_TEST} cannot be offlined"
- 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 TFAIL "PID ${TOP_PID} no longer running"
- tst_exit
- fi
- online_cpu ${CPU_TO_TEST}
- kill_pid ${TOP_PID}
- LOOP_COUNT=$((LOOP_COUNT+1))
- done
- tst_resm TPASS "PID ${TOP_PID} still running."
- tst_exit
|