]> git.ipfire.org Git - thirdparty/cups.git/blame - test/run-stp-tests.sh
Merge changes from CUPS 1.5svn-r9717.
[thirdparty/cups.git] / test / run-stp-tests.sh
CommitLineData
ef416fc2 1#!/bin/sh
2#
a480a1b6 3# "$Id: run-stp-tests.sh 9034 2010-03-09 07:03:06Z mike $"
ef416fc2 4#
5# Perform the complete set of IPP compliance tests specified in the
6# CUPS Software Test Plan.
7#
0268488e 8# Copyright 2007-2011 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
0268488e
MS
26#
27# Solaris has a non-POSIX grep in /bin...
28#
29
30if test -x /usr/xpg4/bin/grep; then
31 GREP=/usr/xpg4/bin/grep
32else
33 GREP=grep
34fi
35
bd7854cb 36#
37# Figure out the proper echo options...
38#
39
0268488e 40if (echo "testing\c"; echo 1,2,3) | $GREP c >/dev/null; then
bd7854cb 41 ac_n=-n
42 ac_c=
43else
44 ac_n=
45 ac_c='\c'
46fi
47
ef416fc2 48#
49# Greet the tester...
50#
51
52echo "Welcome to the CUPS Automated Test Script."
53echo ""
54echo "Before we begin, it is important that you understand that the larger"
55echo "tests require significant amounts of RAM and disk space. If you"
56echo "attempt to run one of the big tests on a system that lacks sufficient"
57echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
58echo "more system processes that you've grown attached to, like the X"
59echo "server. The question you may want to ask yourself before running a"
60echo "large test is: Do you feel lucky?"
61echo ""
62echo "OK, now that we have the Dirty Harry quote out of the way, please"
63echo "choose the type of test you wish to perform:"
64echo ""
65echo "0 - No testing, keep the scheduler running for me (all systems)"
66echo "1 - Basic conformance test, no load testing (all systems)"
67echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
68echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
69echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
70echo ""
bd7854cb 71echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
ef416fc2 72
a74454a7 73if test $# -gt 0; then
74 testtype=$1
75 shift
76else
77 read testtype
78fi
bd7854cb 79echo ""
ef416fc2 80
81case "$testtype" in
82 0)
83 echo "Running in test mode (0)"
84 nprinters1=0
85 nprinters2=0
86 pjobs=0
b9faaae1 87 pprinters=0
ef416fc2 88 ;;
89 2)
90 echo "Running the medium tests (2)"
91 nprinters1=10
92 nprinters2=20
93 pjobs=20
b9faaae1 94 pprinters=10
ef416fc2 95 ;;
96 3)
97 echo "Running the extreme tests (3)"
98 nprinters1=500
99 nprinters2=1000
100 pjobs=100
b9faaae1 101 pprinters=50
ef416fc2 102 ;;
103 4)
104 echo "Running the torture tests (4)"
105 nprinters1=10000
106 nprinters2=20000
107 pjobs=200
b9faaae1 108 pprinters=100
ef416fc2 109 ;;
110 *)
111 echo "Running the timid tests (1)"
112 nprinters1=0
113 nprinters2=0
839a51c8 114 pjobs=10
b9faaae1 115 pprinters=0
ef416fc2 116 ;;
117esac
118
119#
120# See if we want to do SSL testing...
121#
122
123echo ""
124echo "Now you can choose whether to create a SSL/TLS encryption key and"
125echo "certificate for testing; these tests currently require the OpenSSL"
126echo "tools:"
127echo ""
128echo "0 - Do not do SSL/TLS encryption tests"
411affcf 129echo "1 - Test but do not require encryption"
130echo "2 - Test and require encryption"
ef416fc2 131echo ""
bd7854cb 132echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
ef416fc2 133
a74454a7 134if test $# -gt 0; then
135 ssltype=$1
136 shift
137else
138 read ssltype
139fi
bd7854cb 140echo ""
ef416fc2 141
142case "$ssltype" in
411affcf 143 1)
144 echo "Will test but not require encryption (1)"
145 ;;
146 2)
147 echo "Will test and require encryption (2)"
ef416fc2 148 ;;
ef416fc2 149 *)
411affcf 150 echo "Not using SSL/TLS (0)"
ef416fc2 151 ssltype=0
152 ;;
153esac
154
155#
156# Information for the server/tests...
157#
158
e1d6a774 159user="$USER"
160if test -z "$user"; then
161 if test -x /usr/ucb/whoami; then
162 user=`/usr/ucb/whoami`
163 else
164 user=`whoami`
165 fi
166
167 if test -z "$user"; then
168 user="unknown"
169 fi
170fi
171
ef416fc2 172port=8631
173cwd=`pwd`
174root=`dirname $cwd`
175
176#
177# Make sure that the LPDEST and PRINTER environment variables are
178# not included in the environment that is passed to the tests. These
179# will usually cause tests to fail erroneously...
180#
181
634763e8
MS
182unset LPDEST
183unset PRINTER
ef416fc2 184
185#
186# See if we want to use valgrind...
187#
188
189echo ""
190echo "This test script can use the Valgrind software from:"
191echo ""
192echo " http://developer.kde.org/~sewardj/"
193echo ""
bd7854cb 194echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
ef416fc2 195
a74454a7 196if test $# -gt 0; then
197 usevalgrind=$1
198 shift
199else
200 read usevalgrind
201fi
bd7854cb 202echo ""
ef416fc2 203
204case "$usevalgrind" in
205 Y* | y*)
d1c13e16 206 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 207 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
208 ;;
209
210 *)
211 valgrind=""
212 ;;
213esac
214
215#
216# Start by creating temporary directories for the tests...
217#
218
a74454a7 219echo "Creating directories for test..."
220
ef416fc2 221rm -rf /tmp/cups-$user
222mkdir /tmp/cups-$user
223mkdir /tmp/cups-$user/bin
224mkdir /tmp/cups-$user/bin/backend
839a51c8 225mkdir /tmp/cups-$user/bin/driver
ef416fc2 226mkdir /tmp/cups-$user/bin/filter
227mkdir /tmp/cups-$user/certs
228mkdir /tmp/cups-$user/share
229mkdir /tmp/cups-$user/share/banners
7a14d768 230mkdir /tmp/cups-$user/share/drv
4509bb49
MS
231mkdir /tmp/cups-$user/share/locale
232for file in ../locale/cups_*.po; do
233 loc=`basename $file .po | cut -c 6-`
234 mkdir /tmp/cups-$user/share/locale/$loc
235 ln -s $root/locale/cups_$loc.po /tmp/cups-$user/share/locale/$loc
236 ln -s $root/locale/ppdc_$loc.po /tmp/cups-$user/share/locale/$loc
237done
75bd9771 238mkdir /tmp/cups-$user/share/mime
ef416fc2 239mkdir /tmp/cups-$user/share/model
7a14d768 240mkdir /tmp/cups-$user/share/ppdc
ef416fc2 241mkdir /tmp/cups-$user/interfaces
242mkdir /tmp/cups-$user/log
243mkdir /tmp/cups-$user/ppd
244mkdir /tmp/cups-$user/spool
245mkdir /tmp/cups-$user/spool/temp
246mkdir /tmp/cups-$user/ssl
247
b19ccc9e 248ln -s $root/backend/dnssd /tmp/cups-$user/bin/backend
ef416fc2 249ln -s $root/backend/http /tmp/cups-$user/bin/backend
250ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
251ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
7a14d768 252ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
ef416fc2 253ln -s $root/backend/parallel /tmp/cups-$user/bin/backend
f14324a7 254ln -s $root/backend/pseudo /tmp/cups-$user/bin/backend
ef416fc2 255ln -s $root/backend/serial /tmp/cups-$user/bin/backend
a74454a7 256ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
ef416fc2 257ln -s $root/backend/socket /tmp/cups-$user/bin/backend
258ln -s $root/backend/usb /tmp/cups-$user/bin/backend
259ln -s $root/cgi-bin /tmp/cups-$user/bin
bd7854cb 260ln -s $root/monitor /tmp/cups-$user/bin
ef416fc2 261ln -s $root/notifier /tmp/cups-$user/bin
262ln -s $root/scheduler /tmp/cups-$user/bin/daemon
cda47a96 263ln -s $root/filter/bannertops /tmp/cups-$user/bin/filter
7a14d768 264ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
7a0cbd5e 265ln -s $root/filter/gziptoany /tmp/cups-$user/bin/filter
ef416fc2 266ln -s $root/filter/hpgltops /tmp/cups-$user/bin/filter
ef416fc2 267ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
268ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
269ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
270ln -s $root/filter/texttops /tmp/cups-$user/bin/filter
ef416fc2 271
272ln -s $root/data/classified /tmp/cups-$user/share/banners
273ln -s $root/data/confidential /tmp/cups-$user/share/banners
274ln -s $root/data/secret /tmp/cups-$user/share/banners
275ln -s $root/data/standard /tmp/cups-$user/share/banners
276ln -s $root/data/topsecret /tmp/cups-$user/share/banners
277ln -s $root/data/unclassified /tmp/cups-$user/share/banners
a74454a7 278ln -s $root/data /tmp/cups-$user/share/charmaps
ef416fc2 279ln -s $root/data /tmp/cups-$user/share/charsets
280ln -s $root/data /tmp/cups-$user/share
281ln -s $root/fonts /tmp/cups-$user/share
7a14d768 282ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
75bd9771
MS
283ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
284ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
7a14d768
MS
285ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
286ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
ef416fc2 287ln -s $root/templates /tmp/cups-$user/share
288
bc44d920 289#
290# Mac OS X filters and configuration files...
291#
292
293if test `uname` = Darwin; then
294 ln -s /usr/libexec/cups/filter/cgpdfto* /tmp/cups-$user/bin/filter
f0ab5bff
MS
295 ln -s /usr/libexec/cups/filter/cgbannertopdf /tmp/cups-$user/bin/filter
296 ln -s /usr/libexec/cups/filter/cgimagetopdf /tmp/cups-$user/bin/filter
297 ln -s /usr/libexec/cups/filter/cgtexttopdf /tmp/cups-$user/bin/filter
bc44d920 298 ln -s /usr/libexec/cups/filter/nsimagetopdf /tmp/cups-$user/bin/filter
299 ln -s /usr/libexec/cups/filter/nstexttopdf /tmp/cups-$user/bin/filter
300 ln -s /usr/libexec/cups/filter/pictwpstops /tmp/cups-$user/bin/filter
301 ln -s /usr/libexec/cups/filter/pstoappleps /tmp/cups-$user/bin/filter
302 ln -s /usr/libexec/cups/filter/pstocupsraster /tmp/cups-$user/bin/filter
303 ln -s /usr/libexec/cups/filter/pstopdffilter /tmp/cups-$user/bin/filter
304
4509bb49
MS
305 if test -f /private/etc/cups/apple.types; then
306 ln -s /private/etc/cups/apple.* /tmp/cups-$user/share/mime
307 elif test -f /usr/share/cups/mime/apple.types; then
308 ln -s /usr/share/cups/mime/apple.* /tmp/cups-$user/share/mime
309 fi
839a51c8
MS
310else
311 ln -s $root/filter/imagetops /tmp/cups-$user/bin/filter
312 ln -s $root/filter/imagetoraster /tmp/cups-$user/bin/filter
313 ln -s $root/filter/pdftops /tmp/cups-$user/bin/filter
bc44d920 314fi
315
ef416fc2 316#
317# Then create the necessary config files...
318#
319
a74454a7 320echo "Creating cupsd.conf for test..."
321
ef416fc2 322if test $ssltype = 2; then
323 encryption="Encryption Required"
324else
325 encryption=""
326fi
327
328cat >/tmp/cups-$user/cupsd.conf <<EOF
329Browsing Off
330FileDevice yes
331Printcap
332Listen 127.0.0.1:$port
333User $user
334ServerRoot /tmp/cups-$user
335StateDir /tmp/cups-$user
336ServerBin /tmp/cups-$user/bin
337CacheDir /tmp/cups-$user/share
338DataDir /tmp/cups-$user/share
339FontPath /tmp/cups-$user/share/fonts
4509bb49 340PassEnv LOCALEDIR
ef416fc2 341DocumentRoot $root/doc
342RequestRoot /tmp/cups-$user/spool
343TempDir /tmp/cups-$user/spool/temp
52f6f666 344MaxSubscriptions 3
ef416fc2 345MaxLogSize 0
346AccessLog /tmp/cups-$user/log/access_log
347ErrorLog /tmp/cups-$user/log/error_log
348PageLog /tmp/cups-$user/log/page_log
e07d4801 349AccessLogLevel actions
7a14d768 350LogLevel debug2
b9faaae1 351LogTimeFormat usecs
ef416fc2 352PreserveJobHistory Yes
353<Policy default>
354<Limit All>
355Order Deny,Allow
356Deny from all
357Allow from 127.0.0.1
358$encryption
359</Limit>
360</Policy>
361EOF
362
ef416fc2 363#
75bd9771 364# Setup lots of test queues - half with PPD files, half without...
ef416fc2 365#
366
a74454a7 367echo "Creating printers.conf for test..."
368
ef416fc2 369i=1
370while test $i -le $nprinters1; do
371 cat >>/tmp/cups-$user/printers.conf <<EOF
372<Printer test-$i>
373Accepting Yes
374DeviceURI file:/dev/null
375Info Test PS printer $i
376JobSheets none none
377Location CUPS test suite
378State Idle
379StateMessage Printer $1 is idle.
380</Printer>
381EOF
382
383 cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
384
385 i=`expr $i + 1`
386done
387
388while test $i -le $nprinters2; do
389 cat >>/tmp/cups-$user/printers.conf <<EOF
390<Printer test-$i>
391Accepting Yes
392DeviceURI file:/dev/null
393Info Test raw printer $i
394JobSheets none none
395Location CUPS test suite
396State Idle
397StateMessage Printer $1 is idle.
398</Printer>
399EOF
400
401 i=`expr $i + 1`
402done
403
426c6a59
MS
404if test -f /tmp/cups-$user/printers.conf; then
405 cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
406else
407 touch /tmp/cups-$user/printers.conf.orig
408fi
ef416fc2 409
ef416fc2 410#
411# Setup the paths...
412#
413
a74454a7 414echo "Setting up environment variables for test..."
415
ef416fc2 416if test "x$LD_LIBRARY_PATH" = x; then
50fe7201 417 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
ef416fc2 418else
50fe7201 419 LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
ef416fc2 420fi
421
422export LD_LIBRARY_PATH
423
50fe7201 424LD_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"
f11a948a
MS
425if test `uname` = SunOS -a -r /usr/lib/libCrun.so.1; then
426 LD_PRELOAD="/usr/lib/libCrun.so.1:$LD_PRELOAD"
427fi
ef416fc2 428export LD_PRELOAD
429
430if test "x$DYLD_LIBRARY_PATH" = x; then
50fe7201 431 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
ef416fc2 432else
50fe7201 433 DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
ef416fc2 434fi
435
436export DYLD_LIBRARY_PATH
437
438if test "x$SHLIB_PATH" = x; then
50fe7201 439 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
ef416fc2 440else
50fe7201 441 SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
ef416fc2 442fi
443
444export SHLIB_PATH
445
ef55b745 446CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
b19ccc9e 447CUPS_SERVER=localhost:8631; export CUPS_SERVER
ef416fc2 448CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
449CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
450CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
4509bb49 451LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
ef416fc2 452
453#
454# Set a new home directory to avoid getting user options mixed in...
455#
456
457HOME=/tmp/cups-$user
458export HOME
459
f42414bf 460#
461# Force POSIX locale for tests...
462#
463
464LANG=C
465export LANG
466
0268488e
MS
467LC_MESSAGES=C
468export LC_MESSAGES
469
ef416fc2 470#
471# Start the server; run as foreground daemon in the background...
472#
473
474echo "Starting scheduler:"
a74454a7 475echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
ef416fc2 476echo ""
477
b9faaae1
MS
478if test `uname` = Darwin -a "x$valgrind" = x; then
479 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib \
480 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
481else
482 $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
483fi
484
ef416fc2 485cupsd=$!
486
ef416fc2 487if test "x$testtype" = x0; then
b19ccc9e 488 # Not running tests...
ef416fc2 489 echo "Scheduler is PID $cupsd and is listening on port 8631."
490 echo ""
b19ccc9e
MS
491
492 # Create a helper script to run programs with...
493 runcups="/tmp/cups-$user/runcups"
494
495 echo "#!/bin/sh" >$runcups
496 echo "# Helper script for running CUPS test instance." >>$runcups
497 echo "" >>$runcups
498 echo "# Set required environment variables..." >>$runcups
499 echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
500 echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
501 echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
502 echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
503 echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
504 echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
505 echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
506 echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
507 echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
508 echo "" >>$runcups
509 echo "# Run command..." >>$runcups
510 echo "exec \"\$@\"" >>$runcups
511
512 chmod +x $runcups
513
514 echo "The $runcups helper script can be used to test programs"
515 echo "with the server."
ef416fc2 516 exit 0
517fi
518
a74454a7 519if test $argcount -eq 0; then
520 echo "Scheduler is PID $cupsd; run debugger now if you need to."
521 echo ""
522 echo $ac_n "Press ENTER to continue... $ac_c"
523 read junk
524else
525 echo "Scheduler is PID $cupsd."
526 sleep 2
527fi
ef416fc2 528
529IPP_PORT=$port; export IPP_PORT
530
531while true; do
532 running=`../systemv/lpstat -r 2>/dev/null`
533 if test "x$running" = "xscheduler is running"; then
534 break
535 fi
536
537 echo "Waiting for scheduler to become ready..."
538 sleep 10
539done
540
541#
542# Create the test report source file...
543#
544
dd1abb6b 545date=`date "+%Y-%m-%d"`
a480a1b6 546strfile=/tmp/cups-$user/cups-str-1.5-$date-$user.html
ef416fc2 547
548rm -f $strfile
549cat str-header.html >$strfile
550
551#
552# Run the IPP tests...
553#
554
a74454a7 555echo ""
ef416fc2 556echo "Running IPP compliance tests..."
557
bd7854cb 558echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
ef416fc2 559echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
560echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
e1d6a774 561echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
ef416fc2 562echo "<PRE>" >>$strfile
563
564fail=0
565for file in 4*.test; do
566 echo "Performing $file..."
567 echo "" >>$strfile
568
aaf19ab0 569 ./ipptool -t ipp://localhost:$port/printers $file | tee -a $strfile
ef416fc2 570 status=$?
571
572 if test $status != 0; then
573 echo Test failed.
574 fail=`expr $fail + 1`
575 fi
576done
577
578echo "</PRE>" >>$strfile
579
580#
581# Run the command tests...
582#
583
a74454a7 584echo ""
ef416fc2 585echo "Running command tests..."
586
bd7854cb 587echo "<H1>2 - Command Tests</H1>" >>$strfile
ef416fc2 588echo "<P>This section provides the results to the command tests" >>$strfile
589echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
dd1abb6b 590echo $date by $user on `hostname`. >>$strfile
ef416fc2 591echo "<PRE>" >>$strfile
592
593for file in 5*.sh; do
594 echo "Performing $file..."
595 echo "" >>$strfile
596 echo "\"$file\":" >>$strfile
597
b9faaae1 598 sh $file $pjobs $pprinters | tee -a $strfile
ef416fc2 599 status=$?
600
601 if test $status != 0; then
602 echo Test failed.
603 fail=`expr $fail + 1`
604 fi
605done
606
607echo "</PRE>" >>$strfile
608
ef416fc2 609#
610# Stop the server...
611#
612
613kill $cupsd
614
615#
616# Append the log files for post-mortim...
617#
618
bd7854cb 619echo "<H1>3 - Log Files</H1>" >>$strfile
ef416fc2 620
839a51c8
MS
621#
622# Verify counts...
623#
624
625echo "Test Summary"
626echo ""
627echo "<H2>Summary</H2>" >>$strfile
628
ba55dc12
MS
629# Job control files
630count=`ls -1 /tmp/cups-$user/spool | wc -l`
631count=`expr $count - 1`
632if test $count != 0; then
633 echo "FAIL: $count job control files were not purged."
634 echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
635 fail=`expr $fail + 1`
636else
637 echo "PASS: All job control files purged."
638 echo "<P>PASS: All job control files purged.</P>" >>$strfile
639fi
640
7a14d768 641# Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
0268488e 642count=`$GREP '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
969307f0
MS
643expected=`expr $pjobs \* 2 + 34`
644expected2=`expr $expected + 2`
645if test $count -lt $expected -a $count -gt $expected2; then
839a51c8
MS
646 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
647 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
648 fail=`expr $fail + 1`
649else
650 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
651 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
652fi
653
654# Paged printed on Test2
0268488e 655count=`$GREP '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
839a51c8
MS
656expected=`expr $pjobs \* 2 + 3`
657if test $count != $expected; then
658 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
659 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
660 fail=`expr $fail + 1`
661else
662 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
663 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
664fi
665
e07d4801 666# Requests logged
839a51c8 667count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
7cf5915e 668expected=`expr 37 + 18 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
e07d4801
MS
669if test $count != $expected; then
670 echo "FAIL: $count requests logged, expected $expected."
671 echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
672 fail=`expr $fail + 1`
673else
674 echo "PASS: $count requests logged."
675 echo "<P>PASS: $count requests logged.</P>" >>$strfile
676fi
677
678# Did CUPS-Get-Default get logged?
0268488e 679if $GREP -q CUPS-Get-Default /tmp/cups-$user/log/access_log; then
e07d4801
MS
680 echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
681 echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
682 echo "<PRE>" >>$strfile
0268488e 683 $GREP CUPS-Get-Default /tmp/cups-$user/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
e07d4801
MS
684 echo "</PRE>" >>$strfile
685 fail=`expr $fail + 1`
686else
687 echo "PASS: CUPS-Get-Default not logged."
688 echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
689fi
839a51c8
MS
690
691# Emergency log messages
0268488e 692count=`$GREP '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
693if test $count != 0; then
694 echo "FAIL: $count emergency messages, expected 0."
0268488e 695 $GREP '^X ' /tmp/cups-$user/log/error_log
839a51c8
MS
696 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
697 echo "<PRE>" >>$strfile
0268488e 698 $GREP '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
839a51c8
MS
699 echo "</PRE>" >>$strfile
700 fail=`expr $fail + 1`
701else
702 echo "PASS: $count emergency messages."
703 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
704fi
705
706# Alert log messages
0268488e 707count=`$GREP '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
708if test $count != 0; then
709 echo "FAIL: $count alert messages, expected 0."
0268488e 710 $GREP '^A ' /tmp/cups-$user/log/error_log
839a51c8
MS
711 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
712 echo "<PRE>" >>$strfile
0268488e 713 $GREP '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
839a51c8
MS
714 echo "</PRE>" >>$strfile
715 fail=`expr $fail + 1`
716else
717 echo "PASS: $count alert messages."
718 echo "<P>PASS: $count alert messages.</P>" >>$strfile
719fi
720
721# Critical log messages
0268488e 722count=`$GREP '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
723if test $count != 0; then
724 echo "FAIL: $count critical messages, expected 0."
0268488e 725 $GREP '^C ' /tmp/cups-$user/log/error_log
839a51c8
MS
726 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
727 echo "<PRE>" >>$strfile
0268488e 728 $GREP '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
839a51c8
MS
729 echo "</PRE>" >>$strfile
730 fail=`expr $fail + 1`
731else
732 echo "PASS: $count critical messages."
733 echo "<P>PASS: $count critical messages.</P>" >>$strfile
734fi
735
736# Error log messages
0268488e 737count=`$GREP '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
d2354e63
MS
738if test $count != 18; then
739 echo "FAIL: $count error messages, expected 18."
0268488e 740 $GREP '^E ' /tmp/cups-$user/log/error_log
d2354e63 741 echo "<P>FAIL: $count error messages, expected 18.</P>" >>$strfile
839a51c8 742 echo "<PRE>" >>$strfile
0268488e 743 $GREP '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
839a51c8
MS
744 echo "</PRE>" >>$strfile
745 fail=`expr $fail + 1`
746else
747 echo "PASS: $count error messages."
748 echo "<P>PASS: $count error messages.</P>" >>$strfile
749fi
750
751# Warning log messages
0268488e 752count=`$GREP '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
10d09e33
MS
753if test $count != 9; then
754 echo "FAIL: $count warning messages, expected 9."
0268488e 755 $GREP '^W ' /tmp/cups-$user/log/error_log
10d09e33 756 echo "<P>FAIL: $count warning messages, expected 9.</P>" >>$strfile
839a51c8 757 echo "<PRE>" >>$strfile
0268488e 758 $GREP '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
839a51c8
MS
759 echo "</PRE>" >>$strfile
760 fail=`expr $fail + 1`
761else
762 echo "PASS: $count warning messages."
763 echo "<P>PASS: $count warning messages.</P>" >>$strfile
764fi
765
766# Notice log messages
0268488e 767count=`$GREP '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
768if test $count != 0; then
769 echo "FAIL: $count notice messages, expected 0."
0268488e 770 $GREP '^N ' /tmp/cups-$user/log/error_log
839a51c8
MS
771 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
772 echo "<PRE>" >>$strfile
0268488e 773 $GREP '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
839a51c8
MS
774 echo "</PRE>" >>$strfile
775 fail=`expr $fail + 1`
776else
777 echo "PASS: $count notice messages."
778 echo "<P>PASS: $count notice messages.</P>" >>$strfile
779fi
780
781# Info log messages
0268488e 782count=`$GREP '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
783if test $count = 0; then
784 echo "FAIL: $count info messages, expected more than 0."
785 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
786 fail=`expr $fail + 1`
787else
788 echo "PASS: $count info messages."
789 echo "<P>PASS: $count info messages.</P>" >>$strfile
790fi
791
792# Debug log messages
0268488e 793count=`$GREP '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
839a51c8
MS
794if test $count = 0; then
795 echo "FAIL: $count debug messages, expected more than 0."
796 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
797 fail=`expr $fail + 1`
798else
799 echo "PASS: $count debug messages."
800 echo "<P>PASS: $count debug messages.</P>" >>$strfile
801fi
802
803# Debug2 log messages
0268488e 804count=`$GREP '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
7a14d768
MS
805if test $count = 0; then
806 echo "FAIL: $count debug2 messages, expected more than 0."
807 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
839a51c8
MS
808 fail=`expr $fail + 1`
809else
810 echo "PASS: $count debug2 messages."
811 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
812fi
813
814# Log files...
ef416fc2 815echo "<H2>access_log</H2>" >>$strfile
816echo "<PRE>" >>$strfile
839a51c8 817sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
ef416fc2 818echo "</PRE>" >>$strfile
819
820echo "<H2>error_log</H2>" >>$strfile
821echo "<PRE>" >>$strfile
0268488e 822$GREP -v '^d' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
ef416fc2 823echo "</PRE>" >>$strfile
824
825echo "<H2>page_log</H2>" >>$strfile
826echo "<PRE>" >>$strfile
839a51c8 827sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
ef416fc2 828echo "</PRE>" >>$strfile
829
ef416fc2 830#
831# Format the reports and tell the user where to find them...
832#
833
ef416fc2 834cat str-trailer.html >>$strfile
835
ef416fc2 836echo ""
837
838if test $fail != 0; then
839 echo "$fail tests failed."
dd1abb6b
MS
840 cp /tmp/cups-$user/log/error_log error_log-$date-$user
841 cp $strfile .
ef416fc2 842else
843 echo "All tests were successful."
844fi
845
a74454a7 846echo "Log files can be found in /tmp/cups-$user/log."
839a51c8 847echo "A HTML report was created in $strfile."
ef416fc2 848echo ""
849
db0bd74a 850if test $fail != 0; then
dd1abb6b
MS
851 echo "Copies of the error_log and `basename $strfile` files are in"
852 echo "`pwd`."
853 echo ""
854
db0bd74a
MS
855 exit 1
856fi
857
ef416fc2 858#
a480a1b6 859# End of "$Id: run-stp-tests.sh 9034 2010-03-09 07:03:06Z mike $"
ef416fc2 860#