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