diff options
Diffstat (limited to 'common/scripts/test_can_bitrate.sh')
-rwxr-xr-x | common/scripts/test_can_bitrate.sh | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/common/scripts/test_can_bitrate.sh b/common/scripts/test_can_bitrate.sh new file mode 100755 index 0000000..6802714 --- /dev/null +++ b/common/scripts/test_can_bitrate.sh @@ -0,0 +1,185 @@ +#!/bin/sh + +#This test is writen taking the DRA7xx-EVM board as an example +#Theorical values of bitrate is from 1Kbit/s to 1Mbit/s +#Real values to provide transmission are between 10797 bit/s and 1909090git bit/s +#Real values that doesn't provide transmission but belong to the domain are between 781 bit/s and 5209999 bit/s + +if [ ! -e /sys/class/net/can1 ];then + lava-test-case canconfig_can0_bitrate --result skip + lava-test-case receive_frames_through_can1 --result skip + lava-test-case receive_frames_through_can1 --result skip + lava-test-case receive_frames_through_can1 --result skip + lava-test-case canconfig_can0_bitrate --result skip + lava-test-case receive_frames_through_can1 --result skip + exit 0 +fi + +#This is the first part of the test, that tests if the bitrate inserted belongs to the domain and if +#this first bitrate afford frames transmission or not +canconfig can0 stop +if [ $? -eq 0 ];then + lava-test-case stop_can0 --result pass +else + lava-test-case stop_can0 --result fail +fi +sleep 2 +canconfig can1 stop +if [ $? -eq 0 ];then + lava-test-case stop_can1 --result pass +else + lava-test-case stop_can1 --result fail +fi +sleep 2 + +# b refers to bitrate + +found_bitrate=0 +for b in `seq 778 790`;do + canconfig can0 bitrate $b + x=$? + if [ $x -eq 0 ];then + lava-test-case can0_bitrate --result pass --measurement $b --units bit/s + echo "$b is the first bitrate in the domain" + found_bitrate=1 + canconfig can1 bitrate $b + if [ $? -eq 0 ];then + lava-test-case can1_bitrate --result pass --measurement $b --units bit/s + else + lava-test-case can1_bitrate --result fail --measurement $b --units bit/s + fi + sleep 2 + canconfig can0 start + if [ $? -eq 0 ];then + lava-test-case start_can0 --result pass + else + lava-test-case start_can0 --result fail + fi + sleep 2 + canconfig can1 start + if [ $? -eq 0 ];then + lava-test-case start_can1 --result pass + else + lava-test-case start_can1 --result fail + fi + sleep 2 + file_can=$(mktemp) + cansequence -p can0 & + candump can1 > $file_can & + sleep 3 + if [ -s $file_can ];then + lava-test-case Receive_can1 --result pass --measurement $b --units bit/s + else + lava-test-case Receive_can1 --result fail --measurement $b --units bit/s + sleep 2 + echo "This bitrate $b belongs to the domain but doesn't provide frames transmission" + break + fi + rm $file_can + fi +done + +if [ $found_bitrate -eq 0 ];then + lava-test-case can0_bitrate --result fail --measurement $b --units bit/s + sleep 2 + echo "There is no supportable bitrate in this interval" +fi +canconfig can0 stop +canconfig can1 stop +sleep 2 +#This is the second part of the test, it tests the first bitrate to provide frames transmission + +canconfig can0 stop +canconfig can1 stop +found_bitrate_for_transmisson=0 +for b in `seq 10790 10800`;do + canconfig can0 bitrate $b + canconfig can1 bitrate $b + canconfig can0 start + canconfig can1 start + sleep 3 + file_can=$(mktemp) + cansequence -p can0 & + candump can1 > $file_can & + sleep 4 + if [ -s $file_can ];then + found_bitrate_for_transmisson=1 + lava-test-case Receive_can1 --result pass --measurement $b --units bit/s + sleep 2 + echo "$b is the first supportable bitrate to provide transmission" + break + fi + canconfig can0 stop + canconfig can1 stop + rm $file_can +done + +if [ $found_bitrate_for_transmisson -eq 0 ];then + lava-test-case Receive_can1 --result fail --measurement $b --units bit/s + sleep 2 + echo "There is no bitrate in this interval to provide frames transmission" +fi + + +#This is the third part of the test, it tests the last bitrate to provide frames transmission + +canconfig can0 stop +canconfig can1 stop +bitrate_no_transmission=0 +for b in `seq 1909088 1909092`;do + canconfig can0 bitrate $b + canconfig can1 bitrate $b + canconfig can0 start + canconfig can1 start + sleep 2 + file_can=$(mktemp) + cansequence -p can0 & + candump can1 > $file_can & + sleep 3 + size=$(stat -c %s $file_can) + if [ $size -eq 0 ];then + bitrate_no_transmission=1 + B=($b-1) + lava-test-case Receive_can1 --result pass --measurement $B --units bit/s + lava-test-case Receive_can1 --result fail --measurement $b --units bit/s + sleep 2 + echo "This bitrate $b doesn't provide frames transmission" + echo "The last bitrate to provide frames transmission is $(($b-1))" + break + fi + canconfig can0 stop + canconfig can1 stop + rm $file_can +done + +if [ $bitrate_no_transmission -eq 0 ];then + lava-test-case Receive_can1 --result pass --measurement $b --units bit/s + echo "All bitrates in this interval provide frames transmission" + canconfig can0 stop + canconfig can1 stop +fi + +#This is the last part of the test, it tests the last bitrate that belongs to the domain +sleep 3 +canconfig can0 stop +canconfig can1 stop +out_of_domain=0 +for b in `seq 5290999 5291000`;do + canconfig can0 bitrate $b + x=$? + sleep 2 + if [ $x -ne 0 ];then + out_of_domain=1 + lava-test-case can0_bitrate --result fail --measurement $b --units bit/s + echo "$b is the first bitrate to be out of the domain" + echo "The last bitrate to belong to the domain is $(($b-1))" + break + fi +done + +if [ $out_of_domain -eq 0 ];then + lava-test-case can0_bitrate --result pass --measurement $b --units bit/s + echo "All bitrates in this interval belong to the domain" + canconfig can0 stop + canconfig can1 stop +fi |