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