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