Inverse the fail/pass logic
[src/qa-testdefinitions.git] / common / scripts / test_can_bitrate.sh
1 #!/bin/sh
2
3 #This test is writen taking the DRA7xx-EVM board as an example
4 #these tests will be skipped if 2 interfaces are not detected.
5 #Theorical values of bitrate is from 1Kbit/s to 1Mbit/s
6 #Real values to provide transmission are between 10797 bit/s and 1909090git bit/s
7 #Real values that doesn't provide transmission but belong to the domain are between 781 bit/s and 5209999 bit/s
8
9 if [ ! -e /sys/class/net/can1 ];then
10         lava-test-case can0_bitrate_range_start --result skip
11         lava-test-case can1_bitrate_range_start --result skip
12         lava-test-case can1_xfer_config_range_start --result skip
13         lava-test-case can1_xfer_tx_range_start --result skip
14         lava-test-case can1_xfer_tx_range_end  --result skip
15         lava-test-case can0_bitrate_range_end --result skip
16         exit 0
17 fi
18
19 #This is the first part of the test, that tests if the bitrate inserted belongs to the domain and if
20 #this first bitrate afford frames transmission or not
21 ip link set can0 down
22 if [ $? -eq 0 ];then
23     lava-test-case stop_can0 --result pass
24 else
25     lava-test-case stop_can0 --result fail
26 fi
27 sleep 2
28 ip link set can1 down
29 if [ $? -eq 0 ];then
30     lava-test-case stop_can1 --result pass
31 else
32     lava-test-case stop_can1 --result fail
33 fi
34 sleep 2
35
36 # b refers to bitrate
37
38 found_bitrate=0
39 for b in `seq 778 790`;do
40         ip link set can0 type can bitrate $b
41         x=$?
42         if [ $x -eq 0 ];then
43                 lava-test-case can0_bitrate_range_start --result pass --measurement $b --units bit/s
44                 echo "$b is the first bitrate in the domain"
45                 found_bitrate=1
46                 ip link set can1 type can bitrate $b
47                 if [ $? -eq 0 ];then
48                         lava-test-case can1_bitrate_range_start --result pass --measurement $b --units bit/s
49                 else
50                         lava-test-case can1_bitrate_range_start --result fail --measurement $b --units bit/s
51                 fi
52                 sleep 2
53                 ip link set can0 up
54                 if [ $? -eq 0 ];then
55                         lava-test-case start_can0 --result pass
56                 else
57                         lava-test-case start_can0 --result fail
58                 fi
59                 sleep 2
60                 ip link set can1 up
61                 if [ $? -eq 0 ];then
62                         lava-test-case start_can1 --result pass
63                 else
64                         lava-test-case start_can1 --result fail
65                 fi
66                 sleep 2
67                 file_can=$(mktemp)
68                 cangen can0 &
69                 candump can1 > $file_can &
70                 sleep 3
71                 if [ -s $file_can ];then
72                         lava-test-case can1_xfer_config_range_start --result fail --measurement $b --units bit/s
73                 else
74                         lava-test-case can1_xfer_config_range_start --result pass --measurement $b --units bit/s
75                         sleep 2
76                         echo "This bitrate $b belongs to the domain but doesn't provide frames transmission"
77                 fi
78                 rm $file_can
79                 break
80         fi
81 done
82
83 if [ $found_bitrate -eq 0 ];then
84         lava-test-case can0_bitrate_range_start --result fail --measurement $b --units bit/s
85         sleep 2
86         echo "There is no supportable bitrate in this interval"
87 fi
88 ip link set can0 down
89 ip link set can1 down
90 sleep 2
91 #This is the second part of the test, it tests the first bitrate to provide frames transmission
92
93 ip link set can0 down
94 ip link set can1 down
95 found_bitrate_for_transmisson=0
96 for b in `seq 10790 10800`;do
97     ip link set can0 type can bitrate $b
98     ip link set can1 type can bitrate $b
99     ip link set can0 up
100     ip link set can1 up
101     sleep 3
102     file_can=$(mktemp)
103         cangen can0 &
104         candump can1 > $file_can &
105         sleep 4
106     if [ -s $file_can ];then
107                 found_bitrate_for_transmisson=1
108                 lava-test-case can1_xfer_tx_range_start --result pass --measurement $b --units bit/s
109         sleep 2
110                 echo "$b is the first supportable bitrate to provide transmission"
111                 rm $file_can
112                 break
113         fi
114         ip link set can0 down
115         ip link set can1 down
116         rm $file_can
117 done
118
119 if [ $found_bitrate_for_transmisson -eq 0 ];then
120         lava-test-case can1_xfer_tx_range_start --result fail --measurement $b --units bit/s
121         sleep 2
122         echo "There is no bitrate in this interval to provide frames transmission"
123 fi
124
125
126 #This is the third part of the test, it tests the last bitrate to provide frames transmission
127
128 ip link set can0 down
129 ip link set can1 down
130 bitrate_no_transmission=0
131 for b in `seq 1909088 1909092`;do
132     ip link set can0 type can bitrate $b
133     ip link set can1 type can bitrate $b
134     ip link set can0 up
135     ip link set can1 up
136     sleep 2
137     file_can=$(mktemp)
138     cangen can0 &
139     candump can1 > $file_can &
140     sleep 3
141         size=$(stat -c %s $file_can)
142         if [ $size -eq 0 ];then
143                 bitrate_no_transmission=1
144                 lava-test-case can1_xfer_tx_range_end --result pass --measurement $(($b-1)) --units bit/s
145                 sleep 2
146                 echo "This bitrate $b doesn't provide frames transmission"
147                 echo "The last bitrate to provide frames transmission is $(($b-1))"
148                 break
149         fi
150         ip link set can0 down
151         ip link set can1 down
152     rm $file_can
153 done
154
155 if [ $bitrate_no_transmission -eq 0 ];then
156         lava-test-case can1_xfer_tx_range_end --result fail --measurement $b --units bit/s
157         echo "All bitrates in this interval provide frames transmission, the last bitrate not found in this range"
158         ip link set can0 down
159         ip link set can1 down
160 fi
161
162 #This is the last part of the test, it tests the last bitrate that belongs to the domain
163 sleep 3
164 ip link set can0 down
165 ip link set can1 down
166 out_of_domain=0
167 for b in `seq 5290999 5291000`;do
168         ip link set can0 type can bitrate $b
169         x=$?
170         sleep 2
171         if [ $x -ne 0 ];then
172                 out_of_domain=1
173                 lava-test-case can0_bitrate_range_end --result pass --measurement $(($b-1)) --units bit/s
174                 echo "$b is the first bitrate to be out of the domain"
175                 echo "The last bitrate to belong to the domain is $(($b-1))"
176                 break
177         fi
178 done
179
180 if [ $out_of_domain -eq 0 ];then
181         lava-test-case can0_bitrate_range_end --result fail --measurement $b --units bit/s
182         echo "All bitrates in this interval belong to the domain"
183         canconfig can0 stop
184         canconfig can1 stop
185 fi