3 # "$Id: run-stp-tests.sh 9034 2010-03-09 07:03:06Z mike $"
5 # Perform the complete set of IPP compliance tests specified in the
6 # CUPS Software Test Plan.
8 # Copyright 2007-2013 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
197 # Make sure that the LPDEST and PRINTER environment variables are
198 # not included in the environment that is passed to the tests. These
199 # will usually cause tests to fail erroneously...
206 # See if we want to use valgrind...
210 echo "This test script can use the Valgrind software from:"
212 echo " http://developer.kde.org/~sewardj/"
214 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
216 if test $# -gt 0; then
224 case "$usevalgrind" in
226 VALGRIND
="valgrind --tool=memcheck --log-file=/tmp/cups-$user/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes --read-var-info=yes"
227 if test `uname` = Darwin
; then
228 VALGRIND
="$VALGRIND --dsymutil=yes"
231 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
241 # See if we want to do debug logging of the libraries...
245 echo "If CUPS was built with the --enable-debug-printfs configure option, you"
246 echo "can enable debug logging of the libraries."
248 echo $ac_n "Enter Y or a number from 0 to 9 to enable debug logging or N to not: [N] $ac_c"
250 if test $# -gt 0; then
258 case "$usedebugprintfs" in
260 echo "Enabling debug printfs (level 5); log files can be found in /tmp/cups-$user/log..."
261 CUPS_DEBUG_LOG
="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
262 CUPS_DEBUG_LEVEL
=5; export CUPS_DEBUG_LEVEL
263 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
266 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9)
267 echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in /tmp/cups-$user/log..."
268 CUPS_DEBUG_LOG
="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
269 CUPS_DEBUG_LEVEL
="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
270 CUPS_DEBUG_FILTER
='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
278 # Start by creating temporary directories for the tests...
281 echo "Creating directories for test..."
283 rm -rf /tmp
/cups-
$user
284 mkdir
/tmp
/cups-
$user
285 mkdir
/tmp
/cups-
$user/bin
286 mkdir
/tmp
/cups-
$user/bin
/backend
287 mkdir
/tmp
/cups-
$user/bin
/driver
288 mkdir
/tmp
/cups-
$user/bin
/filter
289 mkdir
/tmp
/cups-
$user/certs
290 mkdir
/tmp
/cups-
$user/share
291 mkdir
/tmp
/cups-
$user/share
/banners
292 mkdir
/tmp
/cups-
$user/share
/drv
293 mkdir
/tmp
/cups-
$user/share
/locale
294 for file in ..
/locale
/cups_
*.po
; do
295 loc
=`basename $file .po | cut -c 6-`
296 mkdir
/tmp
/cups-
$user/share
/locale
/$loc
297 ln -s $root/locale
/cups_
$loc.po
/tmp
/cups-
$user/share
/locale
/$loc
298 ln -s $root/locale
/ppdc_
$loc.po
/tmp
/cups-
$user/share
/locale
/$loc
300 mkdir
/tmp
/cups-
$user/share
/mime
301 mkdir
/tmp
/cups-
$user/share
/model
302 mkdir
/tmp
/cups-
$user/share
/ppdc
303 mkdir
/tmp
/cups-
$user/interfaces
304 mkdir
/tmp
/cups-
$user/log
305 mkdir
/tmp
/cups-
$user/ppd
306 mkdir
/tmp
/cups-
$user/spool
307 mkdir
/tmp
/cups-
$user/spool
/temp
308 mkdir
/tmp
/cups-
$user/ssl
310 ln -s $root/backend
/dnssd
/tmp
/cups-
$user/bin
/backend
311 ln -s $root/backend
/http
/tmp
/cups-
$user/bin
/backend
312 ln -s $root/backend
/ipp
/tmp
/cups-
$user/bin
/backend
313 ln -s $root/backend
/lpd
/tmp
/cups-
$user/bin
/backend
314 ln -s $root/backend
/mdns
/tmp
/cups-
$user/bin
/backend
315 ln -s $root/backend
/pseudo
/tmp
/cups-
$user/bin
/backend
316 ln -s $root/backend
/snmp
/tmp
/cups-
$user/bin
/backend
317 ln -s $root/backend
/socket
/tmp
/cups-
$user/bin
/backend
318 ln -s $root/backend
/usb
/tmp
/cups-
$user/bin
/backend
319 ln -s $root/cgi-bin
/tmp
/cups-
$user/bin
320 ln -s $root/monitor
/tmp
/cups-
$user/bin
321 ln -s $root/notifier
/tmp
/cups-
$user/bin
322 ln -s $root/scheduler
/tmp
/cups-
$user/bin
/daemon
323 ln -s $root/filter
/commandtops
/tmp
/cups-
$user/bin
/filter
324 ln -s $root/filter
/gziptoany
/tmp
/cups-
$user/bin
/filter
325 ln -s $root/filter
/pstops
/tmp
/cups-
$user/bin
/filter
326 ln -s $root/filter
/rastertoepson
/tmp
/cups-
$user/bin
/filter
327 ln -s $root/filter
/rastertohp
/tmp
/cups-
$user/bin
/filter
328 ln -s $root/filter
/rastertolabel
/tmp
/cups-
$user/bin
/filter
329 ln -s $root/filter
/rastertopwg
/tmp
/cups-
$user/bin
/filter
331 ln -s $root/data
/classified
/tmp
/cups-
$user/share
/banners
332 ln -s $root/data
/confidential
/tmp
/cups-
$user/share
/banners
333 ln -s $root/data
/secret
/tmp
/cups-
$user/share
/banners
334 ln -s $root/data
/standard
/tmp
/cups-
$user/share
/banners
335 ln -s $root/data
/topsecret
/tmp
/cups-
$user/share
/banners
336 ln -s $root/data
/unclassified
/tmp
/cups-
$user/share
/banners
337 ln -s $root/data
/tmp
/cups-
$user/share
338 ln -s $root/ppdc
/sample.drv
/tmp
/cups-
$user/share
/drv
339 ln -s $root/conf
/mime.types
/tmp
/cups-
$user/share
/mime
340 ln -s $root/conf
/mime.convs
/tmp
/cups-
$user/share
/mime
341 ln -s $root/data
/*.h
/tmp
/cups-
$user/share
/ppdc
342 ln -s $root/data
/*.defs
/tmp
/cups-
$user/share
/ppdc
343 ln -s $root/templates
/tmp
/cups-
$user/share
346 # Local filters and configuration files...
349 if test `uname` = Darwin
; then
350 ln -s /usr
/libexec
/cups
/filter
/cgpdfto
* /tmp
/cups-
$user/bin
/filter
351 ln -s /usr
/libexec
/cups
/filter
/cgbannertopdf
/tmp
/cups-
$user/bin
/filter
352 ln -s /usr
/libexec
/cups
/filter
/cgimagetopdf
/tmp
/cups-
$user/bin
/filter
353 ln -s /usr
/libexec
/cups
/filter
/cgtexttopdf
/tmp
/cups-
$user/bin
/filter
354 ln -s /usr
/libexec
/cups
/filter
/nsimagetopdf
/tmp
/cups-
$user/bin
/filter
355 ln -s /usr
/libexec
/cups
/filter
/nstexttopdf
/tmp
/cups-
$user/bin
/filter
356 ln -s /usr
/libexec
/cups
/filter
/pictwpstops
/tmp
/cups-
$user/bin
/filter
357 ln -s /usr
/libexec
/cups
/filter
/pstoappleps
/tmp
/cups-
$user/bin
/filter
358 ln -s /usr
/libexec
/cups
/filter
/pstocupsraster
/tmp
/cups-
$user/bin
/filter
359 ln -s /usr
/libexec
/cups
/filter
/pstopdffilter
/tmp
/cups-
$user/bin
/filter
360 ln -s /usr
/libexec
/cups
/filter
/rastertourf
/tmp
/cups-
$user/bin
/filter
361 ln -s /usr
/libexec
/cups
/filter
/xhtmltopdf
/tmp
/cups-
$user/bin
/filter
363 if test -f /private
/etc
/cups
/apple.types
; then
364 ln -s /private
/etc
/cups
/apple.
* /tmp
/cups-
$user/share
/mime
365 elif test -f /usr
/share
/cups
/mime
/apple.types
; then
366 ln -s /usr
/share
/cups
/mime
/apple.
* /tmp
/cups-
$user/share
/mime
369 ln -s /usr
/lib
/cups
/filter
/bannertops
/tmp
/cups-
$user/bin
/filter
370 ln -s /usr
/lib
/cups
/filter
/imagetops
/tmp
/cups-
$user/bin
/filter
371 ln -s /usr
/lib
/cups
/filter
/imagetoraster
/tmp
/cups-
$user/bin
/filter
372 ln -s /usr
/lib
/cups
/filter
/pdftops
/tmp
/cups-
$user/bin
/filter
373 ln -s /usr
/lib
/cups
/filter
/texttops
/tmp
/cups-
$user/bin
/filter
375 ln -s /usr
/share
/cups
/mime
/legacy.convs
/tmp
/cups-
$user/share
/mime
376 ln -s /usr
/share
/cups
/charsets
/tmp
/cups-
$user/share
377 if test -f $root/data
/psglyphs
; then
378 ln -s /usr
/share
/cups
/data
/psglyphs
$root/data
380 ln -s /usr
/share
/cups
/fonts
/tmp
/cups-
$user/share
384 # Then create the necessary config files...
387 echo "Creating cupsd.conf for test..."
389 if test $ssltype = 2; then
390 encryption
="Encryption Required"
395 cat >/tmp
/cups-
$user/cupsd.conf
<<EOF
396 StrictConformance Yes
398 Listen localhost:$port
399 Listen /tmp/cups-$user/sock
401 PassEnv DYLD_INSERT_LIBRARIES
404 AccessLogLevel actions
407 PreserveJobHistory Yes
417 cat >/tmp
/cups-
$user/cups-files.conf
<<EOF
421 ServerRoot /tmp/cups-$user
422 StateDir /tmp/cups-$user
423 ServerBin /tmp/cups-$user/bin
424 CacheDir /tmp/cups-$user/share
425 DataDir /tmp/cups-$user/share
426 FontPath /tmp/cups-$user/share/fonts
427 DocumentRoot $root/doc
428 RequestRoot /tmp/cups-$user/spool
429 TempDir /tmp/cups-$user/spool/temp
430 AccessLog /tmp/cups-$user/log/access_log
431 ErrorLog /tmp/cups-$user/log/error_log
432 PageLog /tmp/cups-$user/log/page_log
435 if test $ssltype != 0 -a `uname` = Darwin
; then
436 echo "ServerCertificate $HOME/Library/Keychains/login.keychain" >> /tmp
/cups-
$user/cups-files.conf
440 # Setup lots of test queues - half with PPD files, half without...
443 echo "Creating printers.conf for test..."
446 while test $i -le $nprinters1; do
447 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
450 DeviceURI file:/dev/null
451 Info Test PS printer $i
453 Location CUPS test suite
455 StateMessage Printer $1 is idle.
459 cp testps.ppd
/tmp
/cups-
$user/ppd
/test-
$i.ppd
464 while test $i -le $nprinters2; do
465 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
468 DeviceURI file:/dev/null
469 Info Test raw printer $i
471 Location CUPS test suite
473 StateMessage Printer $1 is idle.
480 if test -f /tmp
/cups-
$user/printers.conf
; then
481 cp /tmp
/cups-
$user/printers.conf
/tmp
/cups-
$user/printers.conf.orig
483 touch /tmp
/cups-
$user/printers.conf.orig
490 echo "Setting up environment variables for test..."
492 if test "x$LD_LIBRARY_PATH" = x
; then
493 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
495 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$LD_LIBRARY_PATH"
498 export LD_LIBRARY_PATH
500 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"
501 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
502 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
506 if test "x$DYLD_LIBRARY_PATH" = x
; then
507 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
509 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$DYLD_LIBRARY_PATH"
512 export DYLD_LIBRARY_PATH
514 if test "x$SHLIB_PATH" = x
; then
515 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
517 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$SHLIB_PATH"
522 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
523 CUPS_SERVER
=localhost
:8631; export CUPS_SERVER
524 CUPS_SERVERROOT
=/tmp
/cups-
$user; export CUPS_SERVERROOT
525 CUPS_STATEDIR
=/tmp
/cups-
$user; export CUPS_STATEDIR
526 CUPS_DATADIR
=/tmp
/cups-
$user/share
; export CUPS_DATADIR
527 LOCALEDIR
=/tmp
/cups-
$user/share
/locale
; export LOCALEDIR
530 # Set a new home directory to avoid getting user options mixed in...
537 # Force POSIX locale for tests...
547 # Start the server; run as foreground daemon in the background...
550 echo "Starting scheduler:"
551 echo " $VALGRIND ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
554 if test `uname` = Darwin
-a "x$VALGRIND" = x
; then
555 DYLD_INSERT_LIBRARIES
=/usr
/lib
/libgmalloc.dylib
556 ..
/scheduler
/cupsd
-c /tmp
/cups-
$user/cupsd.conf
-f >/tmp
/cups-
$user/log
/debug_log
2>&1 &
558 $VALGRIND ..
/scheduler
/cupsd
-c /tmp
/cups-
$user/cupsd.conf
-f >/tmp
/cups-
$user/log
/debug_log
2>&1 &
563 if test "x$testtype" = x0
; then
564 # Not running tests...
565 echo "Scheduler is PID $cupsd and is listening on port 8631."
568 # Create a helper script to run programs with...
569 runcups
="/tmp/cups-$user/runcups"
571 echo "#!/bin/sh" >$runcups
572 echo "# Helper script for running CUPS test instance." >>$runcups
574 echo "# Set required environment variables..." >>$runcups
575 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
576 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
577 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
578 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
579 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
580 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
581 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
582 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
583 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
584 if test "x$CUPS_DEBUG_LEVEL" != x
; then
585 echo "CUPS_DEBUG_FILTER='$CUPS_DEBUG_FILTER'; export CUPS_DEBUG_FILTER" >>$runcups
586 echo "CUPS_DEBUG_LEVEL=$CUPS_DEBUG_LEVEL; export CUPS_DEBUG_LEVEL" >>$runcups
587 echo "CUPS_DEBUG_LOG='$CUPS_DEBUG_LOG'; export CUPS_DEBUG_LOG" >>$runcups
590 echo "# Run command..." >>$runcups
591 echo "exec \"\$@\"" >>$runcups
595 echo "The $runcups helper script can be used to test programs"
596 echo "with the server."
600 if test $argcount -eq 0; then
601 echo "Scheduler is PID $cupsd; run debugger now if you need to."
603 echo $ac_n "Press ENTER to continue... $ac_c"
606 echo "Scheduler is PID $cupsd."
610 IPP_PORT
=$port; export IPP_PORT
613 running
=`../systemv/lpstat -r 2>/dev/null`
614 if test "x$running" = "xscheduler is running"; then
618 echo "Waiting for scheduler to become ready..."
623 # Create the test report source file...
626 date=`date "+%Y-%m-%d"`
627 strfile
=/tmp
/cups-
$user/cups-str-2.0
-$date-$user.html
630 cat str-header.html
>$strfile
633 # Run the IPP tests...
637 echo "Running IPP compliance tests..."
639 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
640 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
641 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
642 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
643 echo "<PRE>" >>$strfile
646 for file in 4*.
test ipp-2.1.
test; do
647 echo $ac_n "Performing $file: $ac_c"
650 if test $file = ipp-2.1.
test; then
651 uri
="ipp://localhost:$port/printers/Test1"
652 options
="-V 2.1 -d NOPRINT=1 -f testfile.ps"
654 uri
="ipp://localhost:$port/printers"
657 $VALGRIND .
/ipptool
-tI $options $uri $file >> $strfile
660 if test $status != 0; then
662 fail
=`expr $fail + 1`
668 echo "</PRE>" >>$strfile
671 # Run the command tests...
675 echo "Running command tests..."
677 echo "<H1>2 - Command Tests</H1>" >>$strfile
678 echo "<P>This section provides the results to the command tests" >>$strfile
679 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
680 echo $date by
$user on
`hostname`.
>>$strfile
681 echo "<PRE>" >>$strfile
683 for file in 5*.sh
; do
684 echo $ac_n "Performing $file: $ac_c"
686 echo "\"$file\":" >>$strfile
688 sh
$file $pjobs $pprinters >> $strfile
691 if test $status != 0; then
693 fail
=`expr $fail + 1`
699 echo "</PRE>" >>$strfile
708 # Append the log files for post-mortim...
711 echo "<H1>3 - Log Files</H1>" >>$strfile
719 echo "<H2>Summary</H2>" >>$strfile
722 count
=`ls -1 /tmp/cups-$user/spool | wc -l`
723 count
=`expr $count - 1`
724 if test $count != 0; then
725 echo "FAIL: $count job control files were not purged."
726 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
727 fail
=`expr $fail + 1`
729 echo "PASS: All job control files purged."
730 echo "<P>PASS: All job control files purged.</P>" >>$strfile
733 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
734 count
=`$GREP '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
735 expected
=`expr $pjobs \* 2 + 34`
736 expected2
=`expr $expected + 2`
737 if test $count -lt $expected -a $count -gt $expected2; then
738 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
739 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
740 fail
=`expr $fail + 1`
742 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
743 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
746 # Paged printed on Test2
747 count
=`$GREP '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
748 expected
=`expr $pjobs \* 2 + 3`
749 if test $count != $expected; then
750 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
751 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
752 fail
=`expr $fail + 1`
754 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
755 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
758 # Paged printed on Test3
759 count
=`$GREP '^Test3 ' /tmp/cups-$user/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
761 if test $count != $expected; then
762 echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
763 echo "<P>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</P>" >>$strfile
764 fail
=`expr $fail + 1`
766 echo "PASS: Printer 'Test3' correctly produced $count page(s)."
767 echo "<P>PASS: Printer 'Test3' correctly produced $count page(s).</P>" >>$strfile
771 count
=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
772 expected
=`expr 37 + 18 + 28 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
773 if test $count != $expected; then
774 echo "FAIL: $count requests logged, expected $expected."
775 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
776 fail
=`expr $fail + 1`
778 echo "PASS: $count requests logged."
779 echo "<P>PASS: $count requests logged.</P>" >>$strfile
782 # Did CUPS-Get-Default get logged?
783 if $GREP -q CUPS-Get-Default
/tmp
/cups-
$user/log
/access_log
; then
784 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
785 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
786 echo "<PRE>" >>$strfile
787 $GREP CUPS-Get-Default
/tmp
/cups-
$user/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
788 echo "</PRE>" >>$strfile
789 fail
=`expr $fail + 1`
791 echo "PASS: CUPS-Get-Default not logged."
792 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
795 # Emergency log messages
796 count
=`$GREP '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
797 if test $count != 0; then
798 echo "FAIL: $count emergency messages, expected 0."
799 $GREP '^X ' /tmp
/cups-
$user/log
/error_log
800 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
801 echo "<PRE>" >>$strfile
802 $GREP '^X ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
803 echo "</PRE>" >>$strfile
804 fail
=`expr $fail + 1`
806 echo "PASS: $count emergency messages."
807 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
811 count
=`$GREP '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
812 if test $count != 0; then
813 echo "FAIL: $count alert messages, expected 0."
814 $GREP '^A ' /tmp
/cups-
$user/log
/error_log
815 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
816 echo "<PRE>" >>$strfile
817 $GREP '^A ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
818 echo "</PRE>" >>$strfile
819 fail
=`expr $fail + 1`
821 echo "PASS: $count alert messages."
822 echo "<P>PASS: $count alert messages.</P>" >>$strfile
825 # Critical log messages
826 count
=`$GREP '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
827 if test $count != 0; then
828 echo "FAIL: $count critical messages, expected 0."
829 $GREP '^C ' /tmp
/cups-
$user/log
/error_log
830 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
831 echo "<PRE>" >>$strfile
832 $GREP '^C ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
833 echo "</PRE>" >>$strfile
834 fail
=`expr $fail + 1`
836 echo "PASS: $count critical messages."
837 echo "<P>PASS: $count critical messages.</P>" >>$strfile
841 count
=`$GREP '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
842 if test $count != 33; then
843 echo "FAIL: $count error messages, expected 33."
844 $GREP '^E ' /tmp
/cups-
$user/log
/error_log
845 echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
846 echo "<PRE>" >>$strfile
847 $GREP '^E ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
848 echo "</PRE>" >>$strfile
849 fail
=`expr $fail + 1`
851 echo "PASS: $count error messages."
852 echo "<P>PASS: $count error messages.</P>" >>$strfile
855 # Warning log messages
856 count
=`$GREP '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
857 if test $count != 9; then
858 echo "FAIL: $count warning messages, expected 9."
859 $GREP '^W ' /tmp
/cups-
$user/log
/error_log
860 echo "<P>FAIL: $count warning messages, expected 9.</P>" >>$strfile
861 echo "<PRE>" >>$strfile
862 $GREP '^W ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
863 echo "</PRE>" >>$strfile
864 fail
=`expr $fail + 1`
866 echo "PASS: $count warning messages."
867 echo "<P>PASS: $count warning messages.</P>" >>$strfile
870 # Notice log messages
871 count
=`$GREP '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
872 if test $count != 0; then
873 echo "FAIL: $count notice messages, expected 0."
874 $GREP '^N ' /tmp
/cups-
$user/log
/error_log
875 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
876 echo "<PRE>" >>$strfile
877 $GREP '^N ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
878 echo "</PRE>" >>$strfile
879 fail
=`expr $fail + 1`
881 echo "PASS: $count notice messages."
882 echo "<P>PASS: $count notice messages.</P>" >>$strfile
886 count
=`$GREP '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
887 if test $count = 0; then
888 echo "FAIL: $count info messages, expected more than 0."
889 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
890 fail
=`expr $fail + 1`
892 echo "PASS: $count info messages."
893 echo "<P>PASS: $count info messages.</P>" >>$strfile
897 count
=`$GREP '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
898 if test $count = 0; then
899 echo "FAIL: $count debug messages, expected more than 0."
900 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
901 fail
=`expr $fail + 1`
903 echo "PASS: $count debug messages."
904 echo "<P>PASS: $count debug messages.</P>" >>$strfile
907 # Debug2 log messages
908 count
=`$GREP '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
909 if test $count = 0; then
910 echo "FAIL: $count debug2 messages, expected more than 0."
911 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
912 fail
=`expr $fail + 1`
914 echo "PASS: $count debug2 messages."
915 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
919 echo "<H2>access_log</H2>" >>$strfile
920 echo "<PRE>" >>$strfile
921 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/access_log
>>$strfile
922 echo "</PRE>" >>$strfile
924 echo "<H2>error_log</H2>" >>$strfile
925 echo "<PRE>" >>$strfile
926 $GREP -v '^d' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
927 echo "</PRE>" >>$strfile
929 echo "<H2>page_log</H2>" >>$strfile
930 echo "<PRE>" >>$strfile
931 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/page_log
>>$strfile
932 echo "</PRE>" >>$strfile
935 # Format the reports and tell the user where to find them...
938 cat str-trailer.html
>>$strfile
942 if test $fail != 0; then
943 echo "$fail tests failed."
944 cp /tmp
/cups-
$user/log
/error_log error_log-
$date-$user
947 echo "All tests were successful."
950 echo "Log files can be found in /tmp/cups-$user/log."
951 echo "A HTML report was created in $strfile."
954 if test $fail != 0; then
955 echo "Copies of the error_log and `basename $strfile` files are in"
963 # End of "$Id: run-stp-tests.sh 9034 2010-03-09 07:03:06Z mike $"