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