]> git.ipfire.org Git - thirdparty/cups.git/blame - test/run-stp-tests.sh
Merge changes from CUPS 1.4svn-r8177 (tentative CUPS 1.4b2)
[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#
839a51c8 8# Copyright 2007-2008 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
77 ;;
78 2)
79 echo "Running the medium tests (2)"
80 nprinters1=10
81 nprinters2=20
82 pjobs=20
83 ;;
84 3)
85 echo "Running the extreme tests (3)"
86 nprinters1=500
87 nprinters2=1000
88 pjobs=100
89 ;;
90 4)
91 echo "Running the torture tests (4)"
92 nprinters1=10000
93 nprinters2=20000
94 pjobs=200
95 ;;
96 *)
97 echo "Running the timid tests (1)"
98 nprinters1=0
99 nprinters2=0
839a51c8 100 pjobs=10
ef416fc2 101 ;;
102esac
103
104#
105# See if we want to do SSL testing...
106#
107
108echo ""
109echo "Now you can choose whether to create a SSL/TLS encryption key and"
110echo "certificate for testing; these tests currently require the OpenSSL"
111echo "tools:"
112echo ""
113echo "0 - Do not do SSL/TLS encryption tests"
411affcf 114echo "1 - Test but do not require encryption"
115echo "2 - Test and require encryption"
ef416fc2 116echo ""
bd7854cb 117echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
ef416fc2 118
a74454a7 119if test $# -gt 0; then
120 ssltype=$1
121 shift
122else
123 read ssltype
124fi
bd7854cb 125echo ""
ef416fc2 126
127case "$ssltype" in
411affcf 128 1)
129 echo "Will test but not require encryption (1)"
130 ;;
131 2)
132 echo "Will test and require encryption (2)"
ef416fc2 133 ;;
ef416fc2 134 *)
411affcf 135 echo "Not using SSL/TLS (0)"
ef416fc2 136 ssltype=0
137 ;;
138esac
139
140#
141# Information for the server/tests...
142#
143
e1d6a774 144user="$USER"
145if test -z "$user"; then
146 if test -x /usr/ucb/whoami; then
147 user=`/usr/ucb/whoami`
148 else
149 user=`whoami`
150 fi
151
152 if test -z "$user"; then
153 user="unknown"
154 fi
155fi
156
ef416fc2 157port=8631
158cwd=`pwd`
159root=`dirname $cwd`
160
161#
162# Make sure that the LPDEST and PRINTER environment variables are
163# not included in the environment that is passed to the tests. These
164# will usually cause tests to fail erroneously...
165#
166
634763e8
MS
167unset LPDEST
168unset PRINTER
ef416fc2 169
170#
171# See if we want to use valgrind...
172#
173
174echo ""
175echo "This test script can use the Valgrind software from:"
176echo ""
177echo " http://developer.kde.org/~sewardj/"
178echo ""
bd7854cb 179echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
ef416fc2 180
a74454a7 181if test $# -gt 0; then
182 usevalgrind=$1
183 shift
184else
185 read usevalgrind
186fi
bd7854cb 187echo ""
ef416fc2 188
189case "$usevalgrind" in
190 Y* | y*)
191 valgrind="valgrind --tool=memcheck --log-file=/tmp/cups-$user/log/valgrind --error-limit=no --leak-check=yes --trace-children=yes"
192 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
193 ;;
194
195 *)
196 valgrind=""
197 ;;
198esac
199
200#
201# Start by creating temporary directories for the tests...
202#
203
a74454a7 204echo "Creating directories for test..."
205
ef416fc2 206rm -rf /tmp/cups-$user
207mkdir /tmp/cups-$user
208mkdir /tmp/cups-$user/bin
209mkdir /tmp/cups-$user/bin/backend
839a51c8 210mkdir /tmp/cups-$user/bin/driver
ef416fc2 211mkdir /tmp/cups-$user/bin/filter
212mkdir /tmp/cups-$user/certs
213mkdir /tmp/cups-$user/share
214mkdir /tmp/cups-$user/share/banners
7a14d768 215mkdir /tmp/cups-$user/share/drv
4509bb49
MS
216mkdir /tmp/cups-$user/share/locale
217for file in ../locale/cups_*.po; do
218 loc=`basename $file .po | cut -c 6-`
219 mkdir /tmp/cups-$user/share/locale/$loc
220 ln -s $root/locale/cups_$loc.po /tmp/cups-$user/share/locale/$loc
221 ln -s $root/locale/ppdc_$loc.po /tmp/cups-$user/share/locale/$loc
222done
75bd9771 223mkdir /tmp/cups-$user/share/mime
ef416fc2 224mkdir /tmp/cups-$user/share/model
7a14d768 225mkdir /tmp/cups-$user/share/ppdc
ef416fc2 226mkdir /tmp/cups-$user/interfaces
227mkdir /tmp/cups-$user/log
228mkdir /tmp/cups-$user/ppd
229mkdir /tmp/cups-$user/spool
230mkdir /tmp/cups-$user/spool/temp
231mkdir /tmp/cups-$user/ssl
232
b19ccc9e 233ln -s $root/backend/dnssd /tmp/cups-$user/bin/backend
ef416fc2 234ln -s $root/backend/http /tmp/cups-$user/bin/backend
235ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
236ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
7a14d768 237ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
ef416fc2 238ln -s $root/backend/parallel /tmp/cups-$user/bin/backend
239ln -s $root/backend/serial /tmp/cups-$user/bin/backend
a74454a7 240ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
ef416fc2 241ln -s $root/backend/socket /tmp/cups-$user/bin/backend
242ln -s $root/backend/usb /tmp/cups-$user/bin/backend
243ln -s $root/cgi-bin /tmp/cups-$user/bin
bd7854cb 244ln -s $root/monitor /tmp/cups-$user/bin
ef416fc2 245ln -s $root/notifier /tmp/cups-$user/bin
246ln -s $root/scheduler /tmp/cups-$user/bin/daemon
cda47a96 247ln -s $root/filter/bannertops /tmp/cups-$user/bin/filter
7a14d768 248ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
ef416fc2 249ln -s $root/filter/hpgltops /tmp/cups-$user/bin/filter
ef416fc2 250ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
251ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
252ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
253ln -s $root/filter/texttops /tmp/cups-$user/bin/filter
ef416fc2 254
255ln -s $root/data/classified /tmp/cups-$user/share/banners
256ln -s $root/data/confidential /tmp/cups-$user/share/banners
257ln -s $root/data/secret /tmp/cups-$user/share/banners
258ln -s $root/data/standard /tmp/cups-$user/share/banners
259ln -s $root/data/topsecret /tmp/cups-$user/share/banners
260ln -s $root/data/unclassified /tmp/cups-$user/share/banners
a74454a7 261ln -s $root/data /tmp/cups-$user/share/charmaps
ef416fc2 262ln -s $root/data /tmp/cups-$user/share/charsets
263ln -s $root/data /tmp/cups-$user/share
264ln -s $root/fonts /tmp/cups-$user/share
7a14d768 265ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
75bd9771
MS
266ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
267ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
7a14d768
MS
268ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
269ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
ef416fc2 270ln -s $root/templates /tmp/cups-$user/share
271
272if test $ssltype != 0; then
273 mkdir $root/ssl
274 cp server.* $root/ssl
275fi
276
bc44d920 277#
278# Mac OS X filters and configuration files...
279#
280
281if test `uname` = Darwin; then
282 ln -s /usr/libexec/cups/filter/cgpdfto* /tmp/cups-$user/bin/filter
283 ln -s /usr/libexec/cups/filter/nsimagetopdf /tmp/cups-$user/bin/filter
284 ln -s /usr/libexec/cups/filter/nstexttopdf /tmp/cups-$user/bin/filter
285 ln -s /usr/libexec/cups/filter/pictwpstops /tmp/cups-$user/bin/filter
286 ln -s /usr/libexec/cups/filter/pstoappleps /tmp/cups-$user/bin/filter
287 ln -s /usr/libexec/cups/filter/pstocupsraster /tmp/cups-$user/bin/filter
288 ln -s /usr/libexec/cups/filter/pstopdffilter /tmp/cups-$user/bin/filter
289
4509bb49
MS
290 if test -f /private/etc/cups/apple.types; then
291 ln -s /private/etc/cups/apple.* /tmp/cups-$user/share/mime
292 elif test -f /usr/share/cups/mime/apple.types; then
293 ln -s /usr/share/cups/mime/apple.* /tmp/cups-$user/share/mime
294 fi
839a51c8
MS
295else
296 ln -s $root/filter/imagetops /tmp/cups-$user/bin/filter
297 ln -s $root/filter/imagetoraster /tmp/cups-$user/bin/filter
298 ln -s $root/filter/pdftops /tmp/cups-$user/bin/filter
bc44d920 299fi
300
ef416fc2 301#
302# Then create the necessary config files...
303#
304
a74454a7 305echo "Creating cupsd.conf for test..."
306
ef416fc2 307if test $ssltype = 2; then
308 encryption="Encryption Required"
309else
310 encryption=""
311fi
312
313cat >/tmp/cups-$user/cupsd.conf <<EOF
314Browsing Off
315FileDevice yes
316Printcap
317Listen 127.0.0.1:$port
318User $user
319ServerRoot /tmp/cups-$user
320StateDir /tmp/cups-$user
321ServerBin /tmp/cups-$user/bin
322CacheDir /tmp/cups-$user/share
323DataDir /tmp/cups-$user/share
324FontPath /tmp/cups-$user/share/fonts
4509bb49 325PassEnv LOCALEDIR
ef416fc2 326DocumentRoot $root/doc
327RequestRoot /tmp/cups-$user/spool
328TempDir /tmp/cups-$user/spool/temp
52f6f666 329MaxSubscriptions 3
ef416fc2 330MaxLogSize 0
331AccessLog /tmp/cups-$user/log/access_log
332ErrorLog /tmp/cups-$user/log/error_log
333PageLog /tmp/cups-$user/log/page_log
7a14d768 334LogLevel debug2
ef416fc2 335PreserveJobHistory Yes
336<Policy default>
337<Limit All>
338Order Deny,Allow
339Deny from all
340Allow from 127.0.0.1
341$encryption
342</Limit>
343</Policy>
344EOF
345
ef416fc2 346#
75bd9771 347# Setup lots of test queues - half with PPD files, half without...
ef416fc2 348#
349
a74454a7 350echo "Creating printers.conf for test..."
351
ef416fc2 352i=1
353while test $i -le $nprinters1; do
354 cat >>/tmp/cups-$user/printers.conf <<EOF
355<Printer test-$i>
356Accepting Yes
357DeviceURI file:/dev/null
358Info Test PS printer $i
359JobSheets none none
360Location CUPS test suite
361State Idle
362StateMessage Printer $1 is idle.
363</Printer>
364EOF
365
366 cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
367
368 i=`expr $i + 1`
369done
370
371while test $i -le $nprinters2; do
372 cat >>/tmp/cups-$user/printers.conf <<EOF
373<Printer test-$i>
374Accepting Yes
375DeviceURI file:/dev/null
376Info Test raw printer $i
377JobSheets none none
378Location CUPS test suite
379State Idle
380StateMessage Printer $1 is idle.
381</Printer>
382EOF
383
384 i=`expr $i + 1`
385done
386
426c6a59
MS
387if test -f /tmp/cups-$user/printers.conf; then
388 cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
389else
390 touch /tmp/cups-$user/printers.conf.orig
391fi
ef416fc2 392
ef416fc2 393#
394# Setup the paths...
395#
396
a74454a7 397echo "Setting up environment variables for test..."
398
ef416fc2 399if test "x$LD_LIBRARY_PATH" = x; then
50fe7201 400 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
ef416fc2 401else
50fe7201 402 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
ef416fc2 403fi
404
405export LD_LIBRARY_PATH
406
50fe7201 407LD_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 408export LD_PRELOAD
409
410if test "x$DYLD_LIBRARY_PATH" = x; then
50fe7201 411 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
ef416fc2 412else
50fe7201 413 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
ef416fc2 414fi
415
416export DYLD_LIBRARY_PATH
417
418if test "x$SHLIB_PATH" = x; then
50fe7201 419 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
ef416fc2 420else
50fe7201 421 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
ef416fc2 422fi
423
424export SHLIB_PATH
425
b19ccc9e 426CUPS_SERVER=localhost:8631; export CUPS_SERVER
ef416fc2 427CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
428CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
429CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
4509bb49 430LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
ef416fc2 431
432#
433# Set a new home directory to avoid getting user options mixed in...
434#
435
436HOME=/tmp/cups-$user
437export HOME
438
f42414bf 439#
440# Force POSIX locale for tests...
441#
442
443LANG=C
444export LANG
445
ef416fc2 446#
447# Start the server; run as foreground daemon in the background...
448#
449
450echo "Starting scheduler:"
a74454a7 451echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
ef416fc2 452echo ""
453
a74454a7 454$valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
ef416fc2 455cupsd=$!
456
ef416fc2 457if test "x$testtype" = x0; then
b19ccc9e 458 # Not running tests...
ef416fc2 459 echo "Scheduler is PID $cupsd and is listening on port 8631."
460 echo ""
b19ccc9e
MS
461
462 # Create a helper script to run programs with...
463 runcups="/tmp/cups-$user/runcups"
464
465 echo "#!/bin/sh" >$runcups
466 echo "# Helper script for running CUPS test instance." >>$runcups
467 echo "" >>$runcups
468 echo "# Set required environment variables..." >>$runcups
469 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
470 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
471 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
472 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
473 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
474 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
475 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
476 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
477 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
478 echo "" >>$runcups
479 echo "# Run command..." >>$runcups
480 echo "exec \"\$@\"" >>$runcups
481
482 chmod +x $runcups
483
484 echo "The $runcups helper script can be used to test programs"
485 echo "with the server."
ef416fc2 486 exit 0
487fi
488
a74454a7 489if test $argcount -eq 0; then
490 echo "Scheduler is PID $cupsd; run debugger now if you need to."
491 echo ""
492 echo $ac_n "Press ENTER to continue... $ac_c"
493 read junk
494else
495 echo "Scheduler is PID $cupsd."
496 sleep 2
497fi
ef416fc2 498
499IPP_PORT=$port; export IPP_PORT
500
501while true; do
502 running=`../systemv/lpstat -r 2>/dev/null`
503 if test "x$running" = "xscheduler is running"; then
504 break
505 fi
506
507 echo "Waiting for scheduler to become ready..."
508 sleep 10
509done
510
511#
512# Create the test report source file...
513#
514
dd1abb6b
MS
515date=`date "+%Y-%m-%d"`
516strfile=/tmp/cups-$user/cups-str-1.4-$date-$user.html
ef416fc2 517
518rm -f $strfile
519cat str-header.html >$strfile
520
521#
522# Run the IPP tests...
523#
524
a74454a7 525echo ""
ef416fc2 526echo "Running IPP compliance tests..."
527
bd7854cb 528echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
ef416fc2 529echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
530echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
e1d6a774 531echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
ef416fc2 532echo "<PRE>" >>$strfile
533
534fail=0
535for file in 4*.test; do
536 echo "Performing $file..."
537 echo "" >>$strfile
538
839a51c8 539 ./ipptest ipp://localhost:$port/printers $file | tee -a $strfile
ef416fc2 540 status=$?
541
542 if test $status != 0; then
543 echo Test failed.
544 fail=`expr $fail + 1`
545 fi
546done
547
548echo "</PRE>" >>$strfile
549
550#
551# Run the command tests...
552#
553
a74454a7 554echo ""
ef416fc2 555echo "Running command tests..."
556
bd7854cb 557echo "<H1>2 - Command Tests</H1>" >>$strfile
ef416fc2 558echo "<P>This section provides the results to the command tests" >>$strfile
559echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
dd1abb6b 560echo $date by $user on `hostname`. >>$strfile
ef416fc2 561echo "<PRE>" >>$strfile
562
563for file in 5*.sh; do
564 echo "Performing $file..."
565 echo "" >>$strfile
566 echo "\"$file\":" >>$strfile
567
839a51c8 568 sh $file $pjobs | tee -a $strfile
ef416fc2 569 status=$?
570
571 if test $status != 0; then
572 echo Test failed.
573 fail=`expr $fail + 1`
574 fi
575done
576
577echo "</PRE>" >>$strfile
578
ef416fc2 579#
580# Stop the server...
581#
582
583kill $cupsd
584
585#
586# Append the log files for post-mortim...
587#
588
bd7854cb 589echo "<H1>3 - Log Files</H1>" >>$strfile
ef416fc2 590
839a51c8
MS
591#
592# Verify counts...
593#
594
595echo "Test Summary"
596echo ""
597echo "<H2>Summary</H2>" >>$strfile
598
7a14d768 599# Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
839a51c8 600count=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
969307f0
MS
601expected=`expr $pjobs \* 2 + 34`
602expected2=`expr $expected + 2`
603if test $count -lt $expected -a $count -gt $expected2; then
839a51c8
MS
604 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
605 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
606 fail=`expr $fail + 1`
607else
608 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
609 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
610fi
611
612# Paged printed on Test2
613count=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
614expected=`expr $pjobs \* 2 + 3`
615if test $count != $expected; then
616 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
617 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
618 fail=`expr $fail + 1`
619else
620 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
621 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
622fi
623
624# Requested processed
625count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
626echo "PASS: $count requests processed."
627echo "<P>PASS: $count requests processed.</P>" >>$strfile
628
629# Emergency log messages
630count=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
631if test $count != 0; then
632 echo "FAIL: $count emergency messages, expected 0."
633 grep '^X ' /tmp/cups-$user/log/error_log
634 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
635 echo "<PRE>" >>$strfile
636 grep '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
637 echo "</PRE>" >>$strfile
638 fail=`expr $fail + 1`
639else
640 echo "PASS: $count emergency messages."
641 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
642fi
643
644# Alert log messages
645count=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
646if test $count != 0; then
647 echo "FAIL: $count alert messages, expected 0."
648 grep '^A ' /tmp/cups-$user/log/error_log
649 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
650 echo "<PRE>" >>$strfile
651 grep '^A ' /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 alert messages."
656 echo "<P>PASS: $count alert messages.</P>" >>$strfile
657fi
658
659# Critical log messages
660count=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
661if test $count != 0; then
662 echo "FAIL: $count critical messages, expected 0."
663 grep '^C ' /tmp/cups-$user/log/error_log
664 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
665 echo "<PRE>" >>$strfile
666 grep '^C ' /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 critical messages."
671 echo "<P>PASS: $count critical messages.</P>" >>$strfile
672fi
673
674# Error log messages
675count=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
52f6f666
MS
676if test $count != 17; then
677 echo "FAIL: $count error messages, expected 17."
839a51c8 678 grep '^E ' /tmp/cups-$user/log/error_log
52f6f666 679 echo "<P>FAIL: $count error messages, expected 17.</P>" >>$strfile
839a51c8
MS
680 echo "<PRE>" >>$strfile
681 grep '^E ' /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 error messages."
686 echo "<P>PASS: $count error messages.</P>" >>$strfile
687fi
688
689# Warning log messages
690count=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
691if test $count != 0; then
692 echo "FAIL: $count warning messages, expected 0."
693 grep '^W ' /tmp/cups-$user/log/error_log
694 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
695 echo "<PRE>" >>$strfile
696 grep '^W ' /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 warning messages."
701 echo "<P>PASS: $count warning messages.</P>" >>$strfile
702fi
703
704# Notice log messages
705count=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
706if test $count != 0; then
707 echo "FAIL: $count notice messages, expected 0."
708 grep '^N ' /tmp/cups-$user/log/error_log
709 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
710 echo "<PRE>" >>$strfile
711 grep '^N ' /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 notice messages."
716 echo "<P>PASS: $count notice messages.</P>" >>$strfile
717fi
718
719# Info log messages
720count=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
721if test $count = 0; then
722 echo "FAIL: $count info messages, expected more than 0."
723 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
724 fail=`expr $fail + 1`
725else
726 echo "PASS: $count info messages."
727 echo "<P>PASS: $count info messages.</P>" >>$strfile
728fi
729
730# Debug log messages
731count=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
732if test $count = 0; then
733 echo "FAIL: $count debug messages, expected more than 0."
734 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
735 fail=`expr $fail + 1`
736else
737 echo "PASS: $count debug messages."
738 echo "<P>PASS: $count debug messages.</P>" >>$strfile
739fi
740
741# Debug2 log messages
742count=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
7a14d768
MS
743if test $count = 0; then
744 echo "FAIL: $count debug2 messages, expected more than 0."
745 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
839a51c8
MS
746 fail=`expr $fail + 1`
747else
748 echo "PASS: $count debug2 messages."
749 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
750fi
751
75bd9771
MS
752# Page log file...
753if grep -q 'testfile.pdf Letter' /tmp/cups-$user/log/page_log; then
754 echo "PASS: page_log formatted correctly."
755 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
756else
757 echo "FAIL: page_log formatted incorrectly."
758 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
759 fail=`expr $fail + 1`
760fi
761
839a51c8 762# Log files...
ef416fc2 763echo "<H2>access_log</H2>" >>$strfile
764echo "<PRE>" >>$strfile
839a51c8 765sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
ef416fc2 766echo "</PRE>" >>$strfile
767
768echo "<H2>error_log</H2>" >>$strfile
769echo "<PRE>" >>$strfile
7a14d768 770grep -v '^[dD]' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
ef416fc2 771echo "</PRE>" >>$strfile
772
773echo "<H2>page_log</H2>" >>$strfile
774echo "<PRE>" >>$strfile
839a51c8 775sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
ef416fc2 776echo "</PRE>" >>$strfile
777
ef416fc2 778#
779# Format the reports and tell the user where to find them...
780#
781
ef416fc2 782cat str-trailer.html >>$strfile
783
ef416fc2 784echo ""
785
786if test $fail != 0; then
787 echo "$fail tests failed."
dd1abb6b
MS
788 cp /tmp/cups-$user/log/error_log error_log-$date-$user
789 cp $strfile .
ef416fc2 790else
791 echo "All tests were successful."
792fi
793
a74454a7 794echo "Log files can be found in /tmp/cups-$user/log."
839a51c8 795echo "A HTML report was created in $strfile."
ef416fc2 796echo ""
797
db0bd74a 798if test $fail != 0; then
dd1abb6b
MS
799 echo "Copies of the error_log and `basename $strfile` files are in"
800 echo "`pwd`."
801 echo ""
802
db0bd74a
MS
803 exit 1
804fi
805
ef416fc2 806#
b19ccc9e 807# End of "$Id: run-stp-tests.sh 7954 2008-09-17 05:23:09Z mike $"
ef416fc2 808#