Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize this case to support all the PCM #758

Closed
wants to merge 3 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,8 @@ 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'

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['f']='fmt' OPT_DESC['f']='audio format value'
OPT_HAS_ARG['f']=1 OPT_VAL['f']='S16_LE'

OPT_NAME['c']='channel' OPT_DESC['c']='audio channel count'
OPT_HAS_ARG['c']=1 OPT_VAL['c']='2'

OPT_NAME['r']='rate' OPT_DESC['r']='audio rate'
OPT_HAS_ARG['r']=1 OPT_VAL['r']='48000'
OPT_NAME['p']='pcm' OPT_DESC['p']='run test case on specified pipelines'
OPT_HAS_ARG['p']=1 OPT_VAL['p']='id:any'

OPT_NAME['F']='file' OPT_DESC['F']='file name. Example: /dev/zero; /dev/null'
OPT_HAS_ARG['F']=1 OPT_VAL['F']=''
Expand All @@ -75,21 +66,22 @@ OPT_NAME['l']='loop' OPT_DESC['l']='loop count'
OPT_HAS_ARG['l']=1 OPT_VAL['l']=5

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_HAS_ARG['i']=1 OPT_VAL['i']='200'

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']='tplg' OPT_DESC['t']='tplg file, default value is env TPLG: $TPLG'
OPT_HAS_ARG['t']=1 OPT_VAL['t']="$TPLG"

func_opt_parse_option "$@"
setup_kernel_check_point

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']}
tplg=${OPT_VAL['t']}

case $test_mode in
"playback")
Expand All @@ -107,29 +99,34 @@ esac

[[ -z $file_name ]] && file_name=$dummy_file


logger_disabled || func_lib_start_log_collect

setup_kernel_check_point

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"

rm -rf /tmp/sof-test.lock

# 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 <<AUDIO
spawn $cmd -D $pcm -r $rate -c $channel -f $fmt -vv -i $dummy_file -q
func_pipeline_export "$tplg" "type:$test_mode & ${OPT_VAL['p']}"

for idx in $(seq 0 $(expr $PIPELINE_COUNT - 1))
do
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)
snd=$(func_pipeline_parse_value "$idx" snd)

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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you change the indentation then take that opportunity to use more shell functions, see why in #740 . One of the function should be something like test_single_pcm()

expect <<AUDIO
spawn $cmd -D $dev -r $rate -c $channel -f $fmt -vv -i $file_name -q
set i 1
set sleep_t $sleep_period
expect {
"#*+*\%" {
#audio stream (aplay or arecord) is active now and playing
puts "\r===== (\$i/$repeat_count) pb_pbm: Pause $cmd, then wait for ===== "
puts "\r(\$i/$repeat_count) pb_pbm: $sleep_t ms after pause"
puts "\r(\$i/$repeat_count) pb_pbm: \$sleep_t ms after pause"
send " "
after \$sleep_t
puts "Finished sleep. Confirming $cmd is paused."
Expand All @@ -146,7 +143,7 @@ expect {
}

#enter suspend-resume cycle once per pause instance
set retval [catch { exec bash check-suspend-resume.sh -l 1 } msg]
set retval [catch { exec bash $(dirname "${BASH_SOURCE[0]}")/check-suspend-resume.sh -l 1 } msg]

#prints logs from suspend-resume test
puts \$msg
Expand All @@ -172,13 +169,13 @@ expect {
}
AUDIO

ret=$?
#flush the output
echo
if [ $ret -ne 0 ]; then
sof-process-kill.sh
[[ $? -ne 0 ]] && dlogw "Kill process catch error"
exit $ret
fi
sof-kernel-log-check.sh "$KERNEL_CHECKPOINT"
exit $?
ret=$?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either you don't change that unrelated part of the code to minimize the size of the commit, or you change it and then you go all the way and fix the most obvious shellcheck warnings too (in a separate commit). Don't stop in the middle of the bridge.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

About the rename, because the original name is check-pause-release-suspend-resume.sh, it does not represent the test that our case will be done, so I changed it to check-pause-suspend-resume-release.sh. I will raise a PR to change the case name.

#flush the output
echo
if [ $ret -ne 0 ]; then
sof-process-kill.sh
[[ $? -ne 0 ]] && dlogw "Kill process catch error"
exit $ret
fi
sof-kernel-log-check.sh "$KERNEL_CHECKPOINT" || die "Caught error in kernel log"
done