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