xref: /linux/tools/testing/selftests/liveupdate/run-vmtests.sh (revision 7b24dd46a70e94d8db83b50a04d46690fac216d0)
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4SCRIPT_DIR=$(dirname "$(realpath "$0")")
5TEST_RUNNER="$SCRIPT_DIR/vmtest.sh"
6
7TARGETS=("x86_64" "aarch64")
8
9GREEN='\033[0;32m'
10RED='\033[0;31m'
11YELLOW='\033[1;33m'
12NC='\033[0m'
13
14passed=0
15failed=0
16skipped=0
17
18TEST_NAMES=(
19	"luo_kexec_simple"
20	"luo_multi_session"
21	"luo_stress_files"
22	"luo_stress_sessions"
23)
24
25function usage() {
26	cat <<EOF
27$0 [-k] [-o output_dir] [-h]
28Options:
29	-k)	keep logs
30	-o)	specify output directory
31	-h)	display this help
32EOF
33}
34
35function pass() {
36	echo -e "${GREEN}PASS${NC}"
37	((passed++))
38}
39
40function skip() {
41	echo -e "${YELLOW}SKIP${NC}"
42	((skipped++))
43}
44
45function fail() {
46	echo -e "${RED}FAIL${NC}"
47	((failed++))
48}
49
50function main() {
51	while getopts 'hko:' opt; do
52		case $opt in
53		k) keep_logs=1 ;;
54		o) output_dir=$OPTARG ;;
55		h) usage; exit 0 ;;
56		*) echo Unknown argument "$opt"
57		   usage; exit 1 ;;
58		esac
59	done
60
61	if [ -n "$keep_logs" ]; then
62		if [ -z "$output_dir" ]; then
63			output_dir="$SCRIPT_DIR/results_$(date +%Y%m%d_%H%M%S)"
64		fi;
65		mkdir -p "$output_dir"
66	else
67		output_dir=$(mktemp -d /tmp/luo.XXXXXXXX)
68		trap 'rm -fr "$output_dir"' EXIT
69	fi
70
71	for arch in "${TARGETS[@]}"; do
72		for test_name in "${TEST_NAMES[@]}"; do
73			log="$output_dir/${arch}_${test_name}.log"
74
75			printf "  -> %-8s %-24s ... " "$arch" "$test_name"
76
77			"$TEST_RUNNER" -t "$arch" -T "$test_name" &> "$log"
78			exit_code=$?
79
80			case $exit_code in
81			0) pass;;
82			4) skip;;
83			*) fail;;
84			esac
85		done
86		echo ""
87	done
88
89	echo "SUMMARY: PASS=$passed SKIP=$skipped FAIL=$failed"
90	if [ -n "$keep_logs" ]; then
91		echo "Logs: $output_dir"
92	fi
93
94	exit $((failed != 0))
95}
96
97main "$@"
98