-
Notifications
You must be signed in to change notification settings - Fork 46
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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']='' | ||
|
@@ -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") | ||
|
@@ -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. | ||
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." | ||
|
@@ -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 | ||
|
@@ -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=$? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 |
There was a problem hiding this comment.
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()