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