~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source3/script/tests/test_functions.sh

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
TEST_FUNCTIONS_SH="INCLUDED"
 
2
 
 
3
samba3_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
 
 
17
samba3_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
 
 
24
samba3_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
 
 
144
samba3_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
 
 
153
samba3_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
 
 
162
samba3_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
 
 
171
samba3_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
 
 
181
testit() {
 
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
 
 
306
testok() {
 
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
 
 
318
teststatus() {
 
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
 
 
330
if [ -z "$VALGRIND" ]; then
 
331
    MALLOC_CHECK_=2
 
332
    export MALLOC_CHECK_
 
333
fi
 
334