]> git.ipfire.org Git - thirdparty/cups.git/blame - test/run-stp-tests.sh
Changelog.
[thirdparty/cups.git] / test / run-stp-tests.sh
CommitLineData
ef416fc2 1#!/bin/sh
2#
8fe0183a
MS
3# Perform the complete set of IPP compliance tests specified in the
4# CUPS Software Test Plan.
ef416fc2 5#
2c091429 6# Copyright © 2007-2019 by Apple Inc.
53f8d64f
MS
7# Copyright © 1997-2007 by Easy Software Products, all rights reserved.
8#
9# Licensed under Apache License v2.0. See the file "LICENSE" for more
10# information.
ef416fc2 11#
12
a74454a7 13argcount=$#
14
a29fd7dd
MS
15#
16# Don't allow "make check" or "make test" to be run by root...
17#
18
19if test "x`id -u`" = x0; then
20 echo Please run this as a normal user. Not supported when run as root.
21 exit 1
22fi
23
24#
25# Force the permissions of the files we create...
26#
27
28umask 022
29
ef416fc2 30#
31# Make the IPP test program...
32#
33
34make
35
0268488e
MS
36#
37# Solaris has a non-POSIX grep in /bin...
38#
39
40if test -x /usr/xpg4/bin/grep; then
41 GREP=/usr/xpg4/bin/grep
42else
43 GREP=grep
44fi
45
bd7854cb 46#
47# Figure out the proper echo options...
48#
49
0268488e 50if (echo "testing\c"; echo 1,2,3) | $GREP c >/dev/null; then
bd7854cb 51 ac_n=-n
52 ac_c=
53else
54 ac_n=
55 ac_c='\c'
56fi
57
ef416fc2 58#
59# Greet the tester...
60#
61
62echo "Welcome to the CUPS Automated Test Script."
63echo ""
64echo "Before we begin, it is important that you understand that the larger"
65echo "tests require significant amounts of RAM and disk space. If you"
66echo "attempt to run one of the big tests on a system that lacks sufficient"
67echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
68echo "more system processes that you've grown attached to, like the X"
69echo "server. The question you may want to ask yourself before running a"
70echo "large test is: Do you feel lucky?"
71echo ""
72echo "OK, now that we have the Dirty Harry quote out of the way, please"
73echo "choose the type of test you wish to perform:"
74echo ""
75echo "0 - No testing, keep the scheduler running for me (all systems)"
76echo "1 - Basic conformance test, no load testing (all systems)"
77echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
78echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
79echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
80echo ""
bd7854cb 81echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
ef416fc2 82
a74454a7 83if test $# -gt 0; then
84 testtype=$1
85 shift
86else
87 read testtype
88fi
bd7854cb 89echo ""
ef416fc2 90
91case "$testtype" in
92 0)
93 echo "Running in test mode (0)"
67bd1f47 94 nprinters=0
ef416fc2 95 pjobs=0
b9faaae1 96 pprinters=0
766a8229 97 loglevel="debug2"
ef416fc2 98 ;;
99 2)
100 echo "Running the medium tests (2)"
67bd1f47 101 nprinters=20
ef416fc2 102 pjobs=20
b9faaae1 103 pprinters=10
766a8229 104 loglevel="debug"
ef416fc2 105 ;;
106 3)
107 echo "Running the extreme tests (3)"
67bd1f47 108 nprinters=1000
ef416fc2 109 pjobs=100
b9faaae1 110 pprinters=50
766a8229 111 loglevel="debug"
ef416fc2 112 ;;
113 4)
114 echo "Running the torture tests (4)"
67bd1f47 115 nprinters=20000
ef416fc2 116 pjobs=200
b9faaae1 117 pprinters=100
766a8229 118 loglevel="debug"
ef416fc2 119 ;;
120 *)
121 echo "Running the timid tests (1)"
67bd1f47 122 nprinters=0
839a51c8 123 pjobs=10
b9faaae1 124 pprinters=0
766a8229 125 loglevel="debug2"
6a638e32 126 testtype="1"
ef416fc2 127 ;;
128esac
129
130#
131# See if we want to do SSL testing...
132#
133
134echo ""
135echo "Now you can choose whether to create a SSL/TLS encryption key and"
6ccb19f3 136echo "certificate for testing:"
ef416fc2 137echo ""
138echo "0 - Do not do SSL/TLS encryption tests"
411affcf 139echo "1 - Test but do not require encryption"
140echo "2 - Test and require encryption"
ef416fc2 141echo ""
bd7854cb 142echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
ef416fc2 143
a74454a7 144if test $# -gt 0; then
145 ssltype=$1
146 shift
147else
148 read ssltype
149fi
bd7854cb 150echo ""
ef416fc2 151
152case "$ssltype" in
411affcf 153 1)
154 echo "Will test but not require encryption (1)"
155 ;;
156 2)
157 echo "Will test and require encryption (2)"
ef416fc2 158 ;;
ef416fc2 159 *)
411affcf 160 echo "Not using SSL/TLS (0)"
ef416fc2 161 ssltype=0
162 ;;
163esac
164
165#
166# Information for the server/tests...
167#
168
e1d6a774 169user="$USER"
170if test -z "$user"; then
171 if test -x /usr/ucb/whoami; then
172 user=`/usr/ucb/whoami`
173 else
174 user=`whoami`
175 fi
176
177 if test -z "$user"; then
178 user="unknown"
179 fi
180fi
181
95dd8876 182port="${CUPS_TESTPORT:=8631}"
ef416fc2 183cwd=`pwd`
184root=`dirname $cwd`
8fe0183a
MS
185CUPS_TESTROOT="$root"; export CUPS_TESTROOT
186
95dd8876
MS
187BASE="${CUPS_TESTBASE:=}"
188if test -z "$BASE"; then
189 if test -d /private/tmp; then
190 BASE=/private/tmp/cups-$user
191 else
192 BASE=/tmp/cups-$user
193 fi
8fe0183a 194fi
2a8db0cd 195export BASE
ef416fc2 196
197#
198# Make sure that the LPDEST and PRINTER environment variables are
199# not included in the environment that is passed to the tests. These
200# will usually cause tests to fail erroneously...
201#
202
634763e8
MS
203unset LPDEST
204unset PRINTER
ef416fc2 205
206#
207# See if we want to use valgrind...
208#
209
210echo ""
211echo "This test script can use the Valgrind software from:"
212echo ""
213echo " http://developer.kde.org/~sewardj/"
214echo ""
bd7854cb 215echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
ef416fc2 216
a74454a7 217if test $# -gt 0; then
218 usevalgrind=$1
219 shift
220else
221 read usevalgrind
222fi
bd7854cb 223echo ""
ef416fc2 224
225case "$usevalgrind" in
226 Y* | y*)
484798d8 227 VALGRIND="valgrind --tool=memcheck --log-file=$BASE/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes"
a2326b5b
MS
228 if test `uname` = Darwin; then
229 VALGRIND="$VALGRIND --dsymutil=yes"
230 fi
231 export VALGRIND
8fe0183a 232 echo "Using Valgrind; log files can be found in $BASE/log..."
ef416fc2 233 ;;
234
235 *)
a2326b5b
MS
236 VALGRIND=""
237 export VALGRIND
ef416fc2 238 ;;
239esac
240
85dda01c
MS
241#
242# See if we want to do debug logging of the libraries...
243#
244
245echo ""
246echo "If CUPS was built with the --enable-debug-printfs configure option, you"
247echo "can enable debug logging of the libraries."
248echo ""
249echo $ac_n "Enter Y or a number from 0 to 9 to enable debug logging or N to not: [N] $ac_c"
250
251if test $# -gt 0; then
252 usedebugprintfs=$1
253 shift
254else
255 read usedebugprintfs
256fi
257echo ""
258
259case "$usedebugprintfs" in
260 Y* | y*)
8fe0183a
MS
261 echo "Enabling debug printfs (level 5); log files can be found in $BASE/log..."
262 CUPS_DEBUG_LOG="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
85dda01c 263 CUPS_DEBUG_LEVEL=5; export CUPS_DEBUG_LEVEL
a2326b5b 264 CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
85dda01c
MS
265 ;;
266
267 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)
8fe0183a
MS
268 echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in $BASE/log..."
269 CUPS_DEBUG_LOG="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
c41769ff 270 CUPS_DEBUG_LEVEL="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
830cfed9 271 CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend|mime).*$'; export CUPS_DEBUG_FILTER
85dda01c
MS
272 ;;
273
274 *)
275 ;;
276esac
277
ef416fc2 278#
279# Start by creating temporary directories for the tests...
280#
281
a74454a7 282echo "Creating directories for test..."
283
8fe0183a
MS
284rm -rf $BASE
285mkdir $BASE
286mkdir $BASE/bin
287mkdir $BASE/bin/backend
288mkdir $BASE/bin/driver
289mkdir $BASE/bin/filter
290mkdir $BASE/certs
291mkdir $BASE/share
292mkdir $BASE/share/banners
293mkdir $BASE/share/drv
294mkdir $BASE/share/locale
4509bb49
MS
295for file in ../locale/cups_*.po; do
296 loc=`basename $file .po | cut -c 6-`
8fe0183a
MS
297 mkdir $BASE/share/locale/$loc
298 ln -s $root/locale/cups_$loc.po $BASE/share/locale/$loc
4509bb49 299done
a8b28f18
MS
300mkdir $BASE/share/locale/en
301ln -s $root/locale/cups.pot $BASE/share/locale/en/cups_en.po
8fe0183a
MS
302mkdir $BASE/share/mime
303mkdir $BASE/share/model
304mkdir $BASE/share/ppdc
305mkdir $BASE/interfaces
306mkdir $BASE/log
307mkdir $BASE/ppd
308mkdir $BASE/spool
309mkdir $BASE/spool/temp
310mkdir $BASE/ssl
311
312ln -s $root/backend/dnssd $BASE/bin/backend
313ln -s $root/backend/http $BASE/bin/backend
314ln -s $root/backend/ipp $BASE/bin/backend
7a16b8b3 315ln -s ipp $BASE/bin/backend/ipps
8fe0183a
MS
316ln -s $root/backend/lpd $BASE/bin/backend
317ln -s $root/backend/mdns $BASE/bin/backend
318ln -s $root/backend/pseudo $BASE/bin/backend
319ln -s $root/backend/snmp $BASE/bin/backend
320ln -s $root/backend/socket $BASE/bin/backend
321ln -s $root/backend/usb $BASE/bin/backend
322ln -s $root/cgi-bin $BASE/bin
323ln -s $root/monitor $BASE/bin
324ln -s $root/notifier $BASE/bin
325ln -s $root/scheduler $BASE/bin/daemon
326ln -s $root/filter/commandtops $BASE/bin/filter
327ln -s $root/filter/gziptoany $BASE/bin/filter
328ln -s $root/filter/pstops $BASE/bin/filter
329ln -s $root/filter/rastertoepson $BASE/bin/filter
330ln -s $root/filter/rastertohp $BASE/bin/filter
331ln -s $root/filter/rastertolabel $BASE/bin/filter
332ln -s $root/filter/rastertopwg $BASE/bin/filter
1d58a957
MS
333cat >$BASE/share/banners/standard <<EOF
334 ==== Cover Page ====
8fe0183a 335
1d58a957
MS
336
337 Job: {?printer-name}-{?job-id}
338 Owner: {?job-originating-user-name}
339 Name: {?job-name}
340 Pages: {?job-impressions}
341
342
343 ==== Cover Page ====
344EOF
345cat >$BASE/share/banners/classified <<EOF
346 ==== Classified - Do Not Disclose ====
347
348
349 Job: {?printer-name}-{?job-id}
350 Owner: {?job-originating-user-name}
351 Name: {?job-name}
352 Pages: {?job-impressions}
353
354
355 ==== Classified - Do Not Disclose ====
356EOF
8fe0183a
MS
357ln -s $root/data $BASE/share
358ln -s $root/ppdc/sample.drv $BASE/share/drv
359ln -s $root/conf/mime.types $BASE/share/mime
360ln -s $root/conf/mime.convs $BASE/share/mime
361ln -s $root/data/*.h $BASE/share/ppdc
362ln -s $root/data/*.defs $BASE/share/ppdc
363ln -s $root/templates $BASE/share
ef416fc2 364
bc44d920 365#
f3c17241 366# Local filters and configuration files...
bc44d920 367#
368
79a784c4
MS
369instfilter() {
370 # instfilter src dst format
371 #
372 # See if the filter exists in a standard location; if so, make a
373 # symlink, otherwise create a dummy script for the specified format.
374 #
375 src="$1"
376 dst="$2"
377 format="$3"
378
95dd8876 379 for dir in /usr/local/libexec/cups/filter /usr/libexec/cups/filter /usr/lib/cups/filter; do
79a784c4 380 if test -x "$dir/$src"; then
8fe0183a 381 ln -s "$dir/$src" "$BASE/bin/filter/$dst"
79a784c4
MS
382 return
383 fi
384 done
385
386 # Source filter not present, create a dummy filter
387 case $format in
388 passthru)
8fe0183a 389 ln -s gziptoany "$BASE/bin/filter/$dst"
79a784c4
MS
390 ;;
391 pdf)
8fe0183a 392 cat >"$BASE/bin/filter/$dst" <<EOF
79a784c4 393#!/bin/sh
e7061482
MS
394trap "" TERM
395trap "" PIPE
f0cd6a7c 396gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
79a784c4
MS
397case "\$5" in
398 *media=a4* | *media=iso_a4* | *PageSize=A4*)
b3f0b5a9 399 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-a4.pdf"
79a784c4
MS
400 ;;
401 *)
b3f0b5a9 402 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-letter.pdf"
79a784c4
MS
403 ;;
404esac
405EOF
8fe0183a 406 chmod +x "$BASE/bin/filter/$dst"
79a784c4
MS
407 ;;
408 ps)
8fe0183a 409 cat >"$BASE/bin/filter/$dst" <<EOF
79a784c4 410#!/bin/sh
e7061482
MS
411trap "" TERM
412trap "" PIPE
f0cd6a7c 413gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
79a784c4
MS
414case "\$5" in
415 *media=a4* | *media=iso_a4* | *PageSize=A4*)
b3f0b5a9 416 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-a4.ps"
79a784c4
MS
417 ;;
418 *)
b3f0b5a9 419 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-letter.ps"
79a784c4
MS
420 ;;
421esac
422EOF
8fe0183a 423 chmod +x "$BASE/bin/filter/$dst"
79a784c4
MS
424 ;;
425 raster)
8fe0183a 426 cat >"$BASE/bin/filter/$dst" <<EOF
79a784c4 427#!/bin/sh
e7061482
MS
428trap "" TERM
429trap "" PIPE
f0cd6a7c 430gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
79a784c4
MS
431case "\$5" in
432 *media=a4* | *media=iso_a4* | *PageSize=A4*)
98b1b6ba 433 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-a4-300-black-1.pwg"
79a784c4
MS
434 ;;
435 *)
98b1b6ba 436 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-letter-300-black-1.pwg"
79a784c4
MS
437 ;;
438esac
439EOF
8fe0183a 440 chmod +x "$BASE/bin/filter/$dst"
79a784c4
MS
441 ;;
442 esac
443}
72d05bc9 444
8fe0183a 445ln -s $root/test/test.convs $BASE/share/mime
830cfed9 446ln -s $root/test/test.types $BASE/share/mime
79a784c4 447
bc44d920 448if test `uname` = Darwin; then
79a784c4
MS
449 instfilter cgimagetopdf imagetopdf pdf
450 instfilter cgpdftopdf pdftopdf passthru
451 instfilter cgpdftops pdftops ps
452 instfilter cgpdftoraster pdftoraster raster
830cfed9 453 instfilter cgpdftoraster pdftourf raster
79a784c4
MS
454 instfilter cgtexttopdf texttopdf pdf
455 instfilter pstocupsraster pstoraster raster
839a51c8 456else
79a784c4
MS
457 instfilter imagetopdf imagetopdf pdf
458 instfilter pdftopdf pdftopdf passthru
459 instfilter pdftops pdftops ps
460 instfilter pdftoraster pdftoraster raster
ae7225e5 461 instfilter pdftoraster pdftourf raster
79a784c4
MS
462 instfilter pstoraster pstoraster raster
463 instfilter texttopdf texttopdf pdf
464
465 if test -d /usr/share/cups/charsets; then
8fe0183a 466 ln -s /usr/share/cups/charsets $BASE/share
5a9febac 467 fi
bc44d920 468fi
469
ef416fc2 470#
471# Then create the necessary config files...
472#
473
a74454a7 474echo "Creating cupsd.conf for test..."
475
ef416fc2 476if test $ssltype = 2; then
477 encryption="Encryption Required"
478else
479 encryption=""
480fi
481
2c091429
MS
482if test $testtype = 0; then
483 jobhistory="30m"
484 jobfiles="5m"
485else
486 jobhistory="30"
487 jobfiles="Off"
488fi
489
8fe0183a 490cat >$BASE/cupsd.conf <<EOF
a29fd7dd 491StrictConformance Yes
ef416fc2 492Browsing Off
a29fd7dd 493Listen localhost:$port
8fe0183a 494Listen $BASE/sock
52f6f666 495MaxSubscriptions 3
ef416fc2 496MaxLogSize 0
e07d4801 497AccessLogLevel actions
766a8229 498LogLevel $loglevel
b9faaae1 499LogTimeFormat usecs
2c091429
MS
500PreserveJobHistory $jobhistory
501PreserveJobFiles $jobfiles
ef416fc2 502<Policy default>
503<Limit All>
a29fd7dd 504Order Allow,Deny
ef416fc2 505$encryption
506</Limit>
507</Policy>
508EOF
509
72d05bc9 510if test $testtype = 0; then
8fe0183a 511 echo WebInterface yes >>$BASE/cupsd.conf
72d05bc9
MS
512fi
513
8fe0183a 514cat >$BASE/cups-files.conf <<EOF
c41769ff
MS
515FileDevice yes
516Printcap
517User $user
8fe0183a
MS
518ServerRoot $BASE
519StateDir $BASE
520ServerBin $BASE/bin
521CacheDir $BASE/share
522DataDir $BASE/share
523FontPath $BASE/share/fonts
c41769ff 524DocumentRoot $root/doc
8fe0183a
MS
525RequestRoot $BASE/spool
526TempDir $BASE/spool/temp
527AccessLog $BASE/log/access_log
528ErrorLog $BASE/log/error_log
529PageLog $BASE/log/page_log
d47f6aec 530
b37177a7 531PassEnv DYLD_INSERT_LIBRARIES
d47f6aec
MS
532PassEnv DYLD_LIBRARY_PATH
533PassEnv LD_LIBRARY_PATH
534PassEnv LD_PRELOAD
535PassEnv LOCALEDIR
f337a1b7 536PassEnv ASAN_OPTIONS
31b3c060
MS
537
538Sandboxing Off
c41769ff
MS
539EOF
540
c1420c87 541if test $ssltype != 0 -a `uname` = Darwin; then
8fe0183a 542 echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
c1420c87
MS
543fi
544
ef416fc2 545#
67bd1f47 546# Setup lots of test queues with PPD files...
ef416fc2 547#
548
a74454a7 549echo "Creating printers.conf for test..."
550
ef416fc2 551i=1
67bd1f47 552while test $i -le $nprinters; do
8fe0183a 553 cat >>$BASE/printers.conf <<EOF
ef416fc2 554<Printer test-$i>
555Accepting Yes
556DeviceURI file:/dev/null
557Info Test PS printer $i
558JobSheets none none
559Location CUPS test suite
560State Idle
561StateMessage Printer $1 is idle.
562</Printer>
563EOF
564
8fe0183a 565 cp testps.ppd $BASE/ppd/test-$i.ppd
ef416fc2 566
567 i=`expr $i + 1`
568done
569
8fe0183a
MS
570if test -f $BASE/printers.conf; then
571 cp $BASE/printers.conf $BASE/printers.conf.orig
426c6a59 572else
8fe0183a 573 touch $BASE/printers.conf.orig
426c6a59 574fi
ef416fc2 575
ef416fc2 576#
b37177a7 577# Create a helper script to run programs with...
ef416fc2 578#
579
a74454a7 580echo "Setting up environment variables for test..."
581
f518bf7e
MS
582if test "x$ASAN_OPTIONS" = x; then
583 # AddressSanitizer on Linux reports memory leaks from the main function
584 # which is basically useless - in general, programs do not need to free
585 # every object before exit since the OS will recover the process's
586 # memory.
e5daa5b7
MS
587 ASAN_OPTIONS="detect_leaks=false"
588 export ASAN_OPTIONS
f518bf7e
MS
589fi
590
e5daa5b7 591if test -f "$root/cups/libcups.so.2"; then
9fb5f30d
MS
592 if test "x$LD_LIBRARY_PATH" = x; then
593 LD_LIBRARY_PATH="$root/cups"
594 else
595 LD_LIBRARY_PATH="$root/cups:$LD_LIBRARY_PATH"
596 fi
597
598 LD_PRELOAD="$root/cups/libcups.so.2:$root/cups/libcupsimage.so.2"
599 if test `uname` = SunOS -a -r /usr/lib/libCrun.so.1; then
600 LD_PRELOAD="/usr/lib/libCrun.so.1:$LD_PRELOAD"
601 fi
f11a948a 602fi
ef416fc2 603
e5daa5b7 604if test -f "$root/cups/libcups.2.dylib"; then
9fb5f30d
MS
605 if test "x$DYLD_INSERT_LIBRARIES" = x; then
606 DYLD_INSERT_LIBRARIES="$root/cups/libcups.2.dylib:$root/cups/libcupsimage.2.dylib"
607 else
608 DYLD_INSERT_LIBRARIES="$root/cups/libcups.2.dylib:$root/cups/libcupsimage.2.dylib:$DYLD_INSERT_LIBRARIES"
609 fi
610
611 if test "x$DYLD_LIBRARY_PATH" = x; then
612 DYLD_LIBRARY_PATH="$root/cups"
613 else
614 DYLD_LIBRARY_PATH="$root/cups:$DYLD_LIBRARY_PATH"
615 fi
ef416fc2 616fi
617
b37177a7 618# These get exported because they don't have side-effects...
ef55b745 619CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
95dd8876 620CUPS_SERVER=localhost:$port; export CUPS_SERVER
8fe0183a
MS
621CUPS_SERVERROOT=$BASE; export CUPS_SERVERROOT
622CUPS_STATEDIR=$BASE; export CUPS_STATEDIR
623CUPS_DATADIR=$BASE/share; export CUPS_DATADIR
b37177a7 624IPP_PORT=$port; export IPP_PORT
8fe0183a 625LOCALEDIR=$BASE/share/locale; export LOCALEDIR
ef416fc2 626
b37177a7
MS
627echo "Creating wrapper script..."
628
629runcups="$BASE/runcups"; export runcups
630
631echo "#!/bin/sh" >$runcups
632echo "# Helper script for running CUPS test instance." >>$runcups
633echo "" >>$runcups
634echo "# Set required environment variables..." >>$runcups
635echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
636echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
637echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
638echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
639echo "DYLD_INSERT_LIBRARIES=\"$DYLD_INSERT_LIBRARIES\"; export DYLD_INSERT_LIBRARIES" >>$runcups
640echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
641# IPP_PORT=$port; export IPP_PORT
642echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
643echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
644echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
b37177a7
MS
645if test "x$CUPS_DEBUG_LEVEL" != x; then
646 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
647 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
648 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
649fi
650echo "" >>$runcups
651echo "# Run command..." >>$runcups
652echo "exec \"\$@\"" >>$runcups
653
654chmod +x $runcups
655
ef416fc2 656#
657# Set a new home directory to avoid getting user options mixed in...
658#
659
8fe0183a 660HOME=$BASE
ef416fc2 661export HOME
662
f42414bf 663#
664# Force POSIX locale for tests...
665#
666
667LANG=C
668export LANG
669
0268488e
MS
670LC_MESSAGES=C
671export LC_MESSAGES
672
ef416fc2 673#
674# Start the server; run as foreground daemon in the background...
675#
676
677echo "Starting scheduler:"
b37177a7 678echo " $runcups $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
ef416fc2 679echo ""
680
f518bf7e 681$runcups $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
b9faaae1 682
ef416fc2 683cupsd=$!
684
ef416fc2 685if test "x$testtype" = x0; then
b19ccc9e 686 # Not running tests...
6f260d7d 687 echo "Scheduler is PID $cupsd and is listening on port $port."
ef416fc2 688 echo ""
b19ccc9e 689
b19ccc9e
MS
690 echo "The $runcups helper script can be used to test programs"
691 echo "with the server."
ef416fc2 692 exit 0
693fi
694
a74454a7 695if test $argcount -eq 0; then
696 echo "Scheduler is PID $cupsd; run debugger now if you need to."
697 echo ""
698 echo $ac_n "Press ENTER to continue... $ac_c"
699 read junk
700else
701 echo "Scheduler is PID $cupsd."
702 sleep 2
703fi
ef416fc2 704
ef416fc2 705while true; do
b37177a7 706 running=`$runcups ../systemv/lpstat -r 2>/dev/null`
ef416fc2 707 if test "x$running" = "xscheduler is running"; then
708 break
709 fi
710
711 echo "Waiting for scheduler to become ready..."
712 sleep 10
713done
714
715#
716# Create the test report source file...
717#
718
dd1abb6b 719date=`date "+%Y-%m-%d"`
6015e919 720
35fc2243 721strfile=$BASE/cups-str-$date-$user.html
ef416fc2 722
723rm -f $strfile
724cat str-header.html >$strfile
725
726#
727# Run the IPP tests...
728#
729
a74454a7 730echo ""
ef416fc2 731echo "Running IPP compliance tests..."
732
35fc2243
MS
733echo " <h1><a name='IPP'>1 - IPP Compliance Tests</a></h1>" >>$strfile
734echo " <p>This section provides the results to the IPP compliance tests" >>$strfile
735echo " outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
736echo " $date by $user on `hostname`." >>$strfile
737echo " <pre>" >>$strfile
ef416fc2 738
739fail=0
feb13eea
MS
740for file in 4*.test ../examples/ipp-2.1.test; do
741 echo $ac_n "Performing `basename $file`: $ac_c"
ef416fc2 742 echo "" >>$strfile
b37177a7 743 echo $ac_n "`date '+[%d/%b/%Y:%H:%M:%S %z]'` $ac_c" >>$strfile
ef416fc2 744
feb13eea 745 if test $file = ../examples/ipp-2.1.test; then
a29fd7dd
MS
746 uri="ipp://localhost:$port/printers/Test1"
747 options="-V 2.1 -d NOPRINT=1 -f testfile.ps"
748 else
749 uri="ipp://localhost:$port/printers"
750 options=""
751 fi
feb13eea 752 $runcups $VALGRIND ../tools/ipptool -tI $options $uri $file >> $strfile
ef416fc2 753 status=$?
754
755 if test $status != 0; then
a2326b5b 756 echo FAIL
ef416fc2 757 fail=`expr $fail + 1`
a2326b5b
MS
758 else
759 echo PASS
ef416fc2 760 fi
761done
762
35fc2243 763echo " </pre>" >>$strfile
ef416fc2 764
765#
766# Run the command tests...
767#
768
a74454a7 769echo ""
ef416fc2 770echo "Running command tests..."
771
35fc2243
MS
772echo " <h1><a name='COMMAND'>2 - Command Tests</a></h1>" >>$strfile
773echo " <p>This section provides the results to the command tests" >>$strfile
774echo " outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
775echo " $date by $user on `hostname`." >>$strfile
776echo " <pre>" >>$strfile
ef416fc2 777
778for file in 5*.sh; do
a2326b5b 779 echo $ac_n "Performing $file: $ac_c"
ef416fc2 780 echo "" >>$strfile
b37177a7 781 echo "`date '+[%d/%b/%Y:%H:%M:%S %z]'` \"$file\":" >>$strfile
ef416fc2 782
a2326b5b 783 sh $file $pjobs $pprinters >> $strfile
ef416fc2 784 status=$?
785
786 if test $status != 0; then
a2326b5b 787 echo FAIL
ef416fc2 788 fail=`expr $fail + 1`
a2326b5b
MS
789 else
790 echo PASS
ef416fc2 791 fi
792done
793
698fa0aa
MS
794#
795# Restart the server...
796#
797
798echo $ac_n "Performing restart test: $ac_c"
799echo "" >>$strfile
b37177a7 800echo "`date '+[%d/%b/%Y:%H:%M:%S %z]'` \"5.10-restart\":" >>$strfile
698fa0aa
MS
801
802kill -HUP $cupsd
803
804while true; do
8e8d3a71
MS
805 sleep 10
806
b37177a7 807 running=`$runcups ../systemv/lpstat -r 2>/dev/null`
698fa0aa
MS
808 if test "x$running" = "xscheduler is running"; then
809 break
810 fi
698fa0aa
MS
811done
812
b37177a7 813description="`$runcups ../systemv/lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
698fa0aa
MS
814if test "x$description" != "xTest Printer 1"; then
815 echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
816 echo "FAIL (got '$description', expected 'Test Printer 1')"
817 fail=`expr $fail + 1`
818else
819 echo "Passed." >>$strfile
820 echo PASS
821fi
822
2c091429
MS
823
824#
825# Perform job history test...
826#
827
828echo $ac_n "Starting history test: $ac_c"
829echo "" >>$strfile
830echo "`date '+[%d/%b/%Y:%H:%M:%S %z]'` \"5.11-history\":" >>$strfile
831
832echo " lp -d Test1 testfile.jpg" >>$strfile
833
feb13eea 834$runcups ../systemv/lp -d Test1 ../examples/testfile.jpg 2>&1 >>$strfile
2c091429
MS
835if test $? != 0; then
836 echo "FAIL (unable to queue test job)"
837 echo " FAILED" >>$strfile
838 fail=`expr $fail + 1`
839else
840 echo "PASS"
841 echo " PASSED" >>$strfile
842
843 ./waitjobs.sh >>$strfile
844
845 echo $ac_n "Verifying that history still exists: $ac_c"
846
847 echo " ls -l $BASE/spool" >>$strfile
848 count=`ls -1 $BASE/spool | wc -l`
849 if test $count = 1; then
850 echo "FAIL"
851 echo " FAILED (job control files not present)" >>$strfile
852 ls -l $BASE/spool >>$strfile
853 fail=`expr $fail + 1`
854 else
855 echo "PASS"
856 echo " PASSED" >>$strfile
857
858 echo $ac_n "Waiting for job history to expire: $ac_c"
859 echo "" >>$strfile
860 echo " sleep 35" >>$strfile
861 sleep 35
862
863 echo " lpstat" >>$strfile
864 $runcups ../systemv/lpstat 2>&1 >>$strfile
865
866 echo " ls -l $BASE/spool" >>$strfile
867 count=`ls -1 $BASE/spool | wc -l`
868 if test $count != 1; then
869 echo "FAIL"
870 echo " FAILED (job control files still present)" >>$strfile
871 ls -l $BASE/spool >>$strfile
872 fail=`expr $fail + 1`
873 else
874 echo "PASS"
875 echo " PASSED" >>$strfile
876 fi
877 fi
878fi
879
ef416fc2 880
ef416fc2 881#
882# Stop the server...
883#
884
2c091429
MS
885echo " </pre>" >>$strfile
886
ef416fc2 887kill $cupsd
87f8ade3
MS
888wait $cupsd
889cupsdstatus=$?
ef416fc2 890
839a51c8
MS
891#
892# Verify counts...
893#
894
895echo "Test Summary"
896echo ""
35fc2243 897echo " <h1><a name='SUMMARY'>3 - Test Summary</a></h1>" >>$strfile
87f8ade3
MS
898
899if test $cupsdstatus != 0; then
900 echo "FAIL: cupsd failed with exit status $cupsdstatus."
35fc2243 901 echo " <p>FAIL: cupsd failed with exit status $cupsdstatus.</p>" >>$strfile
87f8ade3
MS
902 fail=`expr $fail + 1`
903else
904 echo "PASS: cupsd exited with no errors."
35fc2243 905 echo " <p>PASS: cupsd exited with no errors.</p>" >>$strfile
87f8ade3 906fi
839a51c8 907
ba55dc12 908# Job control files
8fe0183a 909count=`ls -1 $BASE/spool | wc -l`
ba55dc12
MS
910count=`expr $count - 1`
911if test $count != 0; then
912 echo "FAIL: $count job control files were not purged."
35fc2243 913 echo " <p>FAIL: $count job control files were not purged.</p>" >>$strfile
ba55dc12
MS
914 fail=`expr $fail + 1`
915else
916 echo "PASS: All job control files purged."
35fc2243 917 echo " <p>PASS: All job control files purged.</p>" >>$strfile
ba55dc12
MS
918fi
919
7a14d768 920# Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
8fe0183a 921count=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
969307f0
MS
922expected=`expr $pjobs \* 2 + 34`
923expected2=`expr $expected + 2`
924if test $count -lt $expected -a $count -gt $expected2; then
839a51c8 925 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
35fc2243 926 echo " <p>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</p>" >>$strfile
839a51c8
MS
927 fail=`expr $fail + 1`
928else
929 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
35fc2243 930 echo " <p>PASS: Printer 'Test1' correctly produced $count page(s).</p>" >>$strfile
839a51c8
MS
931fi
932
933# Paged printed on Test2
8fe0183a 934count=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
839a51c8
MS
935expected=`expr $pjobs \* 2 + 3`
936if test $count != $expected; then
937 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
35fc2243 938 echo " <p>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</p>" >>$strfile
839a51c8
MS
939 fail=`expr $fail + 1`
940else
941 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
35fc2243 942 echo " <p>PASS: Printer 'Test2' correctly produced $count page(s).</p>" >>$strfile
839a51c8
MS
943fi
944
a29fd7dd 945# Paged printed on Test3
3d468ced 946count=`$GREP '^Test3 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
a29fd7dd
MS
947expected=2
948if test $count != $expected; then
949 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
35fc2243 950 echo " <p>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</p>" >>$strfile
a29fd7dd
MS
951 fail=`expr $fail + 1`
952else
953 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
35fc2243 954 echo " <p>PASS: Printer 'Test3' correctly produced $count page(s).</p>" >>$strfile
a29fd7dd
MS
955fi
956
e07d4801 957# Requests logged
8fe0183a 958count=`wc -l $BASE/log/access_log | awk '{print $1}'`
f88b8468 959expected=`expr 35 + 18 + 30 + $pjobs \* 8 + $pprinters \* $pjobs \* 4 + 2`
e07d4801
MS
960if test $count != $expected; then
961 echo "FAIL: $count requests logged, expected $expected."
35fc2243 962 echo " <p>FAIL: $count requests logged, expected $expected.</p>" >>$strfile
e07d4801
MS
963 fail=`expr $fail + 1`
964else
965 echo "PASS: $count requests logged."
35fc2243 966 echo " <p>PASS: $count requests logged.</p>" >>$strfile
e07d4801
MS
967fi
968
969# Did CUPS-Get-Default get logged?
8fe0183a 970if $GREP -q CUPS-Get-Default $BASE/log/access_log; then
e07d4801 971 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
35fc2243
MS
972 echo " <p>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</p>" >>$strfile
973 echo " <pre>" >>$strfile
8fe0183a 974 $GREP CUPS-Get-Default $BASE/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 975 echo " </pre>" >>$strfile
e07d4801
MS
976 fail=`expr $fail + 1`
977else
978 echo "PASS: CUPS-Get-Default not logged."
35fc2243 979 echo " <p>PASS: CUPS-Get-Default not logged.</p>" >>$strfile
e07d4801 980fi
839a51c8
MS
981
982# Emergency log messages
8fe0183a 983count=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
984if test $count != 0; then
985 echo "FAIL: $count emergency messages, expected 0."
8fe0183a 986 $GREP '^X ' $BASE/log/error_log
35fc2243
MS
987 echo " <p>FAIL: $count emergency messages, expected 0.</p>" >>$strfile
988 echo " <pre>" >>$strfile
8fe0183a 989 $GREP '^X ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 990 echo " </pre>" >>$strfile
839a51c8
MS
991 fail=`expr $fail + 1`
992else
993 echo "PASS: $count emergency messages."
35fc2243 994 echo " <p>PASS: $count emergency messages.</p>" >>$strfile
839a51c8
MS
995fi
996
997# Alert log messages
8fe0183a 998count=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
999if test $count != 0; then
1000 echo "FAIL: $count alert messages, expected 0."
8fe0183a 1001 $GREP '^A ' $BASE/log/error_log
35fc2243
MS
1002 echo " <p>FAIL: $count alert messages, expected 0.</p>" >>$strfile
1003 echo " <pre>" >>$strfile
8fe0183a 1004 $GREP '^A ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1005 echo " </pre>" >>$strfile
839a51c8
MS
1006 fail=`expr $fail + 1`
1007else
1008 echo "PASS: $count alert messages."
35fc2243 1009 echo " <p>PASS: $count alert messages.</p>" >>$strfile
839a51c8
MS
1010fi
1011
1012# Critical log messages
8fe0183a 1013count=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1014if test $count != 0; then
1015 echo "FAIL: $count critical messages, expected 0."
8fe0183a 1016 $GREP '^C ' $BASE/log/error_log
35fc2243
MS
1017 echo " <p>FAIL: $count critical messages, expected 0.</p>" >>$strfile
1018 echo " <pre>" >>$strfile
8fe0183a 1019 $GREP '^C ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1020 echo " </pre>" >>$strfile
839a51c8
MS
1021 fail=`expr $fail + 1`
1022else
1023 echo "PASS: $count critical messages."
35fc2243 1024 echo " <p>PASS: $count critical messages.</p>" >>$strfile
839a51c8
MS
1025fi
1026
1027# Error log messages
97980490 1028count=`$GREP '^E ' $BASE/log/error_log | $GREP -v 'Unknown default SystemGroup' | wc -l | awk '{print $1}'`
a29fd7dd
MS
1029if test $count != 33; then
1030 echo "FAIL: $count error messages, expected 33."
8fe0183a 1031 $GREP '^E ' $BASE/log/error_log
35fc2243
MS
1032 echo " <p>FAIL: $count error messages, expected 33.</p>" >>$strfile
1033 echo " <pre>" >>$strfile
8fe0183a 1034 $GREP '^E ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1035 echo " </pre>" >>$strfile
839a51c8
MS
1036 fail=`expr $fail + 1`
1037else
1038 echo "PASS: $count error messages."
35fc2243 1039 echo " <p>PASS: $count error messages.</p>" >>$strfile
839a51c8
MS
1040fi
1041
1042# Warning log messages
8fe0183a 1043count=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
3fc450cd 1044if test $count != 8; then
ea99768e 1045 echo "FAIL: $count warning messages, expected 8."
8fe0183a 1046 $GREP '^W ' $BASE/log/error_log
35fc2243
MS
1047 echo " <p>FAIL: $count warning messages, expected 8.</p>" >>$strfile
1048 echo " <pre>" >>$strfile
8fe0183a 1049 $GREP '^W ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1050 echo " </pre>" >>$strfile
839a51c8
MS
1051 fail=`expr $fail + 1`
1052else
1053 echo "PASS: $count warning messages."
35fc2243 1054 echo " <p>PASS: $count warning messages.</p>" >>$strfile
839a51c8
MS
1055fi
1056
1057# Notice log messages
8fe0183a 1058count=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1059if test $count != 0; then
1060 echo "FAIL: $count notice messages, expected 0."
8fe0183a 1061 $GREP '^N ' $BASE/log/error_log
35fc2243
MS
1062 echo " <p>FAIL: $count notice messages, expected 0.</p>" >>$strfile
1063 echo " <pre>" >>$strfile
8fe0183a 1064 $GREP '^N ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1065 echo " </pre>" >>$strfile
839a51c8
MS
1066 fail=`expr $fail + 1`
1067else
1068 echo "PASS: $count notice messages."
35fc2243 1069 echo " <p>PASS: $count notice messages.</p>" >>$strfile
839a51c8
MS
1070fi
1071
1072# Info log messages
8fe0183a 1073count=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1074if test $count = 0; then
1075 echo "FAIL: $count info messages, expected more than 0."
35fc2243 1076 echo " <p>FAIL: $count info messages, expected more than 0.</p>" >>$strfile
839a51c8
MS
1077 fail=`expr $fail + 1`
1078else
1079 echo "PASS: $count info messages."
35fc2243 1080 echo " <p>PASS: $count info messages.</p>" >>$strfile
839a51c8
MS
1081fi
1082
1083# Debug log messages
8fe0183a 1084count=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1085if test $count = 0; then
1086 echo "FAIL: $count debug messages, expected more than 0."
35fc2243 1087 echo " <p>FAIL: $count debug messages, expected more than 0.</p>" >>$strfile
839a51c8
MS
1088 fail=`expr $fail + 1`
1089else
1090 echo "PASS: $count debug messages."
35fc2243 1091 echo " <p>PASS: $count debug messages.</p>" >>$strfile
839a51c8
MS
1092fi
1093
1094# Debug2 log messages
8fe0183a 1095count=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
c715f67b 1096if test $count = 0 -a $loglevel = debug2; then
7a14d768 1097 echo "FAIL: $count debug2 messages, expected more than 0."
35fc2243 1098 echo " <p>FAIL: $count debug2 messages, expected more than 0.</p>" >>$strfile
839a51c8 1099 fail=`expr $fail + 1`
c715f67b
MS
1100elif test $count != 0 -a $loglevel = debug; then
1101 echo "FAIL: $count debug2 messages, expected 0."
1102 echo " <p>FAIL: $count debug2 messages, expected 0.</p>" >>$strfile
1103 fail=`expr $fail + 1`
839a51c8
MS
1104else
1105 echo "PASS: $count debug2 messages."
35fc2243 1106 echo " <p>PASS: $count debug2 messages.</p>" >>$strfile
839a51c8
MS
1107fi
1108
87f8ade3 1109#
839a51c8 1110# Log files...
87f8ade3
MS
1111#
1112
35fc2243
MS
1113echo " <h1><a name='LOGS'>4 - Log Files</a></h1>" >>$strfile
1114
1115for file in $BASE/log/*_log; do
1116 baselog=`basename $file`
1117
1118 echo " <h2><a name=\"$baselog\">$baselog</a></h2>" >>$strfile
1119 case $baselog in
1120 error_log)
1121 echo " <blockquote>Note: debug2 messages have been filtered out of the HTML report.</blockquote>" >>$strfile
1122 echo " <pre>" >>$strfile
1123 $GREP -v '^d' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
1124 echo " </pre>" >>$strfile
1125 ;;
1126
1127 *)
1128 echo " <pre>" >>$strfile
1129 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' $file >>$strfile
1130 echo " </pre>" >>$strfile
1131 ;;
1132 esac
1133done
ef416fc2 1134
ef416fc2 1135#
1136# Format the reports and tell the user where to find them...
1137#
1138
ef416fc2 1139cat str-trailer.html >>$strfile
1140
ef416fc2 1141echo ""
d2f1a784
MS
1142for file in $BASE/log/*_log; do
1143 baselog=`basename $file`
1144 cp $file $baselog-$date-$user
1145 echo "Copied log file \"$baselog-$date-$user\" to test directory."
1146done
1147cp $strfile .
1148echo "Copied report file \"cups-str-$date-$user.html\" to test directory."
ef416fc2 1149
d2f1a784 1150# Clean out old failure log files after 1 week...
ae7225e5
MS
1151find . -name \*_log-\*-$user -a -mtime +7 -print -exec rm -f '{}' \; | awk '{print "Removed old log file \"" substr($1,3) "\" from test directory."}'
1152find . -name cups-str-\*-$user.html -a -mtime +7 -print -exec rm -f '{}' \; | awk '{print "Removed old report file \"" $1 "\" from test directory."}'
ef416fc2 1153
d2f1a784 1154echo ""
dd1abb6b 1155
d2f1a784
MS
1156if test $fail != 0; then
1157 echo "$fail tests failed."
db0bd74a 1158 exit 1
35fc2243
MS
1159else
1160 echo "All tests were successful."
db0bd74a 1161fi