scripts: Add statistics to test suite runner
[renesas/vsp-tests.git] / scripts / vsp-tests.sh
1 #!/bin/sh
2
3 ##
4 ## VSP Tests runner
5 ##
6 ## Automatically execute all vsp-unit tests
7 ## Move test failure results to a specific folder for
8 ## the running kernel version
9 ##
10 ## An argument can be provided to specify the number of
11 ## iterations to perform
12 ##
13 ## usage:
14 ##  ./vsp-tests.sh <n>
15 ##
16 ##   n: Number of iterations to execute test suite
17 ##
18
19 KERNEL_VERSION=`uname -r`
20
21 run_test() {
22         local script=$1
23         local iteration=$2
24         local IFS="$(printf '\n\t')"
25
26         echo "- $script"
27
28         local output=$(./$script 2>&1 | tee /proc/self/fd/2)
29         for line in $output ; do
30                 (echo "$line" | grep -q 'fail$') && num_fail=$((num_fail+1))
31                 (echo "$line" | grep -q 'pass$') && num_pass=$((num_pass+1))
32                 (echo "$line" | grep -q 'skipped$') && num_skip=$((num_skip+1))
33                 num_test=$((num_test+1))
34         done
35
36         if [ $(ls *.bin 2>/dev/null | wc -l) != 0 ] ; then
37                 local dir=$KERNEL_VERSION/test-$script/$iteration/
38
39                 mkdir -p $dir
40                 mv *.bin $dir
41         fi
42 }
43
44 run_suite() {
45         echo "--- Test loop $1 ---"
46
47         num_fail=0
48         num_pass=0
49         num_skip=0
50         num_test=0
51
52         for test in vsp-unit-test*.sh; do
53                 run_test $test $1
54         done;
55
56         echo "$num_test tests: $num_pass passed, $num_fail failed, $num_skip skipped"
57 }
58
59 for loop in `seq 1 1 $1`; do
60         run_suite $loop
61 done;