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