Allow tests to generate more graphs
[can-benchmark.git] / tests / _lib.sh
1
2 while [ $# -gt 0 ]; do
3     case "$1" in
4         -p) OPT_PLOT_ONLY=1; shift;;
5         --pdf-only) OPT_PDF_ONLY=1; shift;;
6     esac
7 done
8
9 #set -x
10 set -e
11
12 PATH=$PWD/../_compiled/bin/:$PATH
13
14 RTPRIO=60
15
16 boost_irq_prio() {
17     local PRIO=${1:-50}
18     CAN_IRQ=`sed -ne '/can/ s/:.*//p' /proc/interrupts`
19     if [ -n "$CAN_IRQ" ]; then
20         IRQ_PID=`pidof IRQ-${CAN_IRQ/ /}` || true
21         [ -z "$IRQ_PID" ] || schedtool -F -p $PRIO $IRQ_PID 
22     fi
23 }
24
25 rmmod_can() {
26     modprobe -r lincan kvaser_pci vcan
27 }
28
29 prepare_lincan_hw() {
30     rmmod_can
31     modprobe -C /dev/null lincan hw=pcican-q io=1 baudrate=1000,1000,1000,1000 processlocal=0
32     CAN0=/dev/can0
33     CAN1=/dev/can1
34     DRIVER=lincan
35     sleep 0.1
36 }
37
38 prepare_lincan_virtual() {
39     rmmod_can
40     modprobe -C /dev/null lincan hw=virtual io=0 baudrate=0
41     CAN0=/dev/can0
42     DRIVER=lincan-virtual
43     sleep 0.1
44 }
45
46 prepare_socketcan_hw() {
47     rmmod_can
48     modprobe kvaser_pci
49     echo 1000000 > /sys/class/net/can0/can_bittiming/bitrate
50     ip link set up dev can0
51     echo 1000000 > /sys/class/net/can1/can_bittiming/bitrate
52     ip link set up dev can1
53     echo 1000000 > /sys/class/net/can2/can_bittiming/bitrate
54     ip link set up dev can2
55     echo 1000000 > /sys/class/net/can3/can_bittiming/bitrate
56     ip link set up dev can3
57     CAN0=socketcan:can0
58     CAN1=socketcan:can1
59     DRIVER=socketcan
60 }
61
62 prepare_socketcan_virtual() {
63     rmmod_can
64     modprobe vcan
65     ip link add dev vcan0 type vcan
66     ip link set up dev vcan0
67     CAN0=socketcan:vcan0
68     DRIVER=socketcan-virtual
69 }
70
71 run_tests() {
72     tests=${TESTS:-socketcan_hw lincan_hw}
73     for i in $tests; do
74         cpufreq-set -f 2400MHz
75         boost_irq_prio 50
76         prepare_$i
77         t
78     done
79 }
80
81 plot() {
82     for i in "${!PLOT_CMD[@]}"; do
83         if [ -z "$OPT_PDF_ONLY" ]; then
84             echo "set terminal x11 enhanced; ${PLOT_CMD[$i]}" | gnuplot -persist
85         fi
86         I=${i/0/}
87         echo "set terminal postscript color eps enhanced;
88               ${PLOT_CMD[$i]}" | gnuplot | epstopdf --filter > `basename $0 .sh`$I.pdf
89     done
90 }
91
92 go() {
93     d=results/`basename $0 .sh`/`uname -r`
94     set -x
95     mkdir -p $d
96     cd $d
97     
98     [ -n "$OPT_PLOT_ONLY" ] || run_tests
99     plot
100
101 }
102
103 trap 'go' EXIT