]> git.ipfire.org Git - thirdparty/cups.git/blame - test/run-stp-tests.sh
Merge changes from CUPS 1.5svn-r9000.
[thirdparty/cups.git] / test / run-stp-tests.sh
CommitLineData
ef416fc2 1#!/bin/sh
2#
b19ccc9e 3# "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
ef416fc2 4#
5# Perform the complete set of IPP compliance tests specified in the
6# CUPS Software Test Plan.
7#
d1c13e16 8# Copyright 2007-2009 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
MS
531date=`date "+%Y-%m-%d"`
532strfile=/tmp/cups-$user/cups-str-1.4-$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
839a51c8 555 ./ipptest 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
7a14d768 615# Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
839a51c8 616count=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
969307f0
MS
617expected=`expr $pjobs \* 2 + 34`
618expected2=`expr $expected + 2`
619if test $count -lt $expected -a $count -gt $expected2; then
839a51c8
MS
620 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
621 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
622 fail=`expr $fail + 1`
623else
624 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
625 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
626fi
627
628# Paged printed on Test2
629count=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
630expected=`expr $pjobs \* 2 + 3`
631if test $count != $expected; then
632 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
633 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
634 fail=`expr $fail + 1`
635else
636 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
637 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
638fi
639
e07d4801 640# Requests logged
839a51c8 641count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
e07d4801
MS
642expected=`expr 39 + 18 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
643if test $count != $expected; then
644 echo "FAIL: $count requests logged, expected $expected."
645 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
646 fail=`expr $fail + 1`
647else
648 echo "PASS: $count requests logged."
649 echo "<P>PASS: $count requests logged.</P>" >>$strfile
650fi
651
652# Did CUPS-Get-Default get logged?
653if grep -q CUPS-Get-Default /tmp/cups-$user/log/access_log; then
654 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
655 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
656 echo "<PRE>" >>$strfile
657 grep CUPS-Get-Default /tmp/cups-$user/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
658 echo "</PRE>" >>$strfile
659 fail=`expr $fail + 1`
660else
661 echo "PASS: CUPS-Get-Default not logged."
662 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
663fi
839a51c8
MS
664
665# Emergency log messages
666count=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
667if test $count != 0; then
668 echo "FAIL: $count emergency messages, expected 0."
669 grep '^X ' /tmp/cups-$user/log/error_log
670 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
671 echo "<PRE>" >>$strfile
672 grep '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
673 echo "</PRE>" >>$strfile
674 fail=`expr $fail + 1`
675else
676 echo "PASS: $count emergency messages."
677 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
678fi
679
680# Alert log messages
681count=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
682if test $count != 0; then
683 echo "FAIL: $count alert messages, expected 0."
684 grep '^A ' /tmp/cups-$user/log/error_log
685 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
686 echo "<PRE>" >>$strfile
687 grep '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
688 echo "</PRE>" >>$strfile
689 fail=`expr $fail + 1`
690else
691 echo "PASS: $count alert messages."
692 echo "<P>PASS: $count alert messages.</P>" >>$strfile
693fi
694
695# Critical log messages
696count=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
697if test $count != 0; then
698 echo "FAIL: $count critical messages, expected 0."
699 grep '^C ' /tmp/cups-$user/log/error_log
700 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
701 echo "<PRE>" >>$strfile
702 grep '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
703 echo "</PRE>" >>$strfile
704 fail=`expr $fail + 1`
705else
706 echo "PASS: $count critical messages."
707 echo "<P>PASS: $count critical messages.</P>" >>$strfile
708fi
709
710# Error log messages
711count=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
d2354e63
MS
712if test $count != 18; then
713 echo "FAIL: $count error messages, expected 18."
839a51c8 714 grep '^E ' /tmp/cups-$user/log/error_log
d2354e63 715 echo "<P>FAIL: $count error messages, expected 18.</P>" >>$strfile
839a51c8
MS
716 echo "<PRE>" >>$strfile
717 grep '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
718 echo "</PRE>" >>$strfile
719 fail=`expr $fail + 1`
720else
721 echo "PASS: $count error messages."
722 echo "<P>PASS: $count error messages.</P>" >>$strfile
723fi
724
725# Warning log messages
726count=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
727if test $count != 0; then
728 echo "FAIL: $count warning messages, expected 0."
729 grep '^W ' /tmp/cups-$user/log/error_log
730 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
731 echo "<PRE>" >>$strfile
732 grep '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
733 echo "</PRE>" >>$strfile
734 fail=`expr $fail + 1`
735else
736 echo "PASS: $count warning messages."
737 echo "<P>PASS: $count warning messages.</P>" >>$strfile
738fi
739
740# Notice log messages
741count=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
742if test $count != 0; then
743 echo "FAIL: $count notice messages, expected 0."
744 grep '^N ' /tmp/cups-$user/log/error_log
745 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
746 echo "<PRE>" >>$strfile
747 grep '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
748 echo "</PRE>" >>$strfile
749 fail=`expr $fail + 1`
750else
751 echo "PASS: $count notice messages."
752 echo "<P>PASS: $count notice messages.</P>" >>$strfile
753fi
754
755# Info log messages
756count=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
757if test $count = 0; then
758 echo "FAIL: $count info messages, expected more than 0."
759 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
760 fail=`expr $fail + 1`
761else
762 echo "PASS: $count info messages."
763 echo "<P>PASS: $count info messages.</P>" >>$strfile
764fi
765
766# Debug log messages
767count=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
768if test $count = 0; then
769 echo "FAIL: $count debug messages, expected more than 0."
770 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
771 fail=`expr $fail + 1`
772else
773 echo "PASS: $count debug messages."
774 echo "<P>PASS: $count debug messages.</P>" >>$strfile
775fi
776
777# Debug2 log messages
778count=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
7a14d768
MS
779if test $count = 0; then
780 echo "FAIL: $count debug2 messages, expected more than 0."
781 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
839a51c8
MS
782 fail=`expr $fail + 1`
783else
784 echo "PASS: $count debug2 messages."
785 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
786fi
787
75bd9771 788# Page log file...
c168a833 789if grep -iq 'testfile.pdf na_letter_8.5x11in' /tmp/cups-$user/log/page_log; then
75bd9771
MS
790 echo "PASS: page_log formatted correctly."
791 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
792else
793 echo "FAIL: page_log formatted incorrectly."
794 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
795 fail=`expr $fail + 1`
796fi
797
839a51c8 798# Log files...
ef416fc2 799echo "<H2>access_log</H2>" >>$strfile
800echo "<PRE>" >>$strfile
839a51c8 801sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
ef416fc2 802echo "</PRE>" >>$strfile
803
804echo "<H2>error_log</H2>" >>$strfile
805echo "<PRE>" >>$strfile
7a14d768 806grep -v '^[dD]' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
ef416fc2 807echo "</PRE>" >>$strfile
808
809echo "<H2>page_log</H2>" >>$strfile
810echo "<PRE>" >>$strfile
839a51c8 811sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
ef416fc2 812echo "</PRE>" >>$strfile
813
ef416fc2 814#
815# Format the reports and tell the user where to find them...
816#
817
ef416fc2 818cat str-trailer.html >>$strfile
819
ef416fc2 820echo ""
821
822if test $fail != 0; then
823 echo "$fail tests failed."
dd1abb6b
MS
824 cp /tmp/cups-$user/log/error_log error_log-$date-$user
825 cp $strfile .
ef416fc2 826else
827 echo "All tests were successful."
828fi
829
a74454a7 830echo "Log files can be found in /tmp/cups-$user/log."
839a51c8 831echo "A HTML report was created in $strfile."
ef416fc2 832echo ""
833
db0bd74a 834if test $fail != 0; then
dd1abb6b
MS
835 echo "Copies of the error_log and `basename $strfile` files are in"
836 echo "`pwd`."
837 echo ""
838
db0bd74a
MS
839 exit 1
840fi
841
ef416fc2 842#
b19ccc9e 843# End of "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
ef416fc2 844#