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