5 # Perform the complete set of IPP compliance tests specified in the
6 # CUPS Software Test Plan.
8 # Copyright 2007-2014 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 # Don't allow "make check" or "make test" to be run by root...
24 if test "x`id -u`" = x0
; then
25 echo Please run this as a normal user. Not supported when run as root.
30 # Force the permissions of the files we create...
36 # Make the IPP test program...
42 # Solaris has a non-POSIX grep in /bin...
45 if test -x /usr
/xpg
4/bin
/grep; then
46 GREP
=/usr
/xpg
4/bin
/grep
52 # Figure out the proper echo options...
55 if (echo "testing\c"; echo 1,2,3) |
$GREP c
>/dev
/null
; then
67 echo "Welcome to the CUPS Automated Test Script."
69 echo "Before we begin, it is important that you understand that the larger"
70 echo "tests require significant amounts of RAM and disk space. If you"
71 echo "attempt to run one of the big tests on a system that lacks sufficient"
72 echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
73 echo "more system processes that you've grown attached to, like the X"
74 echo "server. The question you may want to ask yourself before running a"
75 echo "large test is: Do you feel lucky?"
77 echo "OK, now that we have the Dirty Harry quote out of the way, please"
78 echo "choose the type of test you wish to perform:"
80 echo "0 - No testing, keep the scheduler running for me (all systems)"
81 echo "1 - Basic conformance test, no load testing (all systems)"
82 echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
83 echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
84 echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
86 echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
88 if test $# -gt 0; then
98 echo "Running in test mode (0)"
106 echo "Running the medium tests (2)"
114 echo "Running the extreme tests (3)"
122 echo "Running the torture tests (4)"
130 echo "Running the timid tests (1)"
140 # See if we want to do SSL testing...
144 echo "Now you can choose whether to create a SSL/TLS encryption key and"
145 echo "certificate for testing; these tests currently require the OpenSSL"
148 echo "0 - Do not do SSL/TLS encryption tests"
149 echo "1 - Test but do not require encryption"
150 echo "2 - Test and require encryption"
152 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
154 if test $# -gt 0; then
164 echo "Will test but not require encryption (1)"
167 echo "Will test and require encryption (2)"
170 echo "Not using SSL/TLS (0)"
176 # Information for the server/tests...
180 if test -z "$user"; then
181 if test -x /usr
/ucb
/whoami
; then
182 user
=`/usr/ucb/whoami`
187 if test -z "$user"; then
192 port
="${CUPS_TESTPORT:=8631}"
195 CUPS_TESTROOT
="$root"; export CUPS_TESTROOT
197 BASE
="${CUPS_TESTBASE:=}"
198 if test -z "$BASE"; then
199 if test -d /private
/tmp
; then
200 BASE
=/private
/tmp
/cups-
$user
208 # Make sure that the LPDEST and PRINTER environment variables are
209 # not included in the environment that is passed to the tests. These
210 # will usually cause tests to fail erroneously...
217 # See if we want to use valgrind...
221 echo "This test script can use the Valgrind software from:"
223 echo " http://developer.kde.org/~sewardj/"
225 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
227 if test $# -gt 0; then
235 case "$usevalgrind" in
237 VALGRIND
="valgrind --tool=memcheck --log-file=$BASE/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes"
238 if test `uname` = Darwin
; then
239 VALGRIND
="$VALGRIND --dsymutil=yes"
242 echo "Using Valgrind; log files can be found in $BASE/log..."
252 # See if we want to do debug logging of the libraries...
256 echo "If CUPS was built with the --enable-debug-printfs configure option, you"
257 echo "can enable debug logging of the libraries."
259 echo $ac_n "Enter Y or a number from 0 to 9 to enable debug logging or N to not: [N] $ac_c"
261 if test $# -gt 0; then
269 case "$usedebugprintfs" in
271 echo "Enabling debug printfs (level 5); log files can be found in $BASE/log..."
272 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
273 CUPS_DEBUG_LEVEL
=5; export CUPS_DEBUG_LEVEL
274 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
277 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9)
278 echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in $BASE/log..."
279 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
280 CUPS_DEBUG_LEVEL
="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
281 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
289 # Start by creating temporary directories for the tests...
292 echo "Creating directories for test..."
297 mkdir
$BASE/bin
/backend
298 mkdir
$BASE/bin
/driver
299 mkdir
$BASE/bin
/filter
302 mkdir
$BASE/share
/banners
303 mkdir
$BASE/share
/drv
304 mkdir
$BASE/share
/locale
305 for file in ..
/locale
/cups_
*.po
; do
306 loc
=`basename $file .po | cut -c 6-`
307 mkdir
$BASE/share
/locale
/$loc
308 ln -s $root/locale
/cups_
$loc.po
$BASE/share
/locale
/$loc
309 ln -s $root/locale
/ppdc_
$loc.po
$BASE/share
/locale
/$loc
311 mkdir
$BASE/share
/mime
312 mkdir
$BASE/share
/model
313 mkdir
$BASE/share
/ppdc
314 mkdir
$BASE/interfaces
318 mkdir
$BASE/spool
/temp
321 ln -s $root/backend
/dnssd
$BASE/bin
/backend
322 ln -s $root/backend
/http
$BASE/bin
/backend
323 ln -s $root/backend
/ipp
$BASE/bin
/backend
324 ln -s $root/backend
/lpd
$BASE/bin
/backend
325 ln -s $root/backend
/mdns
$BASE/bin
/backend
326 ln -s $root/backend
/pseudo
$BASE/bin
/backend
327 ln -s $root/backend
/snmp
$BASE/bin
/backend
328 ln -s $root/backend
/socket
$BASE/bin
/backend
329 ln -s $root/backend
/usb
$BASE/bin
/backend
330 ln -s $root/cgi-bin
$BASE/bin
331 ln -s $root/monitor
$BASE/bin
332 ln -s $root/notifier
$BASE/bin
333 ln -s $root/scheduler
$BASE/bin
/daemon
334 ln -s $root/filter
/commandtops
$BASE/bin
/filter
335 ln -s $root/filter
/gziptoany
$BASE/bin
/filter
336 ln -s $root/filter
/pstops
$BASE/bin
/filter
337 ln -s $root/filter
/rastertoepson
$BASE/bin
/filter
338 ln -s $root/filter
/rastertohp
$BASE/bin
/filter
339 ln -s $root/filter
/rastertolabel
$BASE/bin
/filter
340 ln -s $root/filter
/rastertopwg
$BASE/bin
/filter
341 cat >$BASE/share
/banners
/standard
<<EOF
345 Job: {?printer-name}-{?job-id}
346 Owner: {?job-originating-user-name}
348 Pages: {?job-impressions}
353 cat >$BASE/share
/banners
/classified
<<EOF
354 ==== Classified - Do Not Disclose ====
357 Job: {?printer-name}-{?job-id}
358 Owner: {?job-originating-user-name}
360 Pages: {?job-impressions}
363 ==== Classified - Do Not Disclose ====
365 ln -s $root/data
$BASE/share
366 ln -s $root/ppdc
/sample.drv
$BASE/share
/drv
367 ln -s $root/conf
/mime.types
$BASE/share
/mime
368 ln -s $root/conf
/mime.convs
$BASE/share
/mime
369 ln -s $root/data
/*.h
$BASE/share
/ppdc
370 ln -s $root/data
/*.defs
$BASE/share
/ppdc
371 ln -s $root/templates
$BASE/share
374 # Local filters and configuration files...
378 # instfilter src dst format
380 # See if the filter exists in a standard location; if so, make a
381 # symlink, otherwise create a dummy script for the specified format.
387 for dir
in /usr
/local
/libexec
/cups
/filter
/usr
/libexec
/cups
/filter
/usr
/lib
/cups
/filter
; do
388 if test -x "$dir/$src"; then
389 ln -s "$dir/$src" "$BASE/bin/filter/$dst"
394 # Source filter not present, create a dummy filter
397 ln -s gziptoany
"$BASE/bin/filter/$dst"
400 cat >"$BASE/bin/filter/$dst" <<EOF
406 *media=a4* | *media=iso_a4* | *PageSize=A4*)
407 cat "$root/test/onepage-a4.pdf"
410 cat "$root/test/onepage-letter.pdf"
414 chmod +x
"$BASE/bin/filter/$dst"
417 cat >"$BASE/bin/filter/$dst" <<EOF
423 *media=a4* | *media=iso_a4* | *PageSize=A4*)
424 cat "$root/test/onepage-a4.ps"
427 cat "$root/test/onepage-letter.ps"
431 chmod +x
"$BASE/bin/filter/$dst"
434 cat >"$BASE/bin/filter/$dst" <<EOF
440 *media=a4* | *media=iso_a4* | *PageSize=A4*)
441 gunzip -c "$root/test/onepage-a4-300-black-1.pwg.gz"
444 gunzip -c "$root/test/onepage-letter-300-black-1.pwg.gz"
448 chmod +x
"$BASE/bin/filter/$dst"
453 ln -s $root/test
/test.convs
$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 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
493 PassEnv DYLD_INSERT_LIBRARIES
496 AccessLogLevel actions
499 PreserveJobHistory Yes
509 if test $testtype = 0; then
510 echo WebInterface
yes >>$BASE/cupsd.conf
513 cat >$BASE/cups-files.conf
<<EOF
522 FontPath $BASE/share/fonts
523 DocumentRoot $root/doc
524 RequestRoot $BASE/spool
525 TempDir $BASE/spool/temp
526 AccessLog $BASE/log/access_log
527 ErrorLog $BASE/log/error_log
528 PageLog $BASE/log/page_log
531 if test $ssltype != 0 -a `uname` = Darwin
; then
532 echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
536 # Setup lots of test queues - half with PPD files, half without...
539 echo "Creating printers.conf for test..."
542 while test $i -le $nprinters1; do
543 cat >>$BASE/printers.conf
<<EOF
546 DeviceURI file:/dev/null
547 Info Test PS printer $i
549 Location CUPS test suite
551 StateMessage Printer $1 is idle.
555 cp testps.ppd
$BASE/ppd
/test-
$i.ppd
560 while test $i -le $nprinters2; do
561 cat >>$BASE/printers.conf
<<EOF
564 DeviceURI file:/dev/null
565 Info Test raw printer $i
567 Location CUPS test suite
569 StateMessage Printer $1 is idle.
576 if test -f $BASE/printers.conf
; then
577 cp $BASE/printers.conf
$BASE/printers.conf.orig
579 touch $BASE/printers.conf.orig
586 echo "Setting up environment variables for test..."
588 if test "x$LD_LIBRARY_PATH" = x
; then
589 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
591 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$LD_LIBRARY_PATH"
594 export LD_LIBRARY_PATH
596 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"
597 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
598 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
602 if test "x$DYLD_LIBRARY_PATH" = x
; then
603 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
605 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$DYLD_LIBRARY_PATH"
608 export DYLD_LIBRARY_PATH
610 if test "x$SHLIB_PATH" = x
; then
611 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
613 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$SHLIB_PATH"
618 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
619 CUPS_SERVER
=localhost
:$port; export CUPS_SERVER
620 CUPS_SERVERROOT
=$BASE; export CUPS_SERVERROOT
621 CUPS_STATEDIR
=$BASE; export CUPS_STATEDIR
622 CUPS_DATADIR
=$BASE/share
; export CUPS_DATADIR
623 LOCALEDIR
=$BASE/share
/locale
; export LOCALEDIR
626 # Set a new home directory to avoid getting user options mixed in...
633 # Force POSIX locale for tests...
643 # Start the server; run as foreground daemon in the background...
646 echo "Starting scheduler:"
647 echo " $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
650 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
651 DYLD_INSERT_LIBRARIES
=/usr
/lib
/libgmalloc.dylib MallocStackLogging
=1 ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
653 $VALGRIND ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
658 if test "x$testtype" = x0
; then
659 # Not running tests...
660 echo "Scheduler is PID $cupsd and is listening on port 8631."
663 # Create a helper script to run programs with...
664 runcups
="$BASE/runcups"
666 echo "#!/bin/sh" >$runcups
667 echo "# Helper script for running CUPS test instance." >>$runcups
669 echo "# Set required environment variables..." >>$runcups
670 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
671 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
672 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
673 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
674 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
675 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
676 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
677 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
678 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
679 if test "x$CUPS_DEBUG_LEVEL" != x
; then
680 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
681 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
682 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
685 echo "# Run command..." >>$runcups
686 echo "exec \"\$@\"" >>$runcups
690 echo "The $runcups helper script can be used to test programs"
691 echo "with the server."
695 if test $argcount -eq 0; then
696 echo "Scheduler is PID $cupsd; run debugger now if you need to."
698 echo $ac_n "Press ENTER to continue... $ac_c"
701 echo "Scheduler is PID $cupsd."
705 IPP_PORT
=$port; export IPP_PORT
708 running
=`../systemv/lpstat -r 2>/dev/null`
709 if test "x$running" = "xscheduler is running"; then
713 echo "Waiting for scheduler to become ready..."
718 # Create the test report source file...
721 date=`date "+%Y-%m-%d"`
723 if test -d $root/.svn
; then
724 rev=`svn info . | grep Revision: | awk '{print $2}'`
725 strfile
=$BASE/cups-str-2.1
-r$rev-$user.html
727 strfile
=$BASE/cups-str-2.1
-$date-$user.html
731 cat str-header.html
>$strfile
734 # Run the IPP tests...
738 echo "Running IPP compliance tests..."
740 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
741 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
742 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
743 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
744 echo "<PRE>" >>$strfile
747 for file in 4*.
test ipp-2.1.
test; do
748 echo $ac_n "Performing $file: $ac_c"
751 if test $file = ipp-2.1.
test; then
752 uri
="ipp://localhost:$port/printers/Test1"
753 options
="-V 2.1 -d NOPRINT=1 -f testfile.ps"
755 uri
="ipp://localhost:$port/printers"
758 $VALGRIND .
/ipptool
-tI $options $uri $file >> $strfile
761 if test $status != 0; then
763 fail
=`expr $fail + 1`
769 echo "</PRE>" >>$strfile
772 # Run the command tests...
776 echo "Running command tests..."
778 echo "<H1>2 - Command Tests</H1>" >>$strfile
779 echo "<P>This section provides the results to the command tests" >>$strfile
780 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
781 echo $date by
$user on
`hostname`.
>>$strfile
782 echo "<PRE>" >>$strfile
784 for file in 5*.sh
; do
785 echo $ac_n "Performing $file: $ac_c"
787 echo "\"$file\":" >>$strfile
789 sh
$file $pjobs $pprinters >> $strfile
792 if test $status != 0; then
794 fail
=`expr $fail + 1`
801 # Log all allocations made by the scheduler...
803 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
804 malloc_history
$cupsd -callTree -showContent >$BASE/log
/malloc_log
2>&1
808 # Restart the server...
811 echo $ac_n "Performing restart test: $ac_c"
813 echo "\"5.10-restart\":" >>$strfile
820 running
=`../systemv/lpstat -r 2>/dev/null`
821 if test "x$running" = "xscheduler is running"; then
826 description
="`../systemv/lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
827 if test "x$description" != "xTest Printer 1"; then
828 echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
829 echo "FAIL (got '$description', expected 'Test Printer 1')"
830 fail
=`expr $fail + 1`
832 echo "Passed." >>$strfile
836 echo "</PRE>" >>$strfile
845 # Append the log files for post-mortim...
848 echo "<H1>3 - Log Files</H1>" >>$strfile
856 echo "<H2>Summary</H2>" >>$strfile
859 count
=`ls -1 $BASE/spool | wc -l`
860 count
=`expr $count - 1`
861 if test $count != 0; then
862 echo "FAIL: $count job control files were not purged."
863 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
864 fail
=`expr $fail + 1`
866 echo "PASS: All job control files purged."
867 echo "<P>PASS: All job control files purged.</P>" >>$strfile
870 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
871 count
=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
872 expected
=`expr $pjobs \* 2 + 34`
873 expected2
=`expr $expected + 2`
874 if test $count -lt $expected -a $count -gt $expected2; then
875 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
876 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
877 fail
=`expr $fail + 1`
879 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
880 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
883 # Paged printed on Test2
884 count
=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
885 expected
=`expr $pjobs \* 2 + 3`
886 if test $count != $expected; then
887 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
888 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
889 fail
=`expr $fail + 1`
891 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
892 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
895 # Paged printed on Test3
896 count
=`$GREP '^Test3 ' $BASE/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
898 if test $count != $expected; then
899 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
900 echo "<P>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</P>" >>$strfile
901 fail
=`expr $fail + 1`
903 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
904 echo "<P>PASS: Printer 'Test3' correctly produced $count page(s).</P>" >>$strfile
908 count
=`wc -l $BASE/log/access_log | awk '{print $1}'`
909 expected
=`expr 37 + 18 + 29 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
910 if test $count != $expected; then
911 echo "FAIL: $count requests logged, expected $expected."
912 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
913 fail
=`expr $fail + 1`
915 echo "PASS: $count requests logged."
916 echo "<P>PASS: $count requests logged.</P>" >>$strfile
919 # Did CUPS-Get-Default get logged?
920 if $GREP -q CUPS-Get-Default
$BASE/log
/access_log
; then
921 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
922 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
923 echo "<PRE>" >>$strfile
924 $GREP CUPS-Get-Default
$BASE/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
925 echo "</PRE>" >>$strfile
926 fail
=`expr $fail + 1`
928 echo "PASS: CUPS-Get-Default not logged."
929 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
932 # Emergency log messages
933 count
=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
934 if test $count != 0; then
935 echo "FAIL: $count emergency messages, expected 0."
936 $GREP '^X ' $BASE/log
/error_log
937 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
938 echo "<PRE>" >>$strfile
939 $GREP '^X ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
940 echo "</PRE>" >>$strfile
941 fail
=`expr $fail + 1`
943 echo "PASS: $count emergency messages."
944 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
948 count
=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
949 if test $count != 0; then
950 echo "FAIL: $count alert messages, expected 0."
951 $GREP '^A ' $BASE/log
/error_log
952 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
953 echo "<PRE>" >>$strfile
954 $GREP '^A ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
955 echo "</PRE>" >>$strfile
956 fail
=`expr $fail + 1`
958 echo "PASS: $count alert messages."
959 echo "<P>PASS: $count alert messages.</P>" >>$strfile
962 # Critical log messages
963 count
=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
964 if test $count != 0; then
965 echo "FAIL: $count critical messages, expected 0."
966 $GREP '^C ' $BASE/log
/error_log
967 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
968 echo "<PRE>" >>$strfile
969 $GREP '^C ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
970 echo "</PRE>" >>$strfile
971 fail
=`expr $fail + 1`
973 echo "PASS: $count critical messages."
974 echo "<P>PASS: $count critical messages.</P>" >>$strfile
978 count
=`$GREP '^E ' $BASE/log/error_log | wc -l | awk '{print $1}'`
979 if test $count != 33; then
980 echo "FAIL: $count error messages, expected 33."
981 $GREP '^E ' $BASE/log
/error_log
982 echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
983 echo "<PRE>" >>$strfile
984 $GREP '^E ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
985 echo "</PRE>" >>$strfile
986 fail
=`expr $fail + 1`
988 echo "PASS: $count error messages."
989 echo "<P>PASS: $count error messages.</P>" >>$strfile
992 # Warning log messages
993 count
=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
994 if test $count != 18; then
995 echo "FAIL: $count warning messages, expected 18."
996 $GREP '^W ' $BASE/log
/error_log
997 echo "<P>FAIL: $count warning messages, expected 18.</P>" >>$strfile
998 echo "<PRE>" >>$strfile
999 $GREP '^W ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1000 echo "</PRE>" >>$strfile
1001 fail
=`expr $fail + 1`
1003 echo "PASS: $count warning messages."
1004 echo "<P>PASS: $count warning messages.</P>" >>$strfile
1007 # Notice log messages
1008 count
=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1009 if test $count != 0; then
1010 echo "FAIL: $count notice messages, expected 0."
1011 $GREP '^N ' $BASE/log
/error_log
1012 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
1013 echo "<PRE>" >>$strfile
1014 $GREP '^N ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1015 echo "</PRE>" >>$strfile
1016 fail
=`expr $fail + 1`
1018 echo "PASS: $count notice messages."
1019 echo "<P>PASS: $count notice messages.</P>" >>$strfile
1023 count
=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1024 if test $count = 0; then
1025 echo "FAIL: $count info messages, expected more than 0."
1026 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
1027 fail
=`expr $fail + 1`
1029 echo "PASS: $count info messages."
1030 echo "<P>PASS: $count info messages.</P>" >>$strfile
1033 # Debug log messages
1034 count
=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1035 if test $count = 0; then
1036 echo "FAIL: $count debug messages, expected more than 0."
1037 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
1038 fail
=`expr $fail + 1`
1040 echo "PASS: $count debug messages."
1041 echo "<P>PASS: $count debug messages.</P>" >>$strfile
1044 # Debug2 log messages
1045 count
=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1046 if test $count = 0; then
1047 echo "FAIL: $count debug2 messages, expected more than 0."
1048 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
1049 fail
=`expr $fail + 1`
1051 echo "PASS: $count debug2 messages."
1052 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
1056 echo "<H2>access_log</H2>" >>$strfile
1057 echo "<PRE>" >>$strfile
1058 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/access_log
>>$strfile
1059 echo "</PRE>" >>$strfile
1061 echo "<H2>error_log</H2>" >>$strfile
1062 echo "<PRE>" >>$strfile
1063 $GREP -v '^d' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1064 echo "</PRE>" >>$strfile
1066 echo "<H2>page_log</H2>" >>$strfile
1067 echo "<PRE>" >>$strfile
1068 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/page_log
>>$strfile
1069 echo "</PRE>" >>$strfile
1072 # Format the reports and tell the user where to find them...
1075 cat str-trailer.html
>>$strfile
1079 if test $fail != 0; then
1080 echo "$fail tests failed."
1082 if test -d $root/.svn
; then
1083 cp $BASE/log
/error_log error_log-r
$rev-$user
1085 cp $BASE/log
/error_log error_log-
$date-$user
1090 echo "All tests were successful."
1093 echo "Log files can be found in $BASE/log."
1094 echo "A HTML report was created in $strfile."
1097 if test $fail != 0; then
1098 echo "Copies of the error_log and `basename $strfile` files are in"