blob: e0002cd9f824e9701cb39330a1c23fbb9fe44b62 [file] [log] [blame]
Yegor Timoshenkoc2e49412018-10-07 01:58:27 +00001#!/usr/bin/env bash
Patrick Georgi55189c92020-05-10 20:09:31 +02002# SPDX-License-Identifier: GPL-2.0-only
Pratik Prajapati0175fb12015-11-18 15:02:19 -08003
4MMA_LOCAL_DATA_STORAGE=/usr/local/mma
5#
6# format of MMA_AUTOMATED_TEST_CONFIG file is as below
7# with 1 or more repeated lines with same format
8#
9# <testname> <testparam> <#times to run this test>
10#
11# e.g.
12# RMT.efi RMTConfig.bin 2
13# Margin1D.efi Margin1DCmdAllConfig.bin 1
14#
15#
16MMA_AUTOMATED_TEST_CONFIG="${MMA_LOCAL_DATA_STORAGE}"/tests
17MMA_AUTOMATED_TEST_COUNT="${MMA_LOCAL_DATA_STORAGE}"/count
18MMA_SETUP_TEST_TOOL=mma_setup_test.sh
19MMA_GET_RESULT_TOOL=mma_get_result.sh
20MMA_TEST_RESULTS_PATH="${MMA_LOCAL_DATA_STORAGE}/results$(date +_%y_%m_%d_%H_%M)"
21# Clear MMA_TEST_NUMBER just in case it is set in environment
22MMA_TEST_NUMBER=
23
24# Set a number of global params based on test number
25# MMA_TEST_NUMBER - test number, stored in MMA_AUTOMATED_TEST_COUNT
26# MMA_TEST_NAME - test name
27# MMA_TEST_PARAM - test parameter
28# MMA_TEST_COUNT - test count, number of times to run the test
29# MMA_TEST_RESULT_NAME - filename for result
30get_mma_autotest_params() {
31 typeset -i i=${MMA_TEST_NUMBER}
32 exec 9< "${MMA_AUTOMATED_TEST_CONFIG}"
33 while read -u9 MMA_TEST_NAME MMA_TEST_PARAM MMA_TEST_COUNT
34 do
35 case "${MMA_TEST_NAME}" in
36 ("#"*|"") continue;; # Allow blank lines and comments
37 esac
38 : $(( i -= MMA_TEST_COUNT ))
39 if (( i <= 0 )) ; then
40 printf -v MMA_TEST_RESULT_NAME \
41 "${MMA_TEST_NAME%.efi}_${MMA_TEST_PARAM%.bin}_%d.bin" \
42 $((MMA_TEST_COUNT+i))
43 return
44 fi
45 done
46 ${MMA_SETUP_TEST_TOOL} reset
47 rm "${MMA_AUTOMATED_TEST_COUNT}"
48 mv "${MMA_AUTOMATED_TEST_CONFIG}" "${MMA_TEST_RESULTS_PATH}"
49 exit 0
50}
51
52main() {
Pratik Prajapatide62e0f2016-02-22 16:50:31 -080053 # sleep 30 sec, before we start. This would give some time if we want
54 # to stop automation.
55 sleep 30s
56 mkdir -p "${MMA_LOCAL_DATA_STORAGE}"
Pratik Prajapati0175fb12015-11-18 15:02:19 -080057 # Exit if there are no tests
58 [ -e "${MMA_AUTOMATED_TEST_CONFIG}" ] || exit 0
59
60 if [ -e "${MMA_AUTOMATED_TEST_COUNT}" ] ; then
61 . "${MMA_AUTOMATED_TEST_COUNT}"
62 fi
63
64 mkdir -p "${MMA_TEST_RESULTS_PATH}"
65
66 if [ "${MMA_TEST_NUMBER}" ] ; then
67 get_mma_autotest_params
68 ${MMA_GET_RESULT_TOOL} \
69 "${MMA_TEST_RESULTS_PATH}"/"${MMA_TEST_RESULT_NAME}"
70 fi
71
72 : $(( MMA_TEST_NUMBER += 1 ))
73 printf "MMA_TEST_NUMBER=${MMA_TEST_NUMBER}\n" \
74 > "${MMA_AUTOMATED_TEST_COUNT}"
75 printf "MMA_TEST_RESULTS_PATH=%s" "${MMA_TEST_RESULTS_PATH}" \
76 >> "${MMA_AUTOMATED_TEST_COUNT}"
77 get_mma_autotest_params
78 ${MMA_SETUP_TEST_TOOL} set ${MMA_TEST_NAME} ${MMA_TEST_PARAM}
79
Pratik Prajapatide62e0f2016-02-22 16:50:31 -080080 # sync the filesystem, hoping this would minimize
81 # the chances of fs corruption
82 sync
83 sleep 2s
84 sync
85 sleep 2s
86 sync
87 sleep 2s
88 ectool reboot_ec
Pratik Prajapati0175fb12015-11-18 15:02:19 -080089}
90
91main "$@"