X-Git-Url: http://rtime.felk.cvut.cz/gitweb/can-benchmark.git/blobdiff_plain/baa1984efbcfdf18cdd00baf203dd24b9d5cf24c..d48a4f69b198ff8b3bd026ec63a5ec0905c97c08:/tests/_lib.sh diff --git a/tests/_lib.sh b/tests/_lib.sh index 281ddf9..1661814 100644 --- a/tests/_lib.sh +++ b/tests/_lib.sh @@ -2,7 +2,7 @@ while [ $# -gt 0 ]; do case "$1" in -p) OPT_PLOT_ONLY=1; shift;; - --pdf-only) OPT_PDF_ONLY=1; shift;; + -X|--no-x11-plot) OPT_NO_X11=1; shift;; esac done @@ -12,14 +12,19 @@ set -e PATH=$PWD/../_compiled/bin/:$PATH RTPRIO=60 +COUNT=10000 boost_irq_prio() { local PRIO=${1:-50} CAN_IRQ=`sed -ne '/can/ s/:.*//p' /proc/interrupts` if [ -n "$CAN_IRQ" ]; then IRQ_PID=`pidof IRQ-${CAN_IRQ/ /}` || true - [ -z "$IRQ_PID" ] || schedtool -F -p $PRIO $IRQ_PID + if [ -n "$IRQ_PID" ]; then + schedtool -F -p $PRIO $IRQ_PID + return 0 + fi fi + return 1 } rmmod_can() { @@ -70,33 +75,65 @@ prepare_socketcan_virtual() { run_tests() { tests=${TESTS:-socketcan_hw lincan_hw} - for i in $tests; do - cpufreq-set -f 2400MHz - boost_irq_prio 50 - prepare_$i + for tst in $tests; do + boost_irq_prio 50 || true + prepare_$tst t done } plot() { for i in "${!PLOT_CMD[@]}"; do - if [ -z "$OPT_PDF_ONLY" ]; then - echo "set terminal x11 enhanced; ${PLOT_CMD[$i]}" | gnuplot -persist + cmd="${PLOT_CMD[$i]}"; + cmd=$(echo "$cmd" | sed -e "/set title/ s/[\"']\(.*\)[\"']/'\1 ($(uname -r), CPU\\\\@${clk}Mhz)'/") + if [ -z "$OPT_NO_X11" ]; then + echo "set terminal x11 enhanced; ${cmd}" | gnuplot -persist fi I=${i/0/} echo "set terminal postscript color eps enhanced; - ${PLOT_CMD[$i]}" | gnuplot | epstopdf --filter > `basename $0 .sh`$I.pdf + ${cmd}" | gnuplot | epstopdf --filter > `basename $0 .sh`$I.pdf + mkdir -p thumb + convert -geometry 1000x100 -gamma 0.3 `basename $0 .sh`$I.pdf thumb/`basename $0 .sh`$I.png + convert -density 200 -gamma 0.7 -geometry 1000x500 `basename $0 .sh`$I.pdf `basename $0 .sh`$I.png done } -go() { - d=results/`basename $0 .sh`/`uname -r` - set -x +create_dirs_and_links() { + local test=$1 + local kver=$2 + local clck=$3 + + local d=results/by-test/$test/$kver/$clck mkdir -p $d - cd $d - - [ -n "$OPT_PLOT_ONLY" ] || run_tests - plot + mkdir -p results/by-test/$test/$clck # 1 + mkdir -p results/by-kern/$kver/$clck # 2 + mkdir -p results/by-kern/$kver/$test # 3 + mkdir -p results/by-clck/$clck/$kver # 4 + mkdir -p results/by-clck/$clck/$test # 5 + ln -sfT ../../../${d#results/} results/by-test/$test/$clck/$kver # 1 + ln -sfT ../../../${d#results/} results/by-kern/$kver/$clck/$test # 2 + ln -sfT ../../../${d#results/} results/by-kern/$kver/$test/$clck # 3 + ln -sfT ../../../${d#results/} results/by-clck/$clck/$kver/$test # 4 + ln -sfT ../../../${d#results/} results/by-clck/$clck/$test/$kver # 5 + echo $d +} + +go() { + mhz=${MHZ:-2400 300} + for clk in $mhz; do + dir=$(create_dirs_and_links `basename $0 .sh` `uname -r` $clk) + set -x + pushd $dir + + if [ ! -n "$OPT_PLOT_ONLY" ]; then + cpufreq-set -f ${clk}MHz + run_tests + cpufreq-set -f 2400MHz + fi + plot + popd + set +x + done }