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