Skip to content
Open
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
48 changes: 28 additions & 20 deletions test-case/test-speaker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@ source $(dirname ${BASH_SOURCE[0]})/../case-lib/lib.sh
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['l']='loop' OPT_DESC['l']='option of speaker-test'
OPT_HAS_ARG['l']=1 OPT_VAL['l']=3
OPT_NAME['l']='loop' OPT_DESC['l']='stress loops count'
Copy link
Collaborator

Choose a reason for hiding this comment

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

"stress loops count" would apply to either option, please use a description that makes a difference with the other option. Maybe something like "How many times speaker-test is run" versus "speaker-test --nloops option"

OPT_HAS_ARG['l']=1 OPT_VAL['l']=1

OPT_NAME['L']='nloops' OPT_DESC['L']='option of speaker-test, loop number of .wav files, 0 = infinite'
Copy link
Collaborator

Choose a reason for hiding this comment

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

What .wav files?

OPT_HAS_ARG['L']=1 OPT_VAL['L']=3

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
Expand All @@ -31,27 +34,32 @@ tplg=${OPT_VAL['t']}
[[ ${OPT_VAL['s']} -eq 1 ]] && func_lib_start_log_collect

func_pipeline_export "$tplg" "type:playback"
tcnt=${OPT_VAL['l']}
tcnt=${OPT_VAL['L']}
tloop=${OPT_VAL['l']}
setup_kernel_check_point
for idx in $(seq 0 $(expr $PIPELINE_COUNT - 1))
for loop in $(seq 1 $tloop)
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)

dlogc "speaker-test -D $dev -r $rate -c $channel -f $fmt -l $tcnt -t wav -P 8"
speaker-test -D $dev -r $rate -c $channel -f $fmt -l $tcnt -t wav -P 8 2>&1 |tee $LOG_ROOT/result_$idx.txt
resultRet=$?

if [[ $resultRet -eq 0 ]]; then
grep -nr -E "error|failed" $LOG_ROOT/result_$idx.txt
if [[ $? -eq 0 ]]; then
func_lib_lsof_error_dump $snd
die "speaker test failed"
dlogi "===== Starting iteration $loop of $tloop ====="
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)

dlogc "speaker-test -D $dev -r $rate -c $channel -f $fmt -l $tcnt -t wav -P 8"
speaker-test -D $dev -r $rate -c $channel -f $fmt -l $tcnt -t wav -P 8 2>&1 |tee $LOG_ROOT/result_$loop_$idx.txt
resultRet=$?
Copy link
Collaborator

Choose a reason for hiding this comment

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

I realize the code was already like this before this PR but here resultRet=$? is not the exit code of speaker-test, it's the exit code of the tee command/ which is useless - more green failures and untested test code yet again.

Please make sure this test fails when speaker test fails and fix it first if it does not; there's no point enhancing a test that does not even report failures in the first place. A very simple way to test the test is to temporarily pass a broken parameter.

Isn't a simple speaker-test || die enough? Do we really need these log files? Does speaker-test not use the exit code to report errors?


if [[ $resultRet -eq 0 ]]; then
grep -nr -E "error|failed" $LOG_ROOT/result_$idx.txt
if [[ $? -eq 0 ]]; then
func_lib_lsof_error_dump $snd
die "speaker test failed"
fi
fi
fi
done
done

sof-kernel-log-check.sh "$KERNEL_CHECKPOINT"
Expand Down