mas01cr@48
|
1 # no shebang line: this file should be sourced by run-test.sh files
|
mas01cr@48
|
2
|
mas01cr@101
|
3 set -E
|
mas01cr@101
|
4
|
mas01cr@48
|
5 trap "exit 1" ERR
|
mas01cr@48
|
6
|
mas01cr@198
|
7 if [ -z "${AUDIODB}" ]; then
|
mas01cr@48
|
8 AUDIODB=../../audioDB
|
mas01cr@48
|
9 fi
|
mas01cr@48
|
10
|
mas01cr@48
|
11 # FIXME: maybe generalize to multiple arguments? Also, implement it
|
mas01cr@48
|
12 # properly, rather than just for a few floats that we know how to
|
mas01cr@48
|
13 # encode. This might involve writing some C code, as Bash doesn't do
|
mas01cr@48
|
14 # Floating Point. (scanf() is probably enough).
|
mas01cr@48
|
15
|
mas01cr@54
|
16 expect_clean_error_exit() {
|
mas01cr@54
|
17 trap - ERR
|
mas01cr@54
|
18 "$@"
|
mas01cr@54
|
19 exit_code=$?
|
mas01cr@54
|
20 trap "exit 1" ERR
|
mas01cr@54
|
21 if [ $exit_code -eq 0 ]; then
|
mas01cr@54
|
22 exit 1
|
mas01cr@54
|
23 elif [ $exit_code -ge 126 ]; then
|
mas01cr@54
|
24 exit 1
|
mas01cr@54
|
25 fi
|
mas01cr@54
|
26 }
|
mas01cr@54
|
27
|
mas01cr@48
|
28 floatstring() {
|
mas01cr@48
|
29 for arg in "$@"; do
|
mas01cr@48
|
30 case ${arg} in
|
mas01cr@48
|
31 0)
|
mas01cr@48
|
32 printf "\x00\x00\x00\x00\x00\x00\x00\x00";;
|
mas01cr@193
|
33 -0.5)
|
mas01cr@193
|
34 printf "\x00\x00\x00\x00\x00\x00\xe0\xbf";;
|
mas01cr@48
|
35 0.5)
|
mas01cr@48
|
36 printf "\x00\x00\x00\x00\x00\x00\xe0\x3f";;
|
mas01cr@193
|
37 -1)
|
mas01cr@193
|
38 printf "\x00\x00\x00\x00\x00\x00\xf0\xbf";;
|
mas01cr@48
|
39 1)
|
mas01cr@48
|
40 printf "\x00\x00\x00\x00\x00\x00\xf0\x3f";;
|
mas01cr@48
|
41 *)
|
mas01cr@48
|
42 echo "bad arg to floatstring(): ${arg}"
|
mas01cr@48
|
43 exit 1;;
|
mas01cr@48
|
44 esac
|
mas01cr@48
|
45 done
|
mas01cr@48
|
46 }
|
mas01cr@48
|
47
|
mas01cr@48
|
48 # FIXME: likewise. And endianness issues (which are a reflection of
|
mas01cr@48
|
49 # the endianness of audioDB as of 2007-09-18, unfortunately).
|
mas01cr@48
|
50
|
mas01cr@48
|
51 intstring() {
|
mas01cr@48
|
52 # works up to 9 for now
|
mas01cr@48
|
53 if [ $1 -ge 10 ]; then echo "intstring() arg too large: ${1}"; exit 1; fi
|
mas01cr@48
|
54 printf "%b\x00\x00\x00" "\\x${1}"
|
mas01cr@48
|
55 }
|
mas01cr@87
|
56
|
mas01cr@87
|
57 # Web services utilities
|
mas01cr@87
|
58 start_server() {
|
mas01cr@87
|
59 $1 -s $2 &
|
mas01cr@87
|
60 # HACK: deal with race on process creation
|
mas01cr@87
|
61 sleep 1
|
mas01cr@101
|
62 trap 'kill $!; exit 1' ERR
|
mas01cr@87
|
63 }
|
mas01cr@87
|
64
|
mas01cr@87
|
65 stop_server() {
|
mas01cr@198
|
66 grep "${AUDIODB}" /proc/$1/cmdline > /dev/null
|
mas01cr@87
|
67 kill $1
|
mas01cr@87
|
68 # HACK: deal with race on process exit
|
mas01cr@87
|
69 sleep 1
|
mas01cr@87
|
70 expect_clean_error_exit grep ${AUDIODB} /proc/$1/cmdline
|
mas01cr@87
|
71 }
|
mas01cr@87
|
72
|
mas01cr@87
|
73 check_server() {
|
mas01cr@198
|
74 grep "${AUDIODB}" /proc/$1/cmdline > /dev/null
|
mas01cr@87
|
75 }
|
mas01cr@94
|
76
|
mas01cr@95
|
77 expect_client_failure() {
|
mas01cr@550
|
78 trap - ERR
|
mas01cr@94
|
79 "$@"
|
mas01cr@550
|
80 exit_code=$?
|
mas01cr@550
|
81 trap "exit 1" ERR
|
mas01cr@550
|
82 if [ $exit_code -eq 0 ]; then
|
mas01cr@550
|
83 exit 1
|
mas01cr@550
|
84 elif [ $exit_code -ge 126 ]; then
|
mas01cr@550
|
85 exit 1
|
mas01cr@550
|
86 fi
|
mas01cr@94
|
87 }
|