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