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