diff options
-rwxr-xr-x | runme.sh | 71 | ||||
-rwxr-xr-x | special-tests.sh | 43 |
2 files changed, 99 insertions, 15 deletions
@@ -14,9 +14,13 @@ source cpu.sh source governor.sh source special-tests.sh -OUTFILE=${1-dump} +OUTFILE=dump +FUNC=basic # do basic tests by default -cpufreq_test() +# Check validity of arguments +USAGE="Usage: $0 [-h] [-of args] [-h <help>] [-o <output-file-for-dump>] [-f <basic: cpufreq_basic_tests, sp1: governor_race, sp2: simple_lockdep, sp3: hotplug_with_updates>]" + +cpufreq_basic_tests() { echo "*** RUNNING CPUFREQ SANITY TESTS ***" echo "====================================" @@ -49,10 +53,61 @@ cpufreq_test() shuffle_frequency_for_all_cpus 2 } -# Check validity of arguments -if [ "$1" = "-h" -o "$1" = "--help" ]; then - echo "Usage: $0 <output-file-for-kernel-dumps>" - exit -fi +# Parse arguments +parse_arguments() +{ + while getopts hf:o: arguments 2>/dev/null + do + case $arguments in + h) # --help + echo "$USAGE" + exit 0 + ;; + + f) # --func_type (Function to perform: basic, sp1, sp2, sp3, default: basic) + FUNC=$OPTARG + ;; + + o) # --output-file (Output file to store dumps) + OUTFILE=$OPTARG + ;; + + \?) # getopts issues an error message + echo "$USAGE " + exit 1 + ;; + esac + done +} + +# Run isolation test for $FUNC +run_func() +{ + case "$FUNC" in + "basic") + call_routine cpufreq_basic_tests $OUTFILE + ;; + + "sp1") + governor_race + ;; + + "sp2") + simple_lockdep + ;; + + "sp3") + hotplug_with_updates + ;; + + *) + echo "Invalid [-f] function type" + ;; + esac +} + +# Parse isol arguments +parse_arguments $@ -call_routine cpufreq_test $OUTFILE +# Run requested functions +run_func diff --git a/special-tests.sh b/special-tests.sh index 603db1f..69165cd 100755 --- a/special-tests.sh +++ b/special-tests.sh @@ -15,9 +15,9 @@ source cpu.sh source cpufreq.sh source governor.sh -quick_shuffle_test1() +quick_shuffle() { - # this is called concurrently from governor_race_test + # this is called concurrently from governor_race for I in `seq 1000` do echo ondemand | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor & @@ -25,7 +25,7 @@ quick_shuffle_test1() done } -governor_race_test() +governor_race() { echo "** Test: Running ${FUNCNAME[0]} **" echo "" @@ -33,7 +33,7 @@ governor_race_test() # run 8 concurrent instances for I in `seq 8` do - quick_shuffle_test1 & + quick_shuffle & done } @@ -64,6 +64,35 @@ simple_lockdep() for_each_cpu __simple_lockdep } -# Run special tests -simple_lockdep -governor_race_test +# $1: cpu +hotplug_with_updates_cpu() +{ + local filepath="$CPU_PATH/$1/cpufreq" + + # switch to ondemand + __switch_governor $1 "ondemand" + + for i in `seq 1 5000` + do + offline_online_cpu $1 + done & + + local freqs=$(cat $filepath/scaling_available_frequencies) + local oldfreq=$(cat $filepath/scaling_min_freq) + + for j in `seq 1 5000` + do + # Set all frequencies one-by-one + for freq in $freqs; do + echo $freq > $filepath/scaling_min_freq + done + done + + # restore old freq + echo $oldfreq > $filepath/scaling_min_freq +} + +hotplug_with_updates() +{ + for_each_non_boot_cpu hotplug_with_updates_cpu +} |