diff mbox

[10/10] alsabat: add bash test script

Message ID fb7df8bc2b879986b55924073fe6fc70c2cd2197.1456907242.git.han.lu@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

han.lu@intel.com March 2, 2016, 8:53 a.m. UTC
From: "Lu, Han" <han.lu@intel.com>

Add bash script for alsabat feature test.
Examples for alsa tests:
        ./bat/testbat.sh
Examples for tinyalsa tests:
        ./bat/testbat.sh plughw:1,0 plughw:1,0 1

Signed-off-by: Lu, Han <han.lu@intel.com>

Comments

Takashi Iwai March 4, 2016, 8:58 p.m. UTC | #1
On Wed, 02 Mar 2016 09:53:20 +0100,
han.lu@intel.com wrote:
> 
> From: "Lu, Han" <han.lu@intel.com>
> 
> Add bash script for alsabat feature test.
> Examples for alsa tests:
>         ./bat/testbat.sh
> Examples for tinyalsa tests:
>         ./bat/testbat.sh plughw:1,0 plughw:1,0 1
> 
> Signed-off-by: Lu, Han <han.lu@intel.com>
> 
> diff --git a/bat/testbat.sh b/bat/testbat.sh
> new file mode 100644
> index 0000000..93b9f70
> --- /dev/null
> +++ b/bat/testbat.sh
> @@ -0,0 +1,160 @@
> +#!/bin/bash
> +
> +exe="alsabat"
> +file_sin="default.wav"
> +file_sin_dual="default_dual.wav"
> +logdir="tmp"
> +# default devices
> +dev_playback="default"
> +dev_capture="default"
> +# features passes vs. features all
> +feature_pass=0
> +feature_cnt=0
> +
> +commands="$exe -P $dev_playback -C $dev_capture"
> +
> +init_counter () {
> +	feature_pass=0
> +	feature_all=0
> +}
> +
> +evaluate_result () {
> +	feature_cnt=$((feature_cnt+1))
> +	if [ $1 -eq 0 ]; then
> +		feature_pass=$((feature_pass+1))
> +		echo "pass"
> +	else
> +		echo "fail"
> +	fi
> +}
> +
> +print_result () {
> +	echo "[$feature_pass/$feature_cnt] features passes."
> +}
> +
> +feature_test () {
> +	echo "============================================"
> +	echo "$feature_cnt: ALSA $2"
> +	echo "-------------------------------------------"
> +	echo "$commands $1 --log=$logdir/$feature_cnt.log"
> +	$commands $1 --log=$logdir/$feature_cnt.log
> +	evaluate_result $?
> +	echo "$commands $1" >> $logdir/$((feature_cnt-1)).log
> +}
> +
> +# test items
> +feature_list_test () {
> +	commands="$exe"
> +	feature_test "--saveplay ${file_sin}" \
> +			"generate test file with default params"
> +	sleep 5
> +	feature_test "-P $dev_playback" "single line mode, playback"
> +	feature_test "-C $dev_capture --standalone" "single line mode, capture"
> +	commands="$exe -P $dev_playback -C $dev_capture"
> +	feature_test "--file ${file_sin}" "play wav file and detect"
> +	feature_test "" "generate sine wave and detect"
> +	feature_test "-c1" "configurable channel number: 1"
> +	feature_test "-c2 -F 19:16757" "configurable channel number: 2"
> +	feature_test "-r44100" "configurable sample rate: 44100"
> +	feature_test "-r48000" "configurable sample rate: 48000"
> +	feature_test "-n16387" "configurable duration: in samples"
> +	feature_test "-n2.5s" "configurable duration: in seconds"
> +	feature_test "-f U8 --saveplay U8.wav" "configurable data depth: 8 bit"
> +	feature_test "-f S16_LE --saveplay S16_LE.wav" \
> +			"configurable data depth: 16 bit"
> +	feature_test "-f S24_3LE --saveplay S24_3LE.wav" \
> +			"configurable data depth: 24 bit"
> +	feature_test "-f S32_LE --saveplay S32_LE.wav" \
> +			"configurable data depth: 32 bit"
> +	feature_test "-f cd --saveplay cd.wav" "configurable data depth: cd"
> +	feature_test "-f dat --saveplay dat.wav" "configurable data depth: dat"
> +	tmpfreq=17583
> +	feature_test "-F $tmpfreq --standalone" \
> +			"standalone mode: play and capture"
> +	latestfile=`ls -t1 /tmp/bat.wav.* | head -n 1`
> +	feature_test "--local -F $tmpfreq --file $latestfile" \
> +			"local mode: analyze local file"
> +
> +	print_result
> +}
> +
> +feature_test_tiny () {
> +	echo "============================================"
> +	echo "$feature_cnt: tinyalsa $2"
> +	echo "-------------------------------------------"
> +	echo "$commands -c2 -t $1 --log=$logdir/$feature_cnt.log"
> +	$commands -c2 -t $1 --log=$logdir/$feature_cnt.log
> +	evaluate_result $?
> +	echo "$commands -c2 -t $1" >> $logdir/$((feature_cnt-1)).log
> +}
> +
> +# tinyalsa test items; device may not support "default" name nor some formats
> +feature_list_test_tiny () {
> +	commands="$exe"
> +	feature_test_tiny "-P $dev_playback" "single line mode, playback"
> +	feature_test_tiny "-C $dev_capture --standalone" \
> +			"single line mode, capture"
> +	commands="$exe -P $dev_playback -C $dev_capture"
> +	feature_test_tiny "--saveplay ${file_sin_dual}" \
> +			"generate sine wave and detect"
> +	feature_test_tiny "--file ${file_sin_dual}" "play wav file and detect"
> +	feature_test_tiny "-F 19:16757" "configurable channel number: 2"
> +	feature_test_tiny "-r44100" "configurable sample rate: 44100"
> +	feature_test_tiny "-r48000" "configurable sample rate: 48000"
> +	feature_test_tiny "-n16387" "configurable duration: in samples"
> +	feature_test_tiny "-n2.5s" "configurable duration: in seconds"
> +	feature_test_tiny "-f S16_LE --saveplay S16_LE.wav" \
> +			"configurable data depth: 16 bit"
> +	feature_test_tiny "-f S32_LE --saveplay S32_LE.wav" \
> +			"configurable data depth: 32 bit"
> +	feature_test_tiny "-f cd --saveplay cd.wav" \
> +			"configurable data depth: cd"
> +	feature_test_tiny "-f dat --saveplay dat.wav" \
> +			"configurable data depth: dat"
> +	tmpfreq=17583
> +	feature_test_tiny "-F $tmpfreq --standalone" \
> +			"standalone mode: play and capture"
> +	latestfile=`ls -t1 /tmp/bat.wav.* | head -n 1`
> +	feature_test_tiny "--local -F $tmpfreq --file $latestfile" \
> +			"local mode: analyze local file"
> +
> +	print_result
> +}
> +
> +echo "*******************************************"
> +echo "                BAT Test                   "
> +echo "-------------------------------------------"
> +
> +# get device
> +echo "usage:"
> +echo "  $0 <sound card>"
> +echo "  $0 <device-playback> <device-capture> <1 for tinyalsa, blank for alsa>"
> +
> +use_tinyalsa="0"
> +
> +if [ $# -eq 3 ]; then
> +	dev_playback=$1
> +	dev_capture=$2
> +	use_tinyalsa=$3
> +elif [ $# -eq 2 ]; then
> +	dev_playback=$1
> +	dev_capture=$2
> +elif [ $# -eq 1 ]; then
> +	dev_playback=$1
> +	dev_capture=$1
> +fi
> +
> +echo "current setting:"
> +echo "  $0 $dev_playback $dev_capture $3"
> +
> +# run
> +logdir="tmp"
> +mkdir -p $logdir
> +init_counter
> +if [ $use_tinyalsa = "1" ]; then
> +	feature_list_test_tiny
> +else
> +	feature_list_test
> +fi
> +
> +echo "*******************************************"

You need to add it to Makefile.am, too.


thanks,

Takashi
diff mbox

Patch

diff --git a/bat/testbat.sh b/bat/testbat.sh
new file mode 100644
index 0000000..93b9f70
--- /dev/null
+++ b/bat/testbat.sh
@@ -0,0 +1,160 @@ 
+#!/bin/bash
+
+exe="alsabat"
+file_sin="default.wav"
+file_sin_dual="default_dual.wav"
+logdir="tmp"
+# default devices
+dev_playback="default"
+dev_capture="default"
+# features passes vs. features all
+feature_pass=0
+feature_cnt=0
+
+commands="$exe -P $dev_playback -C $dev_capture"
+
+init_counter () {
+	feature_pass=0
+	feature_all=0
+}
+
+evaluate_result () {
+	feature_cnt=$((feature_cnt+1))
+	if [ $1 -eq 0 ]; then
+		feature_pass=$((feature_pass+1))
+		echo "pass"
+	else
+		echo "fail"
+	fi
+}
+
+print_result () {
+	echo "[$feature_pass/$feature_cnt] features passes."
+}
+
+feature_test () {
+	echo "============================================"
+	echo "$feature_cnt: ALSA $2"
+	echo "-------------------------------------------"
+	echo "$commands $1 --log=$logdir/$feature_cnt.log"
+	$commands $1 --log=$logdir/$feature_cnt.log
+	evaluate_result $?
+	echo "$commands $1" >> $logdir/$((feature_cnt-1)).log
+}
+
+# test items
+feature_list_test () {
+	commands="$exe"
+	feature_test "--saveplay ${file_sin}" \
+			"generate test file with default params"
+	sleep 5
+	feature_test "-P $dev_playback" "single line mode, playback"
+	feature_test "-C $dev_capture --standalone" "single line mode, capture"
+	commands="$exe -P $dev_playback -C $dev_capture"
+	feature_test "--file ${file_sin}" "play wav file and detect"
+	feature_test "" "generate sine wave and detect"
+	feature_test "-c1" "configurable channel number: 1"
+	feature_test "-c2 -F 19:16757" "configurable channel number: 2"
+	feature_test "-r44100" "configurable sample rate: 44100"
+	feature_test "-r48000" "configurable sample rate: 48000"
+	feature_test "-n16387" "configurable duration: in samples"
+	feature_test "-n2.5s" "configurable duration: in seconds"
+	feature_test "-f U8 --saveplay U8.wav" "configurable data depth: 8 bit"
+	feature_test "-f S16_LE --saveplay S16_LE.wav" \
+			"configurable data depth: 16 bit"
+	feature_test "-f S24_3LE --saveplay S24_3LE.wav" \
+			"configurable data depth: 24 bit"
+	feature_test "-f S32_LE --saveplay S32_LE.wav" \
+			"configurable data depth: 32 bit"
+	feature_test "-f cd --saveplay cd.wav" "configurable data depth: cd"
+	feature_test "-f dat --saveplay dat.wav" "configurable data depth: dat"
+	tmpfreq=17583
+	feature_test "-F $tmpfreq --standalone" \
+			"standalone mode: play and capture"
+	latestfile=`ls -t1 /tmp/bat.wav.* | head -n 1`
+	feature_test "--local -F $tmpfreq --file $latestfile" \
+			"local mode: analyze local file"
+
+	print_result
+}
+
+feature_test_tiny () {
+	echo "============================================"
+	echo "$feature_cnt: tinyalsa $2"
+	echo "-------------------------------------------"
+	echo "$commands -c2 -t $1 --log=$logdir/$feature_cnt.log"
+	$commands -c2 -t $1 --log=$logdir/$feature_cnt.log
+	evaluate_result $?
+	echo "$commands -c2 -t $1" >> $logdir/$((feature_cnt-1)).log
+}
+
+# tinyalsa test items; device may not support "default" name nor some formats
+feature_list_test_tiny () {
+	commands="$exe"
+	feature_test_tiny "-P $dev_playback" "single line mode, playback"
+	feature_test_tiny "-C $dev_capture --standalone" \
+			"single line mode, capture"
+	commands="$exe -P $dev_playback -C $dev_capture"
+	feature_test_tiny "--saveplay ${file_sin_dual}" \
+			"generate sine wave and detect"
+	feature_test_tiny "--file ${file_sin_dual}" "play wav file and detect"
+	feature_test_tiny "-F 19:16757" "configurable channel number: 2"
+	feature_test_tiny "-r44100" "configurable sample rate: 44100"
+	feature_test_tiny "-r48000" "configurable sample rate: 48000"
+	feature_test_tiny "-n16387" "configurable duration: in samples"
+	feature_test_tiny "-n2.5s" "configurable duration: in seconds"
+	feature_test_tiny "-f S16_LE --saveplay S16_LE.wav" \
+			"configurable data depth: 16 bit"
+	feature_test_tiny "-f S32_LE --saveplay S32_LE.wav" \
+			"configurable data depth: 32 bit"
+	feature_test_tiny "-f cd --saveplay cd.wav" \
+			"configurable data depth: cd"
+	feature_test_tiny "-f dat --saveplay dat.wav" \
+			"configurable data depth: dat"
+	tmpfreq=17583
+	feature_test_tiny "-F $tmpfreq --standalone" \
+			"standalone mode: play and capture"
+	latestfile=`ls -t1 /tmp/bat.wav.* | head -n 1`
+	feature_test_tiny "--local -F $tmpfreq --file $latestfile" \
+			"local mode: analyze local file"
+
+	print_result
+}
+
+echo "*******************************************"
+echo "                BAT Test                   "
+echo "-------------------------------------------"
+
+# get device
+echo "usage:"
+echo "  $0 <sound card>"
+echo "  $0 <device-playback> <device-capture> <1 for tinyalsa, blank for alsa>"
+
+use_tinyalsa="0"
+
+if [ $# -eq 3 ]; then
+	dev_playback=$1
+	dev_capture=$2
+	use_tinyalsa=$3
+elif [ $# -eq 2 ]; then
+	dev_playback=$1
+	dev_capture=$2
+elif [ $# -eq 1 ]; then
+	dev_playback=$1
+	dev_capture=$1
+fi
+
+echo "current setting:"
+echo "  $0 $dev_playback $dev_capture $3"
+
+# run
+logdir="tmp"
+mkdir -p $logdir
+init_counter
+if [ $use_tinyalsa = "1" ]; then
+	feature_list_test_tiny
+else
+	feature_list_test
+fi
+
+echo "*******************************************"