From: <ji...@wi...> - 2012-11-08 07:26:42
|
From: Jin Li <ji...@wi...> 1. split cpuhotplug test to seven cases 2. change scenario group file cpuhotplug Signed-off-by: Jin Li <ji...@wi...> --- runtest/cpuhotplug | 8 +- .../hotplug/cpu_hotplug/functional/cpuhotplug01.sh | 194 +++++++++++++++++++++ .../hotplug/cpu_hotplug/functional/cpuhotplug02.sh | 81 +++++++++ .../hotplug/cpu_hotplug/functional/cpuhotplug03.sh | 117 +++++++++++++ .../hotplug/cpu_hotplug/functional/cpuhotplug04.sh | 71 ++++++++ .../hotplug/cpu_hotplug/functional/cpuhotplug05.sh | 93 ++++++++++ .../hotplug/cpu_hotplug/functional/cpuhotplug06.sh | 78 +++++++++ .../hotplug/cpu_hotplug/functional/cpuhotplug07.sh | 88 ++++++++++ .../hotplug/cpu_hotplug/functional/hotplug01.sh | 194 --------------------- .../hotplug/cpu_hotplug/functional/hotplug02.sh | 81 --------- .../hotplug/cpu_hotplug/functional/hotplug03.sh | 117 ------------- .../hotplug/cpu_hotplug/functional/hotplug04.sh | 71 -------- .../cpu_hotplug/functional/hotplug06.sar.sh | 93 ---------- .../hotplug/cpu_hotplug/functional/hotplug06.sh | 33 ---- .../cpu_hotplug/functional/hotplug06.top.sh | 78 --------- .../hotplug/cpu_hotplug/functional/hotplug07.sh | 88 ---------- testcases/kernel/hotplug/cpu_hotplug/runtests.sh | 16 -- 17 files changed, 729 insertions(+), 772 deletions(-) create mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug01.sh create mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug02.sh create mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug03.sh create mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh create mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug05.sh create mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug06.sh create mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug07.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug01.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug02.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug03.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug04.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sar.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.top.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/functional/hotplug07.sh delete mode 100755 testcases/kernel/hotplug/cpu_hotplug/runtests.sh diff --git a/runtest/cpuhotplug b/runtest/cpuhotplug index af7dde5..274e9bf 100644 --- a/runtest/cpuhotplug +++ b/runtest/cpuhotplug @@ -1,3 +1,9 @@ ## Run the CPUHOTPLUG tests here -CPUHOTPLUG $LTPROOT/testcases/bin/cpu_hotplug/runtests.sh +cpuhotplug01 export CPU_TO_TEST=1; $LTPROOT/testcases/bin/cpu_hotplug/functional/cpuhotplug01.sh +cpuhotplug02 export CPU_TO_TEST=1; $LTPROOT/testcases/bin/cpu_hotplug/functional/cpuhotplug02.sh +cpuhotplug03 export CPU_TO_TEST=1; $LTPROOT/testcases/bin/cpu_hotplug/functional/cpuhotplug03.sh +cpuhotplug04 export CPU_TO_TEST=1; $LTPROOT/testcases/bin/cpu_hotplug/functional/cpuhotplug04.sh +cpuhotplug05 export CPU_TO_TEST=1; $LTPROOT/testcases/bin/cpu_hotplug/functional/cpuhotplug05.sh +cpuhotplug06 export CPU_TO_TEST=1; $LTPROOT/testcases/bin/cpu_hotplug/functional/cpuhotplug06.sh +cpuhotplug07 export CPU_TO_TEST=1; $LTPROOT/testcases/bin/cpu_hotplug/functional/cpuhotplug07.sh diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug01.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug01.sh new file mode 100755 index 0000000..acf7df1 --- /dev/null +++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug01.sh @@ -0,0 +1,194 @@ +#!/bin/sh +# +# Test Case 1 +# +# Based on script by Ashok Raj <ash...@in...> +# Modified by Mark D and Bryce, Aug '05. + +HOTPLUG01_LOOPS=${HOTPLUG01_LOOPS:-${LOOPS}} +export TCID="cpuhotplug01" +export TST_COUNT=1 +export TST_TOTAL=${HOTPLUG01_LOOPS:-1} + +CPU_TO_TEST=${CPU_TO_TEST:-1} +if [ -z "${CPU_TO_TEST}" ]; then + echo "usage: ${0##*/} <CPU to online>" + exit 1 +fi + +# Includes: +LHCS_PATH=${LHCS_PATH:-$LTPROOT/testcases/bin/cpu_hotplug} +. $LHCS_PATH/include/testsuite.fns +. $LHCS_PATH/include/hotplug.fns + +cat <<EOF +Name: $TCID +Date: `date` +Desc: What happens to disk controller interrupts when offlining CPUs? + +EOF + +# Time delay after an online of cpu +TM_ONLINE=${HOTPLUG01_TM_ONLINE:-1} + +# Time delay after offline of cpu +TM_OFFLINE=${HOTPLUG01_TM_OFFLINE:-1} + +# Time delay before start of entire new cycle. +TM_DLY=${HOTPLUG01_TM_DLY:-6} + +if ! type -P perl > /dev/null; then + tst_brk TCONF "analysis script - report_proc_interrupts - requires perl" + exit 1 +fi + +if ! get_all_cpus >/dev/null 2>&1; then + tst_brkm TCONF "system doesn't have required CPU hotplug support" + exit 1 +fi + +# Validate the specified CPU exists +if ! cpu_is_valid "${CPU_TO_TEST}" ; then + tst_resm TFAIL "cpu${CPU_TO_TEST} not found" + exit 1 +fi + +CPU_COUNT=0 +cpustate=1 + +if ! cpu_is_online "${CPU_TO_TEST}" ; then + if ! online_cpu ${CPU_TO_TEST} ; then + tst_resm TFAIL "Could not online cpu $CPU_TO_TEST" + exit_clean 1 + fi + cpustate=0 +fi + +# do_clean() +# +# Callback to be executed when script exits from a user interrupt +# or regular program termination +# +do_clean() +{ + kill_pid ${WRL_ID} + + # Turns off the cpus that were off before the test start + tst_resm TINFO "Return to previous state. CPU count = ${CPU_COUNT}" + until [ $CPU_COUNT -eq 0 ]; do + offline_cpu=$(eval "echo \$OFFLINE_CPU_${CPU_COUNT}") + tst_resm TINFO "CPU = $CPU_COUNT @on = $offline_cpu" + offline_cpu $offline_cpu + : $(( CPU_COUNT -= 1 )) + done + if [ "x${cpustate}" = x1 ]; then + online_cpu ${CPU_TO_TEST} + else + offline_cpu ${CPU_TO_TEST} + fi +} + + +# do_offline(CPU) +# +# Migrates some irq's onto the CPU, then offlines it +# +do_offline() +{ + CPU=${1#cpu} + # Migrate some irq's this way first. + IRQS=`get_all_irqs` + migrate_irq ${CPU} ${IRQS} + offline_cpu ${CPU} + if [ $? -ne 0 ]; then + if [ "$CPU" -ne 0 ]; then + : $(( CPU_COUNT += 1 )) + eval "OFFLINE_CPU_${CPU_COUNT}=$1" + fi + return 1 + fi + return 0 +} + + +# do_online(CPU) +# +# Onlines the CPU and then sets the smp_affinity of all IRQs to +# this CPU. +# +do_online() +{ + CPU=${1#cpu} + online_cpu ${CPU} + if [ $? -ne 0 ]; then + return 1 + fi + migrate_irq ${CPU} + if [ $? -ne 0 ]; then + return 1 + fi +} + +# Start up a process that writes to disk; keep track of its PID +$LHCS_PATH/tools/do_disk_write_loop > /dev/null 2>&1 & +WRL_ID=$! + +RC=0 +until [ $TST_COUNT -gt $TST_TOTAL -o $RC -ne 0 ] +do + + tst_resm TINFO "Starting loop" + IRQ_START=$(cat /proc/interrupts) + + # Attempt to offline all CPUs + for cpu in $( get_all_cpus ); do + if [ "$cpu" = "cpu0" ]; then + continue + fi + do_offline $cpu + err=$? + if [ $err -ne 0 ]; then + tst_resm TBROK "offlining $cpu failed: $err" + RC=2 + else + tst_resm TINFO "offlining $cpu was ok" + fi + sleep $TM_OFFLINE + done + + #IRQ_MID=`cat /proc/interrupts` + + # Attempt to online all CPUs + for cpu in $( get_all_cpus ); do + if [ "$cpu" = "cpu0" ]; then + continue + fi + do_online $cpu + err=$? + if [ $err -ne 0 ]; then + tst_resm TBROK "onlining $cpu failed: $err" + RC=2 + else + tst_resm TINFO "onlining $cpu was ok" + fi + sleep $TM_ONLINE + done + + IRQ_END=`cat /proc/interrupts` + + # Print out a report showing the changes in IRQs + echo + echo + $LHCS_PATH/tools/report_proc_interrupts "$IRQ_START" "$IRQ_END" + echo + + if [ $RC -eq 0 ] ; then + + sleep $TM_DLY + : $(( TST_COUNT += 1 )) + + fi + +done + +exit_clean $RC diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug02.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug02.sh new file mode 100755 index 0000000..3f9400b --- /dev/null +++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug02.sh @@ -0,0 +1,81 @@ +#!/bin/sh +# +# Test Case 2 +# + +HOTPLUG02_LOOPS=${HOTPLUG02_LOOPS:-${LOOPS}} +export TCID="cpuhotplug02" +export TST_COUNT=1 +export TST_TOTAL=${HOTPLUG02_LOOPS:-1} + +CPU_TO_TEST=${CPU_TO_TEST:-1} +if [ -z "$CPU_TO_TEST" ]; then + echo "usage: ${0##*} <CPU to online>" + exit 1 +fi + +# Includes: +LHCS_PATH=${LHCS_PATH:-$LTPROOT/testcases/bin/cpu_hotplug} +. $LHCS_PATH/include/testsuite.fns +. $LHCS_PATH/include/hotplug.fns + +cat <<EOF +Name: $TCID +Date: `date` +Desc: What happens to a process when its CPU is offlined? + +EOF + +# Start up a process that just uses CPU cycles +$LHCS_PATH/tools/do_spin_loop > /dev/null& +SPIN_LOOP_PID=$! + +# Validate the specified CPU exists +if ! cpu_is_valid "${CPU_TO_TEST}" ; then + tst_resm TBROK "cpu${CPU_TO_TEST} not found" + exit_clean 1 +fi + +# do_clean() +# +# Callback to be executed when script exits from a user interrupt +# or regular program termination. +# +do_clean() +{ + kill_pid ${SPIN_LOOP_PID} +} + +# Validate 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 TBROK "CPU${CPU_TO_TEST} cannot be onlined" + exit_clean 1 + fi +fi + +sleep 5 +until [ $TST_COUNT -gt $TST_TOTAL ]; do + # Move spin_loop.sh to the CPU to offline. + set_affinity ${SPIN_LOOP_PID} ${CPU_TO_TEST} + + # Verify the process migrated to the CPU we intended it to go to + offline_cpu ${CPU_TO_TEST} + NEW_CPU=`ps --pid=${SPIN_LOOP_PID} -o psr --no-headers` + if [ -z "${NEW_CPU}" ]; then + tst_resm TBROK "PID ${SPIN_LOOP_PID} no longer running" + exit_clean 1 + elif [ ${CPU_TO_TEST} = ${NEW_CPU} ]; then + tst_resm TFAIL "process did not change from CPU ${NEW_CPU}" + exit_clean 1 + fi + tst_resm TPASS "turned off CPU ${CPU_TO_TEST}, process migrated to CPU ${NEW_CPU}" + + # Turn the CPU back online just to see what happens. + online_cpu ${CPU_TO_TEST} + : $(( TST_COUNT += 1 )) +done + +sleep 2 + +exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug03.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug03.sh new file mode 100755 index 0000000..ca636d1 --- /dev/null +++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug03.sh @@ -0,0 +1,117 @@ +#!/bin/sh +# +# Test Case 3 +# + +HOTPLUG03_LOOPS=${HOTPLUG03_LOOPS:-${LOOPS}} +export TST_COUNT=1 +export TST_TOTAL=${HOTPLUG03_LOOPS:-1} +export TCID="cpuhotplug03" + +CPU_TO_TEST=${CPU_TO_TEST:-1} +if [ -z $CPU_TO_TEST ]; then + echo "usage: ${0##*} <CPU to online>" + exit 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: Do tasks get scheduled to a newly on-lined CPU? + +EOF + +# Verify the specified CPU exists +if ! cpu_is_valid "${CPU_TO_TEST}" ; then + tst_resm TCONF "CPU${CPU_TO_TEST} not found" + exit_clean 1 +fi + +# do_clean() +# +# Callback to be executed when script exits from a user interrupt +# or regular program termination +# +do_clean() +{ + # Kill all the processes we started up and get rid of their pid files + if [ -e "/var/run/hotplug4_$$.pid" ]; then + for i in `cat /var/run/hotplug4_$$.pid`; do + kill_pid $i + done + rm /var/run/hotplug4_$$.pid + fi + + # Turn off the CPUs that were off before the test start + until [ $cpu -eq 0 ];do + offline_cpu $(eval "echo \$on_${cpu}") + : $(( cpu -= 1 )) + done +} + +until [ $TST_COUNT -gt $TST_TOTAL ]; do + cpu=0 + number_of_cpus=0 + + # Turns on all CPUs and saves their states + for i in $( get_all_cpus ); do + if ! online_cpu $1; then + : $(( cpu += 1 )) + eval "on_${cpu}=$i" + fi + : $(( number_of_cpus += 1 )) + done + + if ! offline_cpu ${CPU_TO_TEST} ; then + tst_resm TBAIL "CPU${CPU_TO_TEST} cannot be offlined" + exit_clean 1 + fi + + # Start up a number of processes equal to twice the number of + # CPUs we have. This is to help ensure we've got enough processes + # that at least one will migrate to the new CPU. Store the PIDs + # so we can kill them later. + : $(( number_of_cpus *= 2 )) + until [ $number_of_cpus -eq 0 ]; do + $LHCS_PATH/tools/do_spin_loop > /dev/null 2>&1 & + echo $! >> /var/run/hotplug4_$$.pid + : $(( number_of_cpus -= 1 )) + done + + ps aux | head -n 1 + ps aux | grep do_spin_loop + + # Online the CPU + tst_resm TINFO "Onlining CPU ${CPU_TO_TEST}" + online_cpu ${CPU_TO_TEST} + RC=$? + if [ $RC -eq 0 ]; then + tst_resm TFAIL "CPU${CPU_TO_TEST} cannot be onlined" + exit_clean 1 + fi + + sleep 1 + + # Verify at least one process has migrated to the new CPU + ps -o psr -o command --no-headers -C do_spin_loop + RC=$? + NUM=`ps -o psr -o command --no-headers -C do_spin_loop | sed -e "s/^ *//" | cut -d' ' -f 1 | grep "^${CPU_TO_TEST}$" | wc -l` + if [ $RC -eq 0 ]; then + tst_resm TBROK "No do_spin_loop processes found on any processor" + elif [ $NUM -lt 1 ]; then + tst_resm TFAIL "No do_spin_loop processes found on CPU${CPU_TO_TEST}" + else + tst_resm TPASS "$NUM do_spin_loop processes found on CPU${CPU_TO_TEST}" + fi + + do_clean + + : $(( TST_COUNT +=1 )) +done + +exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh new file mode 100755 index 0000000..3e84354 --- /dev/null +++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug04.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# +# Test Case 4 +# + +HOTPLUG04_LOOPS=${HOTPLUG04_LOOPS:-${LOOPS}} +export TCID="cpuhotplug04" +export TST_COUNT=1 +export TST_TOTAL=${HOTPLUG04_LOOPS:-1} + +# 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 it prevent us from offlining the last CPU? + +EOF + +cpu=0 +until [ $TST_COUNT -gt $TST_TOTAL ]; do + cpustate=1 + + # Online all the CPUs' keep track of which were already on + for i in $(get_all_cpus); do + online_cpu $i + RC=$? + if [ $RC -ne 0 ]; then + : $(( cpu += 1 )) + eval "on_${cpu}=$i" + echo $i + fi + if [ $RC -eq 0 -a "$i" = "cpu0" ]; then + cpustate=0 + fi + done + + # Now offline all the CPUs + for i in $(get_all_cpus); do + offline_cpu $i + RC=$? + if [ $RC -eq 1 ]; then + if [ "x$i" != "xcpu0" ]; then + tst_resm TFAIL "Did not offline first CPU (offlined $i instead)" + else + tst_resm TPASS "Successfully offlined first CPU, $i" + fi + fi + done + + # Online the ones that were on initially + until [ $cpu -eq 0 ]; do + online_cpu $(eval "echo \$on_${cpu}") + : $(( cpu -= 1 )) + done + + # Return CPU 0 to its initial state + if [ $cpustate = 1 ]; then + online_cpu 0 + else + offline_cpu 0 + fi + + : $(( TST_COUNT += 1 )) + +done + +exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug05.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug05.sh new file mode 100755 index 0000000..ad57efe --- /dev/null +++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug05.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +# Test Case 6 - sar +# + +TST_TOTAL=${HOTPLUG06_LOOPS:-${LOOPS}} +export TCID="cpuhotplug05" +export TMP=${TMP:=/tmp} +export TST_COUNT=1 +export TST_TOTAL=${HOTPLUG06_LOOPS:-1} + +CPU_TO_TEST=${CPU_TO_TEST:-1} +if [ -z "$CPU_TO_TEST" ]; then + echo "usage: ${0##*} <CPU to offline>" + exit 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 sar behave properly during CPU hotplug events? + +EOF + +# Verify 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 offline; if not, offline it +if cpu_is_online "${CPU_TO_TEST}" ; then + if ! offline_cpu ${CPU_TO_TEST} ; then + tst_resm TBROK "CPU${CPU_TO_TEST} cannot be offlined" + exit_clean 1 + fi +fi + +do_clean() +{ + kill_pid ${SAR_PID} +} + +until [ $TST_COUNT -gt $TST_TOTAL ]; do + # Start up SAR and give it a couple cycles to run + sar -P ALL 1 0 > $TMP/log_$$ & + sleep 2 + SAR_PID=$! + + # Verify that SAR has correctly listed the missing CPU as 'nan' + while ! grep -iq nan $TMP/log_$$; do + tst_resm TFAIL "CPU${CPU_TO_TEST} Not Found on SAR!" + exit_clean 1 + done + time=`date +%X` + sleep .5 + + # Verify that at least some of the CPUs are offline + NUMBER_CPU_OFF=$(grep "$time" $TMP/log_$$ | grep -i nan | wc -l) + if [ ${NUMBER_CPU_OFF} -eq 0 ]; then + tst_resm TBROK "no CPUs found offline" + exit_clean 1 + fi + + # Online the CPU + if ! online_cpu ${CPU_TO_TEST}; then + tst_resm TFAIL "CPU${CPU_TO_TEST} cannot be onlined line" + exit_clean 1 + fi + + sleep 1 + time=$(date +%T) + sleep .5 + + # Check that SAR registered the change in CPU online/offline states + NEW_NUMBER_CPU_OFF=$(grep "$time" $TMP/log_$$ | grep -i nan | wc -l) + : $(( NUMBER_CPU_OFF -= 1 )) + if [ "$NUMBER_CPU_OFF" = "$NEW_NUMBER_CPU_OFF" ]; then + tst_resm TPASS "CPU was found after turned on." + else + tst_resm TFAIL "no change in number of offline CPUs was found." + fi + + : $(( TST_COUNT += 1 )) + +done + +exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug06.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug06.sh new file mode 100755 index 0000000..0778fa0 --- /dev/null +++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug06.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# +# Test Case 6 - top +# + +TST_TOTAL=${HOTPLUG06_LOOPS:-${LOOPS}} +export TCID="cpuhotplug06" +export TST_COUNT=1 +export TST_TOTAL=${HOTPLUG06_LOOPS:-1} + +CPU_TO_TEST=${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 diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug07.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug07.sh new file mode 100755 index 0000000..cd45677 --- /dev/null +++ b/testcases/kernel/hotplug/cpu_hotplug/functional/cpuhotplug07.sh @@ -0,0 +1,88 @@ +#!/bin/sh +# +# Test Case 7 +# +# Runs continuous offline/online of CPUs along with +# a kernel compilation load. + +TST_TOTAL=${HOTPLUG07_LOOPS:-${LOOPS}} +export TCID="cpuhotplug07" +export TST_COUNT=1 +export TST_TOTAL=${HOTPLUG07_LOOPS:-1} + +# 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: What happens when hotplugging during a heavy workload? +Issue: Hotplug bugs have been found during kernel compiles + +EOF + +CPU_TO_TEST=${CPU_TO_TEST:-1} +KERNEL_DIR=${2:-/usr/src/linux} +if [ -z "${CPU_TO_TEST}" ]; then + echo "usage: ${0##*/} <CPU to offline> <Kernel source code directory>" + exit_clean 1 +fi +if [ ! -d "${KERNEL_DIR}" ]; then + tst_resm TCONF "kernel directory - $KERNEL_DIR - does not exist" + exit_clean 1 +fi + +do_clean() +{ + kill_pid ${KCOMPILE_LOOP_PID} +} + +$LHCS_PATH/tools/do_kcompile_loop $KERNEL_DIR > /dev/null 2>&1 & +KCOMPILE_LOOP_PID=$! + +tst_resm TINFO "initial CPU affinity for kernel compile is: $(get_affinity_mask ${KCOMPILE_LOOP_PID})" + +if ! cpu_is_online ${CPU_TO_TEST}; then + if ! online_cpu ${CPU_TO_TEST}; then + tst_resm TBROK "CPU${CPU_TO_TEST} cannot be onlined" + exit_clean 1 + fi +fi + +sleep 2 + +until [ $TST_COUNT -gt $TST_TOTAL ]; do + + tst_resm TINFO "Starting loop" + + # Move spin_loop.sh to the CPU to offline. + set_affinity ${KCOMPILE_LOOP_PID} ${CPU_TO_TEST} + + offline_cpu ${CPU_TO_TEST} + RC=$? + echo "Offlining cpu${CPU_TO_TEST}: Return Code = ${RC}" + + NEW_CPU=`ps --pid=${KCOMPILE_LOOP_PID} -o psr --no-headers` + if [ -z "${NEW_CPU}" ]; then + tst_resm TBROK "PID ${KCOMPILE_LOOP_PID} no longer running" + exit_clean 1 + elif [ "${CPU_TO_TEST}" = "${NEW_CPU}" ]; then + tst_resm TFAIL "process did not change from CPU ${NEW_CPU}" + else + tst_resm TPASS "turned off CPU ${CPU_TO_TEST}, process migrated to CPU ${NEW_CPU}" + fi + + online_cpu ${CPU_TO_TEST} + RC=$? + + tst_resm TINFO "Onlining cpu${CPU_TO_TEST}: Return Code = ${RC}" + + : $(( TST_COUNT += 1 )) + +done + +sleep 2 + +exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug01.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug01.sh deleted file mode 100755 index 3c3cced..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug01.sh +++ /dev/null @@ -1,194 +0,0 @@ -#!/bin/sh -# -# Test Case 1 -# -# Based on script by Ashok Raj <ash...@in...> -# Modified by Mark D and Bryce, Aug '05. - -HOTPLUG01_LOOPS=${HOTPLUG01_LOOPS:-${LOOPS}} -export TCID="hotplug01" -export TST_COUNT=1 -export TST_TOTAL=${HOTPLUG01_LOOPS:-1} - -CPU_TO_TEST=${1#cpu} -if [ -z "${CPU_TO_TEST}" ]; then - echo "usage: ${0##*/} <CPU to online>" - exit 1 -fi - -# Includes: -LHCS_PATH=${LHCS_PATH:-$LTPROOT/testcases/bin/cpu_hotplug} -. $LHCS_PATH/include/testsuite.fns -. $LHCS_PATH/include/hotplug.fns - -cat <<EOF -Name: $TCID -Date: `date` -Desc: What happens to disk controller interrupts when offlining CPUs? - -EOF - -# Time delay after an online of cpu -TM_ONLINE=${HOTPLUG01_TM_ONLINE:-1} - -# Time delay after offline of cpu -TM_OFFLINE=${HOTPLUG01_TM_OFFLINE:-1} - -# Time delay before start of entire new cycle. -TM_DLY=${HOTPLUG01_TM_DLY:-6} - -if ! type -P perl > /dev/null; then - tst_brk TCONF "analysis script - report_proc_interrupts - requires perl" - exit 1 -fi - -if ! get_all_cpus >/dev/null 2>&1; then - tst_brkm TCONF "system doesn't have required CPU hotplug support" - exit 1 -fi - -# Validate the specified CPU exists -if ! cpu_is_valid "${CPU_TO_TEST}" ; then - tst_resm TFAIL "cpu${CPU_TO_TEST} not found" - exit 1 -fi - -CPU_COUNT=0 -cpustate=1 - -if ! cpu_is_online "${CPU_TO_TEST}" ; then - if ! online_cpu ${CPU_TO_TEST} ; then - tst_resm TFAIL "Could not online cpu $CPU_TO_TEST" - exit_clean 1 - fi - cpustate=0 -fi - -# do_clean() -# -# Callback to be executed when script exits from a user interrupt -# or regular program termination -# -do_clean() -{ - kill_pid ${WRL_ID} - - # Turns off the cpus that were off before the test start - tst_resm TINFO "Return to previous state. CPU count = ${CPU_COUNT}" - until [ $CPU_COUNT -eq 0 ]; do - offline_cpu=$(eval "echo \$OFFLINE_CPU_${CPU_COUNT}") - tst_resm TINFO "CPU = $CPU_COUNT @on = $offline_cpu" - offline_cpu $offline_cpu - : $(( CPU_COUNT -= 1 )) - done - if [ "x${cpustate}" = x1 ]; then - online_cpu ${CPU_TO_TEST} - else - offline_cpu ${CPU_TO_TEST} - fi -} - - -# do_offline(CPU) -# -# Migrates some irq's onto the CPU, then offlines it -# -do_offline() -{ - CPU=${1#cpu} - # Migrate some irq's this way first. - IRQS=`get_all_irqs` - migrate_irq ${CPU} ${IRQS} - offline_cpu ${CPU} - if [ $? -ne 0 ]; then - if [ "$CPU" -ne 0 ]; then - : $(( CPU_COUNT += 1 )) - eval "OFFLINE_CPU_${CPU_COUNT}=$1" - fi - return 1 - fi - return 0 -} - - -# do_online(CPU) -# -# Onlines the CPU and then sets the smp_affinity of all IRQs to -# this CPU. -# -do_online() -{ - CPU=${1#cpu} - online_cpu ${CPU} - if [ $? -ne 0 ]; then - return 1 - fi - migrate_irq ${CPU} - if [ $? -ne 0 ]; then - return 1 - fi -} - -# Start up a process that writes to disk; keep track of its PID -$LHCS_PATH/tools/do_disk_write_loop > /dev/null 2>&1 & -WRL_ID=$! - -RC=0 -until [ $TST_COUNT -gt $TST_TOTAL -o $RC -ne 0 ] -do - - tst_resm TINFO "Starting loop" - IRQ_START=$(cat /proc/interrupts) - - # Attempt to offline all CPUs - for cpu in $( get_all_cpus ); do - if [ "$cpu" = "cpu0" ]; then - continue - fi - do_offline $cpu - err=$? - if [ $err -ne 0 ]; then - tst_resm TBROK "offlining $cpu failed: $err" - RC=2 - else - tst_resm TINFO "offlining $cpu was ok" - fi - sleep $TM_OFFLINE - done - - #IRQ_MID=`cat /proc/interrupts` - - # Attempt to online all CPUs - for cpu in $( get_all_cpus ); do - if [ "$cpu" = "cpu0" ]; then - continue - fi - do_online $cpu - err=$? - if [ $err -ne 0 ]; then - tst_resm TBROK "onlining $cpu failed: $err" - RC=2 - else - tst_resm TINFO "onlining $cpu was ok" - fi - sleep $TM_ONLINE - done - - IRQ_END=`cat /proc/interrupts` - - # Print out a report showing the changes in IRQs - echo - echo - $LHCS_PATH/tools/report_proc_interrupts "$IRQ_START" "$IRQ_END" - echo - - if [ $RC -eq 0 ] ; then - - sleep $TM_DLY - : $(( TST_COUNT += 1 )) - - fi - -done - -exit_clean $RC diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug02.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug02.sh deleted file mode 100755 index f636117..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug02.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/sh -# -# Test Case 2 -# - -HOTPLUG02_LOOPS=${HOTPLUG02_LOOPS:-${LOOPS}} -export TCID="hotplug02" -export TST_COUNT=1 -export TST_TOTAL=${HOTPLUG02_LOOPS:-1} - -CPU_TO_TEST=$1 -if [ -z "$CPU_TO_TEST" ]; then - echo "usage: ${0##*} <CPU to online>" - exit 1 -fi - -# Includes: -LHCS_PATH=${LHCS_PATH:-$LTPROOT/testcases/bin/cpu_hotplug} -. $LHCS_PATH/include/testsuite.fns -. $LHCS_PATH/include/hotplug.fns - -cat <<EOF -Name: $TCID -Date: `date` -Desc: What happens to a process when its CPU is offlined? - -EOF - -# Start up a process that just uses CPU cycles -$LHCS_PATH/tools/do_spin_loop > /dev/null& -SPIN_LOOP_PID=$! - -# Validate the specified CPU exists -if ! cpu_is_valid "${CPU_TO_TEST}" ; then - tst_resm TBROK "cpu${CPU_TO_TEST} not found" - exit_clean 1 -fi - -# do_clean() -# -# Callback to be executed when script exits from a user interrupt -# or regular program termination. -# -do_clean() -{ - kill_pid ${SPIN_LOOP_PID} -} - -# Validate 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 TBROK "CPU${CPU_TO_TEST} cannot be onlined" - exit_clean 1 - fi -fi - -sleep 5 -until [ $TST_COUNT -gt $TST_TOTAL ]; do - # Move spin_loop.sh to the CPU to offline. - set_affinity ${SPIN_LOOP_PID} ${CPU_TO_TEST} - - # Verify the process migrated to the CPU we intended it to go to - offline_cpu ${CPU_TO_TEST} - NEW_CPU=`ps --pid=${SPIN_LOOP_PID} -o psr --no-headers` - if [ -z "${NEW_CPU}" ]; then - tst_resm TBROK "PID ${SPIN_LOOP_PID} no longer running" - exit_clean 1 - elif [ ${CPU_TO_TEST} = ${NEW_CPU} ]; then - tst_resm TFAIL "process did not change from CPU ${NEW_CPU}" - exit_clean 1 - fi - tst_resm TPASS "turned off CPU ${CPU_TO_TEST}, process migrated to CPU ${NEW_CPU}" - - # Turn the CPU back online just to see what happens. - online_cpu ${CPU_TO_TEST} - : $(( TST_COUNT += 1 )) -done - -sleep 2 - -exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug03.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug03.sh deleted file mode 100755 index 6923756..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug03.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/sh -# -# Test Case 3 -# - -HOTPLUG03_LOOPS=${HOTPLUG03_LOOPS:-${LOOPS}} -export TST_COUNT=1 -export TST_TOTAL=${HOTPLUG03_LOOPS:-1} -export TCID="hotplug03" - -CPU_TO_TEST=${1#cpu} -if [ -z $CPU_TO_TEST ]; then - echo "usage: ${0##*} <CPU to online>" - exit 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: Do tasks get scheduled to a newly on-lined CPU? - -EOF - -# Verify the specified CPU exists -if ! cpu_is_valid "${CPU_TO_TEST}" ; then - tst_resm TCONF "CPU${CPU_TO_TEST} not found" - exit_clean 1 -fi - -# do_clean() -# -# Callback to be executed when script exits from a user interrupt -# or regular program termination -# -do_clean() -{ - # Kill all the processes we started up and get rid of their pid files - if [ -e "/var/run/hotplug4_$$.pid" ]; then - for i in `cat /var/run/hotplug4_$$.pid`; do - kill_pid $i - done - rm /var/run/hotplug4_$$.pid - fi - - # Turn off the CPUs that were off before the test start - until [ $cpu -eq 0 ];do - offline_cpu $(eval "echo \$on_${cpu}") - : $(( cpu -= 1 )) - done -} - -until [ $TST_COUNT -gt $TST_TOTAL ]; do - cpu=0 - number_of_cpus=0 - - # Turns on all CPUs and saves their states - for i in $( get_all_cpus ); do - if ! online_cpu $1; then - : $(( cpu += 1 )) - eval "on_${cpu}=$i" - fi - : $(( number_of_cpus += 1 )) - done - - if ! offline_cpu ${CPU_TO_TEST} ; then - tst_resm TBAIL "CPU${CPU_TO_TEST} cannot be offlined" - exit_clean 1 - fi - - # Start up a number of processes equal to twice the number of - # CPUs we have. This is to help ensure we've got enough processes - # that at least one will migrate to the new CPU. Store the PIDs - # so we can kill them later. - : $(( number_of_cpus *= 2 )) - until [ $number_of_cpus -eq 0 ]; do - $LHCS_PATH/tools/do_spin_loop > /dev/null 2>&1 & - echo $! >> /var/run/hotplug4_$$.pid - : $(( number_of_cpus -= 1 )) - done - - ps aux | head -n 1 - ps aux | grep do_spin_loop - - # Online the CPU - tst_resm TINFO "Onlining CPU ${CPU_TO_TEST}" - online_cpu ${CPU_TO_TEST} - RC=$? - if [ $RC -eq 0 ]; then - tst_resm TFAIL "CPU${CPU_TO_TEST} cannot be onlined" - exit_clean 1 - fi - - sleep 1 - - # Verify at least one process has migrated to the new CPU - ps -o psr -o command --no-headers -C do_spin_loop - RC=$? - NUM=`ps -o psr -o command --no-headers -C do_spin_loop | sed -e "s/^ *//" | cut -d' ' -f 1 | grep "^${CPU_TO_TEST}$" | wc -l` - if [ $RC -eq 0 ]; then - tst_resm TBROK "No do_spin_loop processes found on any processor" - elif [ $NUM -lt 1 ]; then - tst_resm TFAIL "No do_spin_loop processes found on CPU${CPU_TO_TEST}" - else - tst_resm TPASS "$NUM do_spin_loop processes found on CPU${CPU_TO_TEST}" - fi - - do_clean - - : $(( TST_COUNT +=1 )) -done - -exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug04.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug04.sh deleted file mode 100755 index 8dce89d..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug04.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/sh -# -# Test Case 4 -# - -HOTPLUG04_LOOPS=${HOTPLUG04_LOOPS:-${LOOPS}} -export TCID="hotplug04" -export TST_COUNT=1 -export TST_TOTAL=${HOTPLUG04_LOOPS:-1} - -# 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 it prevent us from offlining the last CPU? - -EOF - -cpu=0 -until [ $TST_COUNT -gt $TST_TOTAL ]; do - cpustate=1 - - # Online all the CPUs' keep track of which were already on - for i in $(get_all_cpus); do - online_cpu $i - RC=$? - if [ $RC -ne 0 ]; then - : $(( cpu += 1 )) - eval "on_${cpu}=$i" - echo $i - fi - if [ $RC -eq 0 -a "$i" = "cpu0" ]; then - cpustate=0 - fi - done - - # Now offline all the CPUs - for i in $(get_all_cpus); do - offline_cpu $i - RC=$? - if [ $RC -eq 1 ]; then - if [ "x$i" != "xcpu0" ]; then - tst_resm TFAIL "Did not offline first CPU (offlined $i instead)" - else - tst_resm TPASS "Successfully offlined first CPU, $i" - fi - fi - done - - # Online the ones that were on initially - until [ $cpu -eq 0 ]; do - online_cpu $(eval "echo \$on_${cpu}") - : $(( cpu -= 1 )) - done - - # Return CPU 0 to its initial state - if [ $cpustate = 1 ]; then - online_cpu 0 - else - offline_cpu 0 - fi - - : $(( TST_COUNT += 1 )) - -done - -exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sar.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sar.sh deleted file mode 100755 index 745b4ae..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sar.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -# -# Test Case 6 - sar -# - -TST_TOTAL=${HOTPLUG06_LOOPS:-${LOOPS}} -export TCID="hotplug06.sar" -export TMP=${TMP:=/tmp} -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 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 sar behave properly during CPU hotplug events? - -EOF - -# Verify 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 offline; if not, offline it -if cpu_is_online "${CPU_TO_TEST}" ; then - if ! offline_cpu ${CPU_TO_TEST} ; then - tst_resm TBROK "CPU${CPU_TO_TEST} cannot be offlined" - exit_clean 1 - fi -fi - -do_clean() -{ - kill_pid ${SAR_PID} -} - -until [ $TST_COUNT -gt $TST_TOTAL ]; do - # Start up SAR and give it a couple cycles to run - sar -P ALL 1 0 > $TMP/log_$$ & - sleep 2 - SAR_PID=$! - - # Verify that SAR has correctly listed the missing CPU as 'nan' - while ! grep -iq nan $TMP/log_$$; do - tst_resm TFAIL "CPU${CPU_TO_TEST} Not Found on SAR!" - exit_clean 1 - done - time=`date +%X` - sleep .5 - - # Verify that at least some of the CPUs are offline - NUMBER_CPU_OFF=$(grep "$time" $TMP/log_$$ | grep -i nan | wc -l) - if [ ${NUMBER_CPU_OFF} -eq 0 ]; then - tst_resm TBROK "no CPUs found offline" - exit_clean 1 - fi - - # Online the CPU - if ! online_cpu ${CPU_TO_TEST}; then - tst_resm TFAIL "CPU${CPU_TO_TEST} cannot be onlined line" - exit_clean 1 - fi - - sleep 1 - time=$(date +%T) - sleep .5 - - # Check that SAR registered the change in CPU online/offline states - NEW_NUMBER_CPU_OFF=$(grep "$time" $TMP/log_$$ | grep -i nan | wc -l) - : $(( NUMBER_CPU_OFF -= 1 )) - if [ "$NUMBER_CPU_OFF" = "$NEW_NUMBER_CPU_OFF" ]; then - tst_resm TPASS "CPU was found after turned on." - else - tst_resm TFAIL "no change in number of offline CPUs was found." - fi - - : $(( TST_COUNT += 1 )) - -done - -exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sh deleted file mode 100755 index b0c79e0..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh -# -# Test Case 6 -# - -CPU_TO_TEST=${1#cpu} -TCID=hotplug06 - -if [ -z "$CPU_TO_TEST" ]; then - echo "usage: ${0##*/} <CPU to offline>" - exit 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: Verify user tools can handle adding and removing CPUs. - -EOF - -$LHCS_PATH/functional/hotplug06.top.sh ${CPU_TO_TEST} - -echo -echo - -$LHCS_PATH/functional/hotplug06.sar.sh ${CPU_TO_TEST} - -echo diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.top.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.top.sh deleted file mode 100755 index 16c88c6..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.top.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/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 diff --git a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug07.sh b/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug07.sh deleted file mode 100755 index 3ae1ccb..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/functional/hotplug07.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/sh -# -# Test Case 7 -# -# Runs continuous offline/online of CPUs along with -# a kernel compilation load. - -TST_TOTAL=${HOTPLUG07_LOOPS:-${LOOPS}} -export TCID="hotplug07" -export TST_COUNT=1 -export TST_TOTAL=${HOTPLUG07_LOOPS:-1} - -# 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: What happens when hotplugging during a heavy workload? -Issue: Hotplug bugs have been found during kernel compiles - -EOF - -CPU_TO_TEST=${1#cpu} -KERNEL_DIR=${2:-/usr/src/linux} -if [ -z "${CPU_TO_TEST}" ]; then - echo "usage: ${0##*/} <CPU to offline> <Kernel source code directory>" - exit_clean 1 -fi -if [ ! -d "${KERNEL_DIR}" ]; then - tst_resm TCONF "kernel directory - $KERNEL_DIR - does not exist" - exit_clean 1 -fi - -do_clean() -{ - kill_pid ${KCOMPILE_LOOP_PID} -} - -$LHCS_PATH/tools/do_kcompile_loop $KERNEL_DIR > /dev/null 2>&1 & -KCOMPILE_LOOP_PID=$! - -tst_resm TINFO "initial CPU affinity for kernel compile is: $(get_affinity_mask ${KCOMPILE_LOOP_PID})" - -if ! cpu_is_online ${CPU_TO_TEST}; then - if ! online_cpu ${CPU_TO_TEST}; then - tst_resm TBROK "CPU${CPU_TO_TEST} cannot be onlined" - exit_clean 1 - fi -fi - -sleep 2 - -until [ $TST_COUNT -gt $TST_TOTAL ]; do - - tst_resm TINFO "Starting loop" - - # Move spin_loop.sh to the CPU to offline. - set_affinity ${KCOMPILE_LOOP_PID} ${CPU_TO_TEST} - - offline_cpu ${CPU_TO_TEST} - RC=$? - echo "Offlining cpu${CPU_TO_TEST}: Return Code = ${RC}" - - NEW_CPU=`ps --pid=${KCOMPILE_LOOP_PID} -o psr --no-headers` - if [ -z "${NEW_CPU}" ]; then - tst_resm TBROK "PID ${KCOMPILE_LOOP_PID} no longer running" - exit_clean 1 - elif [ "${CPU_TO_TEST}" = "${NEW_CPU}" ]; then - tst_resm TFAIL "process did not change from CPU ${NEW_CPU}" - else - tst_resm TPASS "turned off CPU ${CPU_TO_TEST}, process migrated to CPU ${NEW_CPU}" - fi - - online_cpu ${CPU_TO_TEST} - RC=$? - - tst_resm TINFO "Onlining cpu${CPU_TO_TEST}: Return Code = ${RC}" - - : $(( TST_COUNT += 1 )) - -done - -sleep 2 - -exit_clean diff --git a/testcases/kernel/hotplug/cpu_hotplug/runtests.sh b/testcases/kernel/hotplug/cpu_hotplug/runtests.sh deleted file mode 100755 index 1943f83..0000000 --- a/testcases/kernel/hotplug/cpu_hotplug/runtests.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - - -CPU_TO_TEST=${CPU_TO_TEST:=1} -LOOPS=${LOOPS:=1} -export LHCS_PATH=${LHCS_PATH:-$LTPROOT/testcases/bin/cpu_hotplug} - - -echo "CPU: $CPU_TO_TEST" -echo "LOOPS: $LOOPS" -echo "LHCS_PATH: $LHCS_PATH" - - -for case in $LHCS_PATH/functional/hotplug??.sh; do - $case $CPU_TO_TEST -done -- 1.7.11 |