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