source: trunk/test/test.sh@ 220

Last change on this file since 220 was 174, checked in by katerina, 16 years ago

Fix for tickets #112, #113 (dnmalloc deadlock on fork, hostname portability in test script).

File size: 19.4 KB
RevLine 
[1]1#! /bin/sh
2
[27]3#
4# Copyright Rainer Wichmann (2006)
5#
6# License Information:
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20#
21
[30]22# -----------------------------------------------------------------------
23# Be Bourne compatible
24# -----------------------------------------------------------------------
25
26if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
27 emulate sh
28 NULLCMD=:
29elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
30 set -o posix
31fi
32
33# -----------------------------------------------------------------------
34# Make sure we support functions (from the autoconf manual)
35# -----------------------------------------------------------------------
36
37TSHELL="${TSHELL-/bin/sh}"
38if test x"$1" = "x--re-executed"
39then
40 shift
41elif "$TSHELL" -c 'foo () { (exit 0); exit 0; }; foo' >/dev/null 2>&1
42then
43 :
44else
45 for cmd in sh bash ash bsh ksh zsh sh5; do
46 X="$PATH:/bin:/usr/bin:/usr/afsws/bin:/usr/ucb:/usr/xpg4/bin";
47 OLD_IFS=${IFS}
48 IFS=':'; export IFS
49 for dir in $X; do
50 shell="$dir/$cmd"
51 if (test -f "$shell" || test -f "$shell.exe")
52 then
53 if "$shell" -c 'foo () { (exit 0); exit 0; }; foo' >/dev/null 2>&1
54 then
55 TSHELL="$shell"; export TSHELL
56 IFS=${OLD_IFS}; export IFS
57 exec "$shell" "$0" --re-executed ${1+"$@"}
58 fi
59 fi
60 done
61 IFS=${OLD_IFS}; export IFS
62 done
63 echo "-----------------------------------------------------------------"
64 echo "ERROR: Unable to locate a shell interpreter with function support" >&2
65 echo "-----------------------------------------------------------------"
66 { (exit 1); exit 1; }
67fi
68
69# -----------------------------------------------------------------------
70# Make sure we support 'let' (from the autoconf manual)
71# -----------------------------------------------------------------------
72
73TSHELL="${TSHELL-/bin/sh}"
74if test x"$1" = "x--re-run"
75then
76 shift
77elif "$TSHELL" -c 'a=5; let "a = a + 5"' >/dev/null 2>&1
78then
79 :
80else
81 for cmd in sh bash ash bsh ksh zsh sh5; do
82 X="$PATH:/bin:/usr/bin:/usr/afsws/bin:/usr/ucb:/usr/xpg4/bin";
83 OLD_IFS=${IFS}
84 IFS=':'; export IFS
85 for dir in $X; do
86 shell="$dir/$cmd"
87 if (test -f "$shell" || test -f "$shell.exe")
88 then
89 if "$shell" -c 'foo () { (exit 0); exit 0; }; foo' >/dev/null 2>&1
90 then
91 if "$shell" -c 'a=5; let "a = a + 5"' >/dev/null 2>&1
92 then
93 TSHELL="$shell"; export TSHELL
94 IFS=${OLD_IFS}; export IFS
95 exec "$shell" "$0" --re-run ${1+"$@"}
96 fi
97 fi
98 fi
99 done
100 IFS=${OLD_IFS}; export IFS
101 done
102 echo "-----------------------------------------------------------------"
103 echo "ERROR: Unable to locate a shell interpreter with support for 'let'" >&2
104 echo "-----------------------------------------------------------------"
105 { (exit 1); exit 1; }
106fi
107
108
109umask 0022
110
[19]111isok=`test -t 1 2>&1 | wc -c`
112if [ "$isok" -eq 0 ]; then
113 test -t 1
114 isok=$?
115fi
[1]116
117# The following two are the ANSI sequences for start and end embolden
[19]118if [ x"$isok" = x0 ]; then
119 case $TERM in
120 vt*|ansi*|con*|xterm*|linux*|screen*|rxvt*)
121 S='[1;30m'
122 R=[31m
123 G=[32m
124 B=[36m
125 E=[m
126 ;;
127 *)
128 S=
129 R=
130 G=
131 B=
132 E=
133 ;;
134 esac
135fi
[1]136
[19]137
138usage() {
139 echo "test.sh [options] <test_number> [hostname]"
[68]140 echo " [-q|--quiet|-v|--verbose] [-s|--stoponerr] [-n|--no-cleanup]"
[19]141 echo " [--srcdir=top_srcdir] [--color=always|never|auto]"
142 echo
143 echo " ${S}test.sh 1${E} -- Compile with many different options"
144 echo " ${S}test.sh 2${E} -- Hash function (testrc_1)"
145 echo " ${S}test.sh 3${E} -- Standalone init/check"
146 echo " ${S}test.sh 4${E} -- Microstealth init/check"
147 echo " ${S}test.sh 5${E} -- External program call (testrc_1ext.in)"
148 echo " ${S}test.sh 6${E} -- Controlling the daemon"
149 echo " ${S}test.sh 7${E} -- GnuPG signed files / prelude log"
[22]150 echo " ${S}test.sh 8${E} -- Suidcheck"
[68]151 echo " ${S}test.sh 9${E} -- Process check"
152 echo " ${S}test.sh 10${E} -- Port check"
[19]153
[68]154 echo " ${S}test.sh 20${E} -- Test c/s init/check (testrc_2.in)"
155 echo " ${S}test.sh 21${E} -- Test full c/s init/check (testrc_2.in)"
156 echo " ${S}test.sh 22${E} -- Test full c/s w/gpg (testrc_2.in)"
157 echo " ${S}test.sh 23${E} -- Test full c/s w/mysql (testrc_2.in)"
158 echo " ${S}test.sh 24${E} -- Test full c/s w/postgres (testrc_2.in)"
[22]159 echo " ${S}test.sh all${E} -- All tests"
160}
161scripts () {
[19]162 echo
[22]163 echo "Scripts used by tests:"
[19]164 echo " (1) testcompile.sh (2) testhash.sh (3) testrun_1.sh (4) testrun_1a.sh"
[22]165 echo " (5) testext.sh (6) testtimesrv.sh (7) testrun_1b.sh (8) testrun_1c.sh"
[128]166 echo " (9) testrun_1d.sh (10) testrun_1e.sh"
[68]167 echo " (20) testrun_2.sh (21) testrun_2a.sh (22) testrun_2b.sh (23) testrun_2c.sh"
168 echo " (24) testrun_2d.sh"
[19]169}
170
171#
172# Option parsing
173#
174verbose=
175quiet=
176stoponerr=
177color=auto
178cleanup=on
179doall=
[22]180usevalgrind=
[19]181
182while [ $# -gt 0 ]
183do
184 case "$1" in
185 -h|--help) usage; exit 0;;
[22]186 --scripts) usage; scripts; exit 0;;
[19]187 -v|--verbose) verbose=on; quiet= ;;
188 -q|--quiet) quiet=on; verbose= ;;
189 -s|--stoponerr) stoponerr=on;;
[68]190 -n|--no-cleanup) cleanup= ;;
[19]191 --really-all) doall=on;;
[22]192 --valgrind) usevalgrind=on;;
[19]193 --srcdir=*) TOP_SRCDIR=`echo $1 | sed s,--srcdir=,,`; export TOP_SRCDIR;;
194 --color=*)
195 arg=`echo $1 | sed s,--color=,,`
196 case $arg in
197 auto) ;;
198 never|none|no)
199 S=
200 R=
201 G=
202 B=
203 E=
204 ;;
205 always|yes)
206 S='[1;30m'
207 R=[31m
208 G=[32m
209 G=[36m
210 E=[m
211 ;;
212 *) echo "Invalid argument $1"; exit 1;;
213 esac
214 ;;
215 -*) echo "Invalid argument $1"; exit 1;;
216 *) break;;
217 esac
218 shift
219done
220
221export verbose
222export quiet
223export stoponerr
224export cleanup
225export doall
226export S; export R; export G; export B; export E;
227
[1]228SCRIPTDIR=.
229
[19]230#
231# 'make test' will copy the 'test' subdirectory and replace TEST_SRCDIR
232#
[1]233TEST_SRCDIR="XXXSRCXXX";
234if test "x${TOP_SRCDIR}" = x; then
235 # not within source tree, and not called with 'make testN'
236 if test -f "${TEST_SRCDIR}/src/samhain.c"; then
237 TOP_SRCDIR="${TEST_SRCDIR}"; export TOP_SRCDIR
238 if test -f test/testcompile.sh; then
239 SCRIPTDIR=test
240 fi
241 # not within source tree, not called by 'make', and in 'test' subdir
242 elif test -f "../${TEST_SRCDIR}/src/samhain.c"; then
243 cd ..
244 SCRIPTDIR=test
245 TOP_SRCDIR="${TEST_SRCDIR}"; export TOP_SRCDIR
246 # within source tree, and not called with 'make testN'
247 else
248 if test -f ../src/samhain.c; then
249 cd ..
250 SCRIPTDIR=test
251 TOP_SRCDIR=.
252 export TOP_SRCDIR
253 elif test -f ./src/samhain.c; then
254 SCRIPTDIR=test
255 TOP_SRCDIR=.
256 export TOP_SRCDIR
257 else
[19]258 echo "Please use --srcdir=DIR, where DIR should be the"
[1]259 echo "top directory in the samhain source tree."
260 exit 1
261 fi
262 fi
263else
[19]264 # called by make, or with --srcdir=TOP_SRCDIR
265 if test -f "${TOP_SRCDIR}/src/samhain.c"; then
266 SCRIPTDIR="${TOP_SRCDIR}/test"
267 elif test -f "../${TOP_SRCDIR}/src/samhain.c"; then
268 cd ..; SCRIPTDIR="${TOP_SRCDIR}/test"
[1]269 else
[19]270 echo "Please use --srcdir=DIR, where DIR should be the"
271 echo "top directory in the samhain source tree."
272 exit 1
[1]273 fi
274fi
275
276export SCRIPTDIR
277
278PW_DIR=`pwd`; export PW_DIR
[29]279
[19]280#
[29]281# group/world writeable will cause problems
[19]282#
[29]283chmod go-w .
[19]284#
[29]285#
286#
[128]287if test x$UID != x -a x$UID != x0; then
[19]288 TRUST="--with-trusted=0,2,$UID"
289else
[128]290 TRUST="--with-trusted=0,2,1000"
[19]291fi
292export TRUST
293#
294# find a good 'make'
295#
296MAKE=`which gmake`
297if test "x$?" = x1 ; then
[170]298 MAKE="make -s -j 3"
[19]299else
300 MAKE=`which gmake | sed -e "s%\([a-z:]\) .*%\1%g"`
301 if test "x$MAKE" = x; then
302 MAKE="make -s"
303 elif test "x$MAKE" = xno; then
304 MAKE="make -s"
305 else
306 if test "x$MAKE" = "xwhich:"; then
307 MAKE="make -s"
308 else
309 MAKE="gmake -s"
310 gmake -v >/dev/null 2>&1 || MAKE="make -s"
311 fi
312 fi
313fi
314export MAKE
[1]315
[19]316failcount=0
317okcount=0
318skipcount=0
319global_count=0
320last_count=0
321
322# args: #test, #total, status, optional msg
323log_msg ()
324{
325 if [ x"$COLUMNS" != x ]; then
326 TERMWIDTH=$COLUMNS
327 elif [ x"$COLS" != x ]; then
328 TERMWIDTH=$COLS
329 else
330 TERMWIDTH=80
331 fi
332 cols=66;
333 #
334 if [ $1 -eq 0 ]; then
335 msg=" ${4}"
336 else
337 if [ ${1} -eq 1 ]; then
338 global_count=${last_count}
339 fi
340 let "v = $1 + global_count" >/dev/null
341 last_count=${v}
342 dd=''; if [ $v -lt 10 ]; then dd=" "; fi
343 dt=''; if [ $2 -lt 10 ]; then dt=" "; fi
344 if [ -z "$4" ]; then
345 msg=" test ${dd}${v}/${dt}${2}"
346 else
347 msg=" test ${dd}${v}/${dt}${2} ${4}"
348 fi
349 fi
350 #
351 if [ x"$3" = xfailure ]; then
352 ccode=$R
353 elif [ x"$3" = xsuccess ]; then
354 ccode=$G
355 else
356 ccode=$B
357 fi
358 if [ -z "${R}" ]; then
359 echo " [${3}] ${msg}"
360 else
361 # len=${#...} is not bourne shell
362 # also, need to account for terminal control sequences
363 len=`echo "$msg" | awk '/1;30m/ { print length()-10; }; !/1;30m/ { print length();}'`
364 let "cols = cols - len" >/dev/null
[171]365 if [ $cols -ge 0 ]; then
366 moveto='['$cols'C'
367 echo "${msg}${moveto}${ccode}[${3}]${E}"
368 else
369 echo "${msg}${ccode}[${3}]${E}"
370 fi
[19]371 fi
372}
373
374log_fail () {
[68]375 [ -z "$quiet" ] && log_msg "$1" "$2" failure "$3";
[19]376 let "failcount = failcount + 1" >/dev/null;
377 test -z "$stoponerr" || exit 1;
378}
379log_ok () {
[68]380 [ -z "$quiet" ] && log_msg "$1" "$2" success "$3";
[19]381 let "okcount = okcount + 1" >/dev/null;
382}
383log_skip () {
[68]384 [ -z "$quiet" ] && log_msg "$1" "$2" skipped "$3";
[19]385 let "skipcount = skipcount + 1" >/dev/null;
386}
387
388log_msg_fail () { log_msg 0 0 failure "$1"; }
389log_msg_ok () { log_msg 0 0 success "$1"; }
390log_msg_skip () { log_msg 0 0 skipped "$1"; }
391
392log_start () {
393 if [ -z "$quiet" ]; then
394 echo;
395 echo "${S}__ START TEST ${1} __${E}";
396 echo;
397 fi
398}
399log_end () {
400 if [ -n "$verbose" ]; then
401 echo;
402 echo "${S}__ END TEST ${1} __${E}";
403 echo;
404 fi
405}
406
[51]407# This looks silly, but with solaris10/i386 on vmware,
408# 'sleep' occasionally does not sleep...
409
410one_sec_sleep () {
411 onesdate=`date`
412 onestest=0
413 while [ $onestest -eq 0 ]; do
414 sleep 1
415 twosdate=`date`
416 if [ "x$twosdate" = "x$onesdate" ]; then
417 onestest=0
418 else
419 onestest=1
420 fi
421 done
422}
423
424five_sec_sleep () {
425 for f in 1 2 3 4 5; do
426 one_sec_sleep
427 done
428}
429
[19]430do_cleanup () {
431 rm -f testrc_1.dyn
432 rm -f testrc_2
[27]433 rm -f testrc_22
[19]434 rm -f ./.samhain_file
435 rm -f ./.samhain_log*
[27]436 rm -f ./.samhain_lock*
[172]437 test -d testrun_testdata && chmod -f -R 0700 testrun_testdata
[22]438 test -d .quarantine && rm -rf .quarantine
439 rm -rf testrun_testdata
[19]440 rm -f test_log_db
441 rm -f test_log_prelude
[27]442 rm -f test_log_valgrind*
[22]443 rm -f test_log_yulectl
444 rm -f yule.html
[27]445 rm -f yule.html2
[171]446 rm -f test_dnmalloc
[19]447}
448
449print_summary ()
450{
[68]451 # let "gcount = okcount + skipcount + failcount" >/dev/null;
452 gcount=$MAXTEST;
453 let "failcount = gcount - okcount - skipcount" >/dev/null;
454
[19]455 [ -z "$quiet" ] && {
456 echo
457 echo "__ ${S}Tests: ${gcount} Ok: ${okcount} Skipped: ${skipcount} Failed: ${failcount}${E}"
458 }
459 if [ $failcount -eq 0 ]; then
460 [ -z "$quiet" ] && { echo "__ ${G}All tests passed successfully.${E}"; echo; }
461 elif [ $failcount -eq 1 ]; then
462 [ -z "$quiet" ] && { echo "__ ${R}There was 1 failure.${E}"; echo; }
463 else
464 [ -z "$quiet" ] && { echo "__ ${R}There were $failcount failures.${E}"; echo; }
465 fi
466 [ -z "$cleanup" ] || do_cleanup;
467}
468
469find_path () { (
470 save_IFS=$IFS; IFS=:
471
472 for dir in $PATH; do
473 IFS=$as_save_IFS
474 test -z "$dir" && dir=.
475 if test -f "$dir/$1"; then
476 echo "$dir/$1";
477 break;
478 fi
479 done
480 IFS=${save_IFS};
481); }
482
483find_hostname () {
[174]484
485 uname -a | grep Linux >/dev/null
486 if [ $? -eq 0 ]; then
487 tmp=`hostname -f 2>/dev/null`
488 if [ $? -ne 0 ]; then
489 tmp=`hostname 2>/dev/null`
490 fi
491 else
[19]492 tmp=`hostname 2>/dev/null`
493 fi
494 if [ -z "$tmp" ]; then
495 tmp="localhost"
496 fi
[30]497 #
498 # first one is hostname, others are aliases
499 #
500 tmp2=`cat /etc/hosts | egrep "^ *[0123456789].* $tmp" | awk '{ print $2 }'`
501 if [ -z "$tmp2" ]; then
502 echo "$tmp"
503 else
504 echo "$tmp2"
505 fi
[19]506}
507
508rm -f ./test_log
509
510# first one is hostname, others are aliases
511#
512hostname=`cat /etc/hosts | egrep "^ *127.0.0.1" | awk '{ print $2 }'`
513if [ x"$hostname" = xlocalhost ]; then
514 hostname="127.0.0.1"
515fi
516
[22]517# Seems that 'valgrind' causes random hangs :-(
518#
519if [ -z "$usevalgrind" ]; then
520 VALGRIND=
521else
522 VALGRIND=`find_path valgrind`;
523fi
524[ -z "$VALGRIND" ] || {
525 VALGRIND="$VALGRIND --quiet --tool=memcheck --suppressions=.test.supp";
526 export VALGRIND;
527 [ -z "$verbose" ] || log_msg_ok "using valgrind"
528cat > ".test.supp" <<End-of-data
529#
530# there are unitialized bytes in the struct...
531#
532{
533 pushdata_01
534 Memcheck:Param
535 write(buf)
536 obj:/lib/ld-*.so
537 fun:sh_hash_pushdata
538 fun:sh_files_filecheck
539 fun:sh_dirs_chk
540}
541{
542 pushdata_02
543 Memcheck:Param
544 write(buf)
545 obj:/lib/ld-*.so
546 fun:sh_hash_pushdata
547 fun:sh_files_filecheck
548 fun:sh_files_checkdir
549}
550{
551 pushdata_03
552 Memcheck:Param
553 write(buf)
554 obj:/lib/ld-*.so
555 fun:sh_hash_pushdata
556 fun:sh_hash_writeout
557 fun:main
558}
559
560End-of-data
561}
562
[1]563if test x$1 = x1; then
[19]564 . ${SCRIPTDIR}/testcompile.sh
565 testcompile
566 print_summary
567 exit $?
[1]568fi
569if test x$1 = x2; then
[19]570 . ${SCRIPTDIR}/testhash.sh
571 testhash
572 print_summary
573 exit $?
[1]574fi
575if test x$1 = x3; then
[19]576 . ${SCRIPTDIR}/testrun_1.sh
577 testrun1
578 print_summary
579 exit $?
[1]580fi
581if test x$1 = x4; then
[19]582 . ${SCRIPTDIR}/testrun_1.sh
583 . ${SCRIPTDIR}/testrun_1a.sh
584 testrun1a
585 print_summary
586 exit $?
[1]587fi
588if test x$1 = x5; then
[19]589 . ${SCRIPTDIR}/testext.sh
590 testext0
591 print_summary
592 exit $?
[1]593fi
594if test x$1 = x6; then
[19]595 . ${SCRIPTDIR}/testtimesrv.sh
596 testtime0
597 print_summary
598 exit $?
[1]599fi
600if test x$1 = x7; then
[19]601 . ${SCRIPTDIR}/testrun_1b.sh
602 testrun1b
603 print_summary
604 exit $?
[1]605fi
[22]606if test x$1 = x8; then
607 . ${SCRIPTDIR}/testrun_1.sh
608 . ${SCRIPTDIR}/testrun_1c.sh
609 testrun1c
610 print_summary
611 exit $?
612fi
[68]613if test x$1 = x9; then
614 . ${SCRIPTDIR}/testrun_1.sh
615 . ${SCRIPTDIR}/testrun_1d.sh
616 testrun1d
617 print_summary
618 exit $?
619fi
[1]620if test x$1 = x10; then
[68]621 . ${SCRIPTDIR}/testrun_1.sh
622 . ${SCRIPTDIR}/testrun_1e.sh
623 testrun1e
624 print_summary
625 exit $?
626fi
627if test x$1 = x20; then
[19]628 . ${SCRIPTDIR}/testrun_2.sh
629 testrun2 $hostname
630 print_summary
631 exit $?
[1]632fi
[68]633if test x$1 = x21; then
[19]634 . ${SCRIPTDIR}/testrun_2a.sh
635 testrun2a $hostname
636 print_summary
637 exit $?
[1]638fi
[68]639if test x$1 = x22; then
[19]640 . ${SCRIPTDIR}/testrun_2a.sh
641 . ${SCRIPTDIR}/testrun_2b.sh
642 testrun2b $hostname
643 print_summary
644 exit $?
[1]645fi
[68]646if test x$1 = x23; then
[19]647 . ${SCRIPTDIR}/testrun_2a.sh
648 . ${SCRIPTDIR}/testrun_2c.sh
649 testrun2c $hostname
650 print_summary
651 exit $?
[1]652fi
[68]653if test x$1 = x24; then
[19]654 . ${SCRIPTDIR}/testrun_2a.sh
655 . ${SCRIPTDIR}/testrun_2d.sh
656 testrun2d $hostname
657 print_summary
658 exit $?
[1]659fi
660if test x$1 = xall; then
[19]661 TEST_MAX=0
662 . ${SCRIPTDIR}/testcompile.sh
663 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
664 . ${SCRIPTDIR}/testhash.sh
665 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
666 . ${SCRIPTDIR}/testrun_1.sh
667 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
668 . ${SCRIPTDIR}/testrun_1a.sh
669 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
670 . ${SCRIPTDIR}/testext.sh
671 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
672 . ${SCRIPTDIR}/testtimesrv.sh
673 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
674 . ${SCRIPTDIR}/testrun_1b.sh
675 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
[22]676 . ${SCRIPTDIR}/testrun_1c.sh
677 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
[68]678 . ${SCRIPTDIR}/testrun_1d.sh
679 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
680 . ${SCRIPTDIR}/testrun_1e.sh
681 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
[19]682 . ${SCRIPTDIR}/testrun_2.sh
683 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
684 . ${SCRIPTDIR}/testrun_2a.sh
685 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
686 . ${SCRIPTDIR}/testrun_2b.sh
687 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
688 . ${SCRIPTDIR}/testrun_2c.sh
689 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
690 . ${SCRIPTDIR}/testrun_2d.sh
691 let "TEST_MAX = TEST_MAX + MAXTEST" >/dev/null
692 #
693 # ${SCRIPTDIR}/testtimesrv.sh
694 # ${SCRIPTDIR}/testrun_1b.sh
695 # ${SCRIPTDIR}/testrun_2.sh $2
696 # ${SCRIPTDIR}/testrun_2a.sh $2
697 #
698 MAXTEST=${TEST_MAX}; export MAXTEST
699 testcompile
700 testhash
701 #
702 . ${SCRIPTDIR}/testrun_1.sh
703 MAXTEST=${TEST_MAX}; export MAXTEST
704 testrun1
705 #
706 . ${SCRIPTDIR}/testrun_1a.sh
707 MAXTEST=${TEST_MAX}; export MAXTEST
708 testrun1a
709 #
710 testext0
711 #
712 . ${SCRIPTDIR}/testtimesrv.sh
713 MAXTEST=${TEST_MAX}; export MAXTEST
714 testtime0
715 #
716 . ${SCRIPTDIR}/testrun_1b.sh
717 MAXTEST=${TEST_MAX}; export MAXTEST
718 testrun1b
719 #
[22]720 . ${SCRIPTDIR}/testrun_1.sh
721 . ${SCRIPTDIR}/testrun_1c.sh
722 MAXTEST=${TEST_MAX}; export MAXTEST
723 testrun1c
724 #
[68]725 . ${SCRIPTDIR}/testrun_1.sh
726 . ${SCRIPTDIR}/testrun_1d.sh
727 MAXTEST=${TEST_MAX}; export MAXTEST
728 testrun1d
729 #
730 . ${SCRIPTDIR}/testrun_1.sh
731 . ${SCRIPTDIR}/testrun_1e.sh
732 MAXTEST=${TEST_MAX}; export MAXTEST
733 testrun1e
734 #
[19]735 . ${SCRIPTDIR}/testrun_2.sh
736 MAXTEST=${TEST_MAX}; export MAXTEST
737 testrun2 $hostname
738 #
739 . ${SCRIPTDIR}/testrun_2a.sh
740 MAXTEST=${TEST_MAX}; export MAXTEST
741 testrun2a $hostname
742 #
743 . ${SCRIPTDIR}/testrun_2b.sh
744 MAXTEST=${TEST_MAX}; export MAXTEST
745 testrun2b $hostname
746 #
747 . ${SCRIPTDIR}/testrun_2c.sh
748 MAXTEST=${TEST_MAX}; export MAXTEST
749 testrun2c $hostname
750 #
751 . ${SCRIPTDIR}/testrun_2d.sh
752 MAXTEST=${TEST_MAX}; export MAXTEST
753 testrun2d $hostname
754 #
755 print_summary
756 exit 0
[1]757fi
758
[19]759usage;
[1]760
[19]761exit 1;
[1]762
[60]763# gpg -a --clearsign --not-dash-escaped testrc.gpg
764# gpg -a --clearsign --not-dash-escaped .samhain_file
765# tar czvf foo.tgz testrc.gpg.asc .samhain_file.asc
766# cat foo.tgz >>test/test.sh
767
[19]768__ARCHIVE_FOLLOWS__
[60]769‹£ÉúDí•ÏoãDÇœ UbN\'€‘8*Û:IӔJ‘pãÔ-›ŠùєBU!o2M
770þ‘z&éf/ˆ‚#§šgGâßa%7U$ĉHš‡U{àÚš
771ã$M¶Ûª‚.¬4Ù
772ϛ™÷Þ×3ž!39•Î€§dœänž2;3ã”.Ÿ—ïÕ]ýzïÕëóq.~Æ7ëqû\³
773môž<
774äo'q²˜È&„œ)+:2¯ê‡L|…
775Ÿ˜aù’p×a!(-‡aDŠÀø²Šp%
776R°×–dŒ3ãK‚
777„
778"ÒZ'å
[128]779JÍÃOŒ,ÔJAIÏF$H
780˜CŠ²‡dGÁPCËiØ1•ûY‚ðØVTäŸF$ ÀÛP74‘¬ªyši§ ¿iG(«š LgeS։ƒzGLÀŠd{ŠžéEgÀˆËi:K9%‰ðˆi‡ú­kIє‚9€“8r&ù-pþ– 
781x’ŸŽ™\㊒S«ºš·ž'4nœÈöo
782ËiÝ0QØÐÑžýâc]Ö_PUÿžlêCs?$ýT÷Ð(*&ö+ú¶1Ž„e:ý‘`“&³VdE=o¥ãušyhèÇÈcuÄÖë1•‹×6WœÜ¢Œ4C§ÝhTâä•ÜAÉ/Ö
783ù]nÞ1ÆP2kbÅÐCԁêwõŒ!ÃÈô:Íò †2†I³ª*"B„~ºF@Àñƒ³ÚÝ®ü=§Î
784®.npÉ
785Ö±Áâ]GœhóƒšsM¹§Œð])œ˜)zöÁ{(✾]
786NâUi—×òÂKùÔ'|ÄÇp4çÑøûá{Þ¹ð¯GCº›V–}ÑtE4w¬ðáXÄ÷0ê‘Ð
787ˆŠ)Xöÿ¶DU÷ †ÅËÒû¯n
788ËÚÝú>sþ[:®ÙÿÝ^Þ{ŸÿÏxœ^gÿ÷¹ÙþÿBx1ûÿO¿üÐùœý˜¯œ:žÃ
789œ_y>¬‰^ýËïOE§,>/G)ŒÀÑö7žîÑÑÙ³ú.µ>>é>ý£[p.®|Cèðýã³'à.(|u¹œ;ô.§&žý;ýú[?öÓÿî›øXù\9Žýfr
790ݧ…
791nÁ¹žN­Z­•ÊõÃÃfѶËõR§]Žª¥b»Ø²Ú
792ë°T¬5:õF±TkÚ­Ž]ÈÙÿíèôìôQÉ79î끚ǭŸ(øhŒ|®šÏÑš(»\Ž¬b«}xPjV«õZµa7êµJŲJ•r»b[Tfë VªÖ+TߏÎN®Ñ$Ñu‡?ì×OšÊߟ³à”’Œp¥&ÚïhjØ
793«ÒŽ«õN˲[Z³U/µ*õš]?,µ*öA£ZîXV¥n7;É:=îþùë“cg®žúrR ZþÅS\%c§ž7„{¢äâI`nÝ+
794ž‡©D@ÌMûB‰˜gÝéœEa-’^ú|7¢EgƒædFü8(íFdLOñɄ
795ûŸâ
796ƒÁ`0
797ƒÁ`0
798ƒÁ`0
799FŸ¿ès((
Note: See TracBrowser for help on using the repository browser.