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