]> rtime.felk.cvut.cz Git - can-benchmark.git/blobdiff - gw-tests/lib.sh
Add tests for -rt kernel
[can-benchmark.git] / gw-tests / lib.sh
index 5d3507f060208afe11afb737a32b2125db64d244..8771c7c4963cee0585f47fcb088393164c71b59f 100644 (file)
@@ -15,7 +15,7 @@ while [ $# -gt 0 ]; do
        -p) OPT_PLOT_ONLY=1; shift;;
        -X|--no-x11-plot) OPT_NO_X11=1; shift;;
        -t) case "$2" in
-               all|floof|50|oneatatime) OPT_TRAFFIC=$2;;
+               all|flood|50|oneatatime) OPT_TRAFFIC=$2;;
                *) error "Unknown traffic specification: $2";;
            esac;
            shift 2;;
@@ -27,7 +27,7 @@ PATH=$PWD/../_compiled/bin/:$PATH
 sshgw() {
     local socket="$HOME/.ssh/cangw-connection"
 
-    if [[ ! -S $socket ]]; then
+    if [[ ! -S $socket ]] || ! ssh -x -a -S $socket root@192.168.2.3 true; then
        # Create master connection to speed up subsequenct command.
        # The ssh is put into background and the connection is closed
        # after 10 minutes)
@@ -44,6 +44,7 @@ _plot() {
     local testname=`basename $0 .sh`
 
     plot_cmds | sed -e "/set title/ s/[\"']\(.*\)[\"']/\"\1\\\\n($kvers)\"/" > plot.gp
+    if [[ ! -s plot.gp ]]; then return; fi
     if [ -z "$OPT_NO_X11" ]; then
        echo "set terminal x11 enhanced; $(< plot.gp)" | gnuplot -persist
     fi
@@ -59,16 +60,6 @@ _plot() {
 
 }
 
-create_dirs() {
-    local kver=$1
-    local traffic=$2
-    local test=$3
-
-    local  d=results/$kver/$traffic/$test
-    mkdir -p $d
-    echo $d
-}
-
 echo_plot() {
     plot=$1
     [[ "$_plot_separator" ]] && echo ", \\"
@@ -98,7 +89,8 @@ _run() {
     fi
     for OPT_TRAFFIC in $traffics; do
     for kvers in $kernel_versions; do
-       dir=$(create_dirs $kvers $OPT_TRAFFIC $(basename $0 .sh))
+       dir="results/host-$(uname -r)/$kvers/$OPT_TRAFFIC/$(basename $0 .sh)"
+       mkdir -p $dir
        script=$PWD/$0
        cd $dir
        echo "Working directory: $dir"
@@ -106,15 +98,17 @@ _run() {
            # Remove data from the last measurement
            rm -rf *
            # Set can interfaces up
-           sshgw 'for i in 0 1; do ip link show dev can$i|grep -q UP || ip link set can$i up type can bitrate 1000000; done'
+           sshgw 'for i in 0 1; do ip link show dev can$i|grep -q UP || ip link set can$i up type can bitrate 1000000; done'
            # Delete all vcan interfaces
-           sshgw 'for dev in $(ip l|grep -o vcan[^:]\\+); do ip link del dev $dev; done'
+           sshgw 'for dev in $(ip l|grep -o vcan[^:]\\+); do ip link del dev $dev; done'
            # Reset priorities
-           sshgw 'chrt -p -f 50 `pidof irq/145-can0` > /dev/null || :'
-           sshgw 'chrt -p -f 50 `pidof irq/146-can1` > /dev/null || :'
-           sshgw 'chrt -p -f 49 `pidof sirq-net-rx/0` > /dev/null || :'
-           sshgw 'chrt -p -f 49 `pidof sirq-net-tx/0` > /dev/null || :'
-           cleanupgw
+           sshgw 'if pid=`pidof irq/145-can0`; then chrt -p -f 50 $pid > /dev/null; fi'
+           sshgw 'if pid=`pidof irq/146-can1`; then chrt -p -f 50 $pid > /dev/null; fi'
+           sshgw 'if pid=`pidof sirq-net-rx/0`; then chrt -p -f 49 $pid > /dev/null; fi'
+           sshgw 'if pid=`pidof sirq-net-tx/0`; then chrt -p -f 49 $pid > /dev/null; fi'
+           # Set the length of qdisc queue to avoid ENOBUFS errors
+           ifconfig can0 txqueuelen 200
+           cleanupgw
 
            main
            cp $script .