]> git.ipfire.org Git - thirdparty/cups.git/blame - test/run-stp-tests.sh
Merge pull request #1306 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
839a51c8 118 pjobs=10
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
a2326b5b 259 CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|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
89c179c8 266 CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|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 #
368 # See if the filter exists in a standard location; if so, make a
369 # symlink, otherwise create a dummy script for the specified format.
370 #
371 src="$1"
372 dst="$2"
373 format="$3"
374
95dd8876 375 for dir in /usr/local/libexec/cups/filter /usr/libexec/cups/filter /usr/lib/cups/filter; do
79a784c4 376 if test -x "$dir/$src"; then
8fe0183a 377 ln -s "$dir/$src" "$BASE/bin/filter/$dst"
79a784c4
MS
378 return
379 fi
380 done
381
382 # Source filter not present, create a dummy filter
383 case $format in
384 passthru)
8fe0183a 385 ln -s gziptoany "$BASE/bin/filter/$dst"
79a784c4
MS
386 ;;
387 pdf)
8fe0183a 388 cat >"$BASE/bin/filter/$dst" <<EOF
79a784c4 389#!/bin/sh
e7061482
MS
390trap "" TERM
391trap "" PIPE
f0cd6a7c 392gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
79a784c4
MS
393case "\$5" in
394 *media=a4* | *media=iso_a4* | *PageSize=A4*)
b3f0b5a9 395 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-a4.pdf"
79a784c4
MS
396 ;;
397 *)
b3f0b5a9 398 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-letter.pdf"
79a784c4
MS
399 ;;
400esac
401EOF
8fe0183a 402 chmod +x "$BASE/bin/filter/$dst"
79a784c4
MS
403 ;;
404 ps)
8fe0183a 405 cat >"$BASE/bin/filter/$dst" <<EOF
79a784c4 406#!/bin/sh
e7061482
MS
407trap "" TERM
408trap "" PIPE
f0cd6a7c 409gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
79a784c4
MS
410case "\$5" in
411 *media=a4* | *media=iso_a4* | *PageSize=A4*)
b3f0b5a9 412 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-a4.ps"
79a784c4
MS
413 ;;
414 *)
b3f0b5a9 415 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-letter.ps"
79a784c4
MS
416 ;;
417esac
418EOF
8fe0183a 419 chmod +x "$BASE/bin/filter/$dst"
79a784c4
MS
420 ;;
421 raster)
8fe0183a 422 cat >"$BASE/bin/filter/$dst" <<EOF
79a784c4 423#!/bin/sh
e7061482
MS
424trap "" TERM
425trap "" PIPE
f0cd6a7c 426gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
79a784c4
MS
427case "\$5" in
428 *media=a4* | *media=iso_a4* | *PageSize=A4*)
98b1b6ba 429 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-a4-300-black-1.pwg"
79a784c4
MS
430 ;;
431 *)
98b1b6ba 432 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/examples/onepage-letter-300-black-1.pwg"
79a784c4
MS
433 ;;
434esac
435EOF
8fe0183a 436 chmod +x "$BASE/bin/filter/$dst"
79a784c4
MS
437 ;;
438 esac
439}
72d05bc9 440
8fe0183a 441ln -s $root/test/test.convs $BASE/share/mime
79a784c4 442
bc44d920 443if test `uname` = Darwin; then
79a784c4
MS
444 instfilter cgimagetopdf imagetopdf pdf
445 instfilter cgpdftopdf pdftopdf passthru
446 instfilter cgpdftops pdftops ps
447 instfilter cgpdftoraster pdftoraster raster
448 instfilter cgtexttopdf texttopdf pdf
449 instfilter pstocupsraster pstoraster raster
839a51c8 450else
79a784c4
MS
451 instfilter imagetopdf imagetopdf pdf
452 instfilter pdftopdf pdftopdf passthru
453 instfilter pdftops pdftops ps
454 instfilter pdftoraster pdftoraster raster
455 instfilter pstoraster pstoraster raster
456 instfilter texttopdf texttopdf pdf
457
458 if test -d /usr/share/cups/charsets; then
8fe0183a 459 ln -s /usr/share/cups/charsets $BASE/share
5a9febac 460 fi
bc44d920 461fi
462
ef416fc2 463#
464# Then create the necessary config files...
465#
466
a74454a7 467echo "Creating cupsd.conf for test..."
468
ef416fc2 469if test $ssltype = 2; then
470 encryption="Encryption Required"
471else
472 encryption=""
473fi
474
2c091429
MS
475if test $testtype = 0; then
476 jobhistory="30m"
477 jobfiles="5m"
478else
479 jobhistory="30"
480 jobfiles="Off"
481fi
482
8fe0183a 483cat >$BASE/cupsd.conf <<EOF
a29fd7dd 484StrictConformance Yes
ef416fc2 485Browsing Off
a29fd7dd 486Listen localhost:$port
8fe0183a 487Listen $BASE/sock
52f6f666 488MaxSubscriptions 3
ef416fc2 489MaxLogSize 0
e07d4801 490AccessLogLevel actions
766a8229 491LogLevel $loglevel
b9faaae1 492LogTimeFormat usecs
2c091429
MS
493PreserveJobHistory $jobhistory
494PreserveJobFiles $jobfiles
ef416fc2 495<Policy default>
496<Limit All>
a29fd7dd 497Order Allow,Deny
ef416fc2 498$encryption
499</Limit>
500</Policy>
501EOF
502
72d05bc9 503if test $testtype = 0; then
8fe0183a 504 echo WebInterface yes >>$BASE/cupsd.conf
72d05bc9
MS
505fi
506
8fe0183a 507cat >$BASE/cups-files.conf <<EOF
c41769ff
MS
508FileDevice yes
509Printcap
510User $user
8fe0183a
MS
511ServerRoot $BASE
512StateDir $BASE
513ServerBin $BASE/bin
514CacheDir $BASE/share
515DataDir $BASE/share
c41769ff 516DocumentRoot $root/doc
8fe0183a
MS
517RequestRoot $BASE/spool
518TempDir $BASE/spool/temp
519AccessLog $BASE/log/access_log
520ErrorLog $BASE/log/error_log
521PageLog $BASE/log/page_log
d47f6aec 522
b37177a7 523PassEnv DYLD_INSERT_LIBRARIES
d47f6aec
MS
524PassEnv DYLD_LIBRARY_PATH
525PassEnv LD_LIBRARY_PATH
526PassEnv LD_PRELOAD
527PassEnv LOCALEDIR
f337a1b7 528PassEnv ASAN_OPTIONS
31b3c060
MS
529
530Sandboxing Off
c41769ff
MS
531EOF
532
c1420c87 533if test $ssltype != 0 -a `uname` = Darwin; then
8fe0183a 534 echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
c1420c87
MS
535fi
536
ef416fc2 537#
67bd1f47 538# Setup lots of test queues with PPD files...
ef416fc2 539#
540
a74454a7 541echo "Creating printers.conf for test..."
542
ef416fc2 543i=1
67bd1f47 544while test $i -le $nprinters; do
8fe0183a 545 cat >>$BASE/printers.conf <<EOF
ef416fc2 546<Printer test-$i>
547Accepting Yes
548DeviceURI file:/dev/null
549Info Test PS printer $i
550JobSheets none none
551Location CUPS test suite
552State Idle
553StateMessage Printer $1 is idle.
554</Printer>
555EOF
556
8fe0183a 557 cp testps.ppd $BASE/ppd/test-$i.ppd
ef416fc2 558
559 i=`expr $i + 1`
560done
561
8fe0183a
MS
562if test -f $BASE/printers.conf; then
563 cp $BASE/printers.conf $BASE/printers.conf.orig
426c6a59 564else
8fe0183a 565 touch $BASE/printers.conf.orig
426c6a59 566fi
ef416fc2 567
ef416fc2 568#
b37177a7 569# Create a helper script to run programs with...
ef416fc2 570#
571
a74454a7 572echo "Setting up environment variables for test..."
573
f518bf7e
MS
574if test "x$ASAN_OPTIONS" = x; then
575 # AddressSanitizer on Linux reports memory leaks from the main function
576 # which is basically useless - in general, programs do not need to free
577 # every object before exit since the OS will recover the process's
578 # memory.
e5daa5b7
MS
579 ASAN_OPTIONS="detect_leaks=false"
580 export ASAN_OPTIONS
f518bf7e
MS
581fi
582
e5daa5b7 583if test -f "$root/cups/libcups.so.2"; then
9fb5f30d
MS
584 if test "x$LD_LIBRARY_PATH" = x; then
585 LD_LIBRARY_PATH="$root/cups"
586 else
587 LD_LIBRARY_PATH="$root/cups:$LD_LIBRARY_PATH"
588 fi
589
590 LD_PRELOAD="$root/cups/libcups.so.2:$root/cups/libcupsimage.so.2"
591 if test `uname` = SunOS -a -r /usr/lib/libCrun.so.1; then
592 LD_PRELOAD="/usr/lib/libCrun.so.1:$LD_PRELOAD"
593 fi
f11a948a 594fi
ef416fc2 595
e5daa5b7 596if test -f "$root/cups/libcups.2.dylib"; then
9fb5f30d
MS
597 if test "x$DYLD_INSERT_LIBRARIES" = x; then
598 DYLD_INSERT_LIBRARIES="$root/cups/libcups.2.dylib:$root/cups/libcupsimage.2.dylib"
599 else
600 DYLD_INSERT_LIBRARIES="$root/cups/libcups.2.dylib:$root/cups/libcupsimage.2.dylib:$DYLD_INSERT_LIBRARIES"
601 fi
602
603 if test "x$DYLD_LIBRARY_PATH" = x; then
604 DYLD_LIBRARY_PATH="$root/cups"
605 else
606 DYLD_LIBRARY_PATH="$root/cups:$DYLD_LIBRARY_PATH"
607 fi
ef416fc2 608fi
609
b37177a7 610# These get exported because they don't have side-effects...
ef55b745 611CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
95dd8876 612CUPS_SERVER=localhost:$port; export CUPS_SERVER
8fe0183a
MS
613CUPS_SERVERROOT=$BASE; export CUPS_SERVERROOT
614CUPS_STATEDIR=$BASE; export CUPS_STATEDIR
615CUPS_DATADIR=$BASE/share; export CUPS_DATADIR
b37177a7 616IPP_PORT=$port; export IPP_PORT
8fe0183a 617LOCALEDIR=$BASE/share/locale; export LOCALEDIR
ef416fc2 618
b37177a7
MS
619echo "Creating wrapper script..."
620
621runcups="$BASE/runcups"; export runcups
622
623echo "#!/bin/sh" >$runcups
624echo "# Helper script for running CUPS test instance." >>$runcups
625echo "" >>$runcups
626echo "# Set required environment variables..." >>$runcups
627echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
628echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
629echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
630echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
631echo "DYLD_INSERT_LIBRARIES=\"$DYLD_INSERT_LIBRARIES\"; export DYLD_INSERT_LIBRARIES" >>$runcups
632echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
633# IPP_PORT=$port; export IPP_PORT
634echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
635echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
636echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
b37177a7
MS
637if test "x$CUPS_DEBUG_LEVEL" != x; then
638 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
639 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
640 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
641fi
642echo "" >>$runcups
643echo "# Run command..." >>$runcups
644echo "exec \"\$@\"" >>$runcups
645
646chmod +x $runcups
647
ef416fc2 648#
649# Set a new home directory to avoid getting user options mixed in...
650#
651
8fe0183a 652HOME=$BASE
ef416fc2 653export HOME
654
f42414bf 655#
656# Force POSIX locale for tests...
657#
658
659LANG=C
660export LANG
661
0268488e
MS
662LC_MESSAGES=C
663export LC_MESSAGES
664
ef416fc2 665#
666# Start the server; run as foreground daemon in the background...
667#
668
669echo "Starting scheduler:"
6e4a2c69 670echo " $runcups $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
ef416fc2 671echo ""
672
6e4a2c69 673$runcups $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
b9faaae1 674
ef416fc2 675cupsd=$!
676
ef416fc2 677if test "x$testtype" = x0; then
b19ccc9e 678 # Not running tests...
6f260d7d 679 echo "Scheduler is PID $cupsd and is listening on port $port."
ef416fc2 680 echo ""
b19ccc9e 681
b19ccc9e
MS
682 echo "The $runcups helper script can be used to test programs"
683 echo "with the server."
ef416fc2 684 exit 0
685fi
686
a74454a7 687if test $argcount -eq 0; then
688 echo "Scheduler is PID $cupsd; run debugger now if you need to."
689 echo ""
690 echo $ac_n "Press ENTER to continue... $ac_c"
691 read junk
692else
693 echo "Scheduler is PID $cupsd."
694 sleep 2
695fi
ef416fc2 696
71f98280
MS
697tries=0
698while test $tries -lt 30; do
b37177a7 699 running=`$runcups ../systemv/lpstat -r 2>/dev/null`
ef416fc2 700 if test "x$running" = "xscheduler is running"; then
701 break
702 fi
703
704 echo "Waiting for scheduler to become ready..."
705 sleep 10
71f98280
MS
706
707 tries=`expr $tries + 1`
ef416fc2 708done
709
710#
711# Create the test report source file...
712#
713
dd1abb6b 714date=`date "+%Y-%m-%d"`
6015e919 715
35fc2243 716strfile=$BASE/cups-str-$date-$user.html
ef416fc2 717
718rm -f $strfile
719cat str-header.html >$strfile
720
721#
722# Run the IPP tests...
723#
724
a74454a7 725echo ""
ef416fc2 726echo "Running IPP compliance tests..."
727
35fc2243
MS
728echo " <h1><a name='IPP'>1 - IPP Compliance Tests</a></h1>" >>$strfile
729echo " <p>This section provides the results to the IPP compliance tests" >>$strfile
730echo " outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
731echo " $date by $user on `hostname`." >>$strfile
732echo " <pre>" >>$strfile
ef416fc2 733
734fail=0
feb13eea
MS
735for file in 4*.test ../examples/ipp-2.1.test; do
736 echo $ac_n "Performing `basename $file`: $ac_c"
ef416fc2 737 echo "" >>$strfile
738
feb13eea 739 if test $file = ../examples/ipp-2.1.test; then
a29fd7dd
MS
740 uri="ipp://localhost:$port/printers/Test1"
741 options="-V 2.1 -d NOPRINT=1 -f testfile.ps"
742 else
743 uri="ipp://localhost:$port/printers"
744 options=""
745 fi
ca3c40b1 746 echo "$(date '+[%d/%b/%Y:%H:%M:%S %z]') ../tools/ipptool -tI $options $uri $file" >>$strfile
feb13eea 747 $runcups $VALGRIND ../tools/ipptool -tI $options $uri $file >> $strfile
ef416fc2 748 status=$?
749
750 if test $status != 0; then
a2326b5b 751 echo FAIL
ef416fc2 752 fail=`expr $fail + 1`
a2326b5b
MS
753 else
754 echo PASS
ef416fc2 755 fi
756done
757
35fc2243 758echo " </pre>" >>$strfile
ef416fc2 759
760#
761# Run the command tests...
762#
763
a74454a7 764echo ""
ef416fc2 765echo "Running command tests..."
766
35fc2243
MS
767echo " <h1><a name='COMMAND'>2 - Command Tests</a></h1>" >>$strfile
768echo " <p>This section provides the results to the command tests" >>$strfile
769echo " outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
770echo " $date by $user on `hostname`." >>$strfile
771echo " <pre>" >>$strfile
ef416fc2 772
773for file in 5*.sh; do
89c179c8
MS
774 # Wait for jobs from the previous test to complete before running the
775 # next test...
776 if test $file != 5.1-lpadmin.sh; then
777 ./waitjobs.sh 1800
778 fi
779
780 # Run the test...
a2326b5b 781 echo $ac_n "Performing $file: $ac_c"
ef416fc2 782 echo "" >>$strfile
b37177a7 783 echo "`date '+[%d/%b/%Y:%H:%M:%S %z]'` \"$file\":" >>$strfile
ef416fc2 784
a2326b5b 785 sh $file $pjobs $pprinters >> $strfile
ef416fc2 786 status=$?
787
788 if test $status != 0; then
a2326b5b 789 echo FAIL
ef416fc2 790 fail=`expr $fail + 1`
a2326b5b
MS
791 else
792 echo PASS
ef416fc2 793 fi
794done
795
698fa0aa
MS
796#
797# Restart the server...
798#
799
800echo $ac_n "Performing restart test: $ac_c"
801echo "" >>$strfile
b37177a7 802echo "`date '+[%d/%b/%Y:%H:%M:%S %z]'` \"5.10-restart\":" >>$strfile
698fa0aa
MS
803
804kill -HUP $cupsd
805
806while true; do
8e8d3a71
MS
807 sleep 10
808
b37177a7 809 running=`$runcups ../systemv/lpstat -r 2>/dev/null`
698fa0aa
MS
810 if test "x$running" = "xscheduler is running"; then
811 break
812 fi
698fa0aa
MS
813done
814
b37177a7 815description="`$runcups ../systemv/lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
698fa0aa
MS
816if test "x$description" != "xTest Printer 1"; then
817 echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
818 echo "FAIL (got '$description', expected 'Test Printer 1')"
819 fail=`expr $fail + 1`
820else
821 echo "Passed." >>$strfile
822 echo PASS
823fi
824
2c091429
MS
825
826#
827# Perform job history test...
828#
829
830echo $ac_n "Starting history test: $ac_c"
831echo "" >>$strfile
832echo "`date '+[%d/%b/%Y:%H:%M:%S %z]'` \"5.11-history\":" >>$strfile
833
834echo " lp -d Test1 testfile.jpg" >>$strfile
835
feb13eea 836$runcups ../systemv/lp -d Test1 ../examples/testfile.jpg 2>&1 >>$strfile
2c091429
MS
837if test $? != 0; then
838 echo "FAIL (unable to queue test job)"
839 echo " FAILED" >>$strfile
840 fail=`expr $fail + 1`
841else
842 echo "PASS"
843 echo " PASSED" >>$strfile
844
033bc4df 845 sleep 5
2c091429
MS
846 ./waitjobs.sh >>$strfile
847
848 echo $ac_n "Verifying that history still exists: $ac_c"
849
850 echo " ls -l $BASE/spool" >>$strfile
851 count=`ls -1 $BASE/spool | wc -l`
852 if test $count = 1; then
d4283bec
MS
853 echo "FAIL (job control files not present)"
854 ls -l $BASE/spool
2c091429
MS
855 echo " FAILED (job control files not present)" >>$strfile
856 ls -l $BASE/spool >>$strfile
857 fail=`expr $fail + 1`
858 else
859 echo "PASS"
860 echo " PASSED" >>$strfile
861
862 echo $ac_n "Waiting for job history to expire: $ac_c"
863 echo "" >>$strfile
864 echo " sleep 35" >>$strfile
865 sleep 35
866
867 echo " lpstat" >>$strfile
868 $runcups ../systemv/lpstat 2>&1 >>$strfile
869
870 echo " ls -l $BASE/spool" >>$strfile
871 count=`ls -1 $BASE/spool | wc -l`
872 if test $count != 1; then
d4283bec
MS
873 echo "FAIL (job control files still present)"
874 ls -l $BASE/spool
2c091429
MS
875 echo " FAILED (job control files still present)" >>$strfile
876 ls -l $BASE/spool >>$strfile
877 fail=`expr $fail + 1`
878 else
879 echo "PASS"
880 echo " PASSED" >>$strfile
881 fi
882 fi
883fi
884
ef416fc2 885
09ba98aa
ZD
886#
887# Perform job history test with cupsd restart...
888#
889
890echo $ac_n "Starting history test with cupsd restart: $ac_c"
891echo "" >>$strfile
892echo "`date '+[%d/%b/%Y:%H:%M:%S %z]'` \"5.11-history-cupsd-restart\":" >>$strfile
893
894echo " lp -d Test1 testfile.jpg" >>$strfile
895
896$runcups ../systemv/lp -d Test1 ../examples/testfile.jpg 2>&1 >>$strfile
897if test $? != 0; then
898 echo "FAIL (unable to queue test job)"
899 echo " FAILED" >>$strfile
900 fail=`expr $fail + 1`
901else
902 echo "PASS"
903 echo " PASSED" >>$strfile
904
905 sleep 5
906 ./waitjobs.sh >>$strfile
907
908 echo $ac_n "Verifying that history still exists: $ac_c"
909
910 echo " ls -l $BASE/spool" >>$strfile
911 count=`ls -1 $BASE/spool | wc -l`
912 if test $count = 1; then
913 echo "FAIL (job control files not present)"
914 ls -l $BASE/spool
915 echo " FAILED (job control files not present)" >>$strfile
916 ls -l $BASE/spool >>$strfile
917 fail=`expr $fail + 1`
918 else
919 echo "PASS"
920 echo " PASSED" >>$strfile
921
922 echo "Restarting cupsd:"
923 echo "" >>$strfile
924 kill $cupsd
925 wait $cupsd
926
927 echo " $runcups $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >>$BASE/log/debug_log 2>&1 &"
928 echo ""
929
930 $runcups $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >>$BASE/log/debug_log 2>&1 &
931
932 cupsd=$!
933
934 echo $ac_n "Waiting for job history to expire: $ac_c"
935 echo "" >>$strfile
936 echo " sleep 35" >>$strfile
937 sleep 35
938
939 echo " ls -l $BASE/spool" >>$strfile
940 count=`ls -1 $BASE/spool | wc -l`
941 if test $count != 1; then
942 echo "FAIL (job control files still present)"
943 ls -l $BASE/spool
944 echo " FAILED (job control files still present)" >>$strfile
945 ls -l $BASE/spool >>$strfile
946 fail=`expr $fail + 1`
947 else
948 echo "PASS"
949 echo " PASSED" >>$strfile
950 fi
951 fi
952fi
953
954
ef416fc2 955#
956# Stop the server...
957#
958
2c091429
MS
959echo " </pre>" >>$strfile
960
ef416fc2 961kill $cupsd
87f8ade3
MS
962wait $cupsd
963cupsdstatus=$?
ef416fc2 964
839a51c8
MS
965#
966# Verify counts...
967#
968
969echo "Test Summary"
970echo ""
35fc2243 971echo " <h1><a name='SUMMARY'>3 - Test Summary</a></h1>" >>$strfile
87f8ade3
MS
972
973if test $cupsdstatus != 0; then
974 echo "FAIL: cupsd failed with exit status $cupsdstatus."
35fc2243 975 echo " <p>FAIL: cupsd failed with exit status $cupsdstatus.</p>" >>$strfile
87f8ade3
MS
976 fail=`expr $fail + 1`
977else
978 echo "PASS: cupsd exited with no errors."
35fc2243 979 echo " <p>PASS: cupsd exited with no errors.</p>" >>$strfile
87f8ade3 980fi
839a51c8 981
ba55dc12 982# Job control files
8fe0183a 983count=`ls -1 $BASE/spool | wc -l`
ba55dc12
MS
984count=`expr $count - 1`
985if test $count != 0; then
986 echo "FAIL: $count job control files were not purged."
35fc2243 987 echo " <p>FAIL: $count job control files were not purged.</p>" >>$strfile
ba55dc12
MS
988 fail=`expr $fail + 1`
989else
990 echo "PASS: All job control files purged."
35fc2243 991 echo " <p>PASS: All job control files purged.</p>" >>$strfile
ba55dc12
MS
992fi
993
7a14d768 994# Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
8fe0183a 995count=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
55c7dfa9
ZD
996# expected numbers of pages from page ranges tests:
997# - 5 pages for the job with a lower limit undefined (-5)
998# - 4 pages for the job with a upper limit undefined (5-)
999expected=`expr $pjobs \* 2 + 34 + 5 + 4`
969307f0
MS
1000expected2=`expr $expected + 2`
1001if test $count -lt $expected -a $count -gt $expected2; then
839a51c8 1002 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
35fc2243 1003 echo " <p>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</p>" >>$strfile
839a51c8
MS
1004 fail=`expr $fail + 1`
1005else
1006 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
35fc2243 1007 echo " <p>PASS: Printer 'Test1' correctly produced $count page(s).</p>" >>$strfile
839a51c8
MS
1008fi
1009
1010# Paged printed on Test2
8fe0183a 1011count=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
839a51c8
MS
1012expected=`expr $pjobs \* 2 + 3`
1013if test $count != $expected; then
1014 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
35fc2243 1015 echo " <p>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</p>" >>$strfile
839a51c8
MS
1016 fail=`expr $fail + 1`
1017else
1018 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
35fc2243 1019 echo " <p>PASS: Printer 'Test2' correctly produced $count page(s).</p>" >>$strfile
839a51c8
MS
1020fi
1021
a29fd7dd 1022# Paged printed on Test3
3d468ced 1023count=`$GREP '^Test3 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
a29fd7dd
MS
1024expected=2
1025if test $count != $expected; then
1026 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
35fc2243 1027 echo " <p>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</p>" >>$strfile
a29fd7dd
MS
1028 fail=`expr $fail + 1`
1029else
1030 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
35fc2243 1031 echo " <p>PASS: Printer 'Test3' correctly produced $count page(s).</p>" >>$strfile
a29fd7dd
MS
1032fi
1033
b3d3a790
ZD
1034# Number of requests from 5.1-lpadmin.sh: cupsSNMP/IPPSupplies tests - total 5 in 'expected':
1035# - 2 requests for creating a queue - CUPS-Get-PPD and CUPS-Add-Modify-Printer
1036# - 1 request for setting cupsSNMP/IPPSupplies to True - CUPS-Add-Modify-Printer
1037# - 1 request for setting cupsSNMP/IPPSupplies to False - CUPS-Add-Modify-Printer
1038# - 1 request for deleting the queue - CUPS-Delete-Printer
1039
55c7dfa9
ZD
1040# Number of requests related to undefined page range limits - total 4 in 'expected'
1041# 2 requests (Create-Job, Send-Document) * number of jobs (2 - one for undefined
1042# low limit, one for undefined upper limit)
1043
e07d4801 1044# Requests logged
8fe0183a 1045count=`wc -l $BASE/log/access_log | awk '{print $1}'`
55c7dfa9 1046expected=`expr 35 + 18 + 30 + $pjobs \* 8 + $pprinters \* $pjobs \* 4 + 2 + 2 + 5 + 4`
e07d4801
MS
1047if test $count != $expected; then
1048 echo "FAIL: $count requests logged, expected $expected."
35fc2243 1049 echo " <p>FAIL: $count requests logged, expected $expected.</p>" >>$strfile
e07d4801
MS
1050 fail=`expr $fail + 1`
1051else
1052 echo "PASS: $count requests logged."
35fc2243 1053 echo " <p>PASS: $count requests logged.</p>" >>$strfile
e07d4801
MS
1054fi
1055
1056# Did CUPS-Get-Default get logged?
8fe0183a 1057if $GREP -q CUPS-Get-Default $BASE/log/access_log; then
e07d4801 1058 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
35fc2243
MS
1059 echo " <p>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</p>" >>$strfile
1060 echo " <pre>" >>$strfile
8fe0183a 1061 $GREP CUPS-Get-Default $BASE/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1062 echo " </pre>" >>$strfile
e07d4801
MS
1063 fail=`expr $fail + 1`
1064else
1065 echo "PASS: CUPS-Get-Default not logged."
35fc2243 1066 echo " <p>PASS: CUPS-Get-Default not logged.</p>" >>$strfile
e07d4801 1067fi
839a51c8
MS
1068
1069# Emergency log messages
8fe0183a 1070count=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1071if test $count != 0; then
1072 echo "FAIL: $count emergency messages, expected 0."
8fe0183a 1073 $GREP '^X ' $BASE/log/error_log
35fc2243
MS
1074 echo " <p>FAIL: $count emergency messages, expected 0.</p>" >>$strfile
1075 echo " <pre>" >>$strfile
8fe0183a 1076 $GREP '^X ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1077 echo " </pre>" >>$strfile
839a51c8
MS
1078 fail=`expr $fail + 1`
1079else
1080 echo "PASS: $count emergency messages."
35fc2243 1081 echo " <p>PASS: $count emergency messages.</p>" >>$strfile
839a51c8
MS
1082fi
1083
1084# Alert log messages
8fe0183a 1085count=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1086if test $count != 0; then
1087 echo "FAIL: $count alert messages, expected 0."
8fe0183a 1088 $GREP '^A ' $BASE/log/error_log
35fc2243
MS
1089 echo " <p>FAIL: $count alert messages, expected 0.</p>" >>$strfile
1090 echo " <pre>" >>$strfile
8fe0183a 1091 $GREP '^A ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1092 echo " </pre>" >>$strfile
839a51c8
MS
1093 fail=`expr $fail + 1`
1094else
1095 echo "PASS: $count alert messages."
35fc2243 1096 echo " <p>PASS: $count alert messages.</p>" >>$strfile
839a51c8
MS
1097fi
1098
1099# Critical log messages
8fe0183a 1100count=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1101if test $count != 0; then
1102 echo "FAIL: $count critical messages, expected 0."
8fe0183a 1103 $GREP '^C ' $BASE/log/error_log
35fc2243
MS
1104 echo " <p>FAIL: $count critical messages, expected 0.</p>" >>$strfile
1105 echo " <pre>" >>$strfile
8fe0183a 1106 $GREP '^C ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1107 echo " </pre>" >>$strfile
839a51c8
MS
1108 fail=`expr $fail + 1`
1109else
1110 echo "PASS: $count critical messages."
35fc2243 1111 echo " <p>PASS: $count critical messages.</p>" >>$strfile
839a51c8
MS
1112fi
1113
1114# Error log messages
97980490 1115count=`$GREP '^E ' $BASE/log/error_log | $GREP -v 'Unknown default SystemGroup' | wc -l | awk '{print $1}'`
a29fd7dd
MS
1116if test $count != 33; then
1117 echo "FAIL: $count error messages, expected 33."
8fe0183a 1118 $GREP '^E ' $BASE/log/error_log
35fc2243
MS
1119 echo " <p>FAIL: $count error messages, expected 33.</p>" >>$strfile
1120 echo " <pre>" >>$strfile
8fe0183a 1121 $GREP '^E ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1122 echo " </pre>" >>$strfile
839a51c8
MS
1123 fail=`expr $fail + 1`
1124else
1125 echo "PASS: $count error messages."
35fc2243 1126 echo " <p>PASS: $count error messages.</p>" >>$strfile
839a51c8
MS
1127fi
1128
1129# Warning log messages
89c179c8 1130count=`$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
1131if test $count != 14; then
1132 echo "FAIL: $count warning messages, expected 14."
8fe0183a 1133 $GREP '^W ' $BASE/log/error_log
2857cd8c 1134 echo " <p>FAIL: $count warning messages, expected 14.</p>" >>$strfile
35fc2243 1135 echo " <pre>" >>$strfile
8fe0183a 1136 $GREP '^W ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1137 echo " </pre>" >>$strfile
839a51c8
MS
1138 fail=`expr $fail + 1`
1139else
1140 echo "PASS: $count warning messages."
35fc2243 1141 echo " <p>PASS: $count warning messages.</p>" >>$strfile
839a51c8
MS
1142fi
1143
1144# Notice log messages
8fe0183a 1145count=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1146if test $count != 0; then
1147 echo "FAIL: $count notice messages, expected 0."
8fe0183a 1148 $GREP '^N ' $BASE/log/error_log
35fc2243
MS
1149 echo " <p>FAIL: $count notice messages, expected 0.</p>" >>$strfile
1150 echo " <pre>" >>$strfile
8fe0183a 1151 $GREP '^N ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
35fc2243 1152 echo " </pre>" >>$strfile
839a51c8
MS
1153 fail=`expr $fail + 1`
1154else
1155 echo "PASS: $count notice messages."
35fc2243 1156 echo " <p>PASS: $count notice messages.</p>" >>$strfile
839a51c8
MS
1157fi
1158
1159# Info log messages
8fe0183a 1160count=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1161if test $count = 0; then
1162 echo "FAIL: $count info messages, expected more than 0."
35fc2243 1163 echo " <p>FAIL: $count info messages, expected more than 0.</p>" >>$strfile
839a51c8
MS
1164 fail=`expr $fail + 1`
1165else
1166 echo "PASS: $count info messages."
35fc2243 1167 echo " <p>PASS: $count info messages.</p>" >>$strfile
839a51c8
MS
1168fi
1169
1170# Debug log messages
8fe0183a 1171count=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
1172if test $count = 0; then
1173 echo "FAIL: $count debug messages, expected more than 0."
35fc2243 1174 echo " <p>FAIL: $count debug messages, expected more than 0.</p>" >>$strfile
839a51c8
MS
1175 fail=`expr $fail + 1`
1176else
1177 echo "PASS: $count debug messages."
35fc2243 1178 echo " <p>PASS: $count debug messages.</p>" >>$strfile
839a51c8
MS
1179fi
1180
1181# Debug2 log messages
8fe0183a 1182count=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
c715f67b 1183if test $count = 0 -a $loglevel = debug2; then
7a14d768 1184 echo "FAIL: $count debug2 messages, expected more than 0."
35fc2243 1185 echo " <p>FAIL: $count debug2 messages, expected more than 0.</p>" >>$strfile
839a51c8 1186 fail=`expr $fail + 1`
c715f67b
MS
1187elif test $count != 0 -a $loglevel = debug; then
1188 echo "FAIL: $count debug2 messages, expected 0."
1189 echo " <p>FAIL: $count debug2 messages, expected 0.</p>" >>$strfile
1190 fail=`expr $fail + 1`
839a51c8
MS
1191else
1192 echo "PASS: $count debug2 messages."
35fc2243 1193 echo " <p>PASS: $count debug2 messages.</p>" >>$strfile
839a51c8
MS
1194fi
1195
87f8ade3 1196#
839a51c8 1197# Log files...
87f8ade3
MS
1198#
1199
35fc2243
MS
1200echo " <h1><a name='LOGS'>4 - Log Files</a></h1>" >>$strfile
1201
1202for file in $BASE/log/*_log; do
1203 baselog=`basename $file`
1204
1205 echo " <h2><a name=\"$baselog\">$baselog</a></h2>" >>$strfile
1206 case $baselog in
1207 error_log)
1208 echo " <blockquote>Note: debug2 messages have been filtered out of the HTML report.</blockquote>" >>$strfile
1209 echo " <pre>" >>$strfile
1210 $GREP -v '^d' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
1211 echo " </pre>" >>$strfile
1212 ;;
1213
1214 *)
1215 echo " <pre>" >>$strfile
1216 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' $file >>$strfile
1217 echo " </pre>" >>$strfile
1218 ;;
1219 esac
1220done
ef416fc2 1221
ef416fc2 1222#
1223# Format the reports and tell the user where to find them...
1224#
1225
ef416fc2 1226cat str-trailer.html >>$strfile
1227
ef416fc2 1228echo ""
d2f1a784
MS
1229for file in $BASE/log/*_log; do
1230 baselog=`basename $file`
1231 cp $file $baselog-$date-$user
1232 echo "Copied log file \"$baselog-$date-$user\" to test directory."
1233done
1234cp $strfile .
1235echo "Copied report file \"cups-str-$date-$user.html\" to test directory."
ef416fc2 1236
d2f1a784 1237# Clean out old failure log files after 1 week...
ae7225e5
MS
1238find . -name \*_log-\*-$user -a -mtime +7 -print -exec rm -f '{}' \; | awk '{print "Removed old log file \"" substr($1,3) "\" from test directory."}'
1239find . -name cups-str-\*-$user.html -a -mtime +7 -print -exec rm -f '{}' \; | awk '{print "Removed old report file \"" $1 "\" from test directory."}'
ef416fc2 1240
d2f1a784 1241echo ""
dd1abb6b 1242
d2f1a784
MS
1243if test $fail != 0; then
1244 echo "$fail tests failed."
db0bd74a 1245 exit 1
35fc2243
MS
1246else
1247 echo "All tests were successful."
db0bd74a 1248fi