]> git.ipfire.org Git - thirdparty/cups.git/blob - test/run-stp-tests.sh
Merge changes from CUPS 1.4svn-r8414.
[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-2009 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 pprinters=0
78 ;;
79 2)
80 echo "Running the medium tests (2)"
81 nprinters1=10
82 nprinters2=20
83 pjobs=20
84 pprinters=10
85 ;;
86 3)
87 echo "Running the extreme tests (3)"
88 nprinters1=500
89 nprinters2=1000
90 pjobs=100
91 pprinters=50
92 ;;
93 4)
94 echo "Running the torture tests (4)"
95 nprinters1=10000
96 nprinters2=20000
97 pjobs=200
98 pprinters=100
99 ;;
100 *)
101 echo "Running the timid tests (1)"
102 nprinters1=0
103 nprinters2=0
104 pjobs=10
105 pprinters=0
106 ;;
107 esac
108
109 #
110 # See if we want to do SSL testing...
111 #
112
113 echo ""
114 echo "Now you can choose whether to create a SSL/TLS encryption key and"
115 echo "certificate for testing; these tests currently require the OpenSSL"
116 echo "tools:"
117 echo ""
118 echo "0 - Do not do SSL/TLS encryption tests"
119 echo "1 - Test but do not require encryption"
120 echo "2 - Test and require encryption"
121 echo ""
122 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
123
124 if test $# -gt 0; then
125 ssltype=$1
126 shift
127 else
128 read ssltype
129 fi
130 echo ""
131
132 case "$ssltype" in
133 1)
134 echo "Will test but not require encryption (1)"
135 ;;
136 2)
137 echo "Will test and require encryption (2)"
138 ;;
139 *)
140 echo "Not using SSL/TLS (0)"
141 ssltype=0
142 ;;
143 esac
144
145 #
146 # Information for the server/tests...
147 #
148
149 user="$USER"
150 if test -z "$user"; then
151 if test -x /usr/ucb/whoami; then
152 user=`/usr/ucb/whoami`
153 else
154 user=`whoami`
155 fi
156
157 if test -z "$user"; then
158 user="unknown"
159 fi
160 fi
161
162 port=8631
163 cwd=`pwd`
164 root=`dirname $cwd`
165
166 #
167 # Make sure that the LPDEST and PRINTER environment variables are
168 # not included in the environment that is passed to the tests. These
169 # will usually cause tests to fail erroneously...
170 #
171
172 unset LPDEST
173 unset PRINTER
174
175 #
176 # See if we want to use valgrind...
177 #
178
179 echo ""
180 echo "This test script can use the Valgrind software from:"
181 echo ""
182 echo " http://developer.kde.org/~sewardj/"
183 echo ""
184 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
185
186 if test $# -gt 0; then
187 usevalgrind=$1
188 shift
189 else
190 read usevalgrind
191 fi
192 echo ""
193
194 case "$usevalgrind" in
195 Y* | y*)
196 valgrind="valgrind --tool=memcheck --log-file=/tmp/cups-$user/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes --read-var-info=yes"
197 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
198 ;;
199
200 *)
201 valgrind=""
202 ;;
203 esac
204
205 #
206 # Start by creating temporary directories for the tests...
207 #
208
209 echo "Creating directories for test..."
210
211 rm -rf /tmp/cups-$user
212 mkdir /tmp/cups-$user
213 mkdir /tmp/cups-$user/bin
214 mkdir /tmp/cups-$user/bin/backend
215 mkdir /tmp/cups-$user/bin/driver
216 mkdir /tmp/cups-$user/bin/filter
217 mkdir /tmp/cups-$user/certs
218 mkdir /tmp/cups-$user/share
219 mkdir /tmp/cups-$user/share/banners
220 mkdir /tmp/cups-$user/share/drv
221 mkdir /tmp/cups-$user/share/locale
222 for file in ../locale/cups_*.po; do
223 loc=`basename $file .po | cut -c 6-`
224 mkdir /tmp/cups-$user/share/locale/$loc
225 ln -s $root/locale/cups_$loc.po /tmp/cups-$user/share/locale/$loc
226 ln -s $root/locale/ppdc_$loc.po /tmp/cups-$user/share/locale/$loc
227 done
228 mkdir /tmp/cups-$user/share/mime
229 mkdir /tmp/cups-$user/share/model
230 mkdir /tmp/cups-$user/share/ppdc
231 mkdir /tmp/cups-$user/interfaces
232 mkdir /tmp/cups-$user/log
233 mkdir /tmp/cups-$user/ppd
234 mkdir /tmp/cups-$user/spool
235 mkdir /tmp/cups-$user/spool/temp
236 mkdir /tmp/cups-$user/ssl
237
238 ln -s $root/backend/dnssd /tmp/cups-$user/bin/backend
239 ln -s $root/backend/http /tmp/cups-$user/bin/backend
240 ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
241 ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
242 ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
243 ln -s $root/backend/parallel /tmp/cups-$user/bin/backend
244 ln -s $root/backend/serial /tmp/cups-$user/bin/backend
245 ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
246 ln -s $root/backend/socket /tmp/cups-$user/bin/backend
247 ln -s $root/backend/usb /tmp/cups-$user/bin/backend
248 ln -s $root/cgi-bin /tmp/cups-$user/bin
249 ln -s $root/monitor /tmp/cups-$user/bin
250 ln -s $root/notifier /tmp/cups-$user/bin
251 ln -s $root/scheduler /tmp/cups-$user/bin/daemon
252 ln -s $root/filter/bannertops /tmp/cups-$user/bin/filter
253 ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
254 ln -s $root/filter/hpgltops /tmp/cups-$user/bin/filter
255 ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
256 ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
257 ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
258 ln -s $root/filter/texttops /tmp/cups-$user/bin/filter
259
260 ln -s $root/data/classified /tmp/cups-$user/share/banners
261 ln -s $root/data/confidential /tmp/cups-$user/share/banners
262 ln -s $root/data/secret /tmp/cups-$user/share/banners
263 ln -s $root/data/standard /tmp/cups-$user/share/banners
264 ln -s $root/data/topsecret /tmp/cups-$user/share/banners
265 ln -s $root/data/unclassified /tmp/cups-$user/share/banners
266 ln -s $root/data /tmp/cups-$user/share/charmaps
267 ln -s $root/data /tmp/cups-$user/share/charsets
268 ln -s $root/data /tmp/cups-$user/share
269 ln -s $root/fonts /tmp/cups-$user/share
270 ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
271 ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
272 ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
273 ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
274 ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
275 ln -s $root/templates /tmp/cups-$user/share
276
277 if test $ssltype != 0; then
278 mkdir $root/ssl
279 cp server.* $root/ssl
280 fi
281
282 #
283 # Mac OS X filters and configuration files...
284 #
285
286 if test `uname` = Darwin; then
287 ln -s /usr/libexec/cups/filter/cgpdfto* /tmp/cups-$user/bin/filter
288 ln -s /usr/libexec/cups/filter/cgbannertopdf /tmp/cups-$user/bin/filter
289 ln -s /usr/libexec/cups/filter/cgimagetopdf /tmp/cups-$user/bin/filter
290 ln -s /usr/libexec/cups/filter/cgtexttopdf /tmp/cups-$user/bin/filter
291 ln -s /usr/libexec/cups/filter/nsimagetopdf /tmp/cups-$user/bin/filter
292 ln -s /usr/libexec/cups/filter/nstexttopdf /tmp/cups-$user/bin/filter
293 ln -s /usr/libexec/cups/filter/pictwpstops /tmp/cups-$user/bin/filter
294 ln -s /usr/libexec/cups/filter/pstoappleps /tmp/cups-$user/bin/filter
295 ln -s /usr/libexec/cups/filter/pstocupsraster /tmp/cups-$user/bin/filter
296 ln -s /usr/libexec/cups/filter/pstopdffilter /tmp/cups-$user/bin/filter
297
298 if test -f /private/etc/cups/apple.types; then
299 ln -s /private/etc/cups/apple.* /tmp/cups-$user/share/mime
300 elif test -f /usr/share/cups/mime/apple.types; then
301 ln -s /usr/share/cups/mime/apple.* /tmp/cups-$user/share/mime
302 fi
303 else
304 ln -s $root/filter/imagetops /tmp/cups-$user/bin/filter
305 ln -s $root/filter/imagetoraster /tmp/cups-$user/bin/filter
306 ln -s $root/filter/pdftops /tmp/cups-$user/bin/filter
307 fi
308
309 #
310 # Then create the necessary config files...
311 #
312
313 echo "Creating cupsd.conf for test..."
314
315 if test $ssltype = 2; then
316 encryption="Encryption Required"
317 else
318 encryption=""
319 fi
320
321 cat >/tmp/cups-$user/cupsd.conf <<EOF
322 Browsing Off
323 FileDevice yes
324 Printcap
325 Listen 127.0.0.1:$port
326 User $user
327 ServerRoot /tmp/cups-$user
328 StateDir /tmp/cups-$user
329 ServerBin /tmp/cups-$user/bin
330 CacheDir /tmp/cups-$user/share
331 DataDir /tmp/cups-$user/share
332 FontPath /tmp/cups-$user/share/fonts
333 PassEnv LOCALEDIR
334 DocumentRoot $root/doc
335 RequestRoot /tmp/cups-$user/spool
336 TempDir /tmp/cups-$user/spool/temp
337 MaxSubscriptions 3
338 MaxLogSize 0
339 AccessLog /tmp/cups-$user/log/access_log
340 ErrorLog /tmp/cups-$user/log/error_log
341 PageLog /tmp/cups-$user/log/page_log
342 LogLevel debug2
343 LogTimeFormat usecs
344 PreserveJobHistory Yes
345 <Policy default>
346 <Limit All>
347 Order Deny,Allow
348 Deny from all
349 Allow from 127.0.0.1
350 $encryption
351 </Limit>
352 </Policy>
353 EOF
354
355 #
356 # Setup lots of test queues - half with PPD files, half without...
357 #
358
359 echo "Creating printers.conf for test..."
360
361 i=1
362 while test $i -le $nprinters1; do
363 cat >>/tmp/cups-$user/printers.conf <<EOF
364 <Printer test-$i>
365 Accepting Yes
366 DeviceURI file:/dev/null
367 Info Test PS printer $i
368 JobSheets none none
369 Location CUPS test suite
370 State Idle
371 StateMessage Printer $1 is idle.
372 </Printer>
373 EOF
374
375 cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
376
377 i=`expr $i + 1`
378 done
379
380 while test $i -le $nprinters2; do
381 cat >>/tmp/cups-$user/printers.conf <<EOF
382 <Printer test-$i>
383 Accepting Yes
384 DeviceURI file:/dev/null
385 Info Test raw printer $i
386 JobSheets none none
387 Location CUPS test suite
388 State Idle
389 StateMessage Printer $1 is idle.
390 </Printer>
391 EOF
392
393 i=`expr $i + 1`
394 done
395
396 if test -f /tmp/cups-$user/printers.conf; then
397 cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
398 else
399 touch /tmp/cups-$user/printers.conf.orig
400 fi
401
402 #
403 # Setup the paths...
404 #
405
406 echo "Setting up environment variables for test..."
407
408 if test "x$LD_LIBRARY_PATH" = x; then
409 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
410 else
411 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
412 fi
413
414 export LD_LIBRARY_PATH
415
416 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"
417 export LD_PRELOAD
418
419 if test "x$DYLD_LIBRARY_PATH" = x; then
420 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
421 else
422 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
423 fi
424
425 export DYLD_LIBRARY_PATH
426
427 if test "x$SHLIB_PATH" = x; then
428 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
429 else
430 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
431 fi
432
433 export SHLIB_PATH
434
435 CUPS_SERVER=localhost:8631; export CUPS_SERVER
436 CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
437 CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
438 CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
439 LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
440
441 #
442 # Set a new home directory to avoid getting user options mixed in...
443 #
444
445 HOME=/tmp/cups-$user
446 export HOME
447
448 #
449 # Force POSIX locale for tests...
450 #
451
452 LANG=C
453 export LANG
454
455 #
456 # Start the server; run as foreground daemon in the background...
457 #
458
459 echo "Starting scheduler:"
460 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
461 echo ""
462
463 if test `uname` = Darwin -a "x$valgrind" = x; then
464 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib \
465 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
466 else
467 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
468 fi
469
470 cupsd=$!
471
472 if test "x$testtype" = x0; then
473 # Not running tests...
474 echo "Scheduler is PID $cupsd and is listening on port 8631."
475 echo ""
476
477 # Create a helper script to run programs with...
478 runcups="/tmp/cups-$user/runcups"
479
480 echo "#!/bin/sh" >$runcups
481 echo "# Helper script for running CUPS test instance." >>$runcups
482 echo "" >>$runcups
483 echo "# Set required environment variables..." >>$runcups
484 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
485 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
486 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
487 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
488 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
489 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
490 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
491 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
492 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
493 echo "" >>$runcups
494 echo "# Run command..." >>$runcups
495 echo "exec \"\$@\"" >>$runcups
496
497 chmod +x $runcups
498
499 echo "The $runcups helper script can be used to test programs"
500 echo "with the server."
501 exit 0
502 fi
503
504 if test $argcount -eq 0; then
505 echo "Scheduler is PID $cupsd; run debugger now if you need to."
506 echo ""
507 echo $ac_n "Press ENTER to continue... $ac_c"
508 read junk
509 else
510 echo "Scheduler is PID $cupsd."
511 sleep 2
512 fi
513
514 IPP_PORT=$port; export IPP_PORT
515
516 while true; do
517 running=`../systemv/lpstat -r 2>/dev/null`
518 if test "x$running" = "xscheduler is running"; then
519 break
520 fi
521
522 echo "Waiting for scheduler to become ready..."
523 sleep 10
524 done
525
526 #
527 # Create the test report source file...
528 #
529
530 date=`date "+%Y-%m-%d"`
531 strfile=/tmp/cups-$user/cups-str-1.4-$date-$user.html
532
533 rm -f $strfile
534 cat str-header.html >$strfile
535
536 #
537 # Run the IPP tests...
538 #
539
540 echo ""
541 echo "Running IPP compliance tests..."
542
543 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
544 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
545 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
546 echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
547 echo "<PRE>" >>$strfile
548
549 fail=0
550 for file in 4*.test; do
551 echo "Performing $file..."
552 echo "" >>$strfile
553
554 ./ipptest ipp://localhost:$port/printers $file | tee -a $strfile
555 status=$?
556
557 if test $status != 0; then
558 echo Test failed.
559 fail=`expr $fail + 1`
560 fi
561 done
562
563 echo "</PRE>" >>$strfile
564
565 #
566 # Run the command tests...
567 #
568
569 echo ""
570 echo "Running command tests..."
571
572 echo "<H1>2 - Command Tests</H1>" >>$strfile
573 echo "<P>This section provides the results to the command tests" >>$strfile
574 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
575 echo $date by $user on `hostname`. >>$strfile
576 echo "<PRE>" >>$strfile
577
578 for file in 5*.sh; do
579 echo "Performing $file..."
580 echo "" >>$strfile
581 echo "\"$file\":" >>$strfile
582
583 sh $file $pjobs $pprinters | tee -a $strfile
584 status=$?
585
586 if test $status != 0; then
587 echo Test failed.
588 fail=`expr $fail + 1`
589 fi
590 done
591
592 echo "</PRE>" >>$strfile
593
594 #
595 # Stop the server...
596 #
597
598 kill $cupsd
599
600 #
601 # Append the log files for post-mortim...
602 #
603
604 echo "<H1>3 - Log Files</H1>" >>$strfile
605
606 #
607 # Verify counts...
608 #
609
610 echo "Test Summary"
611 echo ""
612 echo "<H2>Summary</H2>" >>$strfile
613
614 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
615 count=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
616 expected=`expr $pjobs \* 2 + 34`
617 expected2=`expr $expected + 2`
618 if test $count -lt $expected -a $count -gt $expected2; then
619 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
620 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
621 fail=`expr $fail + 1`
622 else
623 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
624 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
625 fi
626
627 # Paged printed on Test2
628 count=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
629 expected=`expr $pjobs \* 2 + 3`
630 if test $count != $expected; then
631 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
632 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
633 fail=`expr $fail + 1`
634 else
635 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
636 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
637 fi
638
639 # Requested processed
640 count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
641 echo "PASS: $count requests processed."
642 echo "<P>PASS: $count requests processed.</P>" >>$strfile
643
644 # Emergency log messages
645 count=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
646 if test $count != 0; then
647 echo "FAIL: $count emergency messages, expected 0."
648 grep '^X ' /tmp/cups-$user/log/error_log
649 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
650 echo "<PRE>" >>$strfile
651 grep '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
652 echo "</PRE>" >>$strfile
653 fail=`expr $fail + 1`
654 else
655 echo "PASS: $count emergency messages."
656 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
657 fi
658
659 # Alert log messages
660 count=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
661 if test $count != 0; then
662 echo "FAIL: $count alert messages, expected 0."
663 grep '^A ' /tmp/cups-$user/log/error_log
664 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
665 echo "<PRE>" >>$strfile
666 grep '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
667 echo "</PRE>" >>$strfile
668 fail=`expr $fail + 1`
669 else
670 echo "PASS: $count alert messages."
671 echo "<P>PASS: $count alert messages.</P>" >>$strfile
672 fi
673
674 # Critical log messages
675 count=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
676 if test $count != 0; then
677 echo "FAIL: $count critical messages, expected 0."
678 grep '^C ' /tmp/cups-$user/log/error_log
679 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
680 echo "<PRE>" >>$strfile
681 grep '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
682 echo "</PRE>" >>$strfile
683 fail=`expr $fail + 1`
684 else
685 echo "PASS: $count critical messages."
686 echo "<P>PASS: $count critical messages.</P>" >>$strfile
687 fi
688
689 # Error log messages
690 count=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
691 if test $count != 18; then
692 echo "FAIL: $count error messages, expected 18."
693 grep '^E ' /tmp/cups-$user/log/error_log
694 echo "<P>FAIL: $count error messages, expected 18.</P>" >>$strfile
695 echo "<PRE>" >>$strfile
696 grep '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
697 echo "</PRE>" >>$strfile
698 fail=`expr $fail + 1`
699 else
700 echo "PASS: $count error messages."
701 echo "<P>PASS: $count error messages.</P>" >>$strfile
702 fi
703
704 # Warning log messages
705 count=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
706 if test $count != 0; then
707 echo "FAIL: $count warning messages, expected 0."
708 grep '^W ' /tmp/cups-$user/log/error_log
709 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
710 echo "<PRE>" >>$strfile
711 grep '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
712 echo "</PRE>" >>$strfile
713 fail=`expr $fail + 1`
714 else
715 echo "PASS: $count warning messages."
716 echo "<P>PASS: $count warning messages.</P>" >>$strfile
717 fi
718
719 # Notice log messages
720 count=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
721 if test $count != 0; then
722 echo "FAIL: $count notice messages, expected 0."
723 grep '^N ' /tmp/cups-$user/log/error_log
724 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
725 echo "<PRE>" >>$strfile
726 grep '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
727 echo "</PRE>" >>$strfile
728 fail=`expr $fail + 1`
729 else
730 echo "PASS: $count notice messages."
731 echo "<P>PASS: $count notice messages.</P>" >>$strfile
732 fi
733
734 # Info log messages
735 count=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
736 if test $count = 0; then
737 echo "FAIL: $count info messages, expected more than 0."
738 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
739 fail=`expr $fail + 1`
740 else
741 echo "PASS: $count info messages."
742 echo "<P>PASS: $count info messages.</P>" >>$strfile
743 fi
744
745 # Debug log messages
746 count=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
747 if test $count = 0; then
748 echo "FAIL: $count debug messages, expected more than 0."
749 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
750 fail=`expr $fail + 1`
751 else
752 echo "PASS: $count debug messages."
753 echo "<P>PASS: $count debug messages.</P>" >>$strfile
754 fi
755
756 # Debug2 log messages
757 count=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
758 if test $count = 0; then
759 echo "FAIL: $count debug2 messages, expected more than 0."
760 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
761 fail=`expr $fail + 1`
762 else
763 echo "PASS: $count debug2 messages."
764 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
765 fi
766
767 # Page log file...
768 if grep -iq 'testfile.pdf na_letter_8.5x11in' /tmp/cups-$user/log/page_log; then
769 echo "PASS: page_log formatted correctly."
770 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
771 else
772 echo "FAIL: page_log formatted incorrectly."
773 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
774 fail=`expr $fail + 1`
775 fi
776
777 # Log files...
778 echo "<H2>access_log</H2>" >>$strfile
779 echo "<PRE>" >>$strfile
780 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
781 echo "</PRE>" >>$strfile
782
783 echo "<H2>error_log</H2>" >>$strfile
784 echo "<PRE>" >>$strfile
785 grep -v '^[dD]' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
786 echo "</PRE>" >>$strfile
787
788 echo "<H2>page_log</H2>" >>$strfile
789 echo "<PRE>" >>$strfile
790 sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
791 echo "</PRE>" >>$strfile
792
793 #
794 # Format the reports and tell the user where to find them...
795 #
796
797 cat str-trailer.html >>$strfile
798
799 echo ""
800
801 if test $fail != 0; then
802 echo "$fail tests failed."
803 cp /tmp/cups-$user/log/error_log error_log-$date-$user
804 cp $strfile .
805 else
806 echo "All tests were successful."
807 fi
808
809 echo "Log files can be found in /tmp/cups-$user/log."
810 echo "A HTML report was created in $strfile."
811 echo ""
812
813 if test $fail != 0; then
814 echo "Copies of the error_log and `basename $strfile` files are in"
815 echo "`pwd`."
816 echo ""
817
818 exit 1
819 fi
820
821 #
822 # End of "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
823 #