Add first test that generates graph
[can-benchmark.git] / gw-tests / lib.sh
1 set -e
2
3 PATH=$PWD/../_compiled/bin/:$PATH
4
5 COUNT=10000
6
7 error() {
8     echo $1 >&2
9     exit 1
10 }
11
12 sshgw() {
13     local socket="$HOME/.ssh/cangw-connection"
14
15     if [[ ! -S $socket ]]; then
16         # Create master connection to speed up subsequenct command.
17         # The ssh is put into background and the connection is closed
18         # after 10 minutes)
19         ssh -f -M -S $socket root@192.168.2.3 sleep 600 > /dev/null 2>&1
20     fi
21     ssh -x -a -S $socket root@192.168.2.3 "$@"
22 }
23
24 _cleanupgw() {
25     # Set can interfaces up
26     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'
27     # Delete all GW rules
28     sshgw 'eval $(cangw -L|sed -e s/-A/-D/ -e "s/#.*/;/")'
29 }
30
31 _plot() {
32     local testname=`basename $0 .sh`
33
34     cmd=$(plot_cmds)                    # Get plot commands
35     cmd=$(echo "$cmd" | sed -e "/set title/ s/[\"']\(.*\)[\"']/\"\1\\\\n($kvers)\"/")
36     if [ -z "$OPT_NO_X11" ]; then
37         echo "set terminal x11 enhanced; ${cmd}" | gnuplot -persist
38     fi
39     I=''
40     echo 'set terminal postscript color eps enhanced size 6cm,4cm lw 1 "Times-Roman" 10;' \
41         'set lmargin 8;' \
42         "${cmd}" | gnuplot > ${testname}$I.eps
43     echo "set terminal postscript color eps enhanced;" \
44         "${cmd}" | gnuplot | epstopdf --filter > ${testname}$I.pdf
45     mkdir -p thumb
46     convert -density 30  -gamma 0.5 -quality 90 -type Palette -depth 8 ${testname}$I.pdf thumb/${testname}$I.png
47     convert -density 150 -gamma 0.7 -quality 90 -type Palette -depth 8 ${testname}$I.pdf ${testname}$I.png
48
49 }
50
51 create_dirs_and_links() {
52     local test=$1
53     local kver=$2
54
55     local  d=results/by-kern/$kver/$test
56     mkdir -p $d
57     mkdir -p results/by-test/$test
58     ln -sfT ../../${d#results/} results/by-test/$test/$kver
59     echo $d
60 }
61
62 _run() {
63     _cleanupgw
64     kvers=$(sshgw uname -r)
65     dir=$(create_dirs_and_links $(basename $0 .sh) $kvers)
66     cd $dir
67     main
68     _plot
69 }
70
71 test_end() {
72     test_end_called=t
73     trap '' DEBUG
74     _run
75 }
76
77 exit() {
78     if [[ ! "$test_end_called" ]]; then
79         test_end_called=t
80         error "bug in the test script: No test_end called"
81     fi
82 }
83
84 trap 'exit' EXIT