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