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