]> git.ipfire.org Git - thirdparty/cups.git/blob - test/run-stp-tests.sh
Merge changes from CUPS 1.4svn-r8177 (tentative CUPS 1.4b2)
[thirdparty/cups.git] / test / run-stp-tests.sh
1 #!/bin/sh
2 #
3 # "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
4 #
5 # Perform the complete set of IPP compliance tests specified in the
6 # CUPS Software Test Plan.
7 #
8 # Copyright 2007-2008 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 # Figure out the proper echo options...
28 #
29
30 if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
31 ac_n=-n
32 ac_c=
33 else
34 ac_n=
35 ac_c='\c'
36 fi
37
38 #
39 # Greet the tester...
40 #
41
42 echo "Welcome to the CUPS Automated Test Script."
43 echo ""
44 echo "Before we begin, it is important that you understand that the larger"
45 echo "tests require significant amounts of RAM and disk space. If you"
46 echo "attempt to run one of the big tests on a system that lacks sufficient"
47 echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
48 echo "more system processes that you've grown attached to, like the X"
49 echo "server. The question you may want to ask yourself before running a"
50 echo "large test is: Do you feel lucky?"
51 echo ""
52 echo "OK, now that we have the Dirty Harry quote out of the way, please"
53 echo "choose the type of test you wish to perform:"
54 echo ""
55 echo "0 - No testing, keep the scheduler running for me (all systems)"
56 echo "1 - Basic conformance test, no load testing (all systems)"
57 echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
58 echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
59 echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
60 echo ""
61 echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
62
63 if test $# -gt 0; then
64 testtype=$1
65 shift
66 else
67 read testtype
68 fi
69 echo ""
70
71 case "$testtype" in
72 0)
73 echo "Running in test mode (0)"
74 nprinters1=0
75 nprinters2=0
76 pjobs=0
77 ;;
78 2)
79 echo "Running the medium tests (2)"
80 nprinters1=10
81 nprinters2=20
82 pjobs=20
83 ;;
84 3)
85 echo "Running the extreme tests (3)"
86 nprinters1=500
87 nprinters2=1000
88 pjobs=100
89 ;;
90 4)
91 echo "Running the torture tests (4)"
92 nprinters1=10000
93 nprinters2=20000
94 pjobs=200
95 ;;
96 *)
97 echo "Running the timid tests (1)"
98 nprinters1=0
99 nprinters2=0
100 pjobs=10
101 ;;
102 esac
103
104 #
105 # See if we want to do SSL testing...
106 #
107
108 echo ""
109 echo "Now you can choose whether to create a SSL/TLS encryption key and"
110 echo "certificate for testing; these tests currently require the OpenSSL"
111 echo "tools:"
112 echo ""
113 echo "0 - Do not do SSL/TLS encryption tests"
114 echo "1 - Test but do not require encryption"
115 echo "2 - Test and require encryption"
116 echo ""
117 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
118
119 if test $# -gt 0; then
120 ssltype=$1
121 shift
122 else
123 read ssltype
124 fi
125 echo ""
126
127 case "$ssltype" in
128 1)
129 echo "Will test but not require encryption (1)"
130 ;;
131 2)
132 echo "Will test and require encryption (2)"
133 ;;
134 *)
135 echo "Not using SSL/TLS (0)"
136 ssltype=0
137 ;;
138 esac
139
140 #
141 # Information for the server/tests...
142 #
143
144 user="$USER"
145 if test -z "$user"; then
146 if test -x /usr/ucb/whoami; then
147 user=`/usr/ucb/whoami`
148 else
149 user=`whoami`
150 fi
151
152 if test -z "$user"; then
153 user="unknown"
154 fi
155 fi
156
157 port=8631
158 cwd=`pwd`
159 root=`dirname $cwd`
160
161 #
162 # Make sure that the LPDEST and PRINTER environment variables are
163 # not included in the environment that is passed to the tests. These
164 # will usually cause tests to fail erroneously...
165 #
166
167 unset LPDEST
168 unset PRINTER
169
170 #
171 # See if we want to use valgrind...
172 #
173
174 echo ""
175 echo "This test script can use the Valgrind software from:"
176 echo ""
177 echo " http://developer.kde.org/~sewardj/"
178 echo ""
179 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
180
181 if test $# -gt 0; then
182 usevalgrind=$1
183 shift
184 else
185 read usevalgrind
186 fi
187 echo ""
188
189 case "$usevalgrind" in
190 Y* | y*)
191 valgrind="valgrind --tool=memcheck --log-file=/tmp/cups-$user/log/valgrind --error-limit=no --leak-check=yes --trace-children=yes"
192 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
193 ;;
194
195 *)
196 valgrind=""
197 ;;
198 esac
199
200 #
201 # Start by creating temporary directories for the tests...
202 #
203
204 echo "Creating directories for test..."
205
206 rm -rf /tmp/cups-$user
207 mkdir /tmp/cups-$user
208 mkdir /tmp/cups-$user/bin
209 mkdir /tmp/cups-$user/bin/backend
210 mkdir /tmp/cups-$user/bin/driver
211 mkdir /tmp/cups-$user/bin/filter
212 mkdir /tmp/cups-$user/certs
213 mkdir /tmp/cups-$user/share
214 mkdir /tmp/cups-$user/share/banners
215 mkdir /tmp/cups-$user/share/drv
216 mkdir /tmp/cups-$user/share/locale
217 for file in ../locale/cups_*.po; do
218 loc=`basename $file .po | cut -c 6-`
219 mkdir /tmp/cups-$user/share/locale/$loc
220 ln -s $root/locale/cups_$loc.po /tmp/cups-$user/share/locale/$loc
221 ln -s $root/locale/ppdc_$loc.po /tmp/cups-$user/share/locale/$loc
222 done
223 mkdir /tmp/cups-$user/share/mime
224 mkdir /tmp/cups-$user/share/model
225 mkdir /tmp/cups-$user/share/ppdc
226 mkdir /tmp/cups-$user/interfaces
227 mkdir /tmp/cups-$user/log
228 mkdir /tmp/cups-$user/ppd
229 mkdir /tmp/cups-$user/spool
230 mkdir /tmp/cups-$user/spool/temp
231 mkdir /tmp/cups-$user/ssl
232
233 ln -s $root/backend/dnssd /tmp/cups-$user/bin/backend
234 ln -s $root/backend/http /tmp/cups-$user/bin/backend
235 ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
236 ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
237 ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
238 ln -s $root/backend/parallel /tmp/cups-$user/bin/backend
239 ln -s $root/backend/serial /tmp/cups-$user/bin/backend
240 ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
241 ln -s $root/backend/socket /tmp/cups-$user/bin/backend
242 ln -s $root/backend/usb /tmp/cups-$user/bin/backend
243 ln -s $root/cgi-bin /tmp/cups-$user/bin
244 ln -s $root/monitor /tmp/cups-$user/bin
245 ln -s $root/notifier /tmp/cups-$user/bin
246 ln -s $root/scheduler /tmp/cups-$user/bin/daemon
247 ln -s $root/filter/bannertops /tmp/cups-$user/bin/filter
248 ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
249 ln -s $root/filter/hpgltops /tmp/cups-$user/bin/filter
250 ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
251 ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
252 ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
253 ln -s $root/filter/texttops /tmp/cups-$user/bin/filter
254
255 ln -s $root/data/classified /tmp/cups-$user/share/banners
256 ln -s $root/data/confidential /tmp/cups-$user/share/banners
257 ln -s $root/data/secret /tmp/cups-$user/share/banners
258 ln -s $root/data/standard /tmp/cups-$user/share/banners
259 ln -s $root/data/topsecret /tmp/cups-$user/share/banners
260 ln -s $root/data/unclassified /tmp/cups-$user/share/banners
261 ln -s $root/data /tmp/cups-$user/share/charmaps
262 ln -s $root/data /tmp/cups-$user/share/charsets
263 ln -s $root/data /tmp/cups-$user/share
264 ln -s $root/fonts /tmp/cups-$user/share
265 ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
266 ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
267 ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
268 ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
269 ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
270 ln -s $root/templates /tmp/cups-$user/share
271
272 if test $ssltype != 0; then
273 mkdir $root/ssl
274 cp server.* $root/ssl
275 fi
276
277 #
278 # Mac OS X filters and configuration files...
279 #
280
281 if test `uname` = Darwin; then
282 ln -s /usr/libexec/cups/filter/cgpdfto* /tmp/cups-$user/bin/filter
283 ln -s /usr/libexec/cups/filter/nsimagetopdf /tmp/cups-$user/bin/filter
284 ln -s /usr/libexec/cups/filter/nstexttopdf /tmp/cups-$user/bin/filter
285 ln -s /usr/libexec/cups/filter/pictwpstops /tmp/cups-$user/bin/filter
286 ln -s /usr/libexec/cups/filter/pstoappleps /tmp/cups-$user/bin/filter
287 ln -s /usr/libexec/cups/filter/pstocupsraster /tmp/cups-$user/bin/filter
288 ln -s /usr/libexec/cups/filter/pstopdffilter /tmp/cups-$user/bin/filter
289
290 if test -f /private/etc/cups/apple.types; then
291 ln -s /private/etc/cups/apple.* /tmp/cups-$user/share/mime
292 elif test -f /usr/share/cups/mime/apple.types; then
293 ln -s /usr/share/cups/mime/apple.* /tmp/cups-$user/share/mime
294 fi
295 else
296 ln -s $root/filter/imagetops /tmp/cups-$user/bin/filter
297 ln -s $root/filter/imagetoraster /tmp/cups-$user/bin/filter
298 ln -s $root/filter/pdftops /tmp/cups-$user/bin/filter
299 fi
300
301 #
302 # Then create the necessary config files...
303 #
304
305 echo "Creating cupsd.conf for test..."
306
307 if test $ssltype = 2; then
308 encryption="Encryption Required"
309 else
310 encryption=""
311 fi
312
313 cat >/tmp/cups-$user/cupsd.conf <<EOF
314 Browsing Off
315 FileDevice yes
316 Printcap
317 Listen 127.0.0.1:$port
318 User $user
319 ServerRoot /tmp/cups-$user
320 StateDir /tmp/cups-$user
321 ServerBin /tmp/cups-$user/bin
322 CacheDir /tmp/cups-$user/share
323 DataDir /tmp/cups-$user/share
324 FontPath /tmp/cups-$user/share/fonts
325 PassEnv LOCALEDIR
326 DocumentRoot $root/doc
327 RequestRoot /tmp/cups-$user/spool
328 TempDir /tmp/cups-$user/spool/temp
329 MaxSubscriptions 3
330 MaxLogSize 0
331 AccessLog /tmp/cups-$user/log/access_log
332 ErrorLog /tmp/cups-$user/log/error_log
333 PageLog /tmp/cups-$user/log/page_log
334 LogLevel debug2
335 PreserveJobHistory Yes
336 <Policy default>
337 <Limit All>
338 Order Deny,Allow
339 Deny from all
340 Allow from 127.0.0.1
341 $encryption
342 </Limit>
343 </Policy>
344 EOF
345
346 #
347 # Setup lots of test queues - half with PPD files, half without...
348 #
349
350 echo "Creating printers.conf for test..."
351
352 i=1
353 while test $i -le $nprinters1; do
354 cat >>/tmp/cups-$user/printers.conf <<EOF
355 <Printer test-$i>
356 Accepting Yes
357 DeviceURI file:/dev/null
358 Info Test PS printer $i
359 JobSheets none none
360 Location CUPS test suite
361 State Idle
362 StateMessage Printer $1 is idle.
363 </Printer>
364 EOF
365
366 cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
367
368 i=`expr $i + 1`
369 done
370
371 while test $i -le $nprinters2; do
372 cat >>/tmp/cups-$user/printers.conf <<EOF
373 <Printer test-$i>
374 Accepting Yes
375 DeviceURI file:/dev/null
376 Info Test raw printer $i
377 JobSheets none none
378 Location CUPS test suite
379 State Idle
380 StateMessage Printer $1 is idle.
381 </Printer>
382 EOF
383
384 i=`expr $i + 1`
385 done
386
387 if test -f /tmp/cups-$user/printers.conf; then
388 cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
389 else
390 touch /tmp/cups-$user/printers.conf.orig
391 fi
392
393 #
394 # Setup the paths...
395 #
396
397 echo "Setting up environment variables for test..."
398
399 if test "x$LD_LIBRARY_PATH" = x; then
400 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
401 else
402 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
403 fi
404
405 export LD_LIBRARY_PATH
406
407 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"
408 export LD_PRELOAD
409
410 if test "x$DYLD_LIBRARY_PATH" = x; then
411 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
412 else
413 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
414 fi
415
416 export DYLD_LIBRARY_PATH
417
418 if test "x$SHLIB_PATH" = x; then
419 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
420 else
421 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
422 fi
423
424 export SHLIB_PATH
425
426 CUPS_SERVER=localhost:8631; export CUPS_SERVER
427 CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
428 CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
429 CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
430 LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
431
432 #
433 # Set a new home directory to avoid getting user options mixed in...
434 #
435
436 HOME=/tmp/cups-$user
437 export HOME
438
439 #
440 # Force POSIX locale for tests...
441 #
442
443 LANG=C
444 export LANG
445
446 #
447 # Start the server; run as foreground daemon in the background...
448 #
449
450 echo "Starting scheduler:"
451 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
452 echo ""
453
454 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
455 cupsd=$!
456
457 if test "x$testtype" = x0; then
458 # Not running tests...
459 echo "Scheduler is PID $cupsd and is listening on port 8631."
460 echo ""
461
462 # Create a helper script to run programs with...
463 runcups="/tmp/cups-$user/runcups"
464
465 echo "#!/bin/sh" >$runcups
466 echo "# Helper script for running CUPS test instance." >>$runcups
467 echo "" >>$runcups
468 echo "# Set required environment variables..." >>$runcups
469 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
470 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
471 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
472 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
473 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
474 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
475 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
476 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
477 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
478 echo "" >>$runcups
479 echo "# Run command..." >>$runcups
480 echo "exec \"\$@\"" >>$runcups
481
482 chmod +x $runcups
483
484 echo "The $runcups helper script can be used to test programs"
485 echo "with the server."
486 exit 0
487 fi
488
489 if test $argcount -eq 0; then
490 echo "Scheduler is PID $cupsd; run debugger now if you need to."
491 echo ""
492 echo $ac_n "Press ENTER to continue... $ac_c"
493 read junk
494 else
495 echo "Scheduler is PID $cupsd."
496 sleep 2
497 fi
498
499 IPP_PORT=$port; export IPP_PORT
500
501 while true; do
502 running=`../systemv/lpstat -r 2>/dev/null`
503 if test "x$running" = "xscheduler is running"; then
504 break
505 fi
506
507 echo "Waiting for scheduler to become ready..."
508 sleep 10
509 done
510
511 #
512 # Create the test report source file...
513 #
514
515 date=`date "+%Y-%m-%d"`
516 strfile=/tmp/cups-$user/cups-str-1.4-$date-$user.html
517
518 rm -f $strfile
519 cat str-header.html >$strfile
520
521 #
522 # Run the IPP tests...
523 #
524
525 echo ""
526 echo "Running IPP compliance tests..."
527
528 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
529 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
530 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
531 echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
532 echo "<PRE>" >>$strfile
533
534 fail=0
535 for file in 4*.test; do
536 echo "Performing $file..."
537 echo "" >>$strfile
538
539 ./ipptest ipp://localhost:$port/printers $file | tee -a $strfile
540 status=$?
541
542 if test $status != 0; then
543 echo Test failed.
544 fail=`expr $fail + 1`
545 fi
546 done
547
548 echo "</PRE>" >>$strfile
549
550 #
551 # Run the command tests...
552 #
553
554 echo ""
555 echo "Running command tests..."
556
557 echo "<H1>2 - Command Tests</H1>" >>$strfile
558 echo "<P>This section provides the results to the command tests" >>$strfile
559 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
560 echo $date by $user on `hostname`. >>$strfile
561 echo "<PRE>" >>$strfile
562
563 for file in 5*.sh; do
564 echo "Performing $file..."
565 echo "" >>$strfile
566 echo "\"$file\":" >>$strfile
567
568 sh $file $pjobs | tee -a $strfile
569 status=$?
570
571 if test $status != 0; then
572 echo Test failed.
573 fail=`expr $fail + 1`
574 fi
575 done
576
577 echo "</PRE>" >>$strfile
578
579 #
580 # Stop the server...
581 #
582
583 kill $cupsd
584
585 #
586 # Append the log files for post-mortim...
587 #
588
589 echo "<H1>3 - Log Files</H1>" >>$strfile
590
591 #
592 # Verify counts...
593 #
594
595 echo "Test Summary"
596 echo ""
597 echo "<H2>Summary</H2>" >>$strfile
598
599 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
600 count=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
601 expected=`expr $pjobs \* 2 + 34`
602 expected2=`expr $expected + 2`
603 if test $count -lt $expected -a $count -gt $expected2; then
604 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
605 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
606 fail=`expr $fail + 1`
607 else
608 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
609 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
610 fi
611
612 # Paged printed on Test2
613 count=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
614 expected=`expr $pjobs \* 2 + 3`
615 if test $count != $expected; then
616 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
617 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
618 fail=`expr $fail + 1`
619 else
620 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
621 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
622 fi
623
624 # Requested processed
625 count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
626 echo "PASS: $count requests processed."
627 echo "<P>PASS: $count requests processed.</P>" >>$strfile
628
629 # Emergency log messages
630 count=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
631 if test $count != 0; then
632 echo "FAIL: $count emergency messages, expected 0."
633 grep '^X ' /tmp/cups-$user/log/error_log
634 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
635 echo "<PRE>" >>$strfile
636 grep '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
637 echo "</PRE>" >>$strfile
638 fail=`expr $fail + 1`
639 else
640 echo "PASS: $count emergency messages."
641 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
642 fi
643
644 # Alert log messages
645 count=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
646 if test $count != 0; then
647 echo "FAIL: $count alert messages, expected 0."
648 grep '^A ' /tmp/cups-$user/log/error_log
649 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
650 echo "<PRE>" >>$strfile
651 grep '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
652 echo "</PRE>" >>$strfile
653 fail=`expr $fail + 1`
654 else
655 echo "PASS: $count alert messages."
656 echo "<P>PASS: $count alert messages.</P>" >>$strfile
657 fi
658
659 # Critical log messages
660 count=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
661 if test $count != 0; then
662 echo "FAIL: $count critical messages, expected 0."
663 grep '^C ' /tmp/cups-$user/log/error_log
664 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
665 echo "<PRE>" >>$strfile
666 grep '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
667 echo "</PRE>" >>$strfile
668 fail=`expr $fail + 1`
669 else
670 echo "PASS: $count critical messages."
671 echo "<P>PASS: $count critical messages.</P>" >>$strfile
672 fi
673
674 # Error log messages
675 count=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
676 if test $count != 17; then
677 echo "FAIL: $count error messages, expected 17."
678 grep '^E ' /tmp/cups-$user/log/error_log
679 echo "<P>FAIL: $count error messages, expected 17.</P>" >>$strfile
680 echo "<PRE>" >>$strfile
681 grep '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
682 echo "</PRE>" >>$strfile
683 fail=`expr $fail + 1`
684 else
685 echo "PASS: $count error messages."
686 echo "<P>PASS: $count error messages.</P>" >>$strfile
687 fi
688
689 # Warning log messages
690 count=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
691 if test $count != 0; then
692 echo "FAIL: $count warning messages, expected 0."
693 grep '^W ' /tmp/cups-$user/log/error_log
694 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
695 echo "<PRE>" >>$strfile
696 grep '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
697 echo "</PRE>" >>$strfile
698 fail=`expr $fail + 1`
699 else
700 echo "PASS: $count warning messages."
701 echo "<P>PASS: $count warning messages.</P>" >>$strfile
702 fi
703
704 # Notice log messages
705 count=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
706 if test $count != 0; then
707 echo "FAIL: $count notice messages, expected 0."
708 grep '^N ' /tmp/cups-$user/log/error_log
709 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
710 echo "<PRE>" >>$strfile
711 grep '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
712 echo "</PRE>" >>$strfile
713 fail=`expr $fail + 1`
714 else
715 echo "PASS: $count notice messages."
716 echo "<P>PASS: $count notice messages.</P>" >>$strfile
717 fi
718
719 # Info log messages
720 count=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
721 if test $count = 0; then
722 echo "FAIL: $count info messages, expected more than 0."
723 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
724 fail=`expr $fail + 1`
725 else
726 echo "PASS: $count info messages."
727 echo "<P>PASS: $count info messages.</P>" >>$strfile
728 fi
729
730 # Debug log messages
731 count=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
732 if test $count = 0; then
733 echo "FAIL: $count debug messages, expected more than 0."
734 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
735 fail=`expr $fail + 1`
736 else
737 echo "PASS: $count debug messages."
738 echo "<P>PASS: $count debug messages.</P>" >>$strfile
739 fi
740
741 # Debug2 log messages
742 count=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
743 if test $count = 0; then
744 echo "FAIL: $count debug2 messages, expected more than 0."
745 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
746 fail=`expr $fail + 1`
747 else
748 echo "PASS: $count debug2 messages."
749 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
750 fi
751
752 # Page log file...
753 if grep -q 'testfile.pdf Letter' /tmp/cups-$user/log/page_log; then
754 echo "PASS: page_log formatted correctly."
755 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
756 else
757 echo "FAIL: page_log formatted incorrectly."
758 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
759 fail=`expr $fail + 1`
760 fi
761
762 # Log files...
763 echo "<H2>access_log</H2>" >>$strfile
764 echo "<PRE>" >>$strfile
765 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
766 echo "</PRE>" >>$strfile
767
768 echo "<H2>error_log</H2>" >>$strfile
769 echo "<PRE>" >>$strfile
770 grep -v '^[dD]' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
771 echo "</PRE>" >>$strfile
772
773 echo "<H2>page_log</H2>" >>$strfile
774 echo "<PRE>" >>$strfile
775 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
776 echo "</PRE>" >>$strfile
777
778 #
779 # Format the reports and tell the user where to find them...
780 #
781
782 cat str-trailer.html >>$strfile
783
784 echo ""
785
786 if test $fail != 0; then
787 echo "$fail tests failed."
788 cp /tmp/cups-$user/log/error_log error_log-$date-$user
789 cp $strfile .
790 else
791 echo "All tests were successful."
792 fi
793
794 echo "Log files can be found in /tmp/cups-$user/log."
795 echo "A HTML report was created in $strfile."
796 echo ""
797
798 if test $fail != 0; then
799 echo "Copies of the error_log and `basename $strfile` files are in"
800 echo "`pwd`."
801 echo ""
802
803 exit 1
804 fi
805
806 #
807 # End of "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
808 #