3 # "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
5 # Perform the complete set of IPP compliance tests specified in the
6 # CUPS Software Test Plan.
8 # Copyright 2007-2009 by Apple Inc.
9 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
11 # These coded instructions, statements, and computer programs are the
12 # property of Apple Inc. and are protected by Federal copyright
13 # law. Distribution and use rights are outlined in the file "LICENSE.txt"
14 # which should have been included with this file. If this file is
15 # file is missing or damaged, see the license at "http://www.cups.org/".
21 # Make the IPP test program...
27 # Figure out the proper echo options...
30 if (echo "testing\c"; echo 1,2,3) |
grep c
>/dev
/null
; then
42 echo "Welcome to the CUPS Automated Test Script."
44 echo "Before we begin, it is important that you understand that the larger"
45 echo "tests require significant amounts of RAM and disk space. If you"
46 echo "attempt to run one of the big tests on a system that lacks sufficient"
47 echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
48 echo "more system processes that you've grown attached to, like the X"
49 echo "server. The question you may want to ask yourself before running a"
50 echo "large test is: Do you feel lucky?"
52 echo "OK, now that we have the Dirty Harry quote out of the way, please"
53 echo "choose the type of test you wish to perform:"
55 echo "0 - No testing, keep the scheduler running for me (all systems)"
56 echo "1 - Basic conformance test, no load testing (all systems)"
57 echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
58 echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
59 echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
61 echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
63 if test $# -gt 0; then
73 echo "Running in test mode (0)"
80 echo "Running the medium tests (2)"
87 echo "Running the extreme tests (3)"
94 echo "Running the torture tests (4)"
101 echo "Running the timid tests (1)"
110 # See if we want to do SSL testing...
114 echo "Now you can choose whether to create a SSL/TLS encryption key and"
115 echo "certificate for testing; these tests currently require the OpenSSL"
118 echo "0 - Do not do SSL/TLS encryption tests"
119 echo "1 - Test but do not require encryption"
120 echo "2 - Test and require encryption"
122 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
124 if test $# -gt 0; then
134 echo "Will test but not require encryption (1)"
137 echo "Will test and require encryption (2)"
140 echo "Not using SSL/TLS (0)"
146 # Information for the server/tests...
150 if test -z "$user"; then
151 if test -x /usr
/ucb
/whoami
; then
152 user
=`/usr/ucb/whoami`
157 if test -z "$user"; then
167 # Make sure that the LPDEST and PRINTER environment variables are
168 # not included in the environment that is passed to the tests. These
169 # will usually cause tests to fail erroneously...
176 # See if we want to use valgrind...
180 echo "This test script can use the Valgrind software from:"
182 echo " http://developer.kde.org/~sewardj/"
184 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
186 if test $# -gt 0; then
194 case "$usevalgrind" in
196 valgrind
="valgrind --tool=memcheck --log-file=/tmp/cups-$user/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes --read-var-info=yes"
197 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
206 # Start by creating temporary directories for the tests...
209 echo "Creating directories for test..."
211 rm -rf /tmp
/cups-
$user
212 mkdir
/tmp
/cups-
$user
213 mkdir
/tmp
/cups-
$user/bin
214 mkdir
/tmp
/cups-
$user/bin
/backend
215 mkdir
/tmp
/cups-
$user/bin
/driver
216 mkdir
/tmp
/cups-
$user/bin
/filter
217 mkdir
/tmp
/cups-
$user/certs
218 mkdir
/tmp
/cups-
$user/share
219 mkdir
/tmp
/cups-
$user/share
/banners
220 mkdir
/tmp
/cups-
$user/share
/drv
221 mkdir
/tmp
/cups-
$user/share
/locale
222 for file in ..
/locale
/cups_
*.po
; do
223 loc
=`basename $file .po | cut -c 6-`
224 mkdir
/tmp
/cups-
$user/share
/locale
/$loc
225 ln -s $root/locale
/cups_
$loc.po
/tmp
/cups-
$user/share
/locale
/$loc
226 ln -s $root/locale
/ppdc_
$loc.po
/tmp
/cups-
$user/share
/locale
/$loc
228 mkdir
/tmp
/cups-
$user/share
/mime
229 mkdir
/tmp
/cups-
$user/share
/model
230 mkdir
/tmp
/cups-
$user/share
/ppdc
231 mkdir
/tmp
/cups-
$user/interfaces
232 mkdir
/tmp
/cups-
$user/log
233 mkdir
/tmp
/cups-
$user/ppd
234 mkdir
/tmp
/cups-
$user/spool
235 mkdir
/tmp
/cups-
$user/spool
/temp
236 mkdir
/tmp
/cups-
$user/ssl
238 ln -s $root/backend
/dnssd
/tmp
/cups-
$user/bin
/backend
239 ln -s $root/backend
/http
/tmp
/cups-
$user/bin
/backend
240 ln -s $root/backend
/ipp
/tmp
/cups-
$user/bin
/backend
241 ln -s $root/backend
/lpd
/tmp
/cups-
$user/bin
/backend
242 ln -s $root/backend
/mdns
/tmp
/cups-
$user/bin
/backend
243 ln -s $root/backend
/parallel
/tmp
/cups-
$user/bin
/backend
244 ln -s $root/backend
/serial
/tmp
/cups-
$user/bin
/backend
245 ln -s $root/backend
/snmp
/tmp
/cups-
$user/bin
/backend
246 ln -s $root/backend
/socket
/tmp
/cups-
$user/bin
/backend
247 ln -s $root/backend
/usb
/tmp
/cups-
$user/bin
/backend
248 ln -s $root/cgi-bin
/tmp
/cups-
$user/bin
249 ln -s $root/monitor
/tmp
/cups-
$user/bin
250 ln -s $root/notifier
/tmp
/cups-
$user/bin
251 ln -s $root/scheduler
/tmp
/cups-
$user/bin
/daemon
252 ln -s $root/filter
/bannertops
/tmp
/cups-
$user/bin
/filter
253 ln -s $root/filter
/commandtops
/tmp
/cups-
$user/bin
/filter
254 ln -s $root/filter
/gziptoany
/tmp
/cups-
$user/bin
/filter
255 ln -s $root/filter
/hpgltops
/tmp
/cups-
$user/bin
/filter
256 ln -s $root/filter
/pstops
/tmp
/cups-
$user/bin
/filter
257 ln -s $root/filter
/rastertoepson
/tmp
/cups-
$user/bin
/filter
258 ln -s $root/filter
/rastertohp
/tmp
/cups-
$user/bin
/filter
259 ln -s $root/filter
/texttops
/tmp
/cups-
$user/bin
/filter
261 ln -s $root/data
/classified
/tmp
/cups-
$user/share
/banners
262 ln -s $root/data
/confidential
/tmp
/cups-
$user/share
/banners
263 ln -s $root/data
/secret
/tmp
/cups-
$user/share
/banners
264 ln -s $root/data
/standard
/tmp
/cups-
$user/share
/banners
265 ln -s $root/data
/topsecret
/tmp
/cups-
$user/share
/banners
266 ln -s $root/data
/unclassified
/tmp
/cups-
$user/share
/banners
267 ln -s $root/data
/tmp
/cups-
$user/share
/charmaps
268 ln -s $root/data
/tmp
/cups-
$user/share
/charsets
269 ln -s $root/data
/tmp
/cups-
$user/share
270 ln -s $root/fonts
/tmp
/cups-
$user/share
271 ln -s $root/ppdc
/sample.drv
/tmp
/cups-
$user/share
/drv
272 ln -s $root/conf
/mime.types
/tmp
/cups-
$user/share
/mime
273 ln -s $root/conf
/mime.convs
/tmp
/cups-
$user/share
/mime
274 ln -s $root/data
/*.h
/tmp
/cups-
$user/share
/ppdc
275 ln -s $root/data
/*.defs
/tmp
/cups-
$user/share
/ppdc
276 ln -s $root/templates
/tmp
/cups-
$user/share
279 # Mac OS X filters and configuration files...
282 if test `uname` = Darwin
; then
283 ln -s /usr
/libexec
/cups
/filter
/cgpdfto
* /tmp
/cups-
$user/bin
/filter
284 ln -s /usr
/libexec
/cups
/filter
/cgbannertopdf
/tmp
/cups-
$user/bin
/filter
285 ln -s /usr
/libexec
/cups
/filter
/cgimagetopdf
/tmp
/cups-
$user/bin
/filter
286 ln -s /usr
/libexec
/cups
/filter
/cgtexttopdf
/tmp
/cups-
$user/bin
/filter
287 ln -s /usr
/libexec
/cups
/filter
/nsimagetopdf
/tmp
/cups-
$user/bin
/filter
288 ln -s /usr
/libexec
/cups
/filter
/nstexttopdf
/tmp
/cups-
$user/bin
/filter
289 ln -s /usr
/libexec
/cups
/filter
/pictwpstops
/tmp
/cups-
$user/bin
/filter
290 ln -s /usr
/libexec
/cups
/filter
/pstoappleps
/tmp
/cups-
$user/bin
/filter
291 ln -s /usr
/libexec
/cups
/filter
/pstocupsraster
/tmp
/cups-
$user/bin
/filter
292 ln -s /usr
/libexec
/cups
/filter
/pstopdffilter
/tmp
/cups-
$user/bin
/filter
294 if test -f /private
/etc
/cups
/apple.types
; then
295 ln -s /private
/etc
/cups
/apple.
* /tmp
/cups-
$user/share
/mime
296 elif test -f /usr
/share
/cups
/mime
/apple.types
; then
297 ln -s /usr
/share
/cups
/mime
/apple.
* /tmp
/cups-
$user/share
/mime
300 ln -s $root/filter
/imagetops
/tmp
/cups-
$user/bin
/filter
301 ln -s $root/filter
/imagetoraster
/tmp
/cups-
$user/bin
/filter
302 ln -s $root/filter
/pdftops
/tmp
/cups-
$user/bin
/filter
306 # Then create the necessary config files...
309 echo "Creating cupsd.conf for test..."
311 if test $ssltype = 2; then
312 encryption
="Encryption Required"
317 cat >/tmp
/cups-
$user/cupsd.conf
<<EOF
321 Listen 127.0.0.1:$port
323 ServerRoot /tmp/cups-$user
324 StateDir /tmp/cups-$user
325 ServerBin /tmp/cups-$user/bin
326 CacheDir /tmp/cups-$user/share
327 DataDir /tmp/cups-$user/share
328 FontPath /tmp/cups-$user/share/fonts
330 DocumentRoot $root/doc
331 RequestRoot /tmp/cups-$user/spool
332 TempDir /tmp/cups-$user/spool/temp
335 AccessLog /tmp/cups-$user/log/access_log
336 ErrorLog /tmp/cups-$user/log/error_log
337 PageLog /tmp/cups-$user/log/page_log
338 AccessLogLevel actions
341 PreserveJobHistory Yes
353 # Setup lots of test queues - half with PPD files, half without...
356 echo "Creating printers.conf for test..."
359 while test $i -le $nprinters1; do
360 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
363 DeviceURI file:/dev/null
364 Info Test PS printer $i
366 Location CUPS test suite
368 StateMessage Printer $1 is idle.
372 cp testps.ppd
/tmp
/cups-
$user/ppd
/test-
$i.ppd
377 while test $i -le $nprinters2; do
378 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
381 DeviceURI file:/dev/null
382 Info Test raw printer $i
384 Location CUPS test suite
386 StateMessage Printer $1 is idle.
393 if test -f /tmp
/cups-
$user/printers.conf
; then
394 cp /tmp
/cups-
$user/printers.conf
/tmp
/cups-
$user/printers.conf.orig
396 touch /tmp
/cups-
$user/printers.conf.orig
403 echo "Setting up environment variables for test..."
405 if test "x$LD_LIBRARY_PATH" = x
; then
406 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
408 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
411 export LD_LIBRARY_PATH
413 LD_PRELOAD
="$root/cups/libcups.so.2:$root/filter/libcupsimage.so.2:$root/cgi-bin/libcupscgi.so.1:$root/scheduler/libcupsmime.so.1:$root/driver/libcupsdriver.so.1:$root/ppdc/libcupsppdc.so.1"
414 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
415 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
419 if test "x$DYLD_LIBRARY_PATH" = x
; then
420 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
422 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
425 export DYLD_LIBRARY_PATH
427 if test "x$SHLIB_PATH" = x
; then
428 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
430 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
435 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
436 CUPS_SERVER
=localhost
:8631; export CUPS_SERVER
437 CUPS_SERVERROOT
=/tmp
/cups-
$user; export CUPS_SERVERROOT
438 CUPS_STATEDIR
=/tmp
/cups-
$user; export CUPS_STATEDIR
439 CUPS_DATADIR
=/tmp
/cups-
$user/share
; export CUPS_DATADIR
440 LOCALEDIR
=/tmp
/cups-
$user/share
/locale
; export LOCALEDIR
443 # Set a new home directory to avoid getting user options mixed in...
450 # Force POSIX locale for tests...
457 # Start the server; run as foreground daemon in the background...
460 echo "Starting scheduler:"
461 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
464 if test `uname` = Darwin
-a "x$valgrind" = x
; then
465 DYLD_INSERT_LIBRARIES
=/usr
/lib
/libgmalloc.dylib \
466 $valgrind ..
/scheduler
/cupsd
-c /tmp
/cups-
$user/cupsd.conf
-f >/tmp
/cups-
$user/log
/debug_log
2>&1 &
468 $valgrind ..
/scheduler
/cupsd
-c /tmp
/cups-
$user/cupsd.conf
-f >/tmp
/cups-
$user/log
/debug_log
2>&1 &
473 if test "x$testtype" = x0
; then
474 # Not running tests...
475 echo "Scheduler is PID $cupsd and is listening on port 8631."
478 # Create a helper script to run programs with...
479 runcups
="/tmp/cups-$user/runcups"
481 echo "#!/bin/sh" >$runcups
482 echo "# Helper script for running CUPS test instance." >>$runcups
484 echo "# Set required environment variables..." >>$runcups
485 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
486 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
487 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
488 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
489 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
490 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
491 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
492 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
493 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
495 echo "# Run command..." >>$runcups
496 echo "exec \"\$@\"" >>$runcups
500 echo "The $runcups helper script can be used to test programs"
501 echo "with the server."
505 if test $argcount -eq 0; then
506 echo "Scheduler is PID $cupsd; run debugger now if you need to."
508 echo $ac_n "Press ENTER to continue... $ac_c"
511 echo "Scheduler is PID $cupsd."
515 IPP_PORT
=$port; export IPP_PORT
518 running
=`../systemv/lpstat -r 2>/dev/null`
519 if test "x$running" = "xscheduler is running"; then
523 echo "Waiting for scheduler to become ready..."
528 # Create the test report source file...
531 date=`date "+%Y-%m-%d"`
532 strfile
=/tmp
/cups-
$user/cups-str-1.4
-$date-$user.html
535 cat str-header.html
>$strfile
538 # Run the IPP tests...
542 echo "Running IPP compliance tests..."
544 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
545 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
546 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
547 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
548 echo "<PRE>" >>$strfile
551 for file in 4*.
test; do
552 echo "Performing $file..."
555 .
/ipptest ipp
://localhost
:$port/printers
$file |
tee -a $strfile
558 if test $status != 0; then
560 fail
=`expr $fail + 1`
564 echo "</PRE>" >>$strfile
567 # Run the command tests...
571 echo "Running command tests..."
573 echo "<H1>2 - Command Tests</H1>" >>$strfile
574 echo "<P>This section provides the results to the command tests" >>$strfile
575 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
576 echo $date by
$user on
`hostname`.
>>$strfile
577 echo "<PRE>" >>$strfile
579 for file in 5*.sh
; do
580 echo "Performing $file..."
582 echo "\"$file\":" >>$strfile
584 sh
$file $pjobs $pprinters |
tee -a $strfile
587 if test $status != 0; then
589 fail
=`expr $fail + 1`
593 echo "</PRE>" >>$strfile
602 # Append the log files for post-mortim...
605 echo "<H1>3 - Log Files</H1>" >>$strfile
613 echo "<H2>Summary</H2>" >>$strfile
615 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
616 count
=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
617 expected
=`expr $pjobs \* 2 + 34`
618 expected2
=`expr $expected + 2`
619 if test $count -lt $expected -a $count -gt $expected2; then
620 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
621 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
622 fail
=`expr $fail + 1`
624 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
625 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
628 # Paged printed on Test2
629 count
=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
630 expected
=`expr $pjobs \* 2 + 3`
631 if test $count != $expected; then
632 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
633 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
634 fail
=`expr $fail + 1`
636 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
637 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
641 count
=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
642 expected
=`expr 39 + 18 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
643 if test $count != $expected; then
644 echo "FAIL: $count requests logged, expected $expected."
645 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
646 fail
=`expr $fail + 1`
648 echo "PASS: $count requests logged."
649 echo "<P>PASS: $count requests logged.</P>" >>$strfile
652 # Did CUPS-Get-Default get logged?
653 if grep -q CUPS-Get-Default
/tmp
/cups-
$user/log
/access_log
; then
654 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
655 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
656 echo "<PRE>" >>$strfile
657 grep CUPS-Get-Default
/tmp
/cups-
$user/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
658 echo "</PRE>" >>$strfile
659 fail
=`expr $fail + 1`
661 echo "PASS: CUPS-Get-Default not logged."
662 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
665 # Emergency log messages
666 count
=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
667 if test $count != 0; then
668 echo "FAIL: $count emergency messages, expected 0."
669 grep '^X ' /tmp
/cups-
$user/log
/error_log
670 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
671 echo "<PRE>" >>$strfile
672 grep '^X ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
673 echo "</PRE>" >>$strfile
674 fail
=`expr $fail + 1`
676 echo "PASS: $count emergency messages."
677 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
681 count
=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
682 if test $count != 0; then
683 echo "FAIL: $count alert messages, expected 0."
684 grep '^A ' /tmp
/cups-
$user/log
/error_log
685 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
686 echo "<PRE>" >>$strfile
687 grep '^A ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
688 echo "</PRE>" >>$strfile
689 fail
=`expr $fail + 1`
691 echo "PASS: $count alert messages."
692 echo "<P>PASS: $count alert messages.</P>" >>$strfile
695 # Critical log messages
696 count
=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
697 if test $count != 0; then
698 echo "FAIL: $count critical messages, expected 0."
699 grep '^C ' /tmp
/cups-
$user/log
/error_log
700 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
701 echo "<PRE>" >>$strfile
702 grep '^C ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
703 echo "</PRE>" >>$strfile
704 fail
=`expr $fail + 1`
706 echo "PASS: $count critical messages."
707 echo "<P>PASS: $count critical messages.</P>" >>$strfile
711 count
=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
712 if test $count != 18; then
713 echo "FAIL: $count error messages, expected 18."
714 grep '^E ' /tmp
/cups-
$user/log
/error_log
715 echo "<P>FAIL: $count error messages, expected 18.</P>" >>$strfile
716 echo "<PRE>" >>$strfile
717 grep '^E ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
718 echo "</PRE>" >>$strfile
719 fail
=`expr $fail + 1`
721 echo "PASS: $count error messages."
722 echo "<P>PASS: $count error messages.</P>" >>$strfile
725 # Warning log messages
726 count
=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
727 if test $count != 0; then
728 echo "FAIL: $count warning messages, expected 0."
729 grep '^W ' /tmp
/cups-
$user/log
/error_log
730 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
731 echo "<PRE>" >>$strfile
732 grep '^W ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
733 echo "</PRE>" >>$strfile
734 fail
=`expr $fail + 1`
736 echo "PASS: $count warning messages."
737 echo "<P>PASS: $count warning messages.</P>" >>$strfile
740 # Notice log messages
741 count
=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
742 if test $count != 0; then
743 echo "FAIL: $count notice messages, expected 0."
744 grep '^N ' /tmp
/cups-
$user/log
/error_log
745 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
746 echo "<PRE>" >>$strfile
747 grep '^N ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
748 echo "</PRE>" >>$strfile
749 fail
=`expr $fail + 1`
751 echo "PASS: $count notice messages."
752 echo "<P>PASS: $count notice messages.</P>" >>$strfile
756 count
=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
757 if test $count = 0; then
758 echo "FAIL: $count info messages, expected more than 0."
759 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
760 fail
=`expr $fail + 1`
762 echo "PASS: $count info messages."
763 echo "<P>PASS: $count info messages.</P>" >>$strfile
767 count
=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
768 if test $count = 0; then
769 echo "FAIL: $count debug messages, expected more than 0."
770 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
771 fail
=`expr $fail + 1`
773 echo "PASS: $count debug messages."
774 echo "<P>PASS: $count debug messages.</P>" >>$strfile
777 # Debug2 log messages
778 count
=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
779 if test $count = 0; then
780 echo "FAIL: $count debug2 messages, expected more than 0."
781 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
782 fail
=`expr $fail + 1`
784 echo "PASS: $count debug2 messages."
785 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
789 if grep -iq 'testfile.pdf na_letter_8.5x11in' /tmp
/cups-
$user/log
/page_log
; then
790 echo "PASS: page_log formatted correctly."
791 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
793 echo "FAIL: page_log formatted incorrectly."
794 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
795 fail
=`expr $fail + 1`
799 echo "<H2>access_log</H2>" >>$strfile
800 echo "<PRE>" >>$strfile
801 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/access_log
>>$strfile
802 echo "</PRE>" >>$strfile
804 echo "<H2>error_log</H2>" >>$strfile
805 echo "<PRE>" >>$strfile
806 grep -v '^[dD]' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
807 echo "</PRE>" >>$strfile
809 echo "<H2>page_log</H2>" >>$strfile
810 echo "<PRE>" >>$strfile
811 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/page_log
>>$strfile
812 echo "</PRE>" >>$strfile
815 # Format the reports and tell the user where to find them...
818 cat str-trailer.html
>>$strfile
822 if test $fail != 0; then
823 echo "$fail tests failed."
824 cp /tmp
/cups-
$user/log
/error_log error_log-
$date-$user
827 echo "All tests were successful."
830 echo "Log files can be found in /tmp/cups-$user/log."
831 echo "A HTML report was created in $strfile."
834 if test $fail != 0; then
835 echo "Copies of the error_log and `basename $strfile` files are in"
843 # End of "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"