]> git.ipfire.org Git - thirdparty/cups.git/blob - test/run-stp-tests.sh
Merge changes from CUPS 1.4svn-r7696.
[thirdparty/cups.git] / test / run-stp-tests.sh
1 #!/bin/sh
2 #
3 # "$Id: run-stp-tests.sh 7697 2008-06-27 15:56:00Z 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/mime
217 mkdir /tmp/cups-$user/share/model
218 mkdir /tmp/cups-$user/share/ppdc
219 mkdir /tmp/cups-$user/interfaces
220 mkdir /tmp/cups-$user/log
221 mkdir /tmp/cups-$user/ppd
222 mkdir /tmp/cups-$user/spool
223 mkdir /tmp/cups-$user/spool/temp
224 mkdir /tmp/cups-$user/ssl
225
226 ln -s $root/backend/http /tmp/cups-$user/bin/backend
227 ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
228 ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
229 ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
230 ln -s $root/backend/parallel /tmp/cups-$user/bin/backend
231 ln -s $root/backend/serial /tmp/cups-$user/bin/backend
232 ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
233 ln -s $root/backend/socket /tmp/cups-$user/bin/backend
234 ln -s $root/backend/usb /tmp/cups-$user/bin/backend
235 ln -s $root/cgi-bin /tmp/cups-$user/bin
236 ln -s $root/ppdc/drv /tmp/cups-$user/bin/driver
237 ln -s $root/monitor /tmp/cups-$user/bin
238 ln -s $root/notifier /tmp/cups-$user/bin
239 ln -s $root/scheduler /tmp/cups-$user/bin/daemon
240 ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
241 ln -s $root/filter/hpgltops /tmp/cups-$user/bin/filter
242 ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
243 ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
244 ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
245 ln -s $root/filter/texttops /tmp/cups-$user/bin/filter
246
247 ln -s $root/data/classified /tmp/cups-$user/share/banners
248 ln -s $root/data/confidential /tmp/cups-$user/share/banners
249 ln -s $root/data/secret /tmp/cups-$user/share/banners
250 ln -s $root/data/standard /tmp/cups-$user/share/banners
251 ln -s $root/data/topsecret /tmp/cups-$user/share/banners
252 ln -s $root/data/unclassified /tmp/cups-$user/share/banners
253 ln -s $root/data /tmp/cups-$user/share/charmaps
254 ln -s $root/data /tmp/cups-$user/share/charsets
255 ln -s $root/data /tmp/cups-$user/share
256 ln -s $root/fonts /tmp/cups-$user/share
257 ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
258 ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
259 ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
260 ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
261 ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
262 ln -s $root/templates /tmp/cups-$user/share
263
264 if test $ssltype != 0; then
265 mkdir $root/ssl
266 cp server.* $root/ssl
267 fi
268
269 #
270 # Mac OS X filters and configuration files...
271 #
272
273 if test `uname` = Darwin; then
274 ln -s /usr/libexec/cups/filter/cgpdfto* /tmp/cups-$user/bin/filter
275 ln -s /usr/libexec/cups/filter/nsimagetopdf /tmp/cups-$user/bin/filter
276 ln -s /usr/libexec/cups/filter/nstexttopdf /tmp/cups-$user/bin/filter
277 ln -s /usr/libexec/cups/filter/pictwpstops /tmp/cups-$user/bin/filter
278 ln -s /usr/libexec/cups/filter/pstoappleps /tmp/cups-$user/bin/filter
279 ln -s /usr/libexec/cups/filter/pstocupsraster /tmp/cups-$user/bin/filter
280 ln -s /usr/libexec/cups/filter/pstopdffilter /tmp/cups-$user/bin/filter
281
282 ln -s /private/etc/cups/apple.* /tmp/cups-$user
283 else
284 ln -s $root/filter/imagetops /tmp/cups-$user/bin/filter
285 ln -s $root/filter/imagetoraster /tmp/cups-$user/bin/filter
286 ln -s $root/filter/pdftops /tmp/cups-$user/bin/filter
287 fi
288
289 #
290 # Then create the necessary config files...
291 #
292
293 echo "Creating cupsd.conf for test..."
294
295 if test $ssltype = 2; then
296 encryption="Encryption Required"
297 else
298 encryption=""
299 fi
300
301 cat >/tmp/cups-$user/cupsd.conf <<EOF
302 Browsing Off
303 FileDevice yes
304 Printcap
305 Listen 127.0.0.1:$port
306 User $user
307 ServerRoot /tmp/cups-$user
308 StateDir /tmp/cups-$user
309 ServerBin /tmp/cups-$user/bin
310 CacheDir /tmp/cups-$user/share
311 DataDir /tmp/cups-$user/share
312 FontPath /tmp/cups-$user/share/fonts
313 DocumentRoot $root/doc
314 RequestRoot /tmp/cups-$user/spool
315 TempDir /tmp/cups-$user/spool/temp
316 MaxLogSize 0
317 AccessLog /tmp/cups-$user/log/access_log
318 ErrorLog /tmp/cups-$user/log/error_log
319 PageLog /tmp/cups-$user/log/page_log
320 LogLevel debug2
321 PreserveJobHistory Yes
322 <Policy default>
323 <Limit All>
324 Order Deny,Allow
325 Deny from all
326 Allow from 127.0.0.1
327 $encryption
328 </Limit>
329 </Policy>
330 EOF
331
332 #
333 # Setup lots of test queues - half with PPD files, half without...
334 #
335
336 echo "Creating printers.conf for test..."
337
338 i=1
339 while test $i -le $nprinters1; do
340 cat >>/tmp/cups-$user/printers.conf <<EOF
341 <Printer test-$i>
342 Accepting Yes
343 DeviceURI file:/dev/null
344 Info Test PS printer $i
345 JobSheets none none
346 Location CUPS test suite
347 State Idle
348 StateMessage Printer $1 is idle.
349 </Printer>
350 EOF
351
352 cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
353
354 i=`expr $i + 1`
355 done
356
357 while test $i -le $nprinters2; do
358 cat >>/tmp/cups-$user/printers.conf <<EOF
359 <Printer test-$i>
360 Accepting Yes
361 DeviceURI file:/dev/null
362 Info Test raw printer $i
363 JobSheets none none
364 Location CUPS test suite
365 State Idle
366 StateMessage Printer $1 is idle.
367 </Printer>
368 EOF
369
370 i=`expr $i + 1`
371 done
372
373 cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
374
375 #
376 # Setup the paths...
377 #
378
379 echo "Setting up environment variables for test..."
380
381 if test "x$LD_LIBRARY_PATH" = x; then
382 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
383 else
384 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
385 fi
386
387 export LD_LIBRARY_PATH
388
389 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"
390 export LD_PRELOAD
391
392 if test "x$DYLD_LIBRARY_PATH" = x; then
393 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
394 else
395 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
396 fi
397
398 export DYLD_LIBRARY_PATH
399
400 if test "x$SHLIB_PATH" = x; then
401 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
402 else
403 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
404 fi
405
406 export SHLIB_PATH
407
408 CUPS_SERVER=localhost; export CUPS_SERVER
409 CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
410 CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
411 CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
412
413 #
414 # Set a new home directory to avoid getting user options mixed in...
415 #
416
417 HOME=/tmp/cups-$user
418 export HOME
419
420 #
421 # Force POSIX locale for tests...
422 #
423
424 LANG=C
425 export LANG
426
427 #
428 # Start the server; run as foreground daemon in the background...
429 #
430
431 echo "Starting scheduler:"
432 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
433 echo ""
434
435 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
436 cupsd=$!
437
438 if test "x$testtype" = x0; then
439 echo "Scheduler is PID $cupsd and is listening on port 8631."
440 echo ""
441 echo "Set the IPP_PORT environment variable to 8631 to test the software"
442 echo "interactively from the command-line."
443 exit 0
444 fi
445
446 if test $argcount -eq 0; then
447 echo "Scheduler is PID $cupsd; run debugger now if you need to."
448 echo ""
449 echo $ac_n "Press ENTER to continue... $ac_c"
450 read junk
451 else
452 echo "Scheduler is PID $cupsd."
453 sleep 2
454 fi
455
456 IPP_PORT=$port; export IPP_PORT
457
458 while true; do
459 running=`../systemv/lpstat -r 2>/dev/null`
460 if test "x$running" = "xscheduler is running"; then
461 break
462 fi
463
464 echo "Waiting for scheduler to become ready..."
465 sleep 10
466 done
467
468 #
469 # Create the test report source file...
470 #
471
472 date=`date "+%Y-%m-%d"`
473 strfile=/tmp/cups-$user/cups-str-1.4-$date-$user.html
474
475 rm -f $strfile
476 cat str-header.html >$strfile
477
478 #
479 # Run the IPP tests...
480 #
481
482 echo ""
483 echo "Running IPP compliance tests..."
484
485 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
486 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
487 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
488 echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
489 echo "<PRE>" >>$strfile
490
491 fail=0
492 for file in 4*.test; do
493 echo "Performing $file..."
494 echo "" >>$strfile
495
496 ./ipptest ipp://localhost:$port/printers $file | tee -a $strfile
497 status=$?
498
499 if test $status != 0; then
500 echo Test failed.
501 fail=`expr $fail + 1`
502 fi
503 done
504
505 echo "</PRE>" >>$strfile
506
507 #
508 # Run the command tests...
509 #
510
511 echo ""
512 echo "Running command tests..."
513
514 echo "<H1>2 - Command Tests</H1>" >>$strfile
515 echo "<P>This section provides the results to the command tests" >>$strfile
516 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
517 echo $date by $user on `hostname`. >>$strfile
518 echo "<PRE>" >>$strfile
519
520 for file in 5*.sh; do
521 echo "Performing $file..."
522 echo "" >>$strfile
523 echo "\"$file\":" >>$strfile
524
525 sh $file $pjobs | tee -a $strfile
526 status=$?
527
528 if test $status != 0; then
529 echo Test failed.
530 fail=`expr $fail + 1`
531 fi
532 done
533
534 echo "</PRE>" >>$strfile
535
536 #
537 # Stop the server...
538 #
539
540 kill $cupsd
541
542 #
543 # Append the log files for post-mortim...
544 #
545
546 echo "<H1>3 - Log Files</H1>" >>$strfile
547
548 #
549 # Verify counts...
550 #
551
552 echo "Test Summary"
553 echo ""
554 echo "<H2>Summary</H2>" >>$strfile
555
556 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
557 count=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
558 expected=`expr $pjobs \* 2 + 34`
559 expected2=`expr $expected + 2`
560 if test $count -lt $expected -a $count -gt $expected2; then
561 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
562 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
563 fail=`expr $fail + 1`
564 else
565 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
566 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
567 fi
568
569 # Paged printed on Test2
570 count=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
571 expected=`expr $pjobs \* 2 + 3`
572 if test $count != $expected; then
573 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
574 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
575 fail=`expr $fail + 1`
576 else
577 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
578 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
579 fi
580
581 # Requested processed
582 count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
583 echo "PASS: $count requests processed."
584 echo "<P>PASS: $count requests processed.</P>" >>$strfile
585
586 # Emergency log messages
587 count=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
588 if test $count != 0; then
589 echo "FAIL: $count emergency messages, expected 0."
590 grep '^X ' /tmp/cups-$user/log/error_log
591 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
592 echo "<PRE>" >>$strfile
593 grep '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
594 echo "</PRE>" >>$strfile
595 fail=`expr $fail + 1`
596 else
597 echo "PASS: $count emergency messages."
598 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
599 fi
600
601 # Alert log messages
602 count=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
603 if test $count != 0; then
604 echo "FAIL: $count alert messages, expected 0."
605 grep '^A ' /tmp/cups-$user/log/error_log
606 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
607 echo "<PRE>" >>$strfile
608 grep '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
609 echo "</PRE>" >>$strfile
610 fail=`expr $fail + 1`
611 else
612 echo "PASS: $count alert messages."
613 echo "<P>PASS: $count alert messages.</P>" >>$strfile
614 fi
615
616 # Critical log messages
617 count=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
618 if test $count != 0; then
619 echo "FAIL: $count critical messages, expected 0."
620 grep '^C ' /tmp/cups-$user/log/error_log
621 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
622 echo "<PRE>" >>$strfile
623 grep '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
624 echo "</PRE>" >>$strfile
625 fail=`expr $fail + 1`
626 else
627 echo "PASS: $count critical messages."
628 echo "<P>PASS: $count critical messages.</P>" >>$strfile
629 fi
630
631 # Error log messages
632 count=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
633 if test $count != 9; then
634 echo "FAIL: $count error messages, expected 9."
635 grep '^E ' /tmp/cups-$user/log/error_log
636 echo "<P>FAIL: $count error messages, expected 9.</P>" >>$strfile
637 echo "<PRE>" >>$strfile
638 grep '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
639 echo "</PRE>" >>$strfile
640 fail=`expr $fail + 1`
641 else
642 echo "PASS: $count error messages."
643 echo "<P>PASS: $count error messages.</P>" >>$strfile
644 fi
645
646 # Warning log messages
647 count=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
648 if test $count != 0; then
649 echo "FAIL: $count warning messages, expected 0."
650 grep '^W ' /tmp/cups-$user/log/error_log
651 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
652 echo "<PRE>" >>$strfile
653 grep '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
654 echo "</PRE>" >>$strfile
655 fail=`expr $fail + 1`
656 else
657 echo "PASS: $count warning messages."
658 echo "<P>PASS: $count warning messages.</P>" >>$strfile
659 fi
660
661 # Notice log messages
662 count=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
663 if test $count != 0; then
664 echo "FAIL: $count notice messages, expected 0."
665 grep '^N ' /tmp/cups-$user/log/error_log
666 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
667 echo "<PRE>" >>$strfile
668 grep '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
669 echo "</PRE>" >>$strfile
670 fail=`expr $fail + 1`
671 else
672 echo "PASS: $count notice messages."
673 echo "<P>PASS: $count notice messages.</P>" >>$strfile
674 fi
675
676 # Info log messages
677 count=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
678 if test $count = 0; then
679 echo "FAIL: $count info messages, expected more than 0."
680 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
681 fail=`expr $fail + 1`
682 else
683 echo "PASS: $count info messages."
684 echo "<P>PASS: $count info messages.</P>" >>$strfile
685 fi
686
687 # Debug log messages
688 count=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
689 if test $count = 0; then
690 echo "FAIL: $count debug messages, expected more than 0."
691 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
692 fail=`expr $fail + 1`
693 else
694 echo "PASS: $count debug messages."
695 echo "<P>PASS: $count debug messages.</P>" >>$strfile
696 fi
697
698 # Debug2 log messages
699 count=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
700 if test $count = 0; then
701 echo "FAIL: $count debug2 messages, expected more than 0."
702 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
703 fail=`expr $fail + 1`
704 else
705 echo "PASS: $count debug2 messages."
706 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
707 fi
708
709 # Page log file...
710 if grep -q 'testfile.pdf Letter' /tmp/cups-$user/log/page_log; then
711 echo "PASS: page_log formatted correctly."
712 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
713 else
714 echo "FAIL: page_log formatted incorrectly."
715 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
716 fail=`expr $fail + 1`
717 fi
718
719 # Log files...
720 echo "<H2>access_log</H2>" >>$strfile
721 echo "<PRE>" >>$strfile
722 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
723 echo "</PRE>" >>$strfile
724
725 echo "<H2>error_log</H2>" >>$strfile
726 echo "<PRE>" >>$strfile
727 grep -v '^[dD]' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
728 echo "</PRE>" >>$strfile
729
730 echo "<H2>page_log</H2>" >>$strfile
731 echo "<PRE>" >>$strfile
732 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
733 echo "</PRE>" >>$strfile
734
735 #
736 # Format the reports and tell the user where to find them...
737 #
738
739 cat str-trailer.html >>$strfile
740
741 echo ""
742
743 if test $fail != 0; then
744 echo "$fail tests failed."
745 cp /tmp/cups-$user/log/error_log error_log-$date-$user
746 cp $strfile .
747 else
748 echo "All tests were successful."
749 fi
750
751 echo "Log files can be found in /tmp/cups-$user/log."
752 echo "A HTML report was created in $strfile."
753 echo ""
754
755 if test $fail != 0; then
756 echo "Copies of the error_log and `basename $strfile` files are in"
757 echo "`pwd`."
758 echo ""
759
760 exit 1
761 fi
762
763 #
764 # End of "$Id: run-stp-tests.sh 7697 2008-06-27 15:56:00Z mike $"
765 #