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