Revert manifest to default one
[external/cups.git] / test / run-stp-tests.sh
1 #!/bin/sh
2 #
3 # "$Id: run-stp-tests.sh 10464 2012-05-15 14:04:18Z mike $"
4 #
5 #   Perform the complete set of IPP compliance tests specified in the
6 #   CUPS Software Test Plan.
7 #
8 #   Copyright 2007-2011 by Apple Inc.
9 #   Copyright 1997-2007 by Easy Software Products, all rights reserved.
10 #
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/".
16 #
17
18 argcount=$#
19
20 #
21 # Make the IPP test program...
22 #
23
24 make
25
26 #
27 # Solaris has a non-POSIX grep in /bin...
28 #
29
30 if test -x /usr/xpg4/bin/grep; then
31         GREP=/usr/xpg4/bin/grep
32 else
33         GREP=grep
34 fi
35
36 #
37 # Figure out the proper echo options...
38 #
39
40 if (echo "testing\c"; echo 1,2,3) | $GREP c >/dev/null; then
41         ac_n=-n
42         ac_c=
43 else
44         ac_n=
45         ac_c='\c'
46 fi
47
48 #
49 # Greet the tester...
50 #
51
52 echo "Welcome to the CUPS Automated Test Script."
53 echo ""
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?"
61 echo ""
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:"
64 echo ""
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)"
70 echo ""
71 echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
72
73 if test $# -gt 0; then
74         testtype=$1
75         shift
76 else
77         read testtype
78 fi
79 echo ""
80
81 case "$testtype" in
82         0)
83                 echo "Running in test mode (0)"
84                 nprinters1=0
85                 nprinters2=0
86                 pjobs=0
87                 pprinters=0
88                 ;;
89         2)
90                 echo "Running the medium tests (2)"
91                 nprinters1=10
92                 nprinters2=20
93                 pjobs=20
94                 pprinters=10
95                 ;;
96         3)
97                 echo "Running the extreme tests (3)"
98                 nprinters1=500
99                 nprinters2=1000
100                 pjobs=100
101                 pprinters=50
102                 ;;
103         4)
104                 echo "Running the torture tests (4)"
105                 nprinters1=10000
106                 nprinters2=20000
107                 pjobs=200
108                 pprinters=100
109                 ;;
110         *)
111                 echo "Running the timid tests (1)"
112                 nprinters1=0
113                 nprinters2=0
114                 pjobs=10
115                 pprinters=0
116                 ;;
117 esac
118
119 #
120 # See if we want to do SSL testing...
121 #
122
123 echo ""
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"
126 echo "tools:"
127 echo ""
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"
131 echo ""
132 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
133
134 if test $# -gt 0; then
135         ssltype=$1
136         shift
137 else
138         read ssltype
139 fi
140 echo ""
141
142 case "$ssltype" in
143         1)
144                 echo "Will test but not require encryption (1)"
145                 ;;
146         2)
147                 echo "Will test and require encryption (2)"
148                 ;;
149         *)
150                 echo "Not using SSL/TLS (0)"
151                 ssltype=0
152                 ;;
153 esac
154
155 #
156 # Information for the server/tests...
157 #
158
159 user="$USER"
160 if test -z "$user"; then
161         if test -x /usr/ucb/whoami; then
162                 user=`/usr/ucb/whoami`
163         else
164                 user=`whoami`
165         fi
166
167         if test -z "$user"; then
168                 user="unknown"
169         fi
170 fi
171
172 port=8631
173 cwd=`pwd`
174 root=`dirname $cwd`
175
176 #
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...
180 #
181
182 unset LPDEST
183 unset PRINTER
184
185 #
186 # See if we want to use valgrind...
187 #
188
189 echo ""
190 echo "This test script can use the Valgrind software from:"
191 echo ""
192 echo "    http://developer.kde.org/~sewardj/"
193 echo ""
194 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
195
196 if test $# -gt 0; then
197         usevalgrind=$1
198         shift
199 else
200         read usevalgrind
201 fi
202 echo ""
203
204 case "$usevalgrind" in
205         Y* | y*)
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..."
208                 ;;
209
210         *)
211                 valgrind=""
212                 ;;
213 esac
214
215 #
216 # Start by creating temporary directories for the tests...
217 #
218
219 echo "Creating directories for test..."
220
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
237 done
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
247
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
273
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
290
291 if test -f $root/filter/imagetops; then
292         ln -s $root/filter/imagetops /tmp/cups-$user/bin/filter
293 fi
294
295 if test -f $root/filter/imagetoraster; then
296         ln -s $root/filter/imagetoraster /tmp/cups-$user/bin/filter
297 fi
298
299 #
300 # Mac OS X filters and configuration files...
301 #
302
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
316
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
321         fi
322 else
323         ln -s $root/filter/pdftops /tmp/cups-$user/bin/filter
324 fi
325
326 #
327 # Then create the necessary config files...
328 #
329
330 echo "Creating cupsd.conf for test..."
331
332 if test $ssltype = 2; then
333         encryption="Encryption Required"
334 else
335         encryption=""
336 fi
337
338 cat >/tmp/cups-$user/cupsd.conf <<EOF
339 Browsing Off
340 FileDevice yes
341 Printcap
342 Listen 127.0.0.1:$port
343 User $user
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
350 PassEnv LOCALEDIR
351 DocumentRoot $root/doc
352 RequestRoot /tmp/cups-$user/spool
353 TempDir /tmp/cups-$user/spool/temp
354 PidFile /tmp/cups-$user/cupsd.pid
355 MaxSubscriptions 3
356 MaxLogSize 0
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
361 LogLevel debug2
362 LogTimeFormat usecs
363 PreserveJobHistory Yes
364 <Policy default>
365 <Limit All>
366 Order Deny,Allow
367 Deny from all
368 Allow from 127.0.0.1
369 $encryption
370 </Limit>
371 </Policy>
372 EOF
373
374 #
375 # Setup lots of test queues - half with PPD files, half without...
376 #
377
378 echo "Creating printers.conf for test..."
379
380 i=1
381 while test $i -le $nprinters1; do
382         cat >>/tmp/cups-$user/printers.conf <<EOF
383 <Printer test-$i>
384 Accepting Yes
385 DeviceURI file:/dev/null
386 Info Test PS printer $i
387 JobSheets none none
388 Location CUPS test suite
389 State Idle
390 StateMessage Printer $1 is idle.
391 </Printer>
392 EOF
393
394         cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
395
396         i=`expr $i + 1`
397 done
398
399 while test $i -le $nprinters2; do
400         cat >>/tmp/cups-$user/printers.conf <<EOF
401 <Printer test-$i>
402 Accepting Yes
403 DeviceURI file:/dev/null
404 Info Test raw printer $i
405 JobSheets none none
406 Location CUPS test suite
407 State Idle
408 StateMessage Printer $1 is idle.
409 </Printer>
410 EOF
411
412         i=`expr $i + 1`
413 done
414
415 if test -f /tmp/cups-$user/printers.conf; then
416         cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
417 else
418         touch /tmp/cups-$user/printers.conf.orig
419 fi
420
421 #
422 # Setup the paths...
423 #
424
425 echo "Setting up environment variables for test..."
426
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"
429 else
430         LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
431 fi
432
433 export LD_LIBRARY_PATH
434
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"
438 fi
439 export LD_PRELOAD
440
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"
443 else
444         DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
445 fi
446
447 export DYLD_LIBRARY_PATH
448
449 if test "x$SHLIB_PATH" = x; then
450         SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
451 else
452         SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
453 fi
454
455 export SHLIB_PATH
456
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
463
464 #
465 # Set a new home directory to avoid getting user options mixed in...
466 #
467
468 HOME=/tmp/cups-$user
469 export HOME
470
471 #
472 # Force POSIX locale for tests...
473 #
474
475 LANG=C
476 export LANG
477
478 LC_MESSAGES=C
479 export LC_MESSAGES
480
481 #
482 # Start the server; run as foreground daemon in the background...
483 #
484
485 echo "Starting scheduler:"
486 echo "    $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
487 echo ""
488
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 &
492 else
493         $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
494 fi
495
496 cupsd=$!
497
498 if test "x$testtype" = x0; then
499         # Not running tests...
500         echo "Scheduler is PID $cupsd and is listening on port 8631."
501         echo ""
502
503         # Create a helper script to run programs with...
504         runcups="/tmp/cups-$user/runcups"
505
506         echo "#!/bin/sh" >$runcups
507         echo "# Helper script for running CUPS test instance." >>$runcups
508         echo "" >>$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
519         echo "" >>$runcups
520         echo "# Run command..." >>$runcups
521         echo "exec \"\$@\"" >>$runcups
522
523         chmod +x $runcups
524
525         echo "The $runcups helper script can be used to test programs"
526         echo "with the server."
527         exit 0
528 fi
529
530 if test $argcount -eq 0; then
531         echo "Scheduler is PID $cupsd; run debugger now if you need to."
532         echo ""
533         echo $ac_n "Press ENTER to continue... $ac_c"
534         read junk
535 else
536         echo "Scheduler is PID $cupsd."
537         sleep 2
538 fi
539
540 IPP_PORT=$port; export IPP_PORT
541
542 while true; do
543         running=`../systemv/lpstat -r 2>/dev/null`
544         if test "x$running" = "xscheduler is running"; then
545                 break
546         fi
547
548         echo "Waiting for scheduler to become ready..."
549         sleep 10
550 done
551
552 #
553 # Create the test report source file...
554 #
555
556 date=`date "+%Y-%m-%d"`
557 strfile=/tmp/cups-$user/cups-str-1.5-$date-$user.html
558
559 rm -f $strfile
560 cat str-header.html >$strfile
561
562 #
563 # Run the IPP tests...
564 #
565
566 echo ""
567 echo "Running IPP compliance tests..."
568
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
574
575 fail=0
576 for file in 4*.test; do
577         echo $ac_n "Performing $file: $ac_c"
578         echo "" >>$strfile
579
580         ./ipptool -tI ipp://localhost:$port/printers $file >> $strfile
581         status=$?
582
583         if test $status != 0; then
584                 echo FAIL
585                 fail=`expr $fail + 1`
586         else
587                 echo PASS
588         fi
589 done
590
591 echo "</PRE>" >>$strfile
592
593 #
594 # Run the command tests...
595 #
596
597 echo ""
598 echo "Running command tests..."
599
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
605
606 for file in 5*.sh; do
607         echo $ac_n "Performing $file: $ac_c"
608         echo "" >>$strfile
609         echo "\"$file\":" >>$strfile
610
611         sh $file $pjobs $pprinters >> $strfile
612         status=$?
613
614         if test $status != 0; then
615                 echo FAIL
616                 fail=`expr $fail + 1`
617         else
618                 echo PASS
619         fi
620 done
621
622 echo "</PRE>" >>$strfile
623
624 #
625 # Stop the server...
626 #
627
628 kill $cupsd
629
630 #
631 # Append the log files for post-mortim...
632 #
633
634 echo "<H1>3 - Log Files</H1>" >>$strfile
635
636 #
637 # Verify counts...
638 #
639
640 echo "Test Summary"
641 echo ""
642 echo "<H2>Summary</H2>" >>$strfile
643
644 # Job control files
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`
651 else
652         echo "PASS: All job control files purged."
653         echo "<P>PASS: All job control files purged.</P>" >>$strfile
654 fi
655
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`
664 else
665         echo "PASS: Printer 'Test1' correctly produced $count page(s)."
666         echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
667 fi
668
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`
676 else
677         echo "PASS: Printer 'Test2' correctly produced $count page(s)."
678         echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
679 fi
680
681 # Requests logged
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`
688 else
689         echo "PASS: $count requests logged."
690         echo "<P>PASS: $count requests logged.</P>" >>$strfile
691 fi
692
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
699         echo "</PRE>" >>$strfile
700         fail=`expr $fail + 1`
701 else
702         echo "PASS: CUPS-Get-Default not logged."
703         echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
704 fi
705
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
714         echo "</PRE>" >>$strfile
715         fail=`expr $fail + 1`
716 else
717         echo "PASS: $count emergency messages."
718         echo "<P>PASS: $count emergency messages.</P>" >>$strfile
719 fi
720
721 # Alert log messages
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
729         echo "</PRE>" >>$strfile
730         fail=`expr $fail + 1`
731 else
732         echo "PASS: $count alert messages."
733         echo "<P>PASS: $count alert messages.</P>" >>$strfile
734 fi
735
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
744         echo "</PRE>" >>$strfile
745         fail=`expr $fail + 1`
746 else
747         echo "PASS: $count critical messages."
748         echo "<P>PASS: $count critical messages.</P>" >>$strfile
749 fi
750
751 # Error log messages
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
759         echo "</PRE>" >>$strfile
760         fail=`expr $fail + 1`
761 else
762         echo "PASS: $count error messages."
763         echo "<P>PASS: $count error messages.</P>" >>$strfile
764 fi
765
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
774         echo "</PRE>" >>$strfile
775         fail=`expr $fail + 1`
776 else
777         echo "PASS: $count warning messages."
778         echo "<P>PASS: $count warning messages.</P>" >>$strfile
779 fi
780
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
789         echo "</PRE>" >>$strfile
790         fail=`expr $fail + 1`
791 else
792         echo "PASS: $count notice messages."
793         echo "<P>PASS: $count notice messages.</P>" >>$strfile
794 fi
795
796 # Info log messages
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`
802 else
803         echo "PASS: $count info messages."
804         echo "<P>PASS: $count info messages.</P>" >>$strfile
805 fi
806
807 # Debug log messages
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`
813 else
814         echo "PASS: $count debug messages."
815         echo "<P>PASS: $count debug messages.</P>" >>$strfile
816 fi
817
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`
824 else
825         echo "PASS: $count debug2 messages."
826         echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
827 fi
828
829 # Log files...
830 echo "<H2>access_log</H2>" >>$strfile
831 echo "<PRE>" >>$strfile
832 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
833 echo "</PRE>" >>$strfile
834
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/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
838 echo "</PRE>" >>$strfile
839
840 echo "<H2>page_log</H2>" >>$strfile
841 echo "<PRE>" >>$strfile
842 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
843 echo "</PRE>" >>$strfile
844
845 #
846 # Format the reports and tell the user where to find them...
847 #
848
849 cat str-trailer.html >>$strfile
850
851 echo ""
852
853 if test $fail != 0; then
854         echo "$fail tests failed."
855         cp /tmp/cups-$user/log/error_log error_log-$date-$user
856         cp $strfile .
857 else
858         echo "All tests were successful."
859 fi
860
861 echo "Log files can be found in /tmp/cups-$user/log."
862 echo "A HTML report was created in $strfile."
863 echo ""
864
865 if test $fail != 0; then
866         echo "Copies of the error_log and `basename $strfile` files are in"
867         echo "`pwd`."
868         echo ""
869
870         exit 1
871 fi
872
873 #
874 # End of "$Id: run-stp-tests.sh 10464 2012-05-15 14:04:18Z mike $"
875 #