]> git.ipfire.org Git - thirdparty/cups.git/blob - test/run-stp-tests.sh
ce876297f7fa4617de1c35e7df841f12fafe6c77
[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 cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
388
389 #
390 # Setup the paths...
391 #
392
393 echo "Setting up environment variables for test..."
394
395 if test "x$LD_LIBRARY_PATH" = x; then
396 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
397 else
398 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
399 fi
400
401 export LD_LIBRARY_PATH
402
403 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"
404 export LD_PRELOAD
405
406 if test "x$DYLD_LIBRARY_PATH" = x; then
407 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
408 else
409 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
410 fi
411
412 export DYLD_LIBRARY_PATH
413
414 if test "x$SHLIB_PATH" = x; then
415 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
416 else
417 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
418 fi
419
420 export SHLIB_PATH
421
422 CUPS_SERVER=localhost:8631; export CUPS_SERVER
423 CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
424 CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
425 CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
426 LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
427
428 #
429 # Set a new home directory to avoid getting user options mixed in...
430 #
431
432 HOME=/tmp/cups-$user
433 export HOME
434
435 #
436 # Force POSIX locale for tests...
437 #
438
439 LANG=C
440 export LANG
441
442 #
443 # Start the server; run as foreground daemon in the background...
444 #
445
446 echo "Starting scheduler:"
447 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
448 echo ""
449
450 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
451 cupsd=$!
452
453 if test "x$testtype" = x0; then
454 # Not running tests...
455 echo "Scheduler is PID $cupsd and is listening on port 8631."
456 echo ""
457
458 # Create a helper script to run programs with...
459 runcups="/tmp/cups-$user/runcups"
460
461 echo "#!/bin/sh" >$runcups
462 echo "# Helper script for running CUPS test instance." >>$runcups
463 echo "" >>$runcups
464 echo "# Set required environment variables..." >>$runcups
465 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
466 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
467 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
468 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
469 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
470 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
471 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
472 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
473 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
474 echo "" >>$runcups
475 echo "# Run command..." >>$runcups
476 echo "exec \"\$@\"" >>$runcups
477
478 chmod +x $runcups
479
480 echo "The $runcups helper script can be used to test programs"
481 echo "with the server."
482 exit 0
483 fi
484
485 if test $argcount -eq 0; then
486 echo "Scheduler is PID $cupsd; run debugger now if you need to."
487 echo ""
488 echo $ac_n "Press ENTER to continue... $ac_c"
489 read junk
490 else
491 echo "Scheduler is PID $cupsd."
492 sleep 2
493 fi
494
495 IPP_PORT=$port; export IPP_PORT
496
497 while true; do
498 running=`../systemv/lpstat -r 2>/dev/null`
499 if test "x$running" = "xscheduler is running"; then
500 break
501 fi
502
503 echo "Waiting for scheduler to become ready..."
504 sleep 10
505 done
506
507 #
508 # Create the test report source file...
509 #
510
511 date=`date "+%Y-%m-%d"`
512 strfile=/tmp/cups-$user/cups-str-1.4-$date-$user.html
513
514 rm -f $strfile
515 cat str-header.html >$strfile
516
517 #
518 # Run the IPP tests...
519 #
520
521 echo ""
522 echo "Running IPP compliance tests..."
523
524 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
525 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
526 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
527 echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
528 echo "<PRE>" >>$strfile
529
530 fail=0
531 for file in 4*.test; do
532 echo "Performing $file..."
533 echo "" >>$strfile
534
535 ./ipptest ipp://localhost:$port/printers $file | tee -a $strfile
536 status=$?
537
538 if test $status != 0; then
539 echo Test failed.
540 fail=`expr $fail + 1`
541 fi
542 done
543
544 echo "</PRE>" >>$strfile
545
546 #
547 # Run the command tests...
548 #
549
550 echo ""
551 echo "Running command tests..."
552
553 echo "<H1>2 - Command Tests</H1>" >>$strfile
554 echo "<P>This section provides the results to the command tests" >>$strfile
555 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
556 echo $date by $user on `hostname`. >>$strfile
557 echo "<PRE>" >>$strfile
558
559 for file in 5*.sh; do
560 echo "Performing $file..."
561 echo "" >>$strfile
562 echo "\"$file\":" >>$strfile
563
564 sh $file $pjobs | tee -a $strfile
565 status=$?
566
567 if test $status != 0; then
568 echo Test failed.
569 fail=`expr $fail + 1`
570 fi
571 done
572
573 echo "</PRE>" >>$strfile
574
575 #
576 # Stop the server...
577 #
578
579 kill $cupsd
580
581 #
582 # Append the log files for post-mortim...
583 #
584
585 echo "<H1>3 - Log Files</H1>" >>$strfile
586
587 #
588 # Verify counts...
589 #
590
591 echo "Test Summary"
592 echo ""
593 echo "<H2>Summary</H2>" >>$strfile
594
595 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
596 count=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
597 expected=`expr $pjobs \* 2 + 34`
598 expected2=`expr $expected + 2`
599 if test $count -lt $expected -a $count -gt $expected2; then
600 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
601 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
602 fail=`expr $fail + 1`
603 else
604 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
605 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
606 fi
607
608 # Paged printed on Test2
609 count=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
610 expected=`expr $pjobs \* 2 + 3`
611 if test $count != $expected; then
612 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
613 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
614 fail=`expr $fail + 1`
615 else
616 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
617 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
618 fi
619
620 # Requested processed
621 count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
622 echo "PASS: $count requests processed."
623 echo "<P>PASS: $count requests processed.</P>" >>$strfile
624
625 # Emergency log messages
626 count=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
627 if test $count != 0; then
628 echo "FAIL: $count emergency messages, expected 0."
629 grep '^X ' /tmp/cups-$user/log/error_log
630 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
631 echo "<PRE>" >>$strfile
632 grep '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
633 echo "</PRE>" >>$strfile
634 fail=`expr $fail + 1`
635 else
636 echo "PASS: $count emergency messages."
637 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
638 fi
639
640 # Alert log messages
641 count=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
642 if test $count != 0; then
643 echo "FAIL: $count alert messages, expected 0."
644 grep '^A ' /tmp/cups-$user/log/error_log
645 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
646 echo "<PRE>" >>$strfile
647 grep '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
648 echo "</PRE>" >>$strfile
649 fail=`expr $fail + 1`
650 else
651 echo "PASS: $count alert messages."
652 echo "<P>PASS: $count alert messages.</P>" >>$strfile
653 fi
654
655 # Critical log messages
656 count=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
657 if test $count != 0; then
658 echo "FAIL: $count critical messages, expected 0."
659 grep '^C ' /tmp/cups-$user/log/error_log
660 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
661 echo "<PRE>" >>$strfile
662 grep '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
663 echo "</PRE>" >>$strfile
664 fail=`expr $fail + 1`
665 else
666 echo "PASS: $count critical messages."
667 echo "<P>PASS: $count critical messages.</P>" >>$strfile
668 fi
669
670 # Error log messages
671 count=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
672 if test $count != 17; then
673 echo "FAIL: $count error messages, expected 17."
674 grep '^E ' /tmp/cups-$user/log/error_log
675 echo "<P>FAIL: $count error messages, expected 17.</P>" >>$strfile
676 echo "<PRE>" >>$strfile
677 grep '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
678 echo "</PRE>" >>$strfile
679 fail=`expr $fail + 1`
680 else
681 echo "PASS: $count error messages."
682 echo "<P>PASS: $count error messages.</P>" >>$strfile
683 fi
684
685 # Warning log messages
686 count=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
687 if test $count != 0; then
688 echo "FAIL: $count warning messages, expected 0."
689 grep '^W ' /tmp/cups-$user/log/error_log
690 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
691 echo "<PRE>" >>$strfile
692 grep '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
693 echo "</PRE>" >>$strfile
694 fail=`expr $fail + 1`
695 else
696 echo "PASS: $count warning messages."
697 echo "<P>PASS: $count warning messages.</P>" >>$strfile
698 fi
699
700 # Notice log messages
701 count=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
702 if test $count != 0; then
703 echo "FAIL: $count notice messages, expected 0."
704 grep '^N ' /tmp/cups-$user/log/error_log
705 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
706 echo "<PRE>" >>$strfile
707 grep '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
708 echo "</PRE>" >>$strfile
709 fail=`expr $fail + 1`
710 else
711 echo "PASS: $count notice messages."
712 echo "<P>PASS: $count notice messages.</P>" >>$strfile
713 fi
714
715 # Info log messages
716 count=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
717 if test $count = 0; then
718 echo "FAIL: $count info messages, expected more than 0."
719 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
720 fail=`expr $fail + 1`
721 else
722 echo "PASS: $count info messages."
723 echo "<P>PASS: $count info messages.</P>" >>$strfile
724 fi
725
726 # Debug log messages
727 count=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
728 if test $count = 0; then
729 echo "FAIL: $count debug messages, expected more than 0."
730 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
731 fail=`expr $fail + 1`
732 else
733 echo "PASS: $count debug messages."
734 echo "<P>PASS: $count debug messages.</P>" >>$strfile
735 fi
736
737 # Debug2 log messages
738 count=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
739 if test $count = 0; then
740 echo "FAIL: $count debug2 messages, expected more than 0."
741 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
742 fail=`expr $fail + 1`
743 else
744 echo "PASS: $count debug2 messages."
745 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
746 fi
747
748 # Page log file...
749 if grep -q 'testfile.pdf Letter' /tmp/cups-$user/log/page_log; then
750 echo "PASS: page_log formatted correctly."
751 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
752 else
753 echo "FAIL: page_log formatted incorrectly."
754 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
755 fail=`expr $fail + 1`
756 fi
757
758 # Log files...
759 echo "<H2>access_log</H2>" >>$strfile
760 echo "<PRE>" >>$strfile
761 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
762 echo "</PRE>" >>$strfile
763
764 echo "<H2>error_log</H2>" >>$strfile
765 echo "<PRE>" >>$strfile
766 grep -v '^[dD]' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
767 echo "</PRE>" >>$strfile
768
769 echo "<H2>page_log</H2>" >>$strfile
770 echo "<PRE>" >>$strfile
771 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
772 echo "</PRE>" >>$strfile
773
774 #
775 # Format the reports and tell the user where to find them...
776 #
777
778 cat str-trailer.html >>$strfile
779
780 echo ""
781
782 if test $fail != 0; then
783 echo "$fail tests failed."
784 cp /tmp/cups-$user/log/error_log error_log-$date-$user
785 cp $strfile .
786 else
787 echo "All tests were successful."
788 fi
789
790 echo "Log files can be found in /tmp/cups-$user/log."
791 echo "A HTML report was created in $strfile."
792 echo ""
793
794 if test $fail != 0; then
795 echo "Copies of the error_log and `basename $strfile` files are in"
796 echo "`pwd`."
797 echo ""
798
799 exit 1
800 fi
801
802 #
803 # End of "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
804 #