3 # "$Id: run-stp-tests.sh 12151 2014-09-04 00:57:41Z msweet $"
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
195 CUPS_TESTROOT
="$root"; export CUPS_TESTROOT
197 if test -d /private
/tmp
; then
198 BASE
=/private
/tmp
/cups-
$user
205 # Make sure that the LPDEST and PRINTER environment variables are
206 # not included in the environment that is passed to the tests. These
207 # will usually cause tests to fail erroneously...
214 # See if we want to use valgrind...
218 echo "This test script can use the Valgrind software from:"
220 echo " http://developer.kde.org/~sewardj/"
222 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
224 if test $# -gt 0; then
232 case "$usevalgrind" in
234 VALGRIND
="valgrind --tool=memcheck --log-file=$BASE/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes"
235 if test `uname` = Darwin
; then
236 VALGRIND
="$VALGRIND --dsymutil=yes"
239 echo "Using Valgrind; log files can be found in $BASE/log..."
249 # See if we want to do debug logging of the libraries...
253 echo "If CUPS was built with the --enable-debug-printfs configure option, you"
254 echo "can enable debug logging of the libraries."
256 echo $ac_n "Enter Y or a number from 0 to 9 to enable debug logging or N to not: [N] $ac_c"
258 if test $# -gt 0; then
266 case "$usedebugprintfs" in
268 echo "Enabling debug printfs (level 5); log files can be found in $BASE/log..."
269 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
270 CUPS_DEBUG_LEVEL
=5; export CUPS_DEBUG_LEVEL
271 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
274 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9)
275 echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in $BASE/log..."
276 CUPS_DEBUG_LOG
="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
277 CUPS_DEBUG_LEVEL
="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
278 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
286 # Start by creating temporary directories for the tests...
289 echo "Creating directories for test..."
294 mkdir
$BASE/bin
/backend
295 mkdir
$BASE/bin
/driver
296 mkdir
$BASE/bin
/filter
299 mkdir
$BASE/share
/banners
300 mkdir
$BASE/share
/drv
301 mkdir
$BASE/share
/locale
302 for file in ..
/locale
/cups_
*.po
; do
303 loc
=`basename $file .po | cut -c 6-`
304 mkdir
$BASE/share
/locale
/$loc
305 ln -s $root/locale
/cups_
$loc.po
$BASE/share
/locale
/$loc
306 ln -s $root/locale
/ppdc_
$loc.po
$BASE/share
/locale
/$loc
308 mkdir
$BASE/share
/mime
309 mkdir
$BASE/share
/model
310 mkdir
$BASE/share
/ppdc
311 mkdir
$BASE/interfaces
315 mkdir
$BASE/spool
/temp
318 ln -s $root/backend
/dnssd
$BASE/bin
/backend
319 ln -s $root/backend
/http
$BASE/bin
/backend
320 ln -s $root/backend
/ipp
$BASE/bin
/backend
321 ln -s $root/backend
/lpd
$BASE/bin
/backend
322 ln -s $root/backend
/mdns
$BASE/bin
/backend
323 ln -s $root/backend
/pseudo
$BASE/bin
/backend
324 ln -s $root/backend
/snmp
$BASE/bin
/backend
325 ln -s $root/backend
/socket
$BASE/bin
/backend
326 ln -s $root/backend
/usb
$BASE/bin
/backend
327 ln -s $root/cgi-bin
$BASE/bin
328 ln -s $root/monitor
$BASE/bin
329 ln -s $root/notifier
$BASE/bin
330 ln -s $root/scheduler
$BASE/bin
/daemon
331 ln -s $root/filter
/commandtops
$BASE/bin
/filter
332 ln -s $root/filter
/gziptoany
$BASE/bin
/filter
333 ln -s $root/filter
/pstops
$BASE/bin
/filter
334 ln -s $root/filter
/rastertoepson
$BASE/bin
/filter
335 ln -s $root/filter
/rastertohp
$BASE/bin
/filter
336 ln -s $root/filter
/rastertolabel
$BASE/bin
/filter
337 ln -s $root/filter
/rastertopwg
$BASE/bin
/filter
339 ln -s $root/data
/classified
$BASE/share
/banners
340 ln -s $root/data
/confidential
$BASE/share
/banners
341 ln -s $root/data
/secret
$BASE/share
/banners
342 ln -s $root/data
/standard
$BASE/share
/banners
343 ln -s $root/data
/topsecret
$BASE/share
/banners
344 ln -s $root/data
/unclassified
$BASE/share
/banners
345 ln -s $root/data
$BASE/share
346 ln -s $root/ppdc
/sample.drv
$BASE/share
/drv
347 ln -s $root/conf
/mime.types
$BASE/share
/mime
348 ln -s $root/conf
/mime.convs
$BASE/share
/mime
349 ln -s $root/data
/*.h
$BASE/share
/ppdc
350 ln -s $root/data
/*.defs
$BASE/share
/ppdc
351 ln -s $root/templates
$BASE/share
354 # Local filters and configuration files...
358 # instfilter src dst format
360 # See if the filter exists in a standard location; if so, make a
361 # symlink, otherwise create a dummy script for the specified format.
367 for dir
in /usr
/libexec
/cups
/filter
/usr
/lib
/cups
/filter
; do
368 if test -x "$dir/$src"; then
369 ln -s "$dir/$src" "$BASE/bin/filter/$dst"
374 # Source filter not present, create a dummy filter
377 ln -s gziptoany
"$BASE/bin/filter/$dst"
380 cat >"$BASE/bin/filter/$dst" <<EOF
383 *media=a4* | *media=iso_a4* | *PageSize=A4*)
384 cat "$root/test/onepage-a4.pdf"
387 cat "$root/test/onepage-letter.pdf"
391 chmod +x
"$BASE/bin/filter/$dst"
394 cat >"$BASE/bin/filter/$dst" <<EOF
397 *media=a4* | *media=iso_a4* | *PageSize=A4*)
398 cat "$root/test/onepage-a4.ps"
401 cat "$root/test/onepage-letter.ps"
405 chmod +x
"$BASE/bin/filter/$dst"
408 cat >"$BASE/bin/filter/$dst" <<EOF
411 *media=a4* | *media=iso_a4* | *PageSize=A4*)
412 gunzip -c "$root/test/onepage-a4-300-black-1.pwg.gz"
415 gunzip -c "$root/test/onepage-letter-300-black-1.pwg.gz"
419 chmod +x
"$BASE/bin/filter/$dst"
424 ln -s $root/test
/test.convs
$BASE/share
/mime
426 if test `uname` = Darwin
; then
427 instfilter cgbannertopdf bannertopdf pdf
428 instfilter cgimagetopdf imagetopdf pdf
429 instfilter cgpdftopdf pdftopdf passthru
430 instfilter cgpdftops pdftops ps
431 instfilter cgpdftoraster pdftoraster raster
432 instfilter cgtexttopdf texttopdf pdf
433 instfilter pstocupsraster pstoraster raster
434 instfilter pstopdffilter pstopdf pdf
436 instfilter bannertopdf bannertopdf pdf
437 instfilter bannertops bannertops ps
438 instfilter imagetopdf imagetopdf pdf
439 instfilter pdftopdf pdftopdf passthru
440 instfilter pdftops pdftops ps
441 instfilter pdftoraster pdftoraster raster
442 instfilter pstoraster pstoraster raster
443 instfilter texttopdf texttopdf pdf
445 if test -d /usr
/share
/cups
/charsets
; then
446 ln -s /usr
/share
/cups
/charsets
$BASE/share
451 # Then create the necessary config files...
454 echo "Creating cupsd.conf for test..."
456 if test $ssltype = 2; then
457 encryption
="Encryption Required"
462 cat >$BASE/cupsd.conf
<<EOF
463 StrictConformance Yes
465 Listen localhost:$port
468 PassEnv DYLD_INSERT_LIBRARIES
471 AccessLogLevel actions
474 PreserveJobHistory Yes
484 if test $testtype = 0; then
485 echo WebInterface
yes >>$BASE/cupsd.conf
488 cat >$BASE/cups-files.conf
<<EOF
497 FontPath $BASE/share/fonts
498 DocumentRoot $root/doc
499 RequestRoot $BASE/spool
500 TempDir $BASE/spool/temp
501 AccessLog $BASE/log/access_log
502 ErrorLog $BASE/log/error_log
503 PageLog $BASE/log/page_log
506 if test $ssltype != 0 -a `uname` = Darwin
; then
507 echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
511 # Setup lots of test queues - half with PPD files, half without...
514 echo "Creating printers.conf for test..."
517 while test $i -le $nprinters1; do
518 cat >>$BASE/printers.conf
<<EOF
521 DeviceURI file:/dev/null
522 Info Test PS printer $i
524 Location CUPS test suite
526 StateMessage Printer $1 is idle.
530 cp testps.ppd
$BASE/ppd
/test-
$i.ppd
535 while test $i -le $nprinters2; do
536 cat >>$BASE/printers.conf
<<EOF
539 DeviceURI file:/dev/null
540 Info Test raw printer $i
542 Location CUPS test suite
544 StateMessage Printer $1 is idle.
551 if test -f $BASE/printers.conf
; then
552 cp $BASE/printers.conf
$BASE/printers.conf.orig
554 touch $BASE/printers.conf.orig
561 echo "Setting up environment variables for test..."
563 if test "x$LD_LIBRARY_PATH" = x
; then
564 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
566 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$LD_LIBRARY_PATH"
569 export LD_LIBRARY_PATH
571 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"
572 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
573 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
577 if test "x$DYLD_LIBRARY_PATH" = x
; then
578 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
580 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$DYLD_LIBRARY_PATH"
583 export DYLD_LIBRARY_PATH
585 if test "x$SHLIB_PATH" = x
; then
586 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
588 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$SHLIB_PATH"
593 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
594 CUPS_SERVER
=localhost
:8631; export CUPS_SERVER
595 CUPS_SERVERROOT
=$BASE; export CUPS_SERVERROOT
596 CUPS_STATEDIR
=$BASE; export CUPS_STATEDIR
597 CUPS_DATADIR
=$BASE/share
; export CUPS_DATADIR
598 LOCALEDIR
=$BASE/share
/locale
; export LOCALEDIR
601 # Set a new home directory to avoid getting user options mixed in...
608 # Force POSIX locale for tests...
618 # Start the server; run as foreground daemon in the background...
621 echo "Starting scheduler:"
622 echo " $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
625 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
626 DYLD_INSERT_LIBRARIES
=/usr
/lib
/libgmalloc.dylib MallocStackLogging
=1 ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
628 $VALGRIND ..
/scheduler
/cupsd
-c $BASE/cupsd.conf
-f >$BASE/log
/debug_log
2>&1 &
633 if test "x$testtype" = x0
; then
634 # Not running tests...
635 echo "Scheduler is PID $cupsd and is listening on port 8631."
638 # Create a helper script to run programs with...
639 runcups
="$BASE/runcups"
641 echo "#!/bin/sh" >$runcups
642 echo "# Helper script for running CUPS test instance." >>$runcups
644 echo "# Set required environment variables..." >>$runcups
645 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
646 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
647 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
648 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
649 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
650 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
651 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
652 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
653 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
654 if test "x$CUPS_DEBUG_LEVEL" != x
; then
655 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
656 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
657 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
660 echo "# Run command..." >>$runcups
661 echo "exec \"\$@\"" >>$runcups
665 echo "The $runcups helper script can be used to test programs"
666 echo "with the server."
670 if test $argcount -eq 0; then
671 echo "Scheduler is PID $cupsd; run debugger now if you need to."
673 echo $ac_n "Press ENTER to continue... $ac_c"
676 echo "Scheduler is PID $cupsd."
680 IPP_PORT
=$port; export IPP_PORT
683 running
=`../systemv/lpstat -r 2>/dev/null`
684 if test "x$running" = "xscheduler is running"; then
688 echo "Waiting for scheduler to become ready..."
693 # Create the test report source file...
696 date=`date "+%Y-%m-%d"`
697 strfile
=$BASE/cups-str-2.0
-$date-$user.html
700 cat str-header.html
>$strfile
703 # Run the IPP tests...
707 echo "Running IPP compliance tests..."
709 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
710 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
711 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
712 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
713 echo "<PRE>" >>$strfile
716 for file in 4*.
test ipp-2.1.
test; do
717 echo $ac_n "Performing $file: $ac_c"
720 if test $file = ipp-2.1.
test; then
721 uri
="ipp://localhost:$port/printers/Test1"
722 options
="-V 2.1 -d NOPRINT=1 -f testfile.ps"
724 uri
="ipp://localhost:$port/printers"
727 $VALGRIND .
/ipptool
-tI $options $uri $file >> $strfile
730 if test $status != 0; then
732 fail
=`expr $fail + 1`
738 echo "</PRE>" >>$strfile
741 # Run the command tests...
745 echo "Running command tests..."
747 echo "<H1>2 - Command Tests</H1>" >>$strfile
748 echo "<P>This section provides the results to the command tests" >>$strfile
749 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
750 echo $date by
$user on
`hostname`.
>>$strfile
751 echo "<PRE>" >>$strfile
753 for file in 5*.sh
; do
754 echo $ac_n "Performing $file: $ac_c"
756 echo "\"$file\":" >>$strfile
758 sh
$file $pjobs $pprinters >> $strfile
761 if test $status != 0; then
763 fail
=`expr $fail + 1`
770 # Log all allocations made by the scheduler...
772 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
773 malloc_history
$cupsd -callTree -showContent >$BASE/log
/malloc_log
2>&1
777 # Restart the server...
780 echo $ac_n "Performing restart test: $ac_c"
782 echo "\"5.10-restart\":" >>$strfile
789 running
=`../systemv/lpstat -r 2>/dev/null`
790 if test "x$running" = "xscheduler is running"; then
795 description
="`lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
796 if test "x$description" != "xTest Printer 1"; then
797 echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
798 echo "FAIL (got '$description', expected 'Test Printer 1')"
799 fail
=`expr $fail + 1`
801 echo "Passed." >>$strfile
805 echo "</PRE>" >>$strfile
814 # Append the log files for post-mortim...
817 echo "<H1>3 - Log Files</H1>" >>$strfile
825 echo "<H2>Summary</H2>" >>$strfile
828 count
=`ls -1 $BASE/spool | wc -l`
829 count
=`expr $count - 1`
830 if test $count != 0; then
831 echo "FAIL: $count job control files were not purged."
832 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
833 fail
=`expr $fail + 1`
835 echo "PASS: All job control files purged."
836 echo "<P>PASS: All job control files purged.</P>" >>$strfile
839 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
840 count
=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
841 expected
=`expr $pjobs \* 2 + 34`
842 expected2
=`expr $expected + 2`
843 if test $count -lt $expected -a $count -gt $expected2; then
844 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
845 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
846 fail
=`expr $fail + 1`
848 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
849 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
852 # Paged printed on Test2
853 count
=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
854 expected
=`expr $pjobs \* 2 + 3`
855 if test $count != $expected; then
856 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
857 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
858 fail
=`expr $fail + 1`
860 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
861 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
864 # Paged printed on Test3
865 count
=`$GREP '^Test3 ' $BASE/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
867 if test $count != $expected; then
868 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
869 echo "<P>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</P>" >>$strfile
870 fail
=`expr $fail + 1`
872 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
873 echo "<P>PASS: Printer 'Test3' correctly produced $count page(s).</P>" >>$strfile
877 count
=`wc -l $BASE/log/access_log | awk '{print $1}'`
878 expected
=`expr 37 + 18 + 28 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
879 if test $count != $expected; then
880 echo "FAIL: $count requests logged, expected $expected."
881 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
882 fail
=`expr $fail + 1`
884 echo "PASS: $count requests logged."
885 echo "<P>PASS: $count requests logged.</P>" >>$strfile
888 # Did CUPS-Get-Default get logged?
889 if $GREP -q CUPS-Get-Default
$BASE/log
/access_log
; then
890 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
891 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
892 echo "<PRE>" >>$strfile
893 $GREP CUPS-Get-Default
$BASE/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
894 echo "</PRE>" >>$strfile
895 fail
=`expr $fail + 1`
897 echo "PASS: CUPS-Get-Default not logged."
898 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
901 # Emergency log messages
902 count
=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
903 if test $count != 0; then
904 echo "FAIL: $count emergency messages, expected 0."
905 $GREP '^X ' $BASE/log
/error_log
906 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
907 echo "<PRE>" >>$strfile
908 $GREP '^X ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
909 echo "</PRE>" >>$strfile
910 fail
=`expr $fail + 1`
912 echo "PASS: $count emergency messages."
913 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
917 count
=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
918 if test $count != 0; then
919 echo "FAIL: $count alert messages, expected 0."
920 $GREP '^A ' $BASE/log
/error_log
921 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
922 echo "<PRE>" >>$strfile
923 $GREP '^A ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
924 echo "</PRE>" >>$strfile
925 fail
=`expr $fail + 1`
927 echo "PASS: $count alert messages."
928 echo "<P>PASS: $count alert messages.</P>" >>$strfile
931 # Critical log messages
932 count
=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
933 if test $count != 0; then
934 echo "FAIL: $count critical messages, expected 0."
935 $GREP '^C ' $BASE/log
/error_log
936 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
937 echo "<PRE>" >>$strfile
938 $GREP '^C ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
939 echo "</PRE>" >>$strfile
940 fail
=`expr $fail + 1`
942 echo "PASS: $count critical messages."
943 echo "<P>PASS: $count critical messages.</P>" >>$strfile
947 count
=`$GREP '^E ' $BASE/log/error_log | wc -l | awk '{print $1}'`
948 if test $count != 33; then
949 echo "FAIL: $count error messages, expected 33."
950 $GREP '^E ' $BASE/log
/error_log
951 echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
952 echo "<PRE>" >>$strfile
953 $GREP '^E ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
954 echo "</PRE>" >>$strfile
955 fail
=`expr $fail + 1`
957 echo "PASS: $count error messages."
958 echo "<P>PASS: $count error messages.</P>" >>$strfile
961 # Warning log messages
962 count
=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
963 if test $count != 18; then
964 echo "FAIL: $count warning messages, expected 18."
965 $GREP '^W ' $BASE/log
/error_log
966 echo "<P>FAIL: $count warning messages, expected 18.</P>" >>$strfile
967 echo "<PRE>" >>$strfile
968 $GREP '^W ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
969 echo "</PRE>" >>$strfile
970 fail
=`expr $fail + 1`
972 echo "PASS: $count warning messages."
973 echo "<P>PASS: $count warning messages.</P>" >>$strfile
976 # Notice log messages
977 count
=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
978 if test $count != 0; then
979 echo "FAIL: $count notice messages, expected 0."
980 $GREP '^N ' $BASE/log
/error_log
981 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
982 echo "<PRE>" >>$strfile
983 $GREP '^N ' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
984 echo "</PRE>" >>$strfile
985 fail
=`expr $fail + 1`
987 echo "PASS: $count notice messages."
988 echo "<P>PASS: $count notice messages.</P>" >>$strfile
992 count
=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
993 if test $count = 0; then
994 echo "FAIL: $count info messages, expected more than 0."
995 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
996 fail
=`expr $fail + 1`
998 echo "PASS: $count info messages."
999 echo "<P>PASS: $count info messages.</P>" >>$strfile
1002 # Debug log messages
1003 count
=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1004 if test $count = 0; then
1005 echo "FAIL: $count debug messages, expected more than 0."
1006 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
1007 fail
=`expr $fail + 1`
1009 echo "PASS: $count debug messages."
1010 echo "<P>PASS: $count debug messages.</P>" >>$strfile
1013 # Debug2 log messages
1014 count
=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
1015 if test $count = 0; then
1016 echo "FAIL: $count debug2 messages, expected more than 0."
1017 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
1018 fail
=`expr $fail + 1`
1020 echo "PASS: $count debug2 messages."
1021 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
1025 echo "<H2>access_log</H2>" >>$strfile
1026 echo "<PRE>" >>$strfile
1027 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/access_log
>>$strfile
1028 echo "</PRE>" >>$strfile
1030 echo "<H2>error_log</H2>" >>$strfile
1031 echo "<PRE>" >>$strfile
1032 $GREP -v '^d' $BASE/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
1033 echo "</PRE>" >>$strfile
1035 echo "<H2>page_log</H2>" >>$strfile
1036 echo "<PRE>" >>$strfile
1037 sed -e '1,$s/&/&/g' -e '1,$s/</</g' $BASE/log
/page_log
>>$strfile
1038 echo "</PRE>" >>$strfile
1041 # Format the reports and tell the user where to find them...
1044 cat str-trailer.html
>>$strfile
1048 if test $fail != 0; then
1049 echo "$fail tests failed."
1050 cp $BASE/log
/error_log error_log-
$date-$user
1053 echo "All tests were successful."
1056 echo "Log files can be found in $BASE/log."
1057 echo "A HTML report was created in $strfile."
1060 if test $fail != 0; then
1061 echo "Copies of the error_log and `basename $strfile` files are in"
1069 # End of "$Id: run-stp-tests.sh 12151 2014-09-04 00:57:41Z msweet $"