summaryrefslogtreecommitdiff
path: root/automated/linux/optee/optee-xtest.sh
blob: 3d297a1c552908e3b6959bcb7649a0dd14cd9855 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh

. ../../lib/sh-test-lib
OUTPUT="$(pwd)/output"
RESULT_FILE="${OUTPUT}/result.txt"
TEST_LEVEL="0"
TEST_SUITE="regression"

usage() {
    echo "Usage: $0 [-l <0-15> -t <regression|benchmark>]" 1>&2
    exit 1
}

while getopts "l:t:h:" o; do
  case "$o" in
    l) TEST_LEVEL="${OPTARG}" ;;
    t) TEST_SUITE="${OPTARG}" ;;
    h|*) usage ;;
  esac
done

# Test run.
create_out_dir "${OUTPUT}"

command -v tee-supplicant && command -v xtest
exit_on_fail "xtest-existence-check"

tee-supplicant &
tee_supplicant_pid="$!"
sleep 5

info_msg "Running xtest..."
LOG_FILE="${OUTPUT}/${TEST_SUITE}-output.txt"
test_cmd="xtest -l ${TEST_LEVEL} -t ${TEST_SUITE} 2>&1"
pipe0_status "${test_cmd}" "tee ${LOG_FILE}"
check_return "xtest-run"

# Parse xtest test log.
awk "/Result of testsuite ${TEST_SUITE}:/{flag=1; next} /+-----------------------------------------------------/{flag=0} flag" "${LOG_FILE}" \
    | sed 's/OK/pass/; s/FAILED/fail/; s/SKIPPED/skip/' \
    | awk '{printf("%s %s\n", $1, $2)}' \
    | tee -a "${RESULT_FILE}"

# Parse test pass/fail/skip stats.
for i in "subtests" "test cases"; do
    grep -E "^[0-9]+ $i of which [0-9]+ failed" "${LOG_FILE}" \
        | awk -v tc="$(echo "$i" | sed 's/ /-/')" \
              '{printf("%s-fail-rate pass %s/%s\n"), tc, $(NF-1), $1}' \
        | tee -a "${RESULT_FILE}"
done

grep -E "^[0-9]+ test case was skipped" "${LOG_FILE}" \
    | awk '{printf("test-skipped pass %s\n", $1)}' \
    | tee -a "${RESULT_FILE}"

# Cleanup.
kill "${tee_supplicant_pid}"