Skip to content

Commit b3b90cf

Browse files
committed
Remove dependency on send-to-lava.sh; emit test results directly from run.sh
- All test scripts now use emit_result_and_signal() from functestlib.sh to report results inline using <LAVA_SIGNAL_TESTCASE ...> format. - Eliminated the need to call Runner/utils/send-to-lava.sh at the end of test jobs. - This enables LAVA to capture and display test results immediately as each test completes, improving granularity and reducing parser dependency. - Verified that both standalone and suite-level runs continue to write .res files. Note: YAML job files must no longer include send-to-lava.sh in the test step. Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
1 parent 25a36b1 commit b3b90cf

File tree

3 files changed

+60
-49
lines changed

3 files changed

+60
-49
lines changed

Runner/plans/qcom-next-ci-premerge.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,8 @@ run:
5252
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/baseport/storage/storage.res || true
5353
- $PWD/suites/Kernel/FunctionalArea/baseport/wpss_remoteproc/run.sh || true
5454
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/baseport/wpss_remoteproc/wpss_remoteproc.res || true
55+
- $PWD/suites/Kernel/FunctionalArea/DCVS/Freq_Scaling/run.sh || true
56+
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/DCVS/Freq_Scaling/Freq_Scaling.res || true
57+
- $PWD/suites/Kernel/FunctionalArea/Scheduler/CPU_affinity/run.sh || true
58+
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/Scheduler/CPU_affinity/CPU_affinity.res || true
5559
- $PWD/utils/result_parse.sh

Runner/utils/functestlib.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,4 +390,3 @@ weston_start() {
390390
return 1
391391
fi
392392
}
393-

Runner/utils/send-to-lava.sh

Lines changed: 56 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,60 @@
11
#!/bin/sh
2-
2+
3+
# Copyright (c) Qualcomm Technologies, Inc.
4+
# SPDX-License-Identifier: BSD-3-Clause-Clear
5+
36
RESULT_FILE="$1"
4-
5-
command -v lava-test-case > /dev/null 2>&1
6-
lava_test_case="$?"
7-
command -v lava-test-set > /dev/null 2>&1
8-
lava_test_set="$?"
9-
10-
if [ -f "${RESULT_FILE}" ]; then
11-
while read -r line; do
12-
if echo "${line}" | grep -iq -E ".* +(pass|fail|skip|unknown)$"; then
13-
test="${line%% *}"
14-
result="${line##* }"
15-
16-
if [ "${lava_test_case}" -eq 0 ]; then
17-
lava-test-case "${test}" --result "${result}"
18-
else
19-
echo "<TEST_CASE_ID=${test} RESULT=${result}>"
20-
fi
21-
elif echo "${line}" | grep -iq -E ".*+ (pass|fail|skip|unknown)+ .*+"; then
22-
test="$(echo "${line}" | awk '{print $1}')"
23-
result="$(echo "${line}" | awk '{print $2}')"
24-
measurement="$(echo "${line}" | awk '{print $3}')"
25-
units="$(echo "${line}" | awk '{print $4}')"
26-
27-
if [ "${lava_test_case}" -eq 0 ]; then
28-
if [ -n "${units}" ]; then
29-
lava-test-case "${test}" --result "${result}" --measurement "${measurement}" --units "${units}"
30-
else
31-
lava-test-case "${test}" --result "${result}" --measurement "${measurement}"
32-
fi
33-
else
34-
echo "<TEST_CASE_ID=${test} RESULT=${result} MEASUREMENT=${measurement} UNITS=${units}>"
35-
fi
36-
elif echo "${line}" | grep -iq -E "^lava-test-set.*"; then
37-
test_set_status="$(echo "${line}" | awk '{print $2}')"
38-
test_set_name="$(echo "${line}" | awk '{print $3}')"
39-
if [ "${lava_test_set}" -eq 0 ]; then
40-
lava-test-set "${test_set_status}" "${test_set_name}"
41-
else
42-
if [ "${test_set_status}" = "start" ]; then
43-
echo "<LAVA_SIGNAL_TESTSET START ${test_set_name}>"
44-
else
45-
echo "<LAVA_SIGNAL_TESTSET STOP>"
46-
fi
47-
fi
48-
fi
49-
done < "${RESULT_FILE}"
7+
8+
# Check if lava-test-case is available
9+
command -v lava-test-case >/dev/null 2>&1
10+
lava_test_case=$?
11+
12+
# Detect output FD for LAVA signals
13+
if [ -n "$LAVA_LOG_FD" ]; then
14+
# Try validating the FD
15+
if eval ": >&$LAVA_LOG_FD" 2>/dev/null; then
16+
out_fd="&$LAVA_LOG_FD"
17+
else
18+
out_fd=">&2"
19+
fi
5020
else
51-
echo "WARNING: result file is missing!"
21+
out_fd=">&2"
22+
fi
23+
24+
# Emit signal using dynamic FD
25+
emit_lava_signal() {
26+
test_case="$1"
27+
result="$2"
28+
# shellcheck disable=SC3054
29+
eval "printf '<<<LAVA_SIGNAL_TESTCASE TEST_CASE_ID=%s RESULT=%s>>>\n' \"$test_case\" \"$result\" $out_fd"
30+
}
31+
32+
# Validate result file presence
33+
if [ ! -f "$RESULT_FILE" ]; then
34+
echo "[WARNING] Result file '$RESULT_FILE' not found!" >&2
35+
exit 0
5236
fi
37+
38+
# Parse and emit test results
39+
while IFS= read -r line || [ -n "$line" ]; do
40+
line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
41+
case "$line" in
42+
"" | \#*)
43+
continue
44+
;;
45+
esac
46+
47+
# Format: <testname> <PASS|FAIL|SKIP|UNKNOWN>
48+
if echo "$line" | grep -iqE "^[a-zA-Z0-9._-]+[[:space:]]+(PASS|FAIL|SKIP|UNKNOWN)$"; then
49+
test_case=$(echo "$line" | awk '{print $1}')
50+
result=$(echo "$line" | awk '{print $2}')
51+
52+
if [ "$lava_test_case" -eq 0 ]; then
53+
lava-test-case "$test_case" --result "$result"
54+
else
55+
emit_lava_signal "$test_case" "$result"
56+
fi
57+
else
58+
echo "[WARNING] Malformed line or unknown result: $line" >&2
59+
fi
60+
done < "$RESULT_FILE"

0 commit comments

Comments
 (0)