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:"
146 echo "0 - Do not do SSL/TLS encryption tests"
147 echo "1 - Test but do not require encryption"
148 echo "2 - Test and require encryption"
150 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
152 if test $# -gt 0; then
162 echo "Will test but not require encryption (1)"
165 echo "Will test and require encryption (2)"
168 echo "Not using SSL/TLS (0)"
174 # Information for the server/tests...
178 if test -z "$user"; then
179 if test -x /usr
/ucb
/whoami
; then
180 user
=`/usr/ucb/whoami`
185 if test -z "$user"; then
190 port
="${CUPS_TESTPORT:=8631}"
193 CUPS_TESTROOT
="$root"; export CUPS_TESTROOT
195 BASE
="${CUPS_TESTBASE:=}"
196 if test -z "$BASE"; then
197 if test -d /private
/tmp
; then
198 BASE
=/private
/tmp
/cups-
$user
206 # Make sure that the LPDEST and PRINTER environment variables are
207 # not included in the environment that is passed to the tests. These
208 # will usually cause tests to fail erroneously...
215 # See if we want to use valgrind...
219 echo "This test script can use the Valgrind software from:"
221 echo " http://developer.kde.org/~sewardj/"
223 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
225 if test $# -gt 0; then
233 case "$usevalgrind" in
235 VALGRIND
="valgrind --tool=memcheck --log-file=$BASE/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes"
236 if test `uname` = Darwin
; then
237 VALGRIND
="$VALGRIND --dsymutil=yes"
240 echo "Using Valgrind; log files can be found in $BASE/log..."
250 # See if we want to do debug logging of the libraries...
254 echo "If CUPS was built with the --enable-debug-printfs configure option, you"
255 echo "can enable debug logging of the libraries."
257 echo $ac_n "Enter Y or a number from 0 to 9 to enable debug logging or N to not: [N] $ac_c"
259 if test $# -gt 0; then
267 case "$usedebugprintfs" in
269 echo "Enabling debug printfs (level 5); log files can be found in $BASE/log..."
270 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
271 CUPS_DEBUG_LEVEL
=5; export CUPS_DEBUG_LEVEL
272 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
275 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9)
276 echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in $BASE/log..."
277 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
278 CUPS_DEBUG_LEVEL
="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
279 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend|mime).*$'; export CUPS_DEBUG_FILTER
287 # Start by creating temporary directories for the tests...
290 echo "Creating directories for test..."
295 mkdir
$BASE/bin
/backend
296 mkdir
$BASE/bin
/driver
297 mkdir
$BASE/bin
/filter
300 mkdir
$BASE/share
/banners
301 mkdir
$BASE/share
/drv
302 mkdir
$BASE/share
/locale
303 for file in ..
/locale
/cups_
*.po
; do
304 loc
=`basename $file .po | cut -c 6-`
305 mkdir
$BASE/share
/locale
/$loc
306 ln -s $root/locale
/cups_
$loc.po
$BASE/share
/locale
/$loc
307 ln -s $root/locale
/ppdc_
$loc.po
$BASE/share
/locale
/$loc
309 mkdir
$BASE/share
/mime
310 mkdir
$BASE/share
/model
311 mkdir
$BASE/share
/ppdc
312 mkdir
$BASE/interfaces
316 mkdir
$BASE/spool
/temp
319 ln -s $root/backend
/dnssd
$BASE/bin
/backend
320 ln -s $root/backend
/http
$BASE/bin
/backend
321 ln -s $root/backend
/ipp
$BASE/bin
/backend
322 ln -s $root/backend
/lpd
$BASE/bin
/backend
323 ln -s $root/backend
/mdns
$BASE/bin
/backend
324 ln -s $root/backend
/pseudo
$BASE/bin
/backend
325 ln -s $root/backend
/snmp
$BASE/bin
/backend
326 ln -s $root/backend
/socket
$BASE/bin
/backend
327 ln -s $root/backend
/usb
$BASE/bin
/backend
328 ln -s $root/cgi-bin
$BASE/bin
329 ln -s $root/monitor
$BASE/bin
330 ln -s $root/notifier
$BASE/bin
331 ln -s $root/scheduler
$BASE/bin
/daemon
332 ln -s $root/filter
/commandtops
$BASE/bin
/filter
333 ln -s $root/filter
/gziptoany
$BASE/bin
/filter
334 ln -s $root/filter
/pstops
$BASE/bin
/filter
335 ln -s $root/filter
/rastertoepson
$BASE/bin
/filter
336 ln -s $root/filter
/rastertohp
$BASE/bin
/filter
337 ln -s $root/filter
/rastertolabel
$BASE/bin
/filter
338 ln -s $root/filter
/rastertopwg
$BASE/bin
/filter
339 cat >$BASE/share
/banners
/standard
<<EOF
343 Job: {?printer-name}-{?job-id}
344 Owner: {?job-originating-user-name}
346 Pages: {?job-impressions}
351 cat >$BASE/share
/banners
/classified
<<EOF
352 ==== Classified - Do Not Disclose ====
355 Job: {?printer-name}-{?job-id}
356 Owner: {?job-originating-user-name}
358 Pages: {?job-impressions}
361 ==== Classified - Do Not Disclose ====
363 ln -s $root/data
$BASE/share
364 ln -s $root/ppdc
/sample.drv
$BASE/share
/drv
365 ln -s $root/conf
/mime.types
$BASE/share
/mime
366 ln -s $root/conf
/mime.convs
$BASE/share
/mime
367 ln -s $root/data
/*.h
$BASE/share
/ppdc
368 ln -s $root/data
/*.defs
$BASE/share
/ppdc
369 ln -s $root/templates
$BASE/share
372 # Local filters and configuration files...
376 # instfilter src dst format
378 # See if the filter exists in a standard location; if so, make a
379 # symlink, otherwise create a dummy script for the specified format.
385 for dir
in /usr
/local
/libexec
/cups
/filter
/usr
/libexec
/cups
/filter
/usr
/lib
/cups
/filter
; do
386 if test -x "$dir/$src"; then
387 ln -s "$dir/$src" "$BASE/bin/filter/$dst"
392 # Source filter not present, create a dummy filter
395 ln -s gziptoany
"$BASE/bin/filter/$dst"
398 cat >"$BASE/bin/filter/$dst" <<EOF
402 gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
404 *media=a4* | *media=iso_a4* | *PageSize=A4*)
405 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-a4.pdf"
408 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-letter.pdf"
412 chmod +x
"$BASE/bin/filter/$dst"
415 cat >"$BASE/bin/filter/$dst" <<EOF
419 gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
421 *media=a4* | *media=iso_a4* | *PageSize=A4*)
422 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-a4.ps"
425 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-letter.ps"
429 chmod +x
"$BASE/bin/filter/$dst"
432 cat >"$BASE/bin/filter/$dst" <<EOF
436 gziptoany "$1" "$2" "$3" "$4" "$5" \$6 >/dev/null
438 *media=a4* | *media=iso_a4* | *PageSize=A4*)
439 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-a4-300-black-1.pwg.gz"
442 gziptoany "$1" "$2" "$3" "$4" "$5" "$root/test/onepage-letter-300-black-1.pwg.gz"
446 chmod +x
"$BASE/bin/filter/$dst"
451 ln -s $root/test
/test.convs
$BASE/share
/mime
452 ln -s $root/test
/test.types
$BASE/share
/mime
454 if test `uname` = Darwin
; then
455 instfilter cgimagetopdf imagetopdf pdf
456 instfilter cgpdftopdf pdftopdf passthru
457 instfilter cgpdftops pdftops ps
458 instfilter cgpdftoraster pdftoraster raster
459 instfilter cgpdftoraster pdftourf raster
460 instfilter cgtexttopdf texttopdf pdf
461 instfilter pstocupsraster pstoraster raster
463 instfilter imagetopdf imagetopdf pdf
464 instfilter pdftopdf pdftopdf passthru
465 instfilter pdftops pdftops ps
466 instfilter pdftoraster pdftoraster raster
467 instfilter pstoraster pstoraster raster
468 instfilter texttopdf texttopdf pdf
470 if test -d /usr
/share
/cups
/charsets
; then
471 ln -s /usr
/share
/cups
/charsets
$BASE/share
476 # Then create the necessary config files...
479 echo "Creating cupsd.conf for test..."
481 if test $ssltype = 2; then
482 encryption
="Encryption Required"
487 cat >$BASE/cupsd.conf
<<EOF
488 StrictConformance Yes
490 Listen localhost:$port
492 PassEnv DYLD_LIBRARY_PATH
493 PassEnv LD_LIBRARY_PATH
499 AccessLogLevel actions
502 PreserveJobHistory Yes
512 if test $testtype = 0; then
513 echo WebInterface
yes >>$BASE/cupsd.conf
516 cat >$BASE/cups-files.conf
<<EOF
525 FontPath $BASE/share/fonts
526 DocumentRoot $root/doc
527 RequestRoot $BASE/spool
528 TempDir $BASE/spool/temp
529 AccessLog $BASE/log/access_log
530 ErrorLog $BASE/log/error_log
531 PageLog $BASE/log/page_log
534 if test $ssltype != 0 -a `uname` = Darwin
; then
535 echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
539 # Setup lots of test queues - half with PPD files, half without...
542 echo "Creating printers.conf for test..."
545 while test $i -le $nprinters1; do
546 cat >>$BASE/printers.conf
<<EOF
549 DeviceURI file:/dev/null
550 Info Test PS printer $i
552 Location CUPS test suite
554 StateMessage Printer $1 is idle.
558 cp testps.ppd
$BASE/ppd
/test-
$i.ppd
563 while test $i -le $nprinters2; do
564 cat >>$BASE/printers.conf
<<EOF
567 DeviceURI file:/dev/null
568 Info Test raw printer $i
570 Location CUPS test suite
572 StateMessage Printer $1 is idle.
579 if test -f $BASE/printers.conf
; then
580 cp $BASE/printers.conf
$BASE/printers.conf.orig
582 touch $BASE/printers.conf.orig
589 echo "Setting up environment variables for test..."
591 if test "x$LD_LIBRARY_PATH" = x
; then
592 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
594 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$LD_LIBRARY_PATH"
597 export LD_LIBRARY_PATH
599 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"
600 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
601 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
605 if test "x$DYLD_LIBRARY_PATH" = x
; then
606 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
608 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$DYLD_LIBRARY_PATH"
611 export DYLD_LIBRARY_PATH
613 if test "x$SHLIB_PATH" = x
; then
614 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
616 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$SHLIB_PATH"
621 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
622 CUPS_SERVER
=localhost
:$port; export CUPS_SERVER
623 CUPS_SERVERROOT
=$BASE; export CUPS_SERVERROOT
624 CUPS_STATEDIR
=$BASE; export CUPS_STATEDIR
625 CUPS_DATADIR
=$BASE/share
; export CUPS_DATADIR
626 LOCALEDIR
=$BASE/share
/locale
; export LOCALEDIR
629 # Set a new home directory to avoid getting user options mixed in...
636 # Force POSIX locale for tests...
646 # Start the server; run as foreground daemon in the background...
649 echo "Starting scheduler:"
650 echo " $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
653 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
654 DYLD_INSERT_LIBRARIES
="/usr/lib/libgmalloc.dylib" MallocStackLogging
=1 ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
656 $VALGRIND ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
661 if test "x$testtype" = x0
; then
662 # Not running tests...
663 echo "Scheduler is PID $cupsd and is listening on port $port."
666 # Create a helper script to run programs with...
667 runcups
="$BASE/runcups"
669 echo "#!/bin/sh" >$runcups
670 echo "# Helper script for running CUPS test instance." >>$runcups
672 echo "# Set required environment variables..." >>$runcups
673 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
674 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
675 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
676 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
677 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
678 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
679 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
680 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
681 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
682 if test "x$CUPS_DEBUG_LEVEL" != x
; then
683 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
684 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
685 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
688 echo "# Run command..." >>$runcups
689 echo "exec \"\$@\"" >>$runcups
693 echo "The $runcups helper script can be used to test programs"
694 echo "with the server."
698 if test $argcount -eq 0; then
699 echo "Scheduler is PID $cupsd; run debugger now if you need to."
701 echo $ac_n "Press ENTER to continue... $ac_c"
704 echo "Scheduler is PID $cupsd."
708 IPP_PORT
=$port; export IPP_PORT
711 running
=`../systemv/lpstat -r 2>/dev/null`
712 if test "x$running" = "xscheduler is running"; then
716 echo "Waiting for scheduler to become ready..."
721 # Create the test report source file...
724 date=`date "+%Y-%m-%d"`
726 if test -d $root/.svn
; then
727 rev=`svn info . | grep Revision: | awk '{print $2}'`
728 strfile
=$BASE/cups-str-2.2
-r$rev-$user.html
730 strfile
=$BASE/cups-str-2.2
-$date-$user.html
734 cat str-header.html
>$strfile
737 # Run the IPP tests...
741 echo "Running IPP compliance tests..."
743 echo "<H1><A NAME='IPP'>1 - IPP Compliance Tests</A></H1>" >>$strfile
744 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
745 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
746 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
747 echo "<PRE>" >>$strfile
750 for file in 4*.
test ipp-2.1.
test; do
751 echo $ac_n "Performing $file: $ac_c"
754 if test $file = ipp-2.1.
test; then
755 uri
="ipp://localhost:$port/printers/Test1"
756 options
="-V 2.1 -d NOPRINT=1 -f testfile.ps"
758 uri
="ipp://localhost:$port/printers"
761 $VALGRIND .
/ipptool
-tI $options $uri $file >> $strfile
764 if test $status != 0; then
766 fail
=`expr $fail + 1`
772 echo "</PRE>" >>$strfile
775 # Run the command tests...
779 echo "Running command tests..."
781 echo "<H1><A NAME='COMMAND'>2 - Command Tests</A></H1>" >>$strfile
782 echo "<P>This section provides the results to the command tests" >>$strfile
783 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
784 echo $date by
$user on
`hostname`.
>>$strfile
785 echo "<PRE>" >>$strfile
787 for file in 5*.sh
; do
788 echo $ac_n "Performing $file: $ac_c"
790 echo "\"$file\":" >>$strfile
792 sh
$file $pjobs $pprinters >> $strfile
795 if test $status != 0; then
797 fail
=`expr $fail + 1`
804 # Log all allocations made by the scheduler...
806 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
807 malloc_history
$cupsd -callTree -showContent >$BASE/log
/malloc_log
2>&1
811 # Restart the server...
814 echo $ac_n "Performing restart test: $ac_c"
816 echo "\"5.10-restart\":" >>$strfile
823 running
=`../systemv/lpstat -r 2>/dev/null`
824 if test "x$running" = "xscheduler is running"; then
829 description
="`../systemv/lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
830 if test "x$description" != "xTest Printer 1"; then
831 echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
832 echo "FAIL (got '$description', expected 'Test Printer 1')"
833 fail
=`expr $fail + 1`
835 echo "Passed." >>$strfile
839 echo "</PRE>" >>$strfile
855 echo "<H1><A NAME='SUMMARY'>3 - Test Summary</A></H1>" >>$strfile
857 if test $cupsdstatus != 0; then
858 echo "FAIL: cupsd failed with exit status $cupsdstatus."
859 echo "<p>FAIL: cupsd failed with exit status $cupsdstatus.</p>" >>$strfile
860 fail
=`expr $fail + 1`
862 echo "PASS: cupsd exited with no errors."
863 echo "<p>PASS: cupsd exited with no errors.</p>" >>$strfile
867 count
=`ls -1 $BASE/spool | wc -l`
868 count
=`expr $count - 1`
869 if test $count != 0; then
870 echo "FAIL: $count job control files were not purged."
871 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
872 fail
=`expr $fail + 1`
874 echo "PASS: All job control files purged."
875 echo "<P>PASS: All job control files purged.</P>" >>$strfile
878 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
879 count
=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
880 expected
=`expr $pjobs \* 2 + 34`
881 expected2
=`expr $expected + 2`
882 if test $count -lt $expected -a $count -gt $expected2; then
883 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
884 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
885 fail
=`expr $fail + 1`
887 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
888 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
891 # Paged printed on Test2
892 count
=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
893 expected
=`expr $pjobs \* 2 + 3`
894 if test $count != $expected; then
895 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
896 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
897 fail
=`expr $fail + 1`
899 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
900 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
903 # Paged printed on Test3
904 count
=`$GREP '^Test3 ' $BASE/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
906 if test $count != $expected; then
907 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
908 echo "<P>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</P>" >>$strfile
909 fail
=`expr $fail + 1`
911 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
912 echo "<P>PASS: Printer 'Test3' correctly produced $count page(s).</P>" >>$strfile
916 count
=`wc -l $BASE/log/access_log | awk '{print $1}'`
917 expected
=`expr 37 + 18 + 30 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
918 if test $count != $expected; then
919 echo "FAIL: $count requests logged, expected $expected."
920 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
921 fail
=`expr $fail + 1`
923 echo "PASS: $count requests logged."
924 echo "<P>PASS: $count requests logged.</P>" >>$strfile
927 # Did CUPS-Get-Default get logged?
928 if $GREP -q CUPS-Get-Default
$BASE/log
/access_log
; then
929 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
930 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
931 echo "<PRE>" >>$strfile
932 $GREP CUPS-Get-Default
$BASE/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
933 echo "</PRE>" >>$strfile
934 fail
=`expr $fail + 1`
936 echo "PASS: CUPS-Get-Default not logged."
937 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
940 # Emergency log messages
941 count
=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
942 if test $count != 0; then
943 echo "FAIL: $count emergency messages, expected 0."
944 $GREP '^X ' $BASE/log
/error_log
945 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
946 echo "<PRE>" >>$strfile
947 $GREP '^X ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
948 echo "</PRE>" >>$strfile
949 fail
=`expr $fail + 1`
951 echo "PASS: $count emergency messages."
952 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
956 count
=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
957 if test $count != 0; then
958 echo "FAIL: $count alert messages, expected 0."
959 $GREP '^A ' $BASE/log
/error_log
960 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
961 echo "<PRE>" >>$strfile
962 $GREP '^A ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
963 echo "</PRE>" >>$strfile
964 fail
=`expr $fail + 1`
966 echo "PASS: $count alert messages."
967 echo "<P>PASS: $count alert messages.</P>" >>$strfile
970 # Critical log messages
971 count
=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
972 if test $count != 0; then
973 echo "FAIL: $count critical messages, expected 0."
974 $GREP '^C ' $BASE/log
/error_log
975 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
976 echo "<PRE>" >>$strfile
977 $GREP '^C ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
978 echo "</PRE>" >>$strfile
979 fail
=`expr $fail + 1`
981 echo "PASS: $count critical messages."
982 echo "<P>PASS: $count critical messages.</P>" >>$strfile
986 count
=`$GREP '^E ' $BASE/log/error_log | wc -l | awk '{print $1}'`
987 if test $count != 33; then
988 echo "FAIL: $count error messages, expected 33."
989 $GREP '^E ' $BASE/log
/error_log
990 echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
991 echo "<PRE>" >>$strfile
992 $GREP '^E ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
993 echo "</PRE>" >>$strfile
994 fail
=`expr $fail + 1`
996 echo "PASS: $count error messages."
997 echo "<P>PASS: $count error messages.</P>" >>$strfile
1000 # Warning log messages
1001 count
=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
1002 if test $count != 8; then
1003 echo "FAIL: $count warning messages, expected 8."
1004 $GREP '^W ' $BASE/log
/error_log
1005 echo "<P>FAIL: $count warning messages, expected 8.</P>" >>$strfile
1006 echo "<PRE>" >>$strfile
1007 $GREP '^W ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1008 echo "</PRE>" >>$strfile
1009 fail
=`expr $fail + 1`
1011 echo "PASS: $count warning messages."
1012 echo "<P>PASS: $count warning messages.</P>" >>$strfile
1015 # Notice log messages
1016 count
=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1017 if test $count != 0; then
1018 echo "FAIL: $count notice messages, expected 0."
1019 $GREP '^N ' $BASE/log
/error_log
1020 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
1021 echo "<PRE>" >>$strfile
1022 $GREP '^N ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1023 echo "</PRE>" >>$strfile
1024 fail
=`expr $fail + 1`
1026 echo "PASS: $count notice messages."
1027 echo "<P>PASS: $count notice messages.</P>" >>$strfile
1031 count
=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1032 if test $count = 0; then
1033 echo "FAIL: $count info messages, expected more than 0."
1034 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
1035 fail
=`expr $fail + 1`
1037 echo "PASS: $count info messages."
1038 echo "<P>PASS: $count info messages.</P>" >>$strfile
1041 # Debug log messages
1042 count
=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1043 if test $count = 0; then
1044 echo "FAIL: $count debug messages, expected more than 0."
1045 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
1046 fail
=`expr $fail + 1`
1048 echo "PASS: $count debug messages."
1049 echo "<P>PASS: $count debug messages.</P>" >>$strfile
1052 # Debug2 log messages
1053 count
=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1054 if test $count = 0; then
1055 echo "FAIL: $count debug2 messages, expected more than 0."
1056 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
1057 fail
=`expr $fail + 1`
1059 echo "PASS: $count debug2 messages."
1060 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
1067 echo "<H1><A NAME='LOGS'>4 - Log Files</A></H1>" >>$strfile
1069 echo "<H2><A NAME='access_log'>access_log</A></H2>" >>$strfile
1070 echo "<PRE>" >>$strfile
1071 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/access_log
>>$strfile
1072 echo "</PRE>" >>$strfile
1074 echo "<H2><A NAME='error_log'>error_log</A></H2>" >>$strfile
1075 echo "<PRE>" >>$strfile
1076 $GREP -v '^d' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1077 echo "</PRE>" >>$strfile
1079 echo "<H2><A NAME='page_log'>page_log</A></H2>" >>$strfile
1080 echo "<PRE>" >>$strfile
1081 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/page_log
>>$strfile
1082 echo "</PRE>" >>$strfile
1085 # Format the reports and tell the user where to find them...
1088 cat str-trailer.html
>>$strfile
1092 if test $fail != 0; then
1093 echo "$fail tests failed."
1095 if test -d $root/.svn
; then
1096 cp $BASE/log
/error_log error_log-r
$rev-$user
1098 cp $BASE/log
/error_log error_log-
$date-$user
1103 echo "All tests were successful."
1106 echo "Log files can be found in $BASE/log."
1107 echo "A HTML report was created in $strfile."
1110 if test $fail != 0; then
1111 echo "Copies of the error_log and `basename $strfile` files are in"