28df3e565fe27a52b20f1e4c3f06f71d38b8d877
[vpp.git] / extras / hs-test / hs_test.sh
1 #!/usr/bin/env bash
2
3 source vars
4
5 args=
6 single_test=0
7 persist_set=0
8 unconfigure_set=0
9 debug_set=0
10 ginkgo_args=
11
12 for i in "$@"
13 do
14 case "${i}" in
15     --persist=*)
16         persist="${i#*=}"
17         if [ "$persist" = "true" ]; then
18             args="$args -persist"
19             persist_set=1
20         fi
21         ;;
22     --debug=*)
23         debug="${i#*=}"
24         if [ "$debug" = "true" ]; then
25             args="$args -debug"
26             debug_set=1
27         fi
28         ;;
29     --verbose=*)
30         verbose="${i#*=}"
31         if [ "$verbose" = "true" ]; then
32             args="$args -verbose"
33         fi
34         ;;
35     --unconfigure=*)
36         unconfigure="${i#*=}"
37         if [ "$unconfigure" = "true" ]; then
38             args="$args -unconfigure"
39             unconfigure_set=1
40         fi
41         ;;
42     --cpus=*)
43         args="$args -cpus ${i#*=}"
44         ;;
45     --vppsrc=*)
46         args="$args -vppsrc ${i#*=}"
47         ;;
48     --test=*)
49         tc_name="${i#*=}"
50         if [ "$tc_name" != "all" ]; then
51             single_test=1
52             ginkgo_args="$ginkgo_args --focus $tc_name -vv"
53             args="$args -verbose"
54         else
55             ginkgo_args="$ginkgo_args -v"
56         fi
57         ;;
58     --parallel=*)
59         ginkgo_args="$ginkgo_args -procs=${i#*=}"
60         ;;
61     --repeat=*)
62         ginkgo_args="$ginkgo_args --repeat=${i#*=}"
63         ;;
64 esac
65 done
66
67 if [ $single_test -eq 0 ] && [ $persist_set -eq 1 ]; then
68     echo "persist flag is not supported while running all tests!"
69     exit 1
70 fi
71
72 if [ $unconfigure_set -eq 1 ] && [ $single_test -eq 0 ]; then
73     echo "a single test has to be specified when unconfigure is set"
74     exit 1
75 fi
76
77 if [ $persist_set -eq 1 ] && [ $unconfigure_set -eq 1 ]; then
78     echo "setting persist flag and unconfigure flag is not allowed"
79     exit 1
80 fi
81
82 if [ $single_test -eq 0 ] && [ $debug_set -eq 1 ]; then
83     echo "VPP debug flag is not supperted while running all tests!"
84     exit 1
85 fi
86
87 mkdir -p summary
88 # shellcheck disable=SC2086
89 sudo -E go run github.com/onsi/ginkgo/v2/ginkgo --no-color --trace --json-report=summary/report.json $ginkgo_args -- $args
90
91 jq -r '.[0] | .SpecReports[] | select((.State == "failed") or (.State == "timedout") or (.State == "panicked")) | select(.Failure != null) | "TestName: \(.LeafNodeText)\nSuite:\n\(.Failure.Location.FileName)\nMessage:\n\(.Failure.Message)\n Full Stack Trace:\n\(.Failure.Location.FullStackTrace)\n"' summary/report.json > summary/failed-summary.log \
92         && echo "Summary generated -> summary/failed-summary.log"