aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcommon/scripts/test_can_bitrate.sh185
-rwxr-xr-xcommon/scripts/test_can_loopback_mode.sh61
-rwxr-xr-xcommon/scripts/test_can_modules.sh139
-rwxr-xr-xcommon/scripts/test_can_send_receive.sh79
-rwxr-xr-xcommon/scripts/test_stats.sh37
-rw-r--r--test-suites/short-smoke/test_can.yaml26
6 files changed, 527 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
diff --git a/common/scripts/test_can_loopback_mode.sh b/common/scripts/test_can_loopback_mode.sh
new file mode 100755
index 0000000..bd96c6b
--- /dev/null
+++ b/common/scripts/test_can_loopback_mode.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+if [ ! -e /sys/class/net/can0 ];then
+ lava-test-case canconfig_can0 --result skip
+ lava-test-case start_can0 --result skip
+ lava-test-case send_frames_through_can0 --result skip
+ lava-test-case receive_frames_through_can0 --result skip
+ lava-test-case stop_can0 --result skip
+ exit 0
+fi
+sleep 2
+#config the can interfaces
+canconfig can0 bitrate 50000 ctrlmode loopback on
+sleep 2
+if [ $? -eq 0 ];then
+ lava-test-case canconfig_can0 --result pass
+else
+ lava-test-case canconfig_can0 --result fail
+fi
+sleep 3
+
+#bring up the devices
+canconfig can0 start
+if [ $? -eq 0 ];then
+ lava-test-case start_can0 --result pass
+else
+ lava-test-case start_can0 --result fail
+fi
+sleep 4
+
+#send frames
+cansequence -p can0 &
+x=$?
+sleep 5
+if [ $x -eq 0 ];then
+ lava-test-case send_frames_through_can0 --result pass
+else
+ lava-test-case send_frames_through_can0 --result fail
+fi
+sleep 3
+file_can=$(mktemp)
+
+#receive frames
+candump can0 > $file_can &
+sleep 4
+if [ -s $file_can ];then
+ lava-test-case receive_frames_through_can0 --result pass
+else
+ lava-test-case receive_frames_through_can0 --result fail
+fi
+rm $file_can
+
+sleep 3
+canconfig can0 stop
+if [ $? -eq 0 ];then
+ lava-test-case stop_can0 --result pass
+else
+ lava-test-case stop_can0 --result fail
+fi
+
+sleep 5
diff --git a/common/scripts/test_can_modules.sh b/common/scripts/test_can_modules.sh
new file mode 100755
index 0000000..d7966b4
--- /dev/null
+++ b/common/scripts/test_can_modules.sh
@@ -0,0 +1,139 @@
+#!/bin/sh
+
+if [ ! -e /sys/class/net/can1 ];then
+ lava-test-case show_can_modules --result skip
+ lava-test-case unload_can_raw_module --result skip
+ lava-test-case unload_can_module --result skip
+ lava-test-case unload_c_can_platform_module --result skip
+ lava-test-case unload_c_can_module --result skipp
+ lava-test-case unload_can_dev_module --result skip
+ lava-test-case canconfig_can0 --result skip
+ lava-test-case canconfig_can1 --result skip
+ lava-test-case load_can_module --result skip
+ lava-test-case load_can_raw_module --result skip
+ lava-test-case load_c_can_module --result skip
+ lava-test-case load_can_dev_module --result skip
+ lava-test-case canconfig_can0 --result skip
+ lava-test-case canconfig_can1 --result skip
+ exit 0
+fi
+lsmod | grep can
+if [ $? -eq 0 ];then
+ lava-test-case show_can_modules --result pass
+else
+ lava-test-case show_can_modules --result fail
+fi
+
+sleep 4
+
+rmmod can_raw
+if [ $? -eq 0 ];then
+ lava-test-case unload_can_raw_module --result pass
+else
+ lava-test-case unload_can_raw_module --result fail
+fi
+
+rmmod can
+if [ $? -eq 0 ];then
+ lava-test-case unload_can_module --result pass
+else
+ lava-test-case unload_can_module --result fail
+fi
+
+rmmod c_can_platform
+if [ $? -eq 0 ];then
+ lava-test-case unload_c_can_platform_module --result pass
+else
+ lava-test-case unload_c_can_platform_module --result fail
+fi
+
+rmmod c_can
+if [ $? -eq 0 ];then
+ lava-test-case unload_c_can_module --result pass
+else
+ lava-test-case unload_c_can_module --result fail
+fi
+
+rmmod can_dev
+if [ $? -eq 0 ];then
+ lava-test-case unload_can_dev_module --result pass
+else
+ lava-test-case unload_can_dev_module --result fail
+fi
+
+sleep 5
+
+canconfig can0 bitrate 50000
+if [ $? -eq 0 ];then
+ lava-test-case canconfig_can0 --result fail
+else
+ lava-test-case canconfig_can0 --result pass
+fi
+
+sleep 3
+
+canconfig can1 bitrate 50000
+if [ $? -eq 0 ];then
+ lava-test-case canconfig_can1 --result fail
+else
+ lava-test-case canconfig_can1 --result pass
+fi
+
+sleep 5
+
+modprobe can
+if [ $? -eq 0 ];then
+ lava-test-case load_can_module --result pass
+else
+ lava-test-case load_can_module --result fail
+fi
+
+modprobe can_raw
+x=$?
+sleep 5
+if [ $x -eq 0 ];then
+ lava-test-case load_can_raw_module --result pass
+else
+ lava-test-case load_can_raw_module --result fail
+fi
+sleep 3
+
+modprobe c_can
+if [ $? -eq 0 ];then
+ lava-test-case load_c_can_module --result pass
+else
+ lava-test-case load_c_can_module --result fail
+fi
+
+modprobe c_can_platform
+if [ $? -eq 0 ];then
+ lava-test-case load_c_can_platform_module --result pass
+else
+ lava-test-case load_c_can_platform_module --result fail
+fi
+
+modprobe can_dev
+if [ $? -eq 0 ];then
+ lava-test-case load_can_dev_module --result pass
+else
+ lava-test-case load_can_dev_module --result fail
+fi
+
+sleep 5
+
+canconfig can0 bitrate 50000
+if [ $? -eq 0 ];then
+ lava-test-case canconfig_can0 --result pass
+else
+ lava-test-case canconfig_can0 --result fail
+fi
+
+sleep 3
+canconfig can1 bitrate 50000
+if [ $? -eq 0 ];then
+ lava-test-case canconfig_can1 --result pass
+else
+ lava-test-case canconfig_can1 --result fail
+fi
+
+sleep 3
diff --git a/common/scripts/test_can_send_receive.sh b/common/scripts/test_can_send_receive.sh
new file mode 100755
index 0000000..d5d155c
--- /dev/null
+++ b/common/scripts/test_can_send_receive.sh
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+
+if [ ! -e /sys/class/net/can1 ];then
+ lava-test-case canconfig_can0 --result skip
+ lava-test-case canconfig_can1 --result skip
+ lava-test-case start_can0 --result skip
+ lava-test-case start_can1 --result skip
+ lava-test-case send_frames_through_can0 --result skip
+ lava-test-case receive_frames_through_can1 --result skip
+ lava-test-case stop_can0 --result skip
+ lava-test-case stop_can1 --result skip
+ exit 0
+fi
+
+#config the can interfaces
+canconfig can0 bitrate 50000
+if [ $? -eq 0 ];then
+ lava-test-case canconfig_can0 --result pass
+else
+ lava-test-case canconfig_can0 --result fail
+fi
+sleep 3
+canconfig can1 bitrate 50000
+if [ $? -eq 0 ];then
+ lava-test-case canconfig_can1 --result pass
+else
+ lava-test-case canconfig_can1 --result fail
+fi
+sleep 3
+#bring up the devices
+canconfig can0 start
+if [ $? -eq 0 ];then
+ lava-test-case start_can0 --result pass
+else
+ lava-test-case start_can0 --result fail
+fi
+sleep 3
+canconfig can1 start
+if [ $? -eq 0 ];then
+ lava-test-case start_can1 --result pass
+else
+ lava-test-case start_can1 --result fail
+fi
+sleep 3
+#send frames
+cansequence -p can0 &
+if [ $? -eq 0 ];then
+ lava-test-case send_frames_through_can0 --result pass
+else
+ lava-test-case send_frames_through_can0 --result fail
+fi
+
+#receive frames
+file_can=$(mktemp)
+candump can1 > $file_can &
+sleep 3
+if [ -s $file_can ];then
+ lava-test-case receive_frames_through_can1 --result pass
+else
+ lava-test-case receive_frames_through_can1 --result fail
+fi
+rm $file_can
+
+sleep 10
+canconfig can0 stop
+if [ $? -eq 0 ];then
+ lava-test-case stop_can0 --result pass
+else
+ lava-test-case stop_can0 --result fail
+fi
+sleep 3
+canconfig can1 stop
+if [ $? -eq 0 ];then
+ lava-test-case stop_can1 --result pass
+else
+ lava-test-case stop_can1 --result fail
+fi
+sleep 5
diff --git a/common/scripts/test_stats.sh b/common/scripts/test_stats.sh
new file mode 100755
index 0000000..de73671
--- /dev/null
+++ b/common/scripts/test_stats.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+
+if [ ! -e /sys/class/net/can1 ];then
+ lava-test-case show_can_stats --result skip
+ lava-test-case show_can0_stats --result skip
+ lava-test-case show_can1_stats --result skip
+ exit 0
+fi
+
+# show can interfaces stats
+cat /proc/net/can/stats
+if [ $? -eq 0 ];then
+ lava-test-case show_can_stats --result pass
+else
+ lava-test-case show_can_stats --result fail
+fi
+
+sleep 5
+
+ip -d -s link show can0
+if [ $? -eq 0 ];then
+ lava-test-case show_can0_stats --result pass
+else
+ lava-test-case show_can0_stats --result fail
+fi
+
+sleep 5
+
+ip -d -s link show can1
+if [ $? -eq 0 ];then
+ lava-test-case show_can1_stats --result pass
+else
+ lava-test-case show_can1_stats --result fail
+fi
+
+sleep 7
diff --git a/test-suites/short-smoke/test_can.yaml b/test-suites/short-smoke/test_can.yaml
new file mode 100644
index 0000000..a55eaab
--- /dev/null
+++ b/test-suites/short-smoke/test_can.yaml
@@ -0,0 +1,26 @@
+# these tests are applicable if and only if the board to be used has two CAN interfaces
+
+metadata:
+ name: my_can_test
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "my_can_test"
+ version: 1.0
+
+run:
+ steps:
+ - echo "CAN_tests"
+ - lava-test-set start test_can_loopback_mode
+ - ./common/scripts/test_can_loopback_mode.sh
+ - lava-test-set stop
+ - lava-test-set start test_can_send_receive
+ - ./common/scripts/test_can_send_receive.sh
+ - lava-test-set stop
+ - lava-test-set start test_stats
+ - ./common/scripts/test_stats.sh
+ - lava-test-set stop
+ - lava-test-set start test_can_modules
+ - ./common/scripts/test_can_modules.sh
+ - lava-test-set stop
+ - lava-test-set start test_can_bitrate
+ - ./comon/scripts/test_can_bitrate.sh
+ - lava-test-set stop