diff --git a/test-case/check-pause-release-suspend-resume.sh b/test-case/check-pause-release-suspend-resume.sh index 1494948c..39de4c1f 100755 --- a/test-case/check-pause-release-suspend-resume.sh +++ b/test-case/check-pause-release-suspend-resume.sh @@ -51,47 +51,50 @@ set -e ## * No unexpected errors should be present in dmesg during or after test ## completion. -source $(dirname ${BASH_SOURCE[0]})/../case-lib/lib.sh +# shellcheck source=case-lib/lib.sh +source "$(dirname "${BASH_SOURCE[0]}")"/../case-lib/lib.sh -OPT_NAME['m']='mode' OPT_DESC['m']='test mode. Example: playback; capture' -OPT_HAS_ARG['m']=1 OPT_VAL['m']='playback' +CASEDIR=$(dirname "${BASH_SOURCE[0]}") -OPT_NAME['p']='pcm' OPT_DESC['p']='audio pcm. Example: hw:0,0' -OPT_HAS_ARG['p']=1 OPT_VAL['p']='hw:0,0' +OPT_NAME['m']='mode' OPT_DESC['m']='test mode. Example: playback; capture' +OPT_HAS_ARG['m']=1 OPT_VAL['m']='playback' -OPT_NAME['f']='fmt' OPT_DESC['f']='audio format value' -OPT_HAS_ARG['f']=1 OPT_VAL['f']='S16_LE' +OPT_NAME['F']='file' OPT_DESC['F']='file name. Example: /dev/zero; /dev/null' +OPT_HAS_ARG['F']=1 OPT_VAL['F']='' -OPT_NAME['c']='channel' OPT_DESC['c']='audio channel count' -OPT_HAS_ARG['c']=1 OPT_VAL['c']='2' +OPT_NAME['l']='loop' OPT_DESC['l']='loop count' +OPT_HAS_ARG['l']=1 OPT_VAL['l']=5 -OPT_NAME['r']='rate' OPT_DESC['r']='audio rate' -OPT_HAS_ARG['r']=1 OPT_VAL['r']='48000' +OPT_NAME['i']='interval' OPT_DESC['i']='interval before checking the aplay/arecord status after pause/release' +OPT_HAS_ARG['i']=1 OPT_VAL['i']='500' -OPT_NAME['F']='file' OPT_DESC['F']='file name. Example: /dev/zero; /dev/null' -OPT_HAS_ARG['F']=1 OPT_VAL['F']='' +OPT_NAME['s']='sof-logger' OPT_DESC['s']="Open sof-logger trace the data will store at $LOG_ROOT" +OPT_HAS_ARG['s']=0 OPT_VAL['s']=1 -OPT_NAME['l']='loop' OPT_DESC['l']='loop count' -OPT_HAS_ARG['l']=1 OPT_VAL['l']=5 +OPT_NAME['t']='tplg' OPT_DESC['t']='tplg file, default value is env TPLG: $''TPLG' +OPT_HAS_ARG['t']=1 OPT_VAL['t']="$TPLG" -OPT_NAME['i']='sleep-period' OPT_DESC['i']='sleep period of aplay, unit is ms' -OPT_HAS_ARG['i']=1 OPT_VAL['i']='100' +OPT_NAME['P']='filter_string' OPT_DESC['P']='run this case on specified pipelines' +OPT_HAS_ARG['P']=1 OPT_VAL['P']='id:any' -OPT_NAME['s']='sof-logger' OPT_DESC['s']="Open sof-logger trace the data will store at $LOG_ROOT" -OPT_HAS_ARG['s']=0 OPT_VAL['s']=1 +OPT_NAME['T']='type' OPT_DESC['T']="specify the sleep type for suspend/resume:s2idle/deep" +OPT_HAS_ARG['T']=1 OPT_VAL['T']="" -func_opt_parse_option "$@" +OPT_NAME['d']='delay' OPT_DESC['d']='delay time before pausing aplay/arecord process, unit is ms' +OPT_HAS_ARG['d']=1 OPT_VAL['d']='2000' -pcm=${OPT_VAL['p']} -fmt=${OPT_VAL['f']} -channel=${OPT_VAL['c']} -rate=${OPT_VAL['r']} -repeat_count=${OPT_VAL['l']} -sleep_period=${OPT_VAL['i']} -test_mode=${OPT_VAL['m']} -file_name=${OPT_VAL['F']} +parse_param() +{ + func_opt_parse_option "$@" -case $test_mode in + repeat_count=${OPT_VAL['l']} + interval=${OPT_VAL['i']} + test_mode=${OPT_VAL['m']} + file_name=${OPT_VAL['F']} + tplg=${OPT_VAL['t']} + delay=${OPT_VAL['d']} + + case $test_mode in "playback") cmd=aplay dummy_file=/dev/zero @@ -103,82 +106,95 @@ case $test_mode in *) die "Invalid test mode: $test_mode. Accepted test mode: playback; capture" ;; -esac - -[[ -z $file_name ]] && file_name=$dummy_file - - -logger_disabled || func_lib_start_log_collect + esac -setup_kernel_check_point + # only run suspend/resume once for each loop. + # Use system default value if no sleep type is specified + sleep_opts="-l 1" + [ -z "${OPT_VAL['T']}" ] || sleep_opts+=" -T ${OPT_VAL['T']}" -dlogi "Entering audio stream expect script with: $cmd -D $pcm -r $rate -c $channel -f $fmt -vv -i $dummy_file -q" -dlogi "Will enter suspend-resume cycle during paused period of audio stream process" + [[ -z "$file_name" ]] && file_name="$dummy_file" +} -rm -rf /tmp/sof-test.lock +run_test() +{ + channel=$(func_pipeline_parse_value "$idx" channel) + rate=$(func_pipeline_parse_value "$idx" rate) + fmt=$(func_pipeline_parse_value "$idx" fmt) + dev=$(func_pipeline_parse_value "$idx" dev) + + dlogi "Entering audio stream expect script with: $cmd -D $dev -r $rate -c $channel -f $fmt -vv -i $file_name -q" + dlogi "Will enter suspend-resume cycle during paused period of audio stream process" + + # expect is tcl language script + # catch: Evaluate script and trap exceptional returns + # after ms: Ms must be an integer giving a time in milliseconds. + # The command sleeps for ms milliseconds and then returns. + expect <