3 # Perform the complete set of IPP compliance tests specified in the
4 # CUPS Software Test Plan.
6 # Copyright 2007-2015 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
494 PassEnv DYLD_INSERT_LIBRARIES
497 AccessLogLevel actions
500 PreserveJobHistory Yes
510 if test $testtype = 0; then
511 echo WebInterface
yes >>$BASE/cupsd.conf
514 cat >$BASE/cups-files.conf
<<EOF
523 FontPath $BASE/share/fonts
524 DocumentRoot $root/doc
525 RequestRoot $BASE/spool
526 TempDir $BASE/spool/temp
527 AccessLog $BASE/log/access_log
528 ErrorLog $BASE/log/error_log
529 PageLog $BASE/log/page_log
532 if test $ssltype != 0 -a `uname` = Darwin
; then
533 echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
537 # Setup lots of test queues - half with PPD files, half without...
540 echo "Creating printers.conf for test..."
543 while test $i -le $nprinters1; do
544 cat >>$BASE/printers.conf
<<EOF
547 DeviceURI file:/dev/null
548 Info Test PS printer $i
550 Location CUPS test suite
552 StateMessage Printer $1 is idle.
556 cp testps.ppd
$BASE/ppd
/test-
$i.ppd
561 while test $i -le $nprinters2; do
562 cat >>$BASE/printers.conf
<<EOF
565 DeviceURI file:/dev/null
566 Info Test raw printer $i
568 Location CUPS test suite
570 StateMessage Printer $1 is idle.
577 if test -f $BASE/printers.conf
; then
578 cp $BASE/printers.conf
$BASE/printers.conf.orig
580 touch $BASE/printers.conf.orig
587 echo "Setting up environment variables for test..."
589 if test "x$LD_LIBRARY_PATH" = x
; then
590 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
592 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$LD_LIBRARY_PATH"
595 export LD_LIBRARY_PATH
597 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"
598 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
599 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
603 if test "x$DYLD_LIBRARY_PATH" = x
; then
604 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
606 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$DYLD_LIBRARY_PATH"
609 export DYLD_LIBRARY_PATH
611 if test "x$SHLIB_PATH" = x
; then
612 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
614 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$SHLIB_PATH"
619 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
620 CUPS_SERVER
=localhost
:$port; export CUPS_SERVER
621 CUPS_SERVERROOT
=$BASE; export CUPS_SERVERROOT
622 CUPS_STATEDIR
=$BASE; export CUPS_STATEDIR
623 CUPS_DATADIR
=$BASE/share
; export CUPS_DATADIR
624 LOCALEDIR
=$BASE/share
/locale
; export LOCALEDIR
627 # Set a new home directory to avoid getting user options mixed in...
634 # Force POSIX locale for tests...
644 # Start the server; run as foreground daemon in the background...
647 echo "Starting scheduler:"
648 echo " $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
651 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
652 DYLD_INSERT_LIBRARIES
=/usr
/lib
/libgmalloc.dylib MallocStackLogging
=1 ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
654 $VALGRIND ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
659 if test "x$testtype" = x0
; then
660 # Not running tests...
661 echo "Scheduler is PID $cupsd and is listening on port $port."
664 # Create a helper script to run programs with...
665 runcups
="$BASE/runcups"
667 echo "#!/bin/sh" >$runcups
668 echo "# Helper script for running CUPS test instance." >>$runcups
670 echo "# Set required environment variables..." >>$runcups
671 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
672 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
673 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
674 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
675 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
676 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
677 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
678 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
679 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
680 if test "x$CUPS_DEBUG_LEVEL" != x
; then
681 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
682 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
683 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
686 echo "# Run command..." >>$runcups
687 echo "exec \"\$@\"" >>$runcups
691 echo "The $runcups helper script can be used to test programs"
692 echo "with the server."
696 if test $argcount -eq 0; then
697 echo "Scheduler is PID $cupsd; run debugger now if you need to."
699 echo $ac_n "Press ENTER to continue... $ac_c"
702 echo "Scheduler is PID $cupsd."
706 IPP_PORT
=$port; export IPP_PORT
709 running
=`../systemv/lpstat -r 2>/dev/null`
710 if test "x$running" = "xscheduler is running"; then
714 echo "Waiting for scheduler to become ready..."
719 # Create the test report source file...
722 date=`date "+%Y-%m-%d"`
724 if test -d $root/.svn
; then
725 rev=`svn info . | grep Revision: | awk '{print $2}'`
726 strfile
=$BASE/cups-str-2.2
-r$rev-$user.html
728 strfile
=$BASE/cups-str-2.2
-$date-$user.html
732 cat str-header.html
>$strfile
735 # Run the IPP tests...
739 echo "Running IPP compliance tests..."
741 echo "<H1><A NAME='IPP'>1 - IPP Compliance Tests</A></H1>" >>$strfile
742 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
743 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
744 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
745 echo "<PRE>" >>$strfile
748 for file in 4*.
test ipp-2.1.
test; do
749 echo $ac_n "Performing $file: $ac_c"
752 if test $file = ipp-2.1.
test; then
753 uri
="ipp://localhost:$port/printers/Test1"
754 options
="-V 2.1 -d NOPRINT=1 -f testfile.ps"
756 uri
="ipp://localhost:$port/printers"
759 $VALGRIND .
/ipptool
-tI $options $uri $file >> $strfile
762 if test $status != 0; then
764 fail
=`expr $fail + 1`
770 echo "</PRE>" >>$strfile
773 # Run the command tests...
777 echo "Running command tests..."
779 echo "<H1><A NAME='COMMAND'>2 - Command Tests</A></H1>" >>$strfile
780 echo "<P>This section provides the results to the command tests" >>$strfile
781 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
782 echo $date by
$user on
`hostname`.
>>$strfile
783 echo "<PRE>" >>$strfile
785 for file in 5*.sh
; do
786 echo $ac_n "Performing $file: $ac_c"
788 echo "\"$file\":" >>$strfile
790 sh
$file $pjobs $pprinters >> $strfile
793 if test $status != 0; then
795 fail
=`expr $fail + 1`
802 # Log all allocations made by the scheduler...
804 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
805 malloc_history
$cupsd -callTree -showContent >$BASE/log
/malloc_log
2>&1
809 # Restart the server...
812 echo $ac_n "Performing restart test: $ac_c"
814 echo "\"5.10-restart\":" >>$strfile
821 running
=`../systemv/lpstat -r 2>/dev/null`
822 if test "x$running" = "xscheduler is running"; then
827 description
="`../systemv/lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
828 if test "x$description" != "xTest Printer 1"; then
829 echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
830 echo "FAIL (got '$description', expected 'Test Printer 1')"
831 fail
=`expr $fail + 1`
833 echo "Passed." >>$strfile
837 echo "</PRE>" >>$strfile
853 echo "<H1><A NAME='SUMMARY'>3 - Test Summary</A></H1>" >>$strfile
855 if test $cupsdstatus != 0; then
856 echo "FAIL: cupsd failed with exit status $cupsdstatus."
857 echo "<p>FAIL: cupsd failed with exit status $cupsdstatus.</p>" >>$strfile
858 fail
=`expr $fail + 1`
860 echo "PASS: cupsd exited with no errors."
861 echo "<p>PASS: cupsd exited with no errors.</p>" >>$strfile
865 count
=`ls -1 $BASE/spool | wc -l`
866 count
=`expr $count - 1`
867 if test $count != 0; then
868 echo "FAIL: $count job control files were not purged."
869 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
870 fail
=`expr $fail + 1`
872 echo "PASS: All job control files purged."
873 echo "<P>PASS: All job control files purged.</P>" >>$strfile
876 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
877 count
=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
878 expected
=`expr $pjobs \* 2 + 34`
879 expected2
=`expr $expected + 2`
880 if test $count -lt $expected -a $count -gt $expected2; then
881 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
882 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
883 fail
=`expr $fail + 1`
885 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
886 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
889 # Paged printed on Test2
890 count
=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
891 expected
=`expr $pjobs \* 2 + 3`
892 if test $count != $expected; then
893 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
894 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
895 fail
=`expr $fail + 1`
897 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
898 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
901 # Paged printed on Test3
902 count
=`$GREP '^Test3 ' $BASE/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
904 if test $count != $expected; then
905 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
906 echo "<P>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</P>" >>$strfile
907 fail
=`expr $fail + 1`
909 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
910 echo "<P>PASS: Printer 'Test3' correctly produced $count page(s).</P>" >>$strfile
914 count
=`wc -l $BASE/log/access_log | awk '{print $1}'`
915 expected
=`expr 37 + 18 + 30 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
916 if test $count != $expected; then
917 echo "FAIL: $count requests logged, expected $expected."
918 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
919 fail
=`expr $fail + 1`
921 echo "PASS: $count requests logged."
922 echo "<P>PASS: $count requests logged.</P>" >>$strfile
925 # Did CUPS-Get-Default get logged?
926 if $GREP -q CUPS-Get-Default
$BASE/log
/access_log
; then
927 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
928 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
929 echo "<PRE>" >>$strfile
930 $GREP CUPS-Get-Default
$BASE/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
931 echo "</PRE>" >>$strfile
932 fail
=`expr $fail + 1`
934 echo "PASS: CUPS-Get-Default not logged."
935 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
938 # Emergency log messages
939 count
=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
940 if test $count != 0; then
941 echo "FAIL: $count emergency messages, expected 0."
942 $GREP '^X ' $BASE/log
/error_log
943 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
944 echo "<PRE>" >>$strfile
945 $GREP '^X ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
946 echo "</PRE>" >>$strfile
947 fail
=`expr $fail + 1`
949 echo "PASS: $count emergency messages."
950 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
954 count
=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
955 if test $count != 0; then
956 echo "FAIL: $count alert messages, expected 0."
957 $GREP '^A ' $BASE/log
/error_log
958 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
959 echo "<PRE>" >>$strfile
960 $GREP '^A ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
961 echo "</PRE>" >>$strfile
962 fail
=`expr $fail + 1`
964 echo "PASS: $count alert messages."
965 echo "<P>PASS: $count alert messages.</P>" >>$strfile
968 # Critical log messages
969 count
=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
970 if test $count != 0; then
971 echo "FAIL: $count critical messages, expected 0."
972 $GREP '^C ' $BASE/log
/error_log
973 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
974 echo "<PRE>" >>$strfile
975 $GREP '^C ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
976 echo "</PRE>" >>$strfile
977 fail
=`expr $fail + 1`
979 echo "PASS: $count critical messages."
980 echo "<P>PASS: $count critical messages.</P>" >>$strfile
984 count
=`$GREP '^E ' $BASE/log/error_log | wc -l | awk '{print $1}'`
985 if test $count != 33; then
986 echo "FAIL: $count error messages, expected 33."
987 $GREP '^E ' $BASE/log
/error_log
988 echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
989 echo "<PRE>" >>$strfile
990 $GREP '^E ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
991 echo "</PRE>" >>$strfile
992 fail
=`expr $fail + 1`
994 echo "PASS: $count error messages."
995 echo "<P>PASS: $count error messages.</P>" >>$strfile
998 # Warning log messages
999 count
=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
1000 if test $count != 8; then
1001 echo "FAIL: $count warning messages, expected 8."
1002 $GREP '^W ' $BASE/log
/error_log
1003 echo "<P>FAIL: $count warning messages, expected 8.</P>" >>$strfile
1004 echo "<PRE>" >>$strfile
1005 $GREP '^W ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1006 echo "</PRE>" >>$strfile
1007 fail
=`expr $fail + 1`
1009 echo "PASS: $count warning messages."
1010 echo "<P>PASS: $count warning messages.</P>" >>$strfile
1013 # Notice log messages
1014 count
=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1015 if test $count != 0; then
1016 echo "FAIL: $count notice messages, expected 0."
1017 $GREP '^N ' $BASE/log
/error_log
1018 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
1019 echo "<PRE>" >>$strfile
1020 $GREP '^N ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1021 echo "</PRE>" >>$strfile
1022 fail
=`expr $fail + 1`
1024 echo "PASS: $count notice messages."
1025 echo "<P>PASS: $count notice messages.</P>" >>$strfile
1029 count
=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1030 if test $count = 0; then
1031 echo "FAIL: $count info messages, expected more than 0."
1032 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
1033 fail
=`expr $fail + 1`
1035 echo "PASS: $count info messages."
1036 echo "<P>PASS: $count info messages.</P>" >>$strfile
1039 # Debug log messages
1040 count
=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1041 if test $count = 0; then
1042 echo "FAIL: $count debug messages, expected more than 0."
1043 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
1044 fail
=`expr $fail + 1`
1046 echo "PASS: $count debug messages."
1047 echo "<P>PASS: $count debug messages.</P>" >>$strfile
1050 # Debug2 log messages
1051 count
=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1052 if test $count = 0; then
1053 echo "FAIL: $count debug2 messages, expected more than 0."
1054 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
1055 fail
=`expr $fail + 1`
1057 echo "PASS: $count debug2 messages."
1058 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
1065 echo "<H1><A NAME='LOGS'>4 - Log Files</A></H1>" >>$strfile
1067 echo "<H2><A NAME='access_log'>access_log</A></H2>" >>$strfile
1068 echo "<PRE>" >>$strfile
1069 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/access_log
>>$strfile
1070 echo "</PRE>" >>$strfile
1072 echo "<H2><A NAME='error_log'>error_log</A></H2>" >>$strfile
1073 echo "<PRE>" >>$strfile
1074 $GREP -v '^d' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1075 echo "</PRE>" >>$strfile
1077 echo "<H2><A NAME='page_log'>page_log</A></H2>" >>$strfile
1078 echo "<PRE>" >>$strfile
1079 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/page_log
>>$strfile
1080 echo "</PRE>" >>$strfile
1083 # Format the reports and tell the user where to find them...
1086 cat str-trailer.html
>>$strfile
1090 if test $fail != 0; then
1091 echo "$fail tests failed."
1093 if test -d $root/.svn
; then
1094 cp $BASE/log
/error_log error_log-r
$rev-$user
1096 cp $BASE/log
/error_log error_log-
$date-$user
1101 echo "All tests were successful."
1104 echo "Log files can be found in $BASE/log."
1105 echo "A HTML report was created in $strfile."
1108 if test $fail != 0; then
1109 echo "Copies of the error_log and `basename $strfile` files are in"