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