diff --git a/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/Audio_Record_Playback.yaml b/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/Audio_Record_Playback.yaml index 6c76237f..3bbae393 100644 --- a/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/Audio_Record_Playback.yaml +++ b/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/Audio_Record_Playback.yaml @@ -18,6 +18,7 @@ params: AUDIO_FORMATS: "wav,flac" AUDIO_DURATION: "10" AUDIO_GST_DEBUG: "2" + LAVA_TESTCASE_ID: "Audio_Record_Playback" run: steps: @@ -25,5 +26,5 @@ run: - cd "$REPO_PATH/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback" - AUDIO_SHARED_RECORDED_DIR="${REPO_PATH%%/tests/*}/shared/audio-record-playback" - export REPO_PATH AUDIO_SHARED_RECORDED_DIR AUDIO_TEST_MODE AUDIO_TEST_NAME AUDIO_FORMATS AUDIO_DURATION AUDIO_GST_DEBUG - - ./run.sh || true + - ./run.sh --lava-testcase-id "${LAVA_TESTCASE_ID}" || true - $REPO_PATH/Runner/utils/send-to-lava.sh Audio_Record_Playback.res diff --git a/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/README.md b/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/README.md index d86b6710..938d98aa 100644 --- a/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/README.md +++ b/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/README.md @@ -241,6 +241,13 @@ Help: - `9` MEMDUMP - Default: `2` +- `--lava-testcase-id ` + - Override the test case name reported to LAVA in the `.res` file + - Default: `Audio_Record_Playback` + - Used by LAVA to match expected test case names + - Example: `--lava-testcase-id "GStreamer_Audio_Record_wav"` + - **Note:** This is typically set automatically by LAVA job definitions and should not be used for local testing + --- ## Examples @@ -574,11 +581,27 @@ The test supports these environment variables (can be set in LAVA job definition - `AUDIO_CLIP_PATH` - Local path to test audio files (overrides AUDIO_CLIP_URL if files exist) - `AUDIO_SHARED_RECORDED_DIR` - Shared directory for recorded audio artifacts (optional) - `REPO_PATH` - Repository root path (set by YAML, used for path resolution) +- `LAVA_TESTCASE_ID` - Override test case name for LAVA reporting (default: Audio_Record_Playback) **Priority order for duration**: `AUDIO_DURATION` > `RUNTIMESEC` > default (10) **Shared Artifact Directory**: The test uses `AUDIO_SHARED_RECORDED_DIR` to store recorded audio files in a shared location across multiple test runs. If not set, the test will automatically determine the appropriate directory based on the environment (LAVA vs local). +### LAVA Test Case Naming + +The test supports flexible test case naming for LAVA integration: + +- **Default behavior**: Reports results as `Audio_Record_Playback` in the `.res` file +- **LAVA override**: Set `LAVA_TESTCASE_ID` parameter in the YAML definition to match LAVA's expected test case name +- **Example YAML configuration**: + ```yaml + params: + AUDIO_TEST_MODE: record + AUDIO_FORMATS: wav + LAVA_TESTCASE_ID: "GStreamer_Audio_Record_wav" # Matches LAVA expected name + ``` +- This ensures LAVA correctly matches test results with expected test case names, avoiding "Unexpected test result" errors + ### Test Counting - **Total tests**: 10 (when running with default wav,flac formats in all mode) diff --git a/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/run.sh b/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/run.sh index ee3f3ca5..bd5df872 100755 --- a/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/run.sh +++ b/Runner/suites/Multimedia/GSTreamer/Audio/Audio_Record_Playback/run.sh @@ -41,6 +41,7 @@ SCRIPT_DIR="$( )" TESTNAME="Audio_Record_Playback" +RESULT_TESTNAME="$TESTNAME" RES_FILE="${SCRIPT_DIR}/${TESTNAME}.res" LOG_DIR="${SCRIPT_DIR}/logs" OUTDIR="$LOG_DIR/$TESTNAME" @@ -59,7 +60,7 @@ done if [ -z "${INIT_ENV:-}" ]; then echo "[ERROR] Could not find init_env (starting at $SCRIPT_DIR)" >&2 - echo "$TESTNAME SKIP" >"$RES_FILE" 2>/dev/null || true + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" 2>/dev/null || true exit 0 fi @@ -80,7 +81,7 @@ if ! mkdir -p "$OUTDIR" "$DMESG_DIR"; then log_error "Failed to create required directories:" log_error " OUTDIR=$OUTDIR" log_error " DMESG_DIR=$DMESG_DIR" - echo "$TESTNAME FAIL" >"$RES_FILE" 2>/dev/null || true + echo "$RESULT_TESTNAME FAIL" >"$RES_FILE" 2>/dev/null || true exit 0 fi : >"$RES_FILE" @@ -100,7 +101,7 @@ fi # Create the recorded directory if ! mkdir -p "$RECORDED_DIR"; then log_error "Failed to create recorded directory: $RECORDED_DIR" - echo "$TESTNAME FAIL" >"$RES_FILE" + echo "$RESULT_TESTNAME FAIL" >"$RES_FILE" exit 0 fi @@ -133,13 +134,13 @@ for param in AUDIO_DURATION AUDIO_GST_DEBUG GST_DEBUG_LEVEL; do case "$val" in ''|*[!0-9]*) log_warn "$param must be numeric (got '$val')" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 ;; *) if [ "$val" -le 0 ] 2>/dev/null; then log_warn "$param must be positive (got '$val')" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi ;; @@ -147,7 +148,7 @@ for param in AUDIO_DURATION AUDIO_GST_DEBUG GST_DEBUG_LEVEL; do fi done -# shellcheck disable=SC2317 +# shellcheck disable=SC2317,SC2329 cleanup() { # Best-effort: try to kill only children first; fall back to name-based kill if ! pkill -P "$$" -x gst-launch-1.0 >/dev/null 2>&1; then @@ -162,7 +163,7 @@ while [ $# -gt 0 ]; do --mode) if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then log_warn "Missing/invalid value for --mode" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi [ -n "$2" ] && testMode="$2" @@ -172,7 +173,7 @@ while [ $# -gt 0 ]; do --formats) if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then log_warn "Missing/invalid value for --formats" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi [ -n "$2" ] && formatList="$2" @@ -182,14 +183,14 @@ while [ $# -gt 0 ]; do --duration) if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then log_warn "Missing/invalid value for --duration" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi if [ -n "$2" ]; then case "$2" in ''|*[!0-9]*) log_warn "Invalid --duration '$2' (must be numeric)" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 ;; *) @@ -203,7 +204,7 @@ while [ $# -gt 0 ]; do --gst-debug) if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then log_warn "Missing/invalid value for --gst-debug" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi [ -n "$2" ] && gstDebugLevel="$2" @@ -213,7 +214,7 @@ while [ $# -gt 0 ]; do --clip-url) if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then log_warn "Missing/invalid value for --clip-url" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi [ -n "$2" ] && clipUrl="$2" @@ -223,7 +224,7 @@ while [ $# -gt 0 ]; do --clip-path) if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then log_warn "Missing/invalid value for --clip-path" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi [ -n "$2" ] && clipPath="$2" @@ -233,13 +234,23 @@ while [ $# -gt 0 ]; do --test-name) if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then log_warn "Missing/invalid value for --test-name" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi [ -n "$2" ] && testName="$2" shift 2 ;; + --lava-testcase-id) + if [ $# -lt 2 ] || [ "${2#--}" != "$2" ]; then + log_warn "Missing/invalid value for --lava-testcase-id" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" + exit 0 + fi + [ -n "$2" ] && RESULT_TESTNAME="$2" + shift 2 + ;; + -h|--help) cat < Local path to test audio files (overrides --clip-url if files exist) + --lava-testcase-id + Override the test case name reported to LAVA + (default: Audio_Record_Playback) + Used by LAVA to match expected test case names + -h, --help Display this help message ENVIRONMENT VARIABLES: @@ -316,7 +332,7 @@ EOF *) log_warn "Unknown argument: $1" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 ;; esac @@ -325,14 +341,14 @@ done # -------------------- Validate parsed values -------------------- case "$testMode" in all|record|playback) : ;; *) log_warn "Invalid --mode '$testMode'" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 ;; esac case "$gstDebugLevel" in 1|2|3|4|5|6|7|8|9) : ;; *) log_warn "Invalid --gst-debug '$gstDebugLevel' (allowed: 1-9)" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 ;; esac @@ -340,13 +356,13 @@ esac case "$duration" in ''|*[!0-9]*) log_warn "Invalid duration '$duration' (must be numeric)" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 ;; *) if [ "$duration" -le 0 ] 2>/dev/null; then log_warn "Duration must be positive (got '$duration')" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi ;; @@ -365,7 +381,7 @@ if [ -n "$testName" ]; then log_warn "Valid names: record_wav, record_flac, record_pulsesrc_wav, record_pulsesrc_flac," log_warn " playback_wav, playback_flac, playback_pulsesrc_wav, playback_pulsesrc_flac," log_warn " playback_sample_ogg, playback_sample_mp3" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 ;; esac @@ -379,7 +395,7 @@ NUM_BUFFERS=$(( (SAMPLE_RATE * duration) / SAMPLES_PER_BUFFER )) # -------------------- Pre-checks -------------------- check_dependencies "gst-launch-1.0 gst-inspect-1.0 awk grep head sed tr stat find curl tar" >/dev/null 2>&1 || { log_skip "Missing required tools (gst-launch-1.0, gst-inspect-1.0, awk, grep, head, sed, tr, stat, find, curl, tar)" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 } @@ -860,7 +876,7 @@ log_info "Starting audio record/playback tests..." # Check required elements if ! check_required_elements; then log_warn "Required GStreamer elements (audiotestsrc/pulsesink) not available" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" exit 0 fi log_info "Required GStreamer elements verified" @@ -1018,15 +1034,15 @@ fi case "$result" in PASS) log_pass "$TESTNAME $result: $reason" - echo "$TESTNAME PASS" >"$RES_FILE" + echo "$RESULT_TESTNAME PASS" >"$RES_FILE" ;; FAIL) log_fail "$TESTNAME $result: $reason" - echo "$TESTNAME FAIL" >"$RES_FILE" + echo "$RESULT_TESTNAME FAIL" >"$RES_FILE" ;; *) log_warn "$TESTNAME $result: $reason" - echo "$TESTNAME SKIP" >"$RES_FILE" + echo "$RESULT_TESTNAME SKIP" >"$RES_FILE" ;; esac