diff options
Diffstat (limited to 'tools/testing/selftests/liveupdate/run-vmtests.sh')
| -rwxr-xr-x | tools/testing/selftests/liveupdate/run-vmtests.sh | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/tools/testing/selftests/liveupdate/run-vmtests.sh b/tools/testing/selftests/liveupdate/run-vmtests.sh new file mode 100755 index 000000000000..d656ce58c5a7 --- /dev/null +++ b/tools/testing/selftests/liveupdate/run-vmtests.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +SCRIPT_DIR=$(dirname "$(realpath "$0")") +TEST_RUNNER="$SCRIPT_DIR/vmtest.sh" + +TARGETS=("x86_64" "aarch64") + +GREEN='\033[0;32m' +RED='\033[0;31m' +YELLOW='\033[1;33m' +NC='\033[0m' + +passed=0 +failed=0 +skipped=0 + +TEST_NAMES=( + "luo_kexec_simple" + "luo_multi_session" + "luo_stress_files" + "luo_stress_sessions" +) + +function usage() { + cat <<EOF +$0 [-k] [-o output_dir] [-h] +Options: + -k) keep logs + -o) specify output directory + -h) display this help +EOF +} + +function pass() { + echo -e "${GREEN}PASS${NC}" + ((passed++)) +} + +function skip() { + echo -e "${YELLOW}SKIP${NC}" + ((skipped++)) +} + +function fail() { + echo -e "${RED}FAIL${NC}" + ((failed++)) +} + +function main() { + while getopts 'hko:' opt; do + case $opt in + k) keep_logs=1 ;; + o) output_dir=$OPTARG ;; + h) usage; exit 0 ;; + *) echo Unknown argument "$opt" + usage; exit 1 ;; + esac + done + + if [ -n "$keep_logs" ]; then + if [ -z "$output_dir" ]; then + output_dir="$SCRIPT_DIR/results_$(date +%Y%m%d_%H%M%S)" + fi; + mkdir -p "$output_dir" + else + output_dir=$(mktemp -d /tmp/luo.XXXXXXXX) + trap 'rm -fr "$output_dir"' EXIT + fi + + for arch in "${TARGETS[@]}"; do + for test_name in "${TEST_NAMES[@]}"; do + log="$output_dir/${arch}_${test_name}.log" + + printf " -> %-8s %-24s ... " "$arch" "$test_name" + + "$TEST_RUNNER" -t "$arch" -T "$test_name" &> "$log" + exit_code=$? + + case $exit_code in + 0) pass;; + 4) skip;; + *) fail;; + esac + done + echo "" + done + + echo "SUMMARY: PASS=$passed SKIP=$skipped FAIL=$failed" + if [ -n "$keep_logs" ]; then + echo "Logs: $output_dir" + fi + + exit $((failed != 0)) +} + +main "$@" |
