3 # Perform the complete set of IPP compliance tests specified in the
4 # CUPS Software Test Plan.
6 # Copyright 2007-2016 by Apple Inc.
7 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
9 # These coded instructions, statements, and computer programs are the
10 # property of Apple Inc. and are protected by Federal copyright
11 # law. Distribution and use rights are outlined in the file "LICENSE.txt"
12 # which should have been included with this file. If this file is
13 # file is missing or damaged, see the license at "http://www.cups.org/".
19 # Don't allow "make check" or "make test" to be run by root...
22 if test "x`id -u`" = x0
; then
23 echo Please run this as a normal user. Not supported when run as root.
28 # Force the permissions of the files we create...
34 # Make the IPP test program...
40 # Solaris has a non-POSIX grep in /bin...
43 if test -x /usr
/xpg
4/bin
/grep; then
44 GREP
=/usr
/xpg
4/bin
/grep
50 # Figure out the proper echo options...
53 if (echo "testing\c"; echo 1,2,3) |
$GREP c
>/dev
/null
; then
65 echo "Welcome to the CUPS Automated Test Script."
67 echo "Before we begin, it is important that you understand that the larger"
68 echo "tests require significant amounts of RAM and disk space. If you"
69 echo "attempt to run one of the big tests on a system that lacks sufficient"
70 echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
71 echo "more system processes that you've grown attached to, like the X"
72 echo "server. The question you may want to ask yourself before running a"
73 echo "large test is: Do you feel lucky?"
75 echo "OK, now that we have the Dirty Harry quote out of the way, please"
76 echo "choose the type of test you wish to perform:"
78 echo "0 - No testing, keep the scheduler running for me (all systems)"
79 echo "1 - Basic conformance test, no load testing (all systems)"
80 echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
81 echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
82 echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
84 echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
86 if test $# -gt 0; then
96 echo "Running in test mode (0)"
104 echo "Running the medium tests (2)"
112 echo "Running the extreme tests (3)"
120 echo "Running the torture tests (4)"
128 echo "Running the timid tests (1)"
139 # See if we want to do SSL testing...
143 echo "Now you can choose whether to create a SSL/TLS encryption key and"
144 echo "certificate for testing; these tests currently require the OpenSSL"
147 echo "0 - Do not do SSL/TLS encryption tests"
148 echo "1 - Test but do not require encryption"
149 echo "2 - Test and require encryption"
151 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
153 if test $# -gt 0; then
163 echo "Will test but not require encryption (1)"
166 echo "Will test and require encryption (2)"
169 echo "Not using SSL/TLS (0)"
175 # Information for the server/tests...
179 if test -z "$user"; then
180 if test -x /usr
/ucb
/whoami
; then
181 user
=`/usr/ucb/whoami`
186 if test -z "$user"; then
191 port
="${CUPS_TESTPORT:=8631}"
194 CUPS_TESTROOT
="$root"; export CUPS_TESTROOT
196 BASE
="${CUPS_TESTBASE:=}"
197 if test -z "$BASE"; then
198 if test -d /private
/tmp
; then
199 BASE
=/private
/tmp
/cups-
$user
207 # Make sure that the LPDEST and PRINTER environment variables are
208 # not included in the environment that is passed to the tests. These
209 # will usually cause tests to fail erroneously...
216 # See if we want to use valgrind...
220 echo "This test script can use the Valgrind software from:"
222 echo " http://developer.kde.org/~sewardj/"
224 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
226 if test $# -gt 0; then
234 case "$usevalgrind" in
236 VALGRIND
="valgrind --tool=memcheck --log-file=$BASE/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes"
237 if test `uname` = Darwin
; then
238 VALGRIND
="$VALGRIND --dsymutil=yes"
241 echo "Using Valgrind; log files can be found in $BASE/log..."
251 # See if we want to do debug logging of the libraries...
255 echo "If CUPS was built with the --enable-debug-printfs configure option, you"
256 echo "can enable debug logging of the libraries."
258 echo $ac_n "Enter Y or a number from 0 to 9 to enable debug logging or N to not: [N] $ac_c"
260 if test $# -gt 0; then
268 case "$usedebugprintfs" in
270 echo "Enabling debug printfs (level 5); log files can be found in $BASE/log..."
271 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
272 CUPS_DEBUG_LEVEL
=5; export CUPS_DEBUG_LEVEL
273 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
276 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9)
277 echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in $BASE/log..."
278 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
279 CUPS_DEBUG_LEVEL
="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
280 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend|mime).*$'; export CUPS_DEBUG_FILTER
288 # Start by creating temporary directories for the tests...
291 echo "Creating directories for test..."
296 mkdir
$BASE/bin
/backend
297 mkdir
$BASE/bin
/driver
298 mkdir
$BASE/bin
/filter
301 mkdir
$BASE/share
/banners
302 mkdir
$BASE/share
/drv
303 mkdir
$BASE/share
/locale
304 for file in ..
/locale
/cups_
*.po
; do
305 loc
=`basename $file .po | cut -c 6-`
306 mkdir
$BASE/share
/locale
/$loc
307 ln -s $root/locale
/cups_
$loc.po
$BASE/share
/locale
/$loc
308 ln -s $root/locale
/ppdc_
$loc.po
$BASE/share
/locale
/$loc
310 mkdir
$BASE/share
/mime
311 mkdir
$BASE/share
/model
312 mkdir
$BASE/share
/ppdc
313 mkdir
$BASE/interfaces
317 mkdir
$BASE/spool
/temp
320 ln -s $root/backend
/dnssd
$BASE/bin
/backend
321 ln -s $root/backend
/http
$BASE/bin
/backend
322 ln -s $root/backend
/ipp
$BASE/bin
/backend
323 ln -s $root/backend
/lpd
$BASE/bin
/backend
324 ln -s $root/backend
/mdns
$BASE/bin
/backend
325 ln -s $root/backend
/pseudo
$BASE/bin
/backend
326 ln -s $root/backend
/snmp
$BASE/bin
/backend
327 ln -s $root/backend
/socket
$BASE/bin
/backend
328 ln -s $root/backend
/usb
$BASE/bin
/backend
329 ln -s $root/cgi-bin
$BASE/bin
330 ln -s $root/monitor
$BASE/bin
331 ln -s $root/notifier
$BASE/bin
332 ln -s $root/scheduler
$BASE/bin
/daemon
333 ln -s $root/filter
/commandtops
$BASE/bin
/filter
334 ln -s $root/filter
/gziptoany
$BASE/bin
/filter
335 ln -s $root/filter
/pstops
$BASE/bin
/filter
336 ln -s $root/filter
/rastertoepson
$BASE/bin
/filter
337 ln -s $root/filter
/rastertohp
$BASE/bin
/filter
338 ln -s $root/filter
/rastertolabel
$BASE/bin
/filter
339 ln -s $root/filter
/rastertopwg
$BASE/bin
/filter
340 cat >$BASE/share
/banners
/standard
<<EOF
344 Job: {?printer-name}-{?job-id}
345 Owner: {?job-originating-user-name}
347 Pages: {?job-impressions}
352 cat >$BASE/share
/banners
/classified
<<EOF
353 ==== Classified - Do Not Disclose ====
356 Job: {?printer-name}-{?job-id}
357 Owner: {?job-originating-user-name}
359 Pages: {?job-impressions}
362 ==== Classified - Do Not Disclose ====
364 ln -s $root/data
$BASE/share
365 ln -s $root/ppdc
/sample.drv
$BASE/share
/drv
366 ln -s $root/conf
/mime.types
$BASE/share
/mime
367 ln -s $root/conf
/mime.convs
$BASE/share
/mime
368 ln -s $root/data
/*.h
$BASE/share
/ppdc
369 ln -s $root/data
/*.defs
$BASE/share
/ppdc
370 ln -s $root/templates
$BASE/share
373 # Local filters and configuration files...
377 # instfilter src dst format
379 # See if the filter exists in a standard location; if so, make a
380 # symlink, otherwise create a dummy script for the specified format.
386 for dir
in /usr
/local
/libexec
/cups
/filter
/usr
/libexec
/cups
/filter
/usr
/lib
/cups
/filter
; do
387 if test -x "$dir/$src"; then
388 ln -s "$dir/$src" "$BASE/bin/filter/$dst"
393 # Source filter not present, create a dummy filter
396 ln -s gziptoany
"$BASE/bin/filter/$dst"
399 cat >"$BASE/bin/filter/$dst" <<EOF
403 gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
405 *media=a4* | *media=iso_a4* | *PageSize=A4*)
406 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-a4.pdf"
409 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-letter.pdf"
413 chmod +x
"$BASE/bin/filter/$dst"
416 cat >"$BASE/bin/filter/$dst" <<EOF
420 gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
422 *media=a4* | *media=iso_a4* | *PageSize=A4*)
423 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-a4.ps"
426 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-letter.ps"
430 chmod +x
"$BASE/bin/filter/$dst"
433 cat >"$BASE/bin/filter/$dst" <<EOF
437 gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
439 *media=a4* | *media=iso_a4* | *PageSize=A4*)
440 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-a4-300-black-1.pwg.gz"
443 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-letter-300-black-1.pwg.gz"
447 chmod +x
"$BASE/bin/filter/$dst"
452 ln -s $root/test
/test.convs
$BASE/share
/mime
453 ln -s $root/test
/test.types
$BASE/share
/mime
455 if test `uname` = Darwin
; then
456 instfilter cgimagetopdf imagetopdf pdf
457 instfilter cgpdftopdf pdftopdf passthru
458 instfilter cgpdftops pdftops ps
459 instfilter cgpdftoraster pdftoraster raster
460 instfilter cgpdftoraster pdftourf raster
461 instfilter cgtexttopdf texttopdf pdf
462 instfilter pstocupsraster pstoraster raster
464 instfilter imagetopdf imagetopdf pdf
465 instfilter pdftopdf pdftopdf passthru
466 instfilter pdftops pdftops ps
467 instfilter pdftoraster pdftoraster raster
468 instfilter pstoraster pstoraster raster
469 instfilter texttopdf texttopdf pdf
471 if test -d /usr
/share
/cups
/charsets
; then
472 ln -s /usr
/share
/cups
/charsets
$BASE/share
477 # Then create the necessary config files...
480 echo "Creating cupsd.conf for test..."
482 if test $ssltype = 2; then
483 encryption
="Encryption Required"
488 cat >$BASE/cupsd.conf
<<EOF
489 StrictConformance Yes
491 Listen localhost:$port
493 PassEnv DYLD_LIBRARY_PATH
494 PassEnv LD_LIBRARY_PATH
500 AccessLogLevel actions
503 PreserveJobHistory Yes
513 if test $testtype = 0; then
514 echo WebInterface
yes >>$BASE/cupsd.conf
517 cat >$BASE/cups-files.conf
<<EOF
526 FontPath $BASE/share/fonts
527 DocumentRoot $root/doc
528 RequestRoot $BASE/spool
529 TempDir $BASE/spool/temp
530 AccessLog $BASE/log/access_log
531 ErrorLog $BASE/log/error_log
532 PageLog $BASE/log/page_log
535 if test $ssltype != 0 -a `uname` = Darwin
; then
536 echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
540 # Setup lots of test queues - half with PPD files, half without...
543 echo "Creating printers.conf for test..."
546 while test $i -le $nprinters1; do
547 cat >>$BASE/printers.conf
<<EOF
550 DeviceURI file:/dev/null
551 Info Test PS printer $i
553 Location CUPS test suite
555 StateMessage Printer $1 is idle.
559 cp testps.ppd
$BASE/ppd
/test-
$i.ppd
564 while test $i -le $nprinters2; do
565 cat >>$BASE/printers.conf
<<EOF
568 DeviceURI file:/dev/null
569 Info Test raw printer $i
571 Location CUPS test suite
573 StateMessage Printer $1 is idle.
580 if test -f $BASE/printers.conf
; then
581 cp $BASE/printers.conf
$BASE/printers.conf.orig
583 touch $BASE/printers.conf.orig
590 echo "Setting up environment variables for test..."
592 if test "x$LD_LIBRARY_PATH" = x
; then
593 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
595 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$LD_LIBRARY_PATH"
598 export LD_LIBRARY_PATH
600 LD_PRELOAD
="$root/cups/libcups.so.2:$root/filter/libcupsimage.so.2:$root/cgi-bin/libcupscgi.so.1:$root/scheduler/libcupsmime.so.1:$root/ppdc/libcupsppdc.so.1"
601 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
602 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
606 if test "x$DYLD_LIBRARY_PATH" = x
; then
607 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
609 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$DYLD_LIBRARY_PATH"
612 export DYLD_LIBRARY_PATH
614 if test "x$SHLIB_PATH" = x
; then
615 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
617 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$SHLIB_PATH"
622 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
623 CUPS_SERVER
=localhost
:$port; export CUPS_SERVER
624 CUPS_SERVERROOT
=$BASE; export CUPS_SERVERROOT
625 CUPS_STATEDIR
=$BASE; export CUPS_STATEDIR
626 CUPS_DATADIR
=$BASE/share
; export CUPS_DATADIR
627 LOCALEDIR
=$BASE/share
/locale
; export LOCALEDIR
630 # Set a new home directory to avoid getting user options mixed in...
637 # Force POSIX locale for tests...
647 # Start the server; run as foreground daemon in the background...
650 echo "Starting scheduler:"
651 echo " $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
654 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
655 DYLD_INSERT_LIBRARIES
="/usr/lib/libgmalloc.dylib" MallocStackLogging
=1 ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
657 $VALGRIND ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
662 if test "x$testtype" = x0
; then
663 # Not running tests...
664 echo "Scheduler is PID $cupsd and is listening on port $port."
667 # Create a helper script to run programs with...
668 runcups
="$BASE/runcups"
670 echo "#!/bin/sh" >$runcups
671 echo "# Helper script for running CUPS test instance." >>$runcups
673 echo "# Set required environment variables..." >>$runcups
674 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
675 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
676 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
677 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
678 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
679 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
680 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
681 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
682 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
683 if test "x$CUPS_DEBUG_LEVEL" != x
; then
684 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
685 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
686 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
689 echo "# Run command..." >>$runcups
690 echo "exec \"\$@\"" >>$runcups
694 echo "The $runcups helper script can be used to test programs"
695 echo "with the server."
699 if test $argcount -eq 0; then
700 echo "Scheduler is PID $cupsd; run debugger now if you need to."
702 echo $ac_n "Press ENTER to continue... $ac_c"
705 echo "Scheduler is PID $cupsd."
709 IPP_PORT
=$port; export IPP_PORT
712 running
=`../systemv/lpstat -r 2>/dev/null`
713 if test "x$running" = "xscheduler is running"; then
717 echo "Waiting for scheduler to become ready..."
722 # Create the test report source file...
725 date=`date "+%Y-%m-%d"`
727 if test -d $root/.svn
; then
728 rev=`svn info . | grep Revision: | awk '{print $2}'`
729 strfile
=$BASE/cups-str-2.2
-r$rev-$user.html
731 strfile
=$BASE/cups-str-2.2
-$date-$user.html
735 cat str-header.html
>$strfile
738 # Run the IPP tests...
742 echo "Running IPP compliance tests..."
744 echo "<H1><A NAME='IPP'>1 - IPP Compliance Tests</A></H1>" >>$strfile
745 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
746 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
747 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
748 echo "<PRE>" >>$strfile
751 for file in 4*.
test ipp-2.1.
test; do
752 echo $ac_n "Performing $file: $ac_c"
755 if test $file = ipp-2.1.
test; then
756 uri
="ipp://localhost:$port/printers/Test1"
757 options
="-V 2.1 -d NOPRINT=1 -f testfile.ps"
759 uri
="ipp://localhost:$port/printers"
762 $VALGRIND .
/ipptool
-tI $options $uri $file >> $strfile
765 if test $status != 0; then
767 fail
=`expr $fail + 1`
773 echo "</PRE>" >>$strfile
776 # Run the command tests...
780 echo "Running command tests..."
782 echo "<H1><A NAME='COMMAND'>2 - Command Tests</A></H1>" >>$strfile
783 echo "<P>This section provides the results to the command tests" >>$strfile
784 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
785 echo $date by
$user on
`hostname`.
>>$strfile
786 echo "<PRE>" >>$strfile
788 for file in 5*.sh
; do
789 echo $ac_n "Performing $file: $ac_c"
791 echo "\"$file\":" >>$strfile
793 sh
$file $pjobs $pprinters >> $strfile
796 if test $status != 0; then
798 fail
=`expr $fail + 1`
805 # Log all allocations made by the scheduler...
807 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
808 malloc_history
$cupsd -callTree -showContent >$BASE/log
/malloc_log
2>&1
812 # Restart the server...
815 echo $ac_n "Performing restart test: $ac_c"
817 echo "\"5.10-restart\":" >>$strfile
824 running
=`../systemv/lpstat -r 2>/dev/null`
825 if test "x$running" = "xscheduler is running"; then
830 description
="`../systemv/lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
831 if test "x$description" != "xTest Printer 1"; then
832 echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
833 echo "FAIL (got '$description', expected 'Test Printer 1')"
834 fail
=`expr $fail + 1`
836 echo "Passed." >>$strfile
840 echo "</PRE>" >>$strfile
856 echo "<H1><A NAME='SUMMARY'>3 - Test Summary</A></H1>" >>$strfile
858 if test $cupsdstatus != 0; then
859 echo "FAIL: cupsd failed with exit status $cupsdstatus."
860 echo "<p>FAIL: cupsd failed with exit status $cupsdstatus.</p>" >>$strfile
861 fail
=`expr $fail + 1`
863 echo "PASS: cupsd exited with no errors."
864 echo "<p>PASS: cupsd exited with no errors.</p>" >>$strfile
868 count
=`ls -1 $BASE/spool | wc -l`
869 count
=`expr $count - 1`
870 if test $count != 0; then
871 echo "FAIL: $count job control files were not purged."
872 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
873 fail
=`expr $fail + 1`
875 echo "PASS: All job control files purged."
876 echo "<P>PASS: All job control files purged.</P>" >>$strfile
879 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
880 count
=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
881 expected
=`expr $pjobs \* 2 + 34`
882 expected2
=`expr $expected + 2`
883 if test $count -lt $expected -a $count -gt $expected2; then
884 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
885 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
886 fail
=`expr $fail + 1`
888 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
889 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
892 # Paged printed on Test2
893 count
=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
894 expected
=`expr $pjobs \* 2 + 3`
895 if test $count != $expected; then
896 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
897 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
898 fail
=`expr $fail + 1`
900 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
901 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
904 # Paged printed on Test3
905 count
=`$GREP '^Test3 ' $BASE/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
907 if test $count != $expected; then
908 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
909 echo "<P>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</P>" >>$strfile
910 fail
=`expr $fail + 1`
912 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
913 echo "<P>PASS: Printer 'Test3' correctly produced $count page(s).</P>" >>$strfile
917 count
=`wc -l $BASE/log/access_log | awk '{print $1}'`
918 expected
=`expr 37 + 18 + 30 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
919 if test $count != $expected; then
920 echo "FAIL: $count requests logged, expected $expected."
921 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
922 fail
=`expr $fail + 1`
924 echo "PASS: $count requests logged."
925 echo "<P>PASS: $count requests logged.</P>" >>$strfile
928 # Did CUPS-Get-Default get logged?
929 if $GREP -q CUPS-Get-Default
$BASE/log
/access_log
; then
930 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
931 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
932 echo "<PRE>" >>$strfile
933 $GREP CUPS-Get-Default
$BASE/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
934 echo "</PRE>" >>$strfile
935 fail
=`expr $fail + 1`
937 echo "PASS: CUPS-Get-Default not logged."
938 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
941 # Emergency log messages
942 count
=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
943 if test $count != 0; then
944 echo "FAIL: $count emergency messages, expected 0."
945 $GREP '^X ' $BASE/log
/error_log
946 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
947 echo "<PRE>" >>$strfile
948 $GREP '^X ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
949 echo "</PRE>" >>$strfile
950 fail
=`expr $fail + 1`
952 echo "PASS: $count emergency messages."
953 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
957 count
=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
958 if test $count != 0; then
959 echo "FAIL: $count alert messages, expected 0."
960 $GREP '^A ' $BASE/log
/error_log
961 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
962 echo "<PRE>" >>$strfile
963 $GREP '^A ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
964 echo "</PRE>" >>$strfile
965 fail
=`expr $fail + 1`
967 echo "PASS: $count alert messages."
968 echo "<P>PASS: $count alert messages.</P>" >>$strfile
971 # Critical log messages
972 count
=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
973 if test $count != 0; then
974 echo "FAIL: $count critical messages, expected 0."
975 $GREP '^C ' $BASE/log
/error_log
976 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
977 echo "<PRE>" >>$strfile
978 $GREP '^C ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
979 echo "</PRE>" >>$strfile
980 fail
=`expr $fail + 1`
982 echo "PASS: $count critical messages."
983 echo "<P>PASS: $count critical messages.</P>" >>$strfile
987 count
=`$GREP '^E ' $BASE/log/error_log | wc -l | awk '{print $1}'`
988 if test $count != 33; then
989 echo "FAIL: $count error messages, expected 33."
990 $GREP '^E ' $BASE/log
/error_log
991 echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
992 echo "<PRE>" >>$strfile
993 $GREP '^E ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
994 echo "</PRE>" >>$strfile
995 fail
=`expr $fail + 1`
997 echo "PASS: $count error messages."
998 echo "<P>PASS: $count error messages.</P>" >>$strfile
1001 # Warning log messages
1002 count
=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
1003 if test $count != 8; then
1004 echo "FAIL: $count warning messages, expected 8."
1005 $GREP '^W ' $BASE/log
/error_log
1006 echo "<P>FAIL: $count warning messages, expected 8.</P>" >>$strfile
1007 echo "<PRE>" >>$strfile
1008 $GREP '^W ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1009 echo "</PRE>" >>$strfile
1010 fail
=`expr $fail + 1`
1012 echo "PASS: $count warning messages."
1013 echo "<P>PASS: $count warning messages.</P>" >>$strfile
1016 # Notice log messages
1017 count
=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1018 if test $count != 0; then
1019 echo "FAIL: $count notice messages, expected 0."
1020 $GREP '^N ' $BASE/log
/error_log
1021 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
1022 echo "<PRE>" >>$strfile
1023 $GREP '^N ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1024 echo "</PRE>" >>$strfile
1025 fail
=`expr $fail + 1`
1027 echo "PASS: $count notice messages."
1028 echo "<P>PASS: $count notice messages.</P>" >>$strfile
1032 count
=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1033 if test $count = 0; then
1034 echo "FAIL: $count info messages, expected more than 0."
1035 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
1036 fail
=`expr $fail + 1`
1038 echo "PASS: $count info messages."
1039 echo "<P>PASS: $count info messages.</P>" >>$strfile
1042 # Debug log messages
1043 count
=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1044 if test $count = 0; then
1045 echo "FAIL: $count debug messages, expected more than 0."
1046 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
1047 fail
=`expr $fail + 1`
1049 echo "PASS: $count debug messages."
1050 echo "<P>PASS: $count debug messages.</P>" >>$strfile
1053 # Debug2 log messages
1054 count
=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1055 if test $count = 0; then
1056 echo "FAIL: $count debug2 messages, expected more than 0."
1057 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
1058 fail
=`expr $fail + 1`
1060 echo "PASS: $count debug2 messages."
1061 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
1068 echo "<H1><A NAME='LOGS'>4 - Log Files</A></H1>" >>$strfile
1070 echo "<H2><A NAME='access_log'>access_log</A></H2>" >>$strfile
1071 echo "<PRE>" >>$strfile
1072 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/access_log
>>$strfile
1073 echo "</PRE>" >>$strfile
1075 echo "<H2><A NAME='error_log'>error_log</A></H2>" >>$strfile
1076 echo "<PRE>" >>$strfile
1077 $GREP -v '^d' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1078 echo "</PRE>" >>$strfile
1080 echo "<H2><A NAME='page_log'>page_log</A></H2>" >>$strfile
1081 echo "<PRE>" >>$strfile
1082 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/page_log
>>$strfile
1083 echo "</PRE>" >>$strfile
1086 # Format the reports and tell the user where to find them...
1089 cat str-trailer.html
>>$strfile
1093 if test $fail != 0; then
1094 echo "$fail tests failed."
1096 if test -d $root/.svn
; then
1097 cp $BASE/log
/error_log error_log-r
$rev-$user
1099 cp $BASE/log
/error_log error_log-
$date-$user
1104 echo "All tests were successful."
1107 echo "Log files can be found in $BASE/log."
1108 echo "A HTML report was created in $strfile."
1111 if test $fail != 0; then
1112 echo "Copies of the error_log and `basename $strfile` files are in"