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