3 # "$Id: run-stp-tests.sh 10464 2012-05-15 14:04:18Z 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/xpg4/bin/grep; then
31 GREP=/usr/xpg4/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
354 PidFile /tmp/cups-$user/cupsd.pid
357 AccessLog /tmp/cups-$user/log/access_log
358 ErrorLog /tmp/cups-$user/log/error_log
359 PageLog /tmp/cups-$user/log/page_log
360 AccessLogLevel actions
363 PreserveJobHistory Yes
375 # Setup lots of test queues - half with PPD files, half without...
378 echo "Creating printers.conf for test..."
381 while test $i -le $nprinters1; do
382 cat >>/tmp/cups-$user/printers.conf <<EOF
385 DeviceURI file:/dev/null
386 Info Test PS printer $i
388 Location CUPS test suite
390 StateMessage Printer $1 is idle.
394 cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
399 while test $i -le $nprinters2; do
400 cat >>/tmp/cups-$user/printers.conf <<EOF
403 DeviceURI file:/dev/null
404 Info Test raw printer $i
406 Location CUPS test suite
408 StateMessage Printer $1 is idle.
415 if test -f /tmp/cups-$user/printers.conf; then
416 cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
418 touch /tmp/cups-$user/printers.conf.orig
425 echo "Setting up environment variables for test..."
427 if test "x$LD_LIBRARY_PATH" = x; then
428 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
430 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
433 export LD_LIBRARY_PATH
435 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"
436 if test `uname` = SunOS -a -r /usr/lib/libCrun.so.1; then
437 LD_PRELOAD="/usr/lib/libCrun.so.1:$LD_PRELOAD"
441 if test "x$DYLD_LIBRARY_PATH" = x; then
442 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
444 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
447 export DYLD_LIBRARY_PATH
449 if test "x$SHLIB_PATH" = x; then
450 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
452 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
457 CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
458 CUPS_SERVER=localhost:8631; export CUPS_SERVER
459 CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
460 CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
461 CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
462 LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
465 # Set a new home directory to avoid getting user options mixed in...
472 # Force POSIX locale for tests...
482 # Start the server; run as foreground daemon in the background...
485 echo "Starting scheduler:"
486 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
489 if test `uname` = Darwin -a "x$valgrind" = x -a -f /usr/lib/libgmalloc.dylib; then
490 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib \
491 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
493 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
498 if test "x$testtype" = x0; then
499 # Not running tests...
500 echo "Scheduler is PID $cupsd and is listening on port 8631."
503 # Create a helper script to run programs with...
504 runcups="/tmp/cups-$user/runcups"
506 echo "#!/bin/sh" >$runcups
507 echo "# Helper script for running CUPS test instance." >>$runcups
509 echo "# Set required environment variables..." >>$runcups
510 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
511 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
512 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
513 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
514 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
515 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
516 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
517 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
518 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
520 echo "# Run command..." >>$runcups
521 echo "exec \"\$@\"" >>$runcups
525 echo "The $runcups helper script can be used to test programs"
526 echo "with the server."
530 if test $argcount -eq 0; then
531 echo "Scheduler is PID $cupsd; run debugger now if you need to."
533 echo $ac_n "Press ENTER to continue... $ac_c"
536 echo "Scheduler is PID $cupsd."
540 IPP_PORT=$port; export IPP_PORT
543 running=`../systemv/lpstat -r 2>/dev/null`
544 if test "x$running" = "xscheduler is running"; then
548 echo "Waiting for scheduler to become ready..."
553 # Create the test report source file...
556 date=`date "+%Y-%m-%d"`
557 strfile=/tmp/cups-$user/cups-str-1.5-$date-$user.html
560 cat str-header.html >$strfile
563 # Run the IPP tests...
567 echo "Running IPP compliance tests..."
569 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
570 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
571 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
572 echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
573 echo "<PRE>" >>$strfile
576 for file in 4*.test; do
577 echo $ac_n "Performing $file: $ac_c"
580 ./ipptool -tI ipp://localhost:$port/printers $file >> $strfile
583 if test $status != 0; then
585 fail=`expr $fail + 1`
591 echo "</PRE>" >>$strfile
594 # Run the command tests...
598 echo "Running command tests..."
600 echo "<H1>2 - Command Tests</H1>" >>$strfile
601 echo "<P>This section provides the results to the command tests" >>$strfile
602 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
603 echo $date by $user on `hostname`. >>$strfile
604 echo "<PRE>" >>$strfile
606 for file in 5*.sh; do
607 echo $ac_n "Performing $file: $ac_c"
609 echo "\"$file\":" >>$strfile
611 sh $file $pjobs $pprinters >> $strfile
614 if test $status != 0; then
616 fail=`expr $fail + 1`
622 echo "</PRE>" >>$strfile
631 # Append the log files for post-mortim...
634 echo "<H1>3 - Log Files</H1>" >>$strfile
642 echo "<H2>Summary</H2>" >>$strfile
645 count=`ls -1 /tmp/cups-$user/spool | wc -l`
646 count=`expr $count - 1`
647 if test $count != 0; then
648 echo "FAIL: $count job control files were not purged."
649 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
650 fail=`expr $fail + 1`
652 echo "PASS: All job control files purged."
653 echo "<P>PASS: All job control files purged.</P>" >>$strfile
656 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
657 count=`$GREP '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
658 expected=`expr $pjobs \* 2 + 34`
659 expected2=`expr $expected + 2`
660 if test $count -lt $expected -a $count -gt $expected2; then
661 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
662 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
663 fail=`expr $fail + 1`
665 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
666 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
669 # Paged printed on Test2
670 count=`$GREP '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
671 expected=`expr $pjobs \* 2 + 3`
672 if test $count != $expected; then
673 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
674 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
675 fail=`expr $fail + 1`
677 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
678 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
682 count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
683 expected=`expr 37 + 18 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
684 if test $count != $expected; then
685 echo "FAIL: $count requests logged, expected $expected."
686 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
687 fail=`expr $fail + 1`
689 echo "PASS: $count requests logged."
690 echo "<P>PASS: $count requests logged.</P>" >>$strfile
693 # Did CUPS-Get-Default get logged?
694 if $GREP -q CUPS-Get-Default /tmp/cups-$user/log/access_log; then
695 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
696 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
697 echo "<PRE>" >>$strfile
698 $GREP CUPS-Get-Default /tmp/cups-$user/log/access_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
699 echo "</PRE>" >>$strfile
700 fail=`expr $fail + 1`
702 echo "PASS: CUPS-Get-Default not logged."
703 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
706 # Emergency log messages
707 count=`$GREP '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
708 if test $count != 0; then
709 echo "FAIL: $count emergency messages, expected 0."
710 $GREP '^X ' /tmp/cups-$user/log/error_log
711 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
712 echo "<PRE>" >>$strfile
713 $GREP '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
714 echo "</PRE>" >>$strfile
715 fail=`expr $fail + 1`
717 echo "PASS: $count emergency messages."
718 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
722 count=`$GREP '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
723 if test $count != 0; then
724 echo "FAIL: $count alert messages, expected 0."
725 $GREP '^A ' /tmp/cups-$user/log/error_log
726 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
727 echo "<PRE>" >>$strfile
728 $GREP '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
729 echo "</PRE>" >>$strfile
730 fail=`expr $fail + 1`
732 echo "PASS: $count alert messages."
733 echo "<P>PASS: $count alert messages.</P>" >>$strfile
736 # Critical log messages
737 count=`$GREP '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
738 if test $count != 0; then
739 echo "FAIL: $count critical messages, expected 0."
740 $GREP '^C ' /tmp/cups-$user/log/error_log
741 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
742 echo "<PRE>" >>$strfile
743 $GREP '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
744 echo "</PRE>" >>$strfile
745 fail=`expr $fail + 1`
747 echo "PASS: $count critical messages."
748 echo "<P>PASS: $count critical messages.</P>" >>$strfile
752 count=`$GREP '^E ' /tmp/cups-$user/log/error_log | grep -v '(usb) crashed on signal 11' | wc -l | awk '{print $1}'`
753 if test $count != 18; then
754 echo "FAIL: $count error messages, expected 18."
755 $GREP '^E ' /tmp/cups-$user/log/error_log
756 echo "<P>FAIL: $count error messages, expected 18.</P>" >>$strfile
757 echo "<PRE>" >>$strfile
758 $GREP '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
759 echo "</PRE>" >>$strfile
760 fail=`expr $fail + 1`
762 echo "PASS: $count error messages."
763 echo "<P>PASS: $count error messages.</P>" >>$strfile
766 # Warning log messages
767 count=`$GREP '^W ' /tmp/cups-$user/log/error_log | grep -v 'org.freedesktop.ColorManager' | grep -v 'Avahi client failed: -26' | wc -l | awk '{print $1}'`
768 if test $count != 9; then
769 echo "FAIL: $count warning messages, expected 9."
770 $GREP '^W ' /tmp/cups-$user/log/error_log
771 echo "<P>FAIL: $count warning messages, expected 9.</P>" >>$strfile
772 echo "<PRE>" >>$strfile
773 $GREP '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
774 echo "</PRE>" >>$strfile
775 fail=`expr $fail + 1`
777 echo "PASS: $count warning messages."
778 echo "<P>PASS: $count warning messages.</P>" >>$strfile
781 # Notice log messages
782 count=`$GREP '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
783 if test $count != 0; then
784 echo "FAIL: $count notice messages, expected 0."
785 $GREP '^N ' /tmp/cups-$user/log/error_log
786 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
787 echo "<PRE>" >>$strfile
788 $GREP '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
789 echo "</PRE>" >>$strfile
790 fail=`expr $fail + 1`
792 echo "PASS: $count notice messages."
793 echo "<P>PASS: $count notice messages.</P>" >>$strfile
797 count=`$GREP '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
798 if test $count = 0; then
799 echo "FAIL: $count info messages, expected more than 0."
800 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
801 fail=`expr $fail + 1`
803 echo "PASS: $count info messages."
804 echo "<P>PASS: $count info messages.</P>" >>$strfile
808 count=`$GREP '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
809 if test $count = 0; then
810 echo "FAIL: $count debug messages, expected more than 0."
811 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
812 fail=`expr $fail + 1`
814 echo "PASS: $count debug messages."
815 echo "<P>PASS: $count debug messages.</P>" >>$strfile
818 # Debug2 log messages
819 count=`$GREP '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
820 if test $count = 0; then
821 echo "FAIL: $count debug2 messages, expected more than 0."
822 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
823 fail=`expr $fail + 1`
825 echo "PASS: $count debug2 messages."
826 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
830 echo "<H2>access_log</H2>" >>$strfile
831 echo "<PRE>" >>$strfile
832 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp/cups-$user/log/access_log >>$strfile
833 echo "</PRE>" >>$strfile
835 echo "<H2>error_log</H2>" >>$strfile
836 echo "<PRE>" >>$strfile
837 $GREP -v '^d' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
838 echo "</PRE>" >>$strfile
840 echo "<H2>page_log</H2>" >>$strfile
841 echo "<PRE>" >>$strfile
842 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp/cups-$user/log/page_log >>$strfile
843 echo "</PRE>" >>$strfile
846 # Format the reports and tell the user where to find them...
849 cat str-trailer.html >>$strfile
853 if test $fail != 0; then
854 echo "$fail tests failed."
855 cp /tmp/cups-$user/log/error_log error_log-$date-$user
858 echo "All tests were successful."
861 echo "Log files can be found in /tmp/cups-$user/log."
862 echo "A HTML report was created in $strfile."
865 if test $fail != 0; then
866 echo "Copies of the error_log and `basename $strfile` files are in"
874 # End of "$Id: run-stp-tests.sh 10464 2012-05-15 14:04:18Z mike $"