| @@ -0,0 +1,224 @@ | |||
| #!/bin/bash | |||
| #test jack_property client | |||
| #//tb/1902 | |||
| #this test needs: | |||
| # -a running jack server | |||
| # -client programs | |||
| # -jack_property | |||
| # -jack_metro | |||
| # -jack_lsp | |||
| #uninstall jack, setup jack1, make sure /dev/shm/ is clean, start jackd -ddummy in new terminal, run this script in new terminal | |||
| # time ./jack_property_test.sh > /tmp/jack_property_test_jack1_out.txt 2>&1 | |||
| #uninstall jack, setup jack2, make sure /dev/shm/ is clean, start jackd -ddummy in new terminal, run this script in new terminal | |||
| # time ./jack_property_test.sh > /tmp/jack_property_test_jack2_out.txt 2>&1 | |||
| #for stress test: while true; do ./jack_property_test.sh; sleep 1; done | |||
| #to inspect running script: start with bash -x ./jack_property_test.sh | |||
| set -o pipefail | |||
| #any failed test will set this to 1 (error) | |||
| FINAL_RETURN_VALUE=0 | |||
| function expect() | |||
| { | |||
| if [ "$1" = "$2" ]; | |||
| then | |||
| echo " OK: $2" | |||
| return 0 | |||
| fi | |||
| echo "** FAILED: $1" | |||
| echo "** EXP EQ: $2" | |||
| FINAL_RETURN_VALUE=1 | |||
| return 1 | |||
| } | |||
| function expect_not() | |||
| { | |||
| if [ "$1" != "$2" ]; | |||
| then | |||
| echo " OK: $2" | |||
| return 0 | |||
| fi | |||
| echo "** FAILED: $1" | |||
| echo "** EXP NE: $2" | |||
| FINAL_RETURN_VALUE=1 | |||
| return 1 | |||
| } | |||
| function expect_ok_empty() | |||
| { | |||
| expect "$1" 0 | |||
| expect "$2" "" | |||
| } | |||
| TESTPREFIX="" | |||
| function tell() | |||
| { | |||
| echo "test ${TESTPREFIX}$1: $2" | |||
| } | |||
| #test using -c, --client | |||
| function client_test() | |||
| { | |||
| client="$1" | |||
| cmd="jack_property -D" | |||
| tell c1 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect $? 0 | |||
| expect "$res" "JACK metadata successfully deleted" | |||
| cmd="jack_property -l" | |||
| tell c2 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -c -l $client" | |||
| tell c3 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -c -s $client client_key client_value" | |||
| tell c4 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -c -l $client" | |||
| tell c5 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect $? 0 | |||
| expect "$res" "key: client_key value: client_value" | |||
| cmd="jack_property -c -l $client client_key" | |||
| tell c6 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect $? 0 | |||
| expect "$res" "client_value" | |||
| cmd="jack_property -l" # |tail -1" | |||
| tell c7 "$cmd" | |||
| res="`$cmd 2>&1 |tail -1`" | |||
| #18446744073709551615 | |||
| #key: client_key value: client_value | |||
| expect $? 0 | |||
| expect "$res" "key: client_key value: client_value" | |||
| cmd="jack_property -p -l ${client}:non" | |||
| tell c8 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_not $? 0 | |||
| expect "$res" "cannot find port name ${client}:non" | |||
| } | |||
| #test using -p, --port | |||
| function port_test() | |||
| { | |||
| port="$1" | |||
| cmd="jack_property -D" | |||
| tell p1 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect $? 0 | |||
| expect "$res" "JACK metadata successfully deleted" | |||
| cmd="jack_property -l" | |||
| tell p2 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -p -l $port" | |||
| tell p3 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -p -s $port port_key port_value" | |||
| tell p4 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -p -l $port" | |||
| tell p5 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect $? 0 | |||
| expect "$res" "key: port_key value: port_value" | |||
| cmd="jack_property -p -l $port port_key" | |||
| tell p6 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect $? 0 | |||
| expect "$res" "port_value" | |||
| cmd="jack_property -p -d $port port_key" | |||
| tell p7 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -p -l $port port_key" | |||
| tell p8 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_not $? 0 | |||
| expect "$res" "Value not found for port_key of $port" | |||
| cmd="jack_property -p -d $port port_key" | |||
| tell p9 "$cmd" | |||
| res="`$cmd 2>&1 |tail -1`" | |||
| #Cannot delete key port_key (BDB0073 DB_NOTFOUND: No matching key/data pair found) | |||
| #"port_key" property not removed for system:playback_1 | |||
| expect_not $? 0 | |||
| expect "$res" "\"port_key\" property not removed for $port" | |||
| cmd="jack_property -p -l $port" | |||
| tell p10 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_ok_empty $? "$res" | |||
| cmd="jack_property -p -l $port non" | |||
| tell p11 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_not $? 0 | |||
| expect "$res" "Value not found for non of $port" | |||
| cmd="jack_property -c -l non" | |||
| tell p12 "$cmd" | |||
| res="`$cmd 2>&1`" | |||
| expect_not $? 0 | |||
| expect "$res" "cannot get UUID for client named non" | |||
| } | |||
| TESTPREFIX="system_" | |||
| client_test system | |||
| port_test system:playback_1 | |||
| #test with any jack client | |||
| jack_metro -b120 & | |||
| metro_pid=$! | |||
| sleep 0.1 | |||
| jack_lsp|grep metro | |||
| #metro:120_bpm | |||
| TESTPREFIX="metro_" | |||
| client_test metro | |||
| port_test metro:120_bpm | |||
| jack_property -D | |||
| #JACK metadata successfully deleted | |||
| jack_property -l | |||
| kill -HUP $metro_pid | |||
| sleep 0.5 | |||
| echo "done, exit status is $FINAL_RETURN_VALUE" | |||
| ###TO DO: | |||
| #test short keys, values | |||
| #test long keys, values | |||
| #test many | |||
| exit $FINAL_RETURN_VALUE | |||
| #EOF | |||