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