1fe2501702
Type: fix Change-Id: I8d88fc5ccb37cc18c785b5dca47c7f66afefb73a Signed-off-by: Matus Fabian <matfabia@cisco.com>
165 lines
4.1 KiB
Bash
165 lines
4.1 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
source vars
|
|
|
|
args=
|
|
focused_test=0
|
|
persist_set=0
|
|
dryrun_set=0
|
|
unconfigure_set=0
|
|
debug_set=0
|
|
leak_check_set=0
|
|
debug_build=
|
|
ginkgo_args=
|
|
tc_names=()
|
|
dryrun=
|
|
|
|
for i in "$@"
|
|
do
|
|
case "${i}" in
|
|
--persist=*)
|
|
persist="${i#*=}"
|
|
if [ "$persist" = "true" ]; then
|
|
args="$args -persist"
|
|
persist_set=1
|
|
fi
|
|
;;
|
|
--debug=*)
|
|
debug="${i#*=}"
|
|
if [ "$debug" = "true" ]; then
|
|
args="$args -debug"
|
|
debug_set=1
|
|
fi
|
|
;;
|
|
--debug_build=*)
|
|
debug_build="${i#*=}"
|
|
if [ "$debug_build" = "true" ]; then
|
|
args="$args -debug_build"
|
|
fi
|
|
;;
|
|
--verbose=*)
|
|
verbose="${i#*=}"
|
|
if [ "$verbose" = "true" ]; then
|
|
args="$args -verbose"
|
|
fi
|
|
;;
|
|
--unconfigure=*)
|
|
unconfigure="${i#*=}"
|
|
if [ "$unconfigure" = "true" ]; then
|
|
args="$args -unconfigure"
|
|
unconfigure_set=1
|
|
fi
|
|
;;
|
|
--cpus=*)
|
|
args="$args -cpus ${i#*=}"
|
|
;;
|
|
--vppsrc=*)
|
|
args="$args -vppsrc ${i#*=}"
|
|
;;
|
|
--test=*)
|
|
tc_list="${i#*=}"
|
|
ginkgo_args="$ginkgo_args -v"
|
|
if [ "$tc_list" != "all" ]; then
|
|
focused_test=1
|
|
IFS=',' read -r -a tc_names <<< "$tc_list"
|
|
args="$args -verbose"
|
|
fi
|
|
;;
|
|
--parallel=*)
|
|
ginkgo_args="$ginkgo_args -procs=${i#*=}"
|
|
;;
|
|
--repeat=*)
|
|
ginkgo_args="$ginkgo_args --repeat=${i#*=}"
|
|
;;
|
|
--cpu0=*)
|
|
cpu0="${i#*=}"
|
|
if [ "$cpu0" = "true" ]; then
|
|
args="$args -cpu0"
|
|
fi
|
|
;;
|
|
--dryrun=*)
|
|
dryrun="${i#*=}"
|
|
if [ "$dryrun" = "true" ]; then
|
|
args="$args -dryrun"
|
|
dryrun_set=1
|
|
fi
|
|
;;
|
|
--leak_check=*)
|
|
leak_check="${i#*=}"
|
|
if [ "$leak_check" = "true" ]; then
|
|
args="$args -leak_check"
|
|
leak_check_set=1
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ ${#tc_names[@]} -gt 1 ]
|
|
then
|
|
focused_test=0
|
|
fi
|
|
|
|
for name in "${tc_names[@]}"; do
|
|
ginkgo_args="$ginkgo_args --focus $name"
|
|
done
|
|
|
|
if [ $focused_test -eq 0 ] && { [ $persist_set -eq 1 ] || [ $dryrun_set -eq 1 ]; }; then
|
|
echo -e "\e[1;31mpersist/dryrun flag is not supported while running all tests!\e[1;0m"
|
|
exit 2
|
|
fi
|
|
|
|
if [ $unconfigure_set -eq 1 ] && [ $focused_test -eq 0 ]; then
|
|
echo -e "\e[1;31ma single test has to be specified when unconfigure is set\e[1;0m"
|
|
exit 2
|
|
fi
|
|
|
|
if [ $persist_set -eq 1 ] && [ $unconfigure_set -eq 1 ]; then
|
|
echo -e "\e[1;31msetting persist flag and unconfigure flag is not allowed\e[1;0m"
|
|
exit 2
|
|
fi
|
|
|
|
if [ $focused_test -eq 0 ] && [ $debug_set -eq 1 ]; then
|
|
echo -e "\e[1;31mVPP debug flag is not supported while running all tests!\e[1;0m"
|
|
exit 2
|
|
fi
|
|
|
|
if [ $leak_check_set -eq 1 ]; then
|
|
if [ $focused_test -eq 0 ]; then
|
|
echo -e "\e[1;31ma single test has to be specified when leak_check is set\e[1;0m"
|
|
exit 2
|
|
fi
|
|
ginkgo_args="--focus ${tc_names[0]}"
|
|
sudo -E go run github.com/onsi/ginkgo/v2/ginkgo $ginkgo_args -- $args
|
|
exit 0
|
|
fi
|
|
|
|
if [ -n "${BUILD_NUMBER}" ]; then
|
|
ginkgo_args="$ginkgo_args --no-color"
|
|
fi
|
|
|
|
mkdir -p summary
|
|
# shellcheck disable=SC2086
|
|
sudo -E go run github.com/onsi/ginkgo/v2/ginkgo --json-report=summary/report.json $ginkgo_args -- $args
|
|
|
|
if [ $? != 0 ]; then
|
|
jq -r '.[0] | .SpecReports[] | select((.State == "failed") or (.State == "timedout") or (.State == "panicked")) | select(.Failure != null) |
|
|
"TestName:
|
|
\(.LeafNodeText)
|
|
Suite:
|
|
\(.Failure.FailureNodeLocation.FileName)
|
|
Message:\n"
|
|
+(if .ReportEntries? then .ReportEntries[] | select(.Name == "VPP Backtrace") |
|
|
"\tVPP crashed
|
|
Full Back Trace:
|
|
\(.Value.Representation | ltrimstr("{{red}}") | rtrimstr("{{/}}"))" else
|
|
"\(.Failure.Message)"
|
|
+ (if .Failure.Message == "A spec timeout occurred" then "\n" else
|
|
"\nFull Stack Trace:
|
|
\(.Failure.Location.FullStackTrace)\n" end) end)' summary/report.json > summary/failed-summary.log \
|
|
&& echo "Summary generated -> summary/failed-summary.log"
|
|
else
|
|
if [ -e "summary/failed-summary.log" ]; then
|
|
rm summary/failed-summary.log
|
|
fi
|
|
fi
|