#!/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