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