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