Test infrastructure almost ready
authorMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 13 Jun 2009 23:08:02 +0000 (01:08 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 13 Jun 2009 23:08:02 +0000 (01:08 +0200)
canping
tests/lib.sh
tests/t01-simple.sh
tests/t02-virtual.sh [new file with mode: 0755]

diff --git a/canping b/canping
index c2d88b9..6725562 160000 (submodule)
--- a/canping
+++ b/canping
@@ -1 +1 @@
-Subproject commit c2d88b9017e8a92eb34a3b6ceeccf66c9091c2e9
+Subproject commit 6725562ff467c19d16284576bf5aa4a6ed8ab6c5
index 4fc9fc2..984af0a 100644 (file)
@@ -1,3 +1,10 @@
+
+while [ $# -gt 0 ]; do
+    case "$1" in
+       -p) OPT_PLOT_ONLY=1; shift;;
+    esac
+done
+
 set -x
 set -e
 
@@ -5,20 +12,68 @@ PATH=$PWD/../_compiled/bin/:$PATH
 
 rmmod_can() {
     modprobe -r lincan
+    modprobe -r kvaser_pci
+    modprobe -r vcan
 }
 
-load_lincan_hw() {
+prepare_lincan_hw() {
     rmmod_can
     modprobe -C /dev/null lincan hw=pcican-q io=1 baudrate=1000,1000,1000,1000 processlocal=0
+    CAN0=/dev/can0
+    CAN1=/dev/can1
+    DRIVER=lincan
     sleep 0.1
 }
 
-load_lincan_virtual() {
+prepare_lincan_virtual() {
     rmmod_can
     modprobe -C /dev/null lincan hw=virtual io=0 baudrate=0
+    CAN0=/dev/can0
+    DRIVER=lincan-virtual
     sleep 0.1
 }
 
-load_socketcan() {
+prepare_socketcan_hw() {
+    rmmod_can
+    modprobe kvaser_pci
+    echo 1000000 > /sys/class/net/can0/can_bittiming/bitrate
+    ip link set up dev can0
+    echo 1000000 > /sys/class/net/can1/can_bittiming/bitrate
+    ip link set up dev can1
+    echo 1000000 > /sys/class/net/can2/can_bittiming/bitrate
+    ip link set up dev can2
+    echo 1000000 > /sys/class/net/can3/can_bittiming/bitrate
+    ip link set up dev can3
+    CAN0=socketcan:can0
+    CAN1=socketcan:can1
+    DRIVER=socketcan
+}
+
+prepare_socketcan_virtual() {
     rmmod_can
+    modprobe vcan
+    ip link add dev vcan0 type vcan
+    ip link set up dev vcan0
+    CAN0=socketcan:vcan0
+    DRIVER=socketcan-virtual
 }
+
+run_tests() {
+    [ "$OPT_PLOT_ONLY" -eq 1 ] && return
+       
+    tests=${TESTS:-lincan_hw socketcan_hw}
+    for i in $tests; do
+       prepare_$i
+       t
+    done
+}
+
+plot() {
+    if [ -n "$PLOT_CMD" ]; then
+       echo "set terminal postscript color eps enhanced;
+             set output '`basename $0 .sh`.eps'; $PLOT_CMD" | gnuplot
+       echo "set terminal x11 enhanced; $PLOT_CMD" | gnuplot -persist
+    fi
+}
+
+trap 'run_tests && plot' EXIT
index 103630d..e6e92df 100755 (executable)
@@ -2,11 +2,19 @@
 
 . lib.sh
 
-load_lincan_hw
+t() {
+    PID_S=`vca_canping -s 1 -b -r -d $CAN1`
+    vca_canping -m 1 -r -v -g $DRIVER -t 1 -d $CAN0 -w 5 -c 1000
+    kill $PID_S
+}
 
-PID_S=`vca_canping -s 1 -b -r -d /dev/can1`
+PLOT_CMD='
+set logscale y
+set grid
+set title "Round-trip time measurement (`uname -r`)"
+set xlabel "Time [{/Symbol m}s]"
+set ylabel "Latency profile [messages]"
+plot [0:] "socketcan-1000.dat" with lp title "Socketcan",\
+          "lincan-1000.dat" with lp title "Lincan"
+'
 
-vca_canping -m 1 -r -v -t 1 -d /dev/can0 -w 5 -c 1000
-
-kill $PID_S
-#killall -9 vca_canping
diff --git a/tests/t02-virtual.sh b/tests/t02-virtual.sh
new file mode 100755 (executable)
index 0000000..9cc67b8
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+. lib.sh
+
+t() {
+    PID_S=`vca_canping -s 1 -b -r -d $CAN0`
+    vca_canping -m 1 -r -v -g $DRIVER -t 1 -d $CAN0 -w 1 -c 10000
+    kill $PID_S
+}
+
+TESTS="lincan_virtual socketcan_virtual"
+
+PLOT_CMD='
+set logscale y
+set grid
+set title "Round-trip time measurement - virtual CAN (`uname -r`)"
+set xlabel "Time [{/Symbol m}s]"
+set ylabel "Latency profile [messages]"
+plot [0:] "socketcan-virtual-1000.dat" with lp title "Socketcan",\
+          "lincan-virtual-1000.dat" with lp title "Lincan"
+'
+