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-2011 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 # Make the IPP test program...
27 # Solaris has a non-POSIX grep in /bin...
30 if test -x /usr
/xpg
4/bin
/grep; then
31 GREP
=/usr
/xpg
4/bin
/grep
37 # Figure out the proper echo options...
40 if (echo "testing\c"; echo 1,2,3) |
$GREP c
>/dev
/null
; then
52 echo "Welcome to the CUPS Automated Test Script."
54 echo "Before we begin, it is important that you understand that the larger"
55 echo "tests require significant amounts of RAM and disk space. If you"
56 echo "attempt to run one of the big tests on a system that lacks sufficient"
57 echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
58 echo "more system processes that you've grown attached to, like the X"
59 echo "server. The question you may want to ask yourself before running a"
60 echo "large test is: Do you feel lucky?"
62 echo "OK, now that we have the Dirty Harry quote out of the way, please"
63 echo "choose the type of test you wish to perform:"
65 echo "0 - No testing, keep the scheduler running for me (all systems)"
66 echo "1 - Basic conformance test, no load testing (all systems)"
67 echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
68 echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
69 echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
71 echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
73 if test $# -gt 0; then
83 echo "Running in test mode (0)"
90 echo "Running the medium tests (2)"
97 echo "Running the extreme tests (3)"
104 echo "Running the torture tests (4)"
111 echo "Running the timid tests (1)"
120 # See if we want to do SSL testing...
124 echo "Now you can choose whether to create a SSL/TLS encryption key and"
125 echo "certificate for testing; these tests currently require the OpenSSL"
128 echo "0 - Do not do SSL/TLS encryption tests"
129 echo "1 - Test but do not require encryption"
130 echo "2 - Test and require encryption"
132 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
134 if test $# -gt 0; then
144 echo "Will test but not require encryption (1)"
147 echo "Will test and require encryption (2)"
150 echo "Not using SSL/TLS (0)"
156 # Information for the server/tests...
160 if test -z "$user"; then
161 if test -x /usr
/ucb
/whoami
; then
162 user
=`/usr/ucb/whoami`
167 if test -z "$user"; then
177 # Make sure that the LPDEST and PRINTER environment variables are
178 # not included in the environment that is passed to the tests. These
179 # will usually cause tests to fail erroneously...
186 # See if we want to use valgrind...
190 echo "This test script can use the Valgrind software from:"
192 echo " http://developer.kde.org/~sewardj/"
194 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
196 if test $# -gt 0; then
204 case "$usevalgrind" in
206 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"
207 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
216 # Start by creating temporary directories for the tests...
219 echo "Creating directories for test..."
221 rm -rf /tmp
/cups-
$user
222 mkdir
/tmp
/cups-
$user
223 mkdir
/tmp
/cups-
$user/bin
224 mkdir
/tmp
/cups-
$user/bin
/backend
225 mkdir
/tmp
/cups-
$user/bin
/driver
226 mkdir
/tmp
/cups-
$user/bin
/filter
227 mkdir
/tmp
/cups-
$user/certs
228 mkdir
/tmp
/cups-
$user/share
229 mkdir
/tmp
/cups-
$user/share
/banners
230 mkdir
/tmp
/cups-
$user/share
/drv
231 mkdir
/tmp
/cups-
$user/share
/locale
232 for file in ..
/locale
/cups_
*.po
; do
233 loc
=`basename $file .po | cut -c 6-`
234 mkdir
/tmp
/cups-
$user/share
/locale
/$loc
235 ln -s $root/locale
/cups_
$loc.po
/tmp
/cups-
$user/share
/locale
/$loc
236 ln -s $root/locale
/ppdc_
$loc.po
/tmp
/cups-
$user/share
/locale
/$loc
238 mkdir
/tmp
/cups-
$user/share
/mime
239 mkdir
/tmp
/cups-
$user/share
/model
240 mkdir
/tmp
/cups-
$user/share
/ppdc
241 mkdir
/tmp
/cups-
$user/interfaces
242 mkdir
/tmp
/cups-
$user/log
243 mkdir
/tmp
/cups-
$user/ppd
244 mkdir
/tmp
/cups-
$user/spool
245 mkdir
/tmp
/cups-
$user/spool
/temp
246 mkdir
/tmp
/cups-
$user/ssl
248 ln -s $root/backend
/dnssd
/tmp
/cups-
$user/bin
/backend
249 ln -s $root/backend
/http
/tmp
/cups-
$user/bin
/backend
250 ln -s $root/backend
/ipp
/tmp
/cups-
$user/bin
/backend
251 ln -s $root/backend
/lpd
/tmp
/cups-
$user/bin
/backend
252 ln -s $root/backend
/mdns
/tmp
/cups-
$user/bin
/backend
253 ln -s $root/backend
/parallel
/tmp
/cups-
$user/bin
/backend
254 ln -s $root/backend
/pseudo
/tmp
/cups-
$user/bin
/backend
255 ln -s $root/backend
/serial
/tmp
/cups-
$user/bin
/backend
256 ln -s $root/backend
/snmp
/tmp
/cups-
$user/bin
/backend
257 ln -s $root/backend
/socket
/tmp
/cups-
$user/bin
/backend
258 ln -s $root/backend
/usb
/tmp
/cups-
$user/bin
/backend
259 ln -s $root/cgi-bin
/tmp
/cups-
$user/bin
260 ln -s $root/monitor
/tmp
/cups-
$user/bin
261 ln -s $root/notifier
/tmp
/cups-
$user/bin
262 ln -s $root/scheduler
/tmp
/cups-
$user/bin
/daemon
263 ln -s $root/filter
/bannertops
/tmp
/cups-
$user/bin
/filter
264 ln -s $root/filter
/commandtops
/tmp
/cups-
$user/bin
/filter
265 ln -s $root/filter
/gziptoany
/tmp
/cups-
$user/bin
/filter
266 ln -s $root/filter
/hpgltops
/tmp
/cups-
$user/bin
/filter
267 ln -s $root/filter
/pstops
/tmp
/cups-
$user/bin
/filter
268 ln -s $root/filter
/rastertoepson
/tmp
/cups-
$user/bin
/filter
269 ln -s $root/filter
/rastertohp
/tmp
/cups-
$user/bin
/filter
270 ln -s $root/filter
/rastertolabel
/tmp
/cups-
$user/bin
/filter
271 ln -s $root/filter
/rastertopwg
/tmp
/cups-
$user/bin
/filter
272 ln -s $root/filter
/texttops
/tmp
/cups-
$user/bin
/filter
274 ln -s $root/data
/classified
/tmp
/cups-
$user/share
/banners
275 ln -s $root/data
/confidential
/tmp
/cups-
$user/share
/banners
276 ln -s $root/data
/secret
/tmp
/cups-
$user/share
/banners
277 ln -s $root/data
/standard
/tmp
/cups-
$user/share
/banners
278 ln -s $root/data
/topsecret
/tmp
/cups-
$user/share
/banners
279 ln -s $root/data
/unclassified
/tmp
/cups-
$user/share
/banners
280 ln -s $root/data
/tmp
/cups-
$user/share
/charmaps
281 ln -s $root/data
/tmp
/cups-
$user/share
/charsets
282 ln -s $root/data
/tmp
/cups-
$user/share
283 ln -s $root/fonts
/tmp
/cups-
$user/share
284 ln -s $root/ppdc
/sample.drv
/tmp
/cups-
$user/share
/drv
285 ln -s $root/conf
/mime.types
/tmp
/cups-
$user/share
/mime
286 ln -s $root/conf
/mime.convs
/tmp
/cups-
$user/share
/mime
287 ln -s $root/data
/*.h
/tmp
/cups-
$user/share
/ppdc
288 ln -s $root/data
/*.defs
/tmp
/cups-
$user/share
/ppdc
289 ln -s $root/templates
/tmp
/cups-
$user/share
291 if test -f $root/filter
/imagetops
; then
292 ln -s $root/filter
/imagetops
/tmp
/cups-
$user/bin
/filter
295 if test -f $root/filter
/imagetoraster
; then
296 ln -s $root/filter
/imagetoraster
/tmp
/cups-
$user/bin
/filter
300 # Mac OS X filters and configuration files...
303 if test `uname` = Darwin
; then
304 ln -s /usr
/libexec
/cups
/filter
/cgpdfto
* /tmp
/cups-
$user/bin
/filter
305 ln -s /usr
/libexec
/cups
/filter
/cgbannertopdf
/tmp
/cups-
$user/bin
/filter
306 ln -s /usr
/libexec
/cups
/filter
/cgimagetopdf
/tmp
/cups-
$user/bin
/filter
307 ln -s /usr
/libexec
/cups
/filter
/cgtexttopdf
/tmp
/cups-
$user/bin
/filter
308 ln -s /usr
/libexec
/cups
/filter
/nsimagetopdf
/tmp
/cups-
$user/bin
/filter
309 ln -s /usr
/libexec
/cups
/filter
/nstexttopdf
/tmp
/cups-
$user/bin
/filter
310 ln -s /usr
/libexec
/cups
/filter
/pictwpstops
/tmp
/cups-
$user/bin
/filter
311 ln -s /usr
/libexec
/cups
/filter
/pstoappleps
/tmp
/cups-
$user/bin
/filter
312 ln -s /usr
/libexec
/cups
/filter
/pstocupsraster
/tmp
/cups-
$user/bin
/filter
313 ln -s /usr
/libexec
/cups
/filter
/pstopdffilter
/tmp
/cups-
$user/bin
/filter
314 ln -s /usr
/libexec
/cups
/filter
/rastertourf
/tmp
/cups-
$user/bin
/filter
315 ln -s /usr
/libexec
/cups
/filter
/xhtmltopdf
/tmp
/cups-
$user/bin
/filter
317 if test -f /private
/etc
/cups
/apple.types
; then
318 ln -s /private
/etc
/cups
/apple.
* /tmp
/cups-
$user/share
/mime
319 elif test -f /usr
/share
/cups
/mime
/apple.types
; then
320 ln -s /usr
/share
/cups
/mime
/apple.
* /tmp
/cups-
$user/share
/mime
323 ln -s $root/filter
/pdftops
/tmp
/cups-
$user/bin
/filter
327 # Then create the necessary config files...
330 echo "Creating cupsd.conf for test..."
332 if test $ssltype = 2; then
333 encryption
="Encryption Required"
338 cat >/tmp
/cups-
$user/cupsd.conf
<<EOF
342 Listen 127.0.0.1:$port
344 ServerRoot /tmp/cups-$user
345 StateDir /tmp/cups-$user
346 ServerBin /tmp/cups-$user/bin
347 CacheDir /tmp/cups-$user/share
348 DataDir /tmp/cups-$user/share
349 FontPath /tmp/cups-$user/share/fonts
351 DocumentRoot $root/doc
352 RequestRoot /tmp/cups-$user/spool
353 TempDir /tmp/cups-$user/spool/temp
356 AccessLog /tmp/cups-$user/log/access_log
357 ErrorLog /tmp/cups-$user/log/error_log
358 PageLog /tmp/cups-$user/log/page_log
359 AccessLogLevel actions
362 PreserveJobHistory Yes
374 # Setup lots of test queues - half with PPD files, half without...
377 echo "Creating printers.conf for test..."
380 while test $i -le $nprinters1; do
381 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
384 DeviceURI file:/dev/null
385 Info Test PS printer $i
387 Location CUPS test suite
389 StateMessage Printer $1 is idle.
393 cp testps.ppd
/tmp
/cups-
$user/ppd
/test-
$i.ppd
398 while test $i -le $nprinters2; do
399 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
402 DeviceURI file:/dev/null
403 Info Test raw printer $i
405 Location CUPS test suite
407 StateMessage Printer $1 is idle.
414 if test -f /tmp
/cups-
$user/printers.conf
; then
415 cp /tmp
/cups-
$user/printers.conf
/tmp
/cups-
$user/printers.conf.orig
417 touch /tmp
/cups-
$user/printers.conf.orig
424 echo "Setting up environment variables for test..."
426 if test "x$LD_LIBRARY_PATH" = x
; then
427 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
429 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
432 export LD_LIBRARY_PATH
434 LD_PRELOAD
="$root/cups/libcups.so.2:$root/filter/libcupsimage.so.2:$root/cgi-bin/libcupscgi.so.1:$root/scheduler/libcupsmime.so.1:$root/driver/libcupsdriver.so.1:$root/ppdc/libcupsppdc.so.1"
435 if test `uname` = SunOS
-a -r /usr
/lib
/libCrun.so
.1; then
436 LD_PRELOAD
="/usr/lib/libCrun.so.1:$LD_PRELOAD"
440 if test "x$DYLD_LIBRARY_PATH" = x
; then
441 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
443 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
446 export DYLD_LIBRARY_PATH
448 if test "x$SHLIB_PATH" = x
; then
449 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
451 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
456 CUPS_DISABLE_APPLE_DEFAULT
=yes; export CUPS_DISABLE_APPLE_DEFAULT
457 CUPS_SERVER
=localhost
:8631; export CUPS_SERVER
458 CUPS_SERVERROOT
=/tmp
/cups-
$user; export CUPS_SERVERROOT
459 CUPS_STATEDIR
=/tmp
/cups-
$user; export CUPS_STATEDIR
460 CUPS_DATADIR
=/tmp
/cups-
$user/share
; export CUPS_DATADIR
461 LOCALEDIR
=/tmp
/cups-
$user/share
/locale
; export LOCALEDIR
464 # Set a new home directory to avoid getting user options mixed in...
471 # Force POSIX locale for tests...
481 # Start the server; run as foreground daemon in the background...
484 echo "Starting scheduler:"
485 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
488 if test `uname` = Darwin
-a "x$valgrind" = x
; then
489 DYLD_INSERT_LIBRARIES
=/usr
/lib
/libgmalloc.dylib \
490 $valgrind ..
/scheduler
/cupsd
-c /tmp
/cups-
$user/cupsd.conf
-f >/tmp
/cups-
$user/log
/debug_log
2>&1 &
492 $valgrind ..
/scheduler
/cupsd
-c /tmp
/cups-
$user/cupsd.conf
-f >/tmp
/cups-
$user/log
/debug_log
2>&1 &
497 if test "x$testtype" = x0
; then
498 # Not running tests...
499 echo "Scheduler is PID $cupsd and is listening on port 8631."
502 # Create a helper script to run programs with...
503 runcups
="/tmp/cups-$user/runcups"
505 echo "#!/bin/sh" >$runcups
506 echo "# Helper script for running CUPS test instance." >>$runcups
508 echo "# Set required environment variables..." >>$runcups
509 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
510 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
511 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
512 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
513 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
514 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
515 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
516 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
517 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
519 echo "# Run command..." >>$runcups
520 echo "exec \"\$@\"" >>$runcups
524 echo "The $runcups helper script can be used to test programs"
525 echo "with the server."
529 if test $argcount -eq 0; then
530 echo "Scheduler is PID $cupsd; run debugger now if you need to."
532 echo $ac_n "Press ENTER to continue... $ac_c"
535 echo "Scheduler is PID $cupsd."
539 IPP_PORT
=$port; export IPP_PORT
542 running
=`../systemv/lpstat -r 2>/dev/null`
543 if test "x$running" = "xscheduler is running"; then
547 echo "Waiting for scheduler to become ready..."
552 # Create the test report source file...
555 date=`date "+%Y-%m-%d"`
556 strfile
=/tmp
/cups-
$user/cups-str-1.5
-$date-$user.html
559 cat str-header.html
>$strfile
562 # Run the IPP tests...
566 echo "Running IPP compliance tests..."
568 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
569 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
570 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
571 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
572 echo "<PRE>" >>$strfile
575 for file in 4*.
test; do
576 echo "Performing $file..."
579 .
/ipptool
-t ipp
://localhost
:$port/printers
$file |
tee -a $strfile
582 if test $status != 0; then
584 fail
=`expr $fail + 1`
588 echo "</PRE>" >>$strfile
591 # Run the command tests...
595 echo "Running command tests..."
597 echo "<H1>2 - Command Tests</H1>" >>$strfile
598 echo "<P>This section provides the results to the command tests" >>$strfile
599 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
600 echo $date by
$user on
`hostname`.
>>$strfile
601 echo "<PRE>" >>$strfile
603 for file in 5*.sh
; do
604 echo "Performing $file..."
606 echo "\"$file\":" >>$strfile
608 sh
$file $pjobs $pprinters |
tee -a $strfile
611 if test $status != 0; then
613 fail
=`expr $fail + 1`
617 echo "</PRE>" >>$strfile
626 # Append the log files for post-mortim...
629 echo "<H1>3 - Log Files</H1>" >>$strfile
637 echo "<H2>Summary</H2>" >>$strfile
640 count
=`ls -1 /tmp/cups-$user/spool | wc -l`
641 count
=`expr $count - 1`
642 if test $count != 0; then
643 echo "FAIL: $count job control files were not purged."
644 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
645 fail
=`expr $fail + 1`
647 echo "PASS: All job control files purged."
648 echo "<P>PASS: All job control files purged.</P>" >>$strfile
651 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
652 count
=`$GREP '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
653 expected
=`expr $pjobs \* 2 + 34`
654 expected2
=`expr $expected + 2`
655 if test $count -lt $expected -a $count -gt $expected2; then
656 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
657 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
658 fail
=`expr $fail + 1`
660 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
661 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
664 # Paged printed on Test2
665 count
=`$GREP '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
666 expected
=`expr $pjobs \* 2 + 3`
667 if test $count != $expected; then
668 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
669 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
670 fail
=`expr $fail + 1`
672 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
673 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
677 count
=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
678 expected
=`expr 37 + 18 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
679 if test $count != $expected; then
680 echo "FAIL: $count requests logged, expected $expected."
681 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
682 fail
=`expr $fail + 1`
684 echo "PASS: $count requests logged."
685 echo "<P>PASS: $count requests logged.</P>" >>$strfile
688 # Did CUPS-Get-Default get logged?
689 if $GREP -q CUPS-Get-Default
/tmp
/cups-
$user/log
/access_log
; then
690 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
691 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
692 echo "<PRE>" >>$strfile
693 $GREP CUPS-Get-Default
/tmp
/cups-
$user/log
/access_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
694 echo "</PRE>" >>$strfile
695 fail
=`expr $fail + 1`
697 echo "PASS: CUPS-Get-Default not logged."
698 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
701 # Emergency log messages
702 count
=`$GREP '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
703 if test $count != 0; then
704 echo "FAIL: $count emergency messages, expected 0."
705 $GREP '^X ' /tmp
/cups-
$user/log
/error_log
706 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
707 echo "<PRE>" >>$strfile
708 $GREP '^X ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
709 echo "</PRE>" >>$strfile
710 fail
=`expr $fail + 1`
712 echo "PASS: $count emergency messages."
713 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
717 count
=`$GREP '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
718 if test $count != 0; then
719 echo "FAIL: $count alert messages, expected 0."
720 $GREP '^A ' /tmp
/cups-
$user/log
/error_log
721 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
722 echo "<PRE>" >>$strfile
723 $GREP '^A ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
724 echo "</PRE>" >>$strfile
725 fail
=`expr $fail + 1`
727 echo "PASS: $count alert messages."
728 echo "<P>PASS: $count alert messages.</P>" >>$strfile
731 # Critical log messages
732 count
=`$GREP '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
733 if test $count != 0; then
734 echo "FAIL: $count critical messages, expected 0."
735 $GREP '^C ' /tmp
/cups-
$user/log
/error_log
736 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
737 echo "<PRE>" >>$strfile
738 $GREP '^C ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
739 echo "</PRE>" >>$strfile
740 fail
=`expr $fail + 1`
742 echo "PASS: $count critical messages."
743 echo "<P>PASS: $count critical messages.</P>" >>$strfile
747 count
=`$GREP '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
748 if test $count != 18; then
749 echo "FAIL: $count error messages, expected 18."
750 $GREP '^E ' /tmp
/cups-
$user/log
/error_log
751 echo "<P>FAIL: $count error messages, expected 18.</P>" >>$strfile
752 echo "<PRE>" >>$strfile
753 $GREP '^E ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
754 echo "</PRE>" >>$strfile
755 fail
=`expr $fail + 1`
757 echo "PASS: $count error messages."
758 echo "<P>PASS: $count error messages.</P>" >>$strfile
761 # Warning log messages
762 count
=`$GREP '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
763 if test $count != 9; then
764 echo "FAIL: $count warning messages, expected 9."
765 $GREP '^W ' /tmp
/cups-
$user/log
/error_log
766 echo "<P>FAIL: $count warning messages, expected 9.</P>" >>$strfile
767 echo "<PRE>" >>$strfile
768 $GREP '^W ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
769 echo "</PRE>" >>$strfile
770 fail
=`expr $fail + 1`
772 echo "PASS: $count warning messages."
773 echo "<P>PASS: $count warning messages.</P>" >>$strfile
776 # Notice log messages
777 count
=`$GREP '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
778 if test $count != 0; then
779 echo "FAIL: $count notice messages, expected 0."
780 $GREP '^N ' /tmp
/cups-
$user/log
/error_log
781 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
782 echo "<PRE>" >>$strfile
783 $GREP '^N ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
784 echo "</PRE>" >>$strfile
785 fail
=`expr $fail + 1`
787 echo "PASS: $count notice messages."
788 echo "<P>PASS: $count notice messages.</P>" >>$strfile
792 count
=`$GREP '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
793 if test $count = 0; then
794 echo "FAIL: $count info messages, expected more than 0."
795 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
796 fail
=`expr $fail + 1`
798 echo "PASS: $count info messages."
799 echo "<P>PASS: $count info messages.</P>" >>$strfile
803 count
=`$GREP '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
804 if test $count = 0; then
805 echo "FAIL: $count debug messages, expected more than 0."
806 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
807 fail
=`expr $fail + 1`
809 echo "PASS: $count debug messages."
810 echo "<P>PASS: $count debug messages.</P>" >>$strfile
813 # Debug2 log messages
814 count
=`$GREP '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
815 if test $count = 0; then
816 echo "FAIL: $count debug2 messages, expected more than 0."
817 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
818 fail
=`expr $fail + 1`
820 echo "PASS: $count debug2 messages."
821 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
825 echo "<H2>access_log</H2>" >>$strfile
826 echo "<PRE>" >>$strfile
827 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/access_log
>>$strfile
828 echo "</PRE>" >>$strfile
830 echo "<H2>error_log</H2>" >>$strfile
831 echo "<PRE>" >>$strfile
832 $GREP -v '^d' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
833 echo "</PRE>" >>$strfile
835 echo "<H2>page_log</H2>" >>$strfile
836 echo "<PRE>" >>$strfile
837 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/page_log
>>$strfile
838 echo "</PRE>" >>$strfile
841 # Format the reports and tell the user where to find them...
844 cat str-trailer.html
>>$strfile
848 if test $fail != 0; then
849 echo "$fail tests failed."
850 cp /tmp
/cups-
$user/log
/error_log error_log-
$date-$user
853 echo "All tests were successful."
856 echo "Log files can be found in /tmp/cups-$user/log."
857 echo "A HTML report was created in $strfile."
860 if test $fail != 0; then
861 echo "Copies of the error_log and `basename $strfile` files are in"
869 # End of "$Id: run-stp-tests.sh 9034 2010-03-09 07:03:06Z mike $"