source: branches/samba-3.3.x/source/script/tests/test_functions.sh

Last change on this file was 206, checked in by Herwig Bauernfeind, 16 years ago

Import Samba 3.3 branch at 3.0.0 level (psmedley's port)

File size: 8.5 KB
Line 
1
2samba3_stop_sig_term() {
3 RET=0
4 kill -USR1 `cat $PIDDIR/timelimit.nmbd.pid` >/dev/null 2>&1 || \
5 kill -ALRM `cat $PIDDIR/timelimit.nmbd.pid` || RET=$?
6
7 kill -USR1 `cat $PIDDIR/timelimit.winbindd.pid` >/dev/null 2>&1 || \
8 kill -ALRM `cat $PIDDIR/timelimit.winbindd.pid` || RET=$?
9
10 kill -USR1 `cat $PIDDIR/timelimit.smbd.pid` >/dev/null 2>&1 || \
11 kill -ALRM `cat $PIDDIR/timelimit.smbd.pid` || RET=$?
12
13 return $RET;
14}
15
16samba3_stop_sig_kill() {
17 kill -ALRM `cat $PIDDIR/timelimit.nmbd.pid` >/dev/null 2>&1
18 kill -ALRM `cat $PIDDIR/timelimit.winbindd.pid` >/dev/null 2>&1
19 kill -ALRM `cat $PIDDIR/timelimit.smbd.pid` >/dev/null 2>&1
20 return 0;
21}
22
23samba3_check_or_start() {
24 if [ -n "$SERVER_TEST_FIFO" ];then
25
26 trap samba3_stop_sig_kill INT QUIT
27 trap samba3_stop_sig_kill TERM
28
29 if [ -p "$SERVER_TEST_FIFO" ];then
30 return 0;
31 fi
32
33 if [ -n "$SOCKET_WRAPPER_DIR" ];then
34 if [ -d "$SOCKET_WRAPPER_DIR" ]; then
35 rm -f $SOCKET_WRAPPER_DIR/*
36 else
37 mkdir -p $SOCKET_WRAPPER_DIR
38 fi
39 fi
40
41 rm -f $SERVER_TEST_FIFO
42 mkfifo $SERVER_TEST_FIFO
43
44 rm -f $NMBD_TEST_LOG
45 printf "%s" "STARTING NMBD..."
46 ((
47 if test x"$NMBD_MAXTIME" = x; then
48 NMBD_MAXTIME=2700
49 fi
50 MAKE_TEST_BINARY=$BINDIR/nmbd
51 export MAKE_TEST_BINARY
52 timelimit $NMBD_MAXTIME $NMBD_VALGRIND $BINDIR/nmbd -F -S --no-process-group -d0 -s $SERVERCONFFILE > $NMBD_TEST_LOG 2>&1 &
53 TIMELIMIT_NMBD_PID=$!
54 MAKE_TEST_BINARY=
55 echo $TIMELIMIT_NMBD_PID > $PIDDIR/timelimit.nmbd.pid
56 wait $TIMELIMIT_NMBD_PID
57 ret=$?;
58 rm -f $SERVER_TEST_FIFO
59 if [ -n "$SOCKET_WRAPPER_DIR" -a -d "$SOCKET_WRAPPER_DIR" ]; then
60 rm -f $SOCKET_WRAPPER_DIR/*
61 fi
62 if [ x"$ret" = x"0" ];then
63 echo "nmbd exits with status $ret";
64 echo "nmbd exits with status $ret" >>$NMBD_TEST_LOG;
65 elif [ x"$ret" = x"137" ];then
66 echo "nmbd got SIGXCPU and exits with status $ret!"
67 echo "nmbd got SIGXCPU and exits with status $ret!">>$NMBD_TEST_LOG;
68 else
69 echo "nmbd failed with status $ret!"
70 echo "nmbd failed with status $ret!">>$NMBD_TEST_LOG;
71 fi
72 exit $ret;
73 ) || exit $? &) 2>/dev/null || exit $?
74 echo "DONE"
75
76 rm -f $WINBINDD_TEST_LOG
77 printf "%s" "STARTING WINBINDD..."
78 ((
79 if test x"$WINBINDD_MAXTIME" = x; then
80 WINBINDD_MAXTIME=2700
81 fi
82 MAKE_TEST_BINARY=$BINDIR/winbindd
83 export MAKE_TEST_BINARY
84 timelimit $WINBINDD_MAXTIME $WINBINDD_VALGRIND $BINDIR/winbindd -F -S --no-process-group -d0 -s $SERVERCONFFILE > $WINBINDD_TEST_LOG 2>&1 &
85 TIMELIMIT_WINBINDD_PID=$!
86 MAKE_TEST_BINARY=
87 echo $TIMELIMIT_WINBINDD_PID > $PIDDIR/timelimit.winbindd.pid
88 wait $TIMELIMIT_WINBINDD_PID
89 ret=$?;
90 rm -f $SERVER_TEST_FIFO
91 if [ -n "$SOCKET_WRAPPER_DIR" -a -d "$SOCKET_WRAPPER_DIR" ]; then
92 rm -f $SOCKET_WRAPPER_DIR/*
93 fi
94 if [ x"$ret" = x"0" ];then
95 echo "winbindd exits with status $ret";
96 echo "winbindd exits with status $ret" >>$WINBINDD_TEST_LOG;
97 elif [ x"$ret" = x"137" ];then
98 echo "winbindd got SIGXCPU and exits with status $ret!"
99 echo "winbindd got SIGXCPU and exits with status $ret!">>$WINBINDD_TEST_LOG;
100 else
101 echo "winbindd failed with status $ret!"
102 echo "winbindd failed with status $ret!">>$WINBINDD_TEST_LOG;
103 fi
104 exit $ret;
105 ) || exit $? &) 2>/dev/null || exit $?
106 echo "DONE"
107
108 rm -f $SMBD_TEST_LOG
109 printf "%s" "STARTING SMBD..."
110 ((
111 if test x"$SMBD_MAXTIME" = x; then
112 SMBD_MAXTIME=2700
113 fi
114 MAKE_TEST_BINARY=$BINDIR/smbd
115 export MAKE_TEST_BINARY
116 timelimit $SMBD_MAXTIME $SMBD_VALGRIND $BINDIR/smbd -F -S --no-process-group -d0 -s $SERVERCONFFILE > $SMBD_TEST_LOG 2>&1 &
117 TIMELIMIT_SMBD_PID=$!
118 MAKE_TEST_BINARY=
119 echo $TIMELIMIT_SMBD_PID > $PIDDIR/timelimit.smbd.pid
120 wait $TIMELIMIT_SMBD_PID
121 ret=$?;
122 rm -f $SERVER_TEST_FIFO
123 if [ -n "$SOCKET_WRAPPER_DIR" -a -d "$SOCKET_WRAPPER_DIR" ]; then
124 rm -f $SOCKET_WRAPPER_DIR/*
125 fi
126 if [ x"$ret" = x"0" ];then
127 echo "smbd exits with status $ret";
128 echo "smbd exits with status $ret" >>$SMBD_TEST_LOG;
129 elif [ x"$ret" = x"137" ];then
130 echo "smbd got SIGXCPU and exits with status $ret!"
131 echo "smbd got SIGXCPU and exits with status $ret!">>$SMBD_TEST_LOG;
132 else
133 echo "smbd failed with status $ret!"
134 echo "smbd failed with status $ret!">>$SMBD_TEST_LOG;
135 fi
136 exit $ret;
137 ) || exit $? &) 2>/dev/null || exit $?
138 echo "DONE"
139 fi
140 return 0;
141}
142
143samba3_nmbd_test_log() {
144 if [ -n "$NMBD_TEST_LOG" ];then
145 if [ -r "$NMBD_TEST_LOG" ];then
146 return 0;
147 fi
148 fi
149 return 1;
150}
151
152samba3_winbindd_test_log() {
153 if [ -n "$WINBINDD_TEST_LOG" ];then
154 if [ -r "$WINBINDD_TEST_LOG" ];then
155 return 0;
156 fi
157 fi
158 return 1;
159}
160
161samba3_smbd_test_log() {
162 if [ -n "$SMBD_TEST_LOG" ];then
163 if [ -r "$SMBD_TEST_LOG" ];then
164 return 0;
165 fi
166 fi
167 return 1;
168}
169
170samba3_check_only() {
171 if [ -n "$SERVER_TEST_FIFO" ];then
172 if [ -p "$SERVER_TEST_FIFO" ];then
173 return 0;
174 fi
175 return 1;
176 fi
177 return 0;
178}
179
180testit() {
181 if [ -z "$PREFIX" ]; then
182 PREFIX=test_prefix
183 mkdir -p $PREFIX
184 fi
185 name=$1
186 shift 1
187 binary=$1
188 cmdline="$*"
189
190 SERVERS_ARE_UP="no"
191
192 shname=`echo $name | \
193 sed -e 's%[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\-]%_%g'`
194
195 UNIQUE_PID=`/bin/sh -c 'echo $$'`
196 TEST_LOG="$PREFIX/test_log.${UNIQUE_PID}"
197 TEST_PCAP="$PREFIX/test_${shname}_${UNIQUE_PID}.pcap"
198 trap "rm -f $TEST_LOG $TEST_PCAP" EXIT
199
200 if [ -z "$nmbd_log_size" ]; then
201 nmbd_log_size=`wc -l < $NMBD_TEST_LOG`;
202 fi
203 if [ -z "$winbindd_log_size" ]; then
204 winbindd_log_size=`wc -l < $WINBINDD_TEST_LOG`;
205 fi
206 if [ -z "$smbd_log_size" ]; then
207 smbd_log_size=`wc -l < $SMBD_TEST_LOG`;
208 fi
209
210 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
211 echo "--==--==--==--==--==--==--==--==--==--==--"
212 echo "Running test $name (level 0 stdout)"
213 echo "--==--==--==--==--==--==--==--==--==--==--"
214 date
215 echo "Testing $name"
216 else
217 echo "Testing $name ($failed)"
218 fi
219
220 samba3_check_only && SERVERS_ARE_UP="yes"
221 if [ x"$SERVERS_ARE_UP" != x"yes" ];then
222 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
223 echo "SERVERS are down! Skipping: $cmdline"
224 echo "=========================================="
225 echo "TEST SKIPPED: $name (reason SERVERS are down)"
226 echo "=========================================="
227 else
228 echo "TEST SKIPPED: $name (reason SERVERS are down)"
229 fi
230 return 1
231 fi
232
233 if [ x"$MAKE_TEST_ENABLE_PCAP" = x"yes" ];then
234 SOCKET_WRAPPER_PCAP_FILE=$TEST_PCAP
235 export SOCKET_WRAPPER_PCAP_FILE
236 fi
237
238 MAKE_TEST_BINARY=$binary
239 export MAKE_TEST_BINARY
240 ( $cmdline > $TEST_LOG 2>&1 )
241 status=$?
242 MAKE_TEST_BINARY=
243 # show any additional output from smbd that has happened in this test
244 samba3_nmbd_test_log && {
245 new_log_size=`wc -l < $NMBD_TEST_LOG`;
246 test "$new_log_size" = "$nmbd_log_size" || {
247 echo "NMBD OUTPUT:";
248 incr_log_size=`expr $new_log_size - $nmbd_log_size`;
249 tail -$incr_log_size $NMBD_TEST_LOG;
250 nmbd_log_size=$new_log_size;
251 }
252 }
253 samba3_winbindd_test_log && {
254 new_log_size=`wc -l < $WINBINDD_TEST_LOG`;
255 test "$new_log_size" = "$winbindd_log_size" || {
256 echo "WINBINDD OUTPUT:";
257 incr_log_size=`expr $new_log_size - $winbindd_log_size`;
258 tail -$incr_log_size $WINBINDD_TEST_LOG;
259 winbindd_log_size=$new_log_size;
260 }
261 }
262 samba3_smbd_test_log && {
263 new_log_size=`wc -l < $SMBD_TEST_LOG`;
264 test "$new_log_size" = "$smbd_log_size" || {
265 echo "SMBD OUTPUT:";
266 incr_log_size=`expr $new_log_size - $smbd_log_size`;
267 tail -$incr_log_size $SMBD_TEST_LOG;
268 smbd_log_size=$new_log_size;
269 }
270 }
271
272 if [ x"$status" != x"0" ]; then
273 echo "TEST OUTPUT:"
274 cat $TEST_LOG;
275 rm -f $TEST_LOG;
276 if [ x"$MAKE_TEST_ENABLE_PCAP" = x"yes" ];then
277 echo "TEST PCAP: $TEST_PCAP"
278 fi
279 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
280 echo "=========================================="
281 echo "TEST FAILED: $name (status $status)"
282 echo "=========================================="
283 else
284 echo "TEST FAILED: $cmdline (status $status)"
285 fi
286 trap "" EXIT
287 return 1;
288 fi
289 rm -f $TEST_LOG;
290 if [ x"$MAKE_TEST_KEEP_PCAP" = x"yes" ];then
291 echo "TEST PCAP: $TEST_PCAP"
292 else
293 rm -f $TEST_PCAP;
294 fi
295 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
296 echo "ALL OK: $cmdline"
297 echo "=========================================="
298 echo "TEST PASSED: $name"
299 echo "=========================================="
300 fi
301 trap "" EXIT
302 return 0;
303}
304
305testok() {
306 name=`basename $1`
307 failed=$2
308
309 if [ x"$failed" = x"0" ];then
310 :
311 else
312 echo "$failed TESTS FAILED or SKIPPED ($name)";
313 fi
314 exit $failed
315}
316
317teststatus() {
318 name=`basename $1`
319 failed=$2
320
321 if [ x"$failed" = x"0" ];then
322 echo "TEST STATUS: $failed";
323 else
324 echo "TEST STATUS: $failed";
325 fi
326 exit $failed
327}
328
329if [ -z "$VALGRIND" ]; then
330 MALLOC_CHECK_=2
331 export MALLOC_CHECK_
332fi
333
Note: See TracBrowser for help on using the repository browser.