3
# "$Id: run-stp-tests.sh 9034 2010-03-09 07:03:06Z mike $"
5
# Perform the complete set of IPP compliance tests specified in the
6
# CUPS Software Test Plan.
8
# Copyright 2007-2012 by Apple Inc.
9
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
11
# These coded instructions, statements, and computer programs are the
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/".
21
# Don't allow "make check" or "make test" to be run by root...
24
if test "x`id -u`" = x0; then
25
echo Please run this as a normal user. Not supported when run as root.
30
# Force the permissions of the files we create...
36
# Make the IPP test program...
42
# Solaris has a non-POSIX grep in /bin...
45
if test -x /usr/xpg4/bin/grep; then
46
GREP=/usr/xpg4/bin/grep
52
# Figure out the proper echo options...
55
if (echo "testing\c"; echo 1,2,3) | $GREP c >/dev/null; then
67
echo "Welcome to the CUPS Automated Test Script."
69
echo "Before we begin, it is important that you understand that the larger"
70
echo "tests require significant amounts of RAM and disk space. If you"
71
echo "attempt to run one of the big tests on a system that lacks sufficient"
72
echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
73
echo "more system processes that you've grown attached to, like the X"
74
echo "server. The question you may want to ask yourself before running a"
75
echo "large test is: Do you feel lucky?"
77
echo "OK, now that we have the Dirty Harry quote out of the way, please"
78
echo "choose the type of test you wish to perform:"
80
echo "0 - No testing, keep the scheduler running for me (all systems)"
81
echo "1 - Basic conformance test, no load testing (all systems)"
82
echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
83
echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
84
echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
86
echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
88
if test $# -gt 0; then
98
echo "Running in test mode (0)"
105
echo "Running the medium tests (2)"
112
echo "Running the extreme tests (3)"
119
echo "Running the torture tests (4)"
126
echo "Running the timid tests (1)"
135
# See if we want to do SSL testing...
139
echo "Now you can choose whether to create a SSL/TLS encryption key and"
140
echo "certificate for testing; these tests currently require the OpenSSL"
143
echo "0 - Do not do SSL/TLS encryption tests"
144
echo "1 - Test but do not require encryption"
145
echo "2 - Test and require encryption"
147
echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
149
if test $# -gt 0; then
159
echo "Will test but not require encryption (1)"
162
echo "Will test and require encryption (2)"
165
echo "Not using SSL/TLS (0)"
171
# Information for the server/tests...
175
if test -z "$user"; then
176
if test -x /usr/ucb/whoami; then
177
user=`/usr/ucb/whoami`
182
if test -z "$user"; then
192
# Make sure that the LPDEST and PRINTER environment variables are
193
# not included in the environment that is passed to the tests. These
194
# will usually cause tests to fail erroneously...
201
# See if we want to use valgrind...
205
echo "This test script can use the Valgrind software from:"
207
echo " http://developer.kde.org/~sewardj/"
209
echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
211
if test $# -gt 0; then
219
case "$usevalgrind" in
221
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"
222
if test `uname` = Darwin; then
223
VALGRIND="$VALGRIND --dsymutil=yes"
226
echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
236
# See if we want to do debug logging of the libraries...
240
echo "If CUPS was built with the --enable-debug-printfs configure option, you"
241
echo "can enable debug logging of the libraries."
243
echo $ac_n "Enter Y or a number from 0 to 9 to enable debug logging or N to not: [N] $ac_c"
245
if test $# -gt 0; then
253
case "$usedebugprintfs" in
255
echo "Enabling debug printfs; log files can be found in /tmp/cups-$user/log..."
256
CUPS_DEBUG_LOG="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
257
CUPS_DEBUG_LEVEL=5; export CUPS_DEBUG_LEVEL
258
CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
261
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)
262
echo "Enabling debug printfs; log files can be found in /tmp/cups-$user/log..."
263
CUPS_DEBUG_LOG="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
264
CUPS_DEBUG_LEVEL=$usedebugprintf; export CUPS_DEBUG_LEVEL
265
CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
273
# Start by creating temporary directories for the tests...
276
echo "Creating directories for test..."
278
rm -rf /tmp/cups-$user
279
mkdir /tmp/cups-$user
280
mkdir /tmp/cups-$user/bin
281
mkdir /tmp/cups-$user/bin/backend
282
mkdir /tmp/cups-$user/bin/driver
283
mkdir /tmp/cups-$user/bin/filter
284
mkdir /tmp/cups-$user/certs
285
mkdir /tmp/cups-$user/share
286
mkdir /tmp/cups-$user/share/banners
287
mkdir /tmp/cups-$user/share/drv
288
mkdir /tmp/cups-$user/share/locale
289
for file in ../locale/cups_*.po; do
290
loc=`basename $file .po | cut -c 6-`
291
mkdir /tmp/cups-$user/share/locale/$loc
292
ln -s $root/locale/cups_$loc.po /tmp/cups-$user/share/locale/$loc
293
ln -s $root/locale/ppdc_$loc.po /tmp/cups-$user/share/locale/$loc
295
mkdir /tmp/cups-$user/share/mime
296
mkdir /tmp/cups-$user/share/model
297
mkdir /tmp/cups-$user/share/ppdc
298
mkdir /tmp/cups-$user/interfaces
299
mkdir /tmp/cups-$user/log
300
mkdir /tmp/cups-$user/ppd
301
mkdir /tmp/cups-$user/spool
302
mkdir /tmp/cups-$user/spool/temp
303
mkdir /tmp/cups-$user/ssl
305
ln -s $root/backend/dnssd /tmp/cups-$user/bin/backend
306
ln -s $root/backend/http /tmp/cups-$user/bin/backend
307
ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
308
ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
309
ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
310
ln -s $root/backend/pseudo /tmp/cups-$user/bin/backend
311
ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
312
ln -s $root/backend/socket /tmp/cups-$user/bin/backend
313
ln -s $root/backend/usb /tmp/cups-$user/bin/backend
314
ln -s $root/cgi-bin /tmp/cups-$user/bin
315
ln -s $root/monitor /tmp/cups-$user/bin
316
ln -s $root/notifier /tmp/cups-$user/bin
317
ln -s $root/scheduler /tmp/cups-$user/bin/daemon
318
ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
319
ln -s $root/filter/gziptoany /tmp/cups-$user/bin/filter
320
ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
321
ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
322
ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
323
ln -s $root/filter/rastertolabel /tmp/cups-$user/bin/filter
324
ln -s $root/filter/rastertopwg /tmp/cups-$user/bin/filter
326
ln -s $root/data /tmp/cups-$user/share
327
ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
328
ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
329
ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
330
ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
331
ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
332
ln -s $root/templates /tmp/cups-$user/share
335
# Local filters and configuration files...
338
if test `uname` = Darwin; then
339
ln -s /usr/libexec/cups/filter/cgpdfto* /tmp/cups-$user/bin/filter
340
ln -s /usr/libexec/cups/filter/cgbannertopdf /tmp/cups-$user/bin/filter
341
ln -s /usr/libexec/cups/filter/cgimagetopdf /tmp/cups-$user/bin/filter
342
ln -s /usr/libexec/cups/filter/cgtexttopdf /tmp/cups-$user/bin/filter
343
ln -s /usr/libexec/cups/filter/nsimagetopdf /tmp/cups-$user/bin/filter
344
ln -s /usr/libexec/cups/filter/nstexttopdf /tmp/cups-$user/bin/filter
345
ln -s /usr/libexec/cups/filter/pictwpstops /tmp/cups-$user/bin/filter
346
ln -s /usr/libexec/cups/filter/pstoappleps /tmp/cups-$user/bin/filter
347
ln -s /usr/libexec/cups/filter/pstocupsraster /tmp/cups-$user/bin/filter
348
ln -s /usr/libexec/cups/filter/pstopdffilter /tmp/cups-$user/bin/filter
349
ln -s /usr/libexec/cups/filter/rastertourf /tmp/cups-$user/bin/filter
350
ln -s /usr/libexec/cups/filter/xhtmltopdf /tmp/cups-$user/bin/filter
352
if test -f /private/etc/cups/apple.types; then
353
ln -s /private/etc/cups/apple.* /tmp/cups-$user/share/mime
354
elif test -f /usr/share/cups/mime/apple.types; then
355
ln -s /usr/share/cups/mime/apple.* /tmp/cups-$user/share/mime
358
ln -s /usr/lib/cups/filter/imagetops /tmp/cups-$user/bin/filter
359
ln -s /usr/lib/cups/filter/imagetoraster /tmp/cups-$user/bin/filter
360
ln -s /usr/lib/cups/filter/pdftops /tmp/cups-$user/bin/filter
361
ln -s /usr/lib/cups/filter/texttops /tmp/cups-$user/bin/filter
363
ln -s /usr/share/cups/mime/legacy.convs /tmp/cups-$user/share/mime
364
ln -s /usr/share/cups/charsets /tmp/cups-$user/share
365
if test -f $root/data/psglyphs; then
366
ln -s /usr/share/cups/data/psglyphs $root/data
368
ln -s /usr/share/cups/fonts /tmp/cups-$user/share
371
# cups-filters 1.0.36
373
ln -s /usr/share/cups/mime/cupsfilters.types /tmp/cups-$user/share/mime
374
ln -s /usr/share/cups/mime/cupsfilters.convs /tmp/cups-$user/share/mime
376
ln -s /usr/lib/cups/filter/bannertopdf /tmp/cups-$user/bin/filter
377
ln -s /usr/lib/cups/filter/commandtoescpx /tmp/cups-$user/bin/filter
378
ln -s /usr/lib/cups/filter/commandtopclx /tmp/cups-$user/bin/filter
379
ln -s /usr/lib/cups/filter/gstopxl /tmp/cups-$user/bin/filter
380
ln -s /usr/lib/cups/filter/gstoraster /tmp/cups-$user/bin/filter
381
ln -s /usr/lib/cups/filter/imagetopdf /tmp/cups-$user/bin/filter
382
ln -s /usr/lib/cups/filter/imagetops /tmp/cups-$user/bin/filter
383
ln -s /usr/lib/cups/filter/imagetoraster /tmp/cups-$user/bin/filter
384
ln -s /usr/lib/cups/filter/pdftoijs /tmp/cups-$user/bin/filter
385
ln -s /usr/lib/cups/filter/pdftoopvp /tmp/cups-$user/bin/filter
386
ln -s /usr/lib/cups/filter/pdftopdf /tmp/cups-$user/bin/filter
387
ln -s /usr/lib/cups/filter/pdftops /tmp/cups-$user/bin/filter
388
ln -s /usr/lib/cups/filter/pdftoraster /tmp/cups-$user/bin/filter
389
ln -s /usr/lib/cups/filter/pstopdf /tmp/cups-$user/bin/filter
390
ln -s /usr/lib/cups/filter/rastertoescpx /tmp/cups-$user/bin/filter
391
ln -s /usr/lib/cups/filter/rastertopclx /tmp/cups-$user/bin/filter
392
ln -s /usr/lib/cups/filter/textonly /tmp/cups-$user/bin/filter
393
ln -s /usr/lib/cups/filter/texttopdf /tmp/cups-$user/bin/filter
394
ln -s /usr/lib/cups/filter/texttops /tmp/cups-$user/bin/filter
395
ln -s /usr/lib/cups/filter/urftopdf /tmp/cups-$user/bin/filter
397
ln -s /usr/share/cups/banners/classified /tmp/cups-$user/share/banners
398
ln -s /usr/share/cups/banners/confidential /tmp/cups-$user/share/banners
399
ln -s /usr/share/cups/banners/secret /tmp/cups-$user/share/banners
400
ln -s /usr/share/cups/banners/standard /tmp/cups-$user/share/banners
401
ln -s /usr/share/cups/banners/topsecret /tmp/cups-$user/share/banners
402
ln -s /usr/share/cups/banners/unclassified /tmp/cups-$user/share/banners
406
# Then create the necessary config files...
409
echo "Creating cupsd.conf for test..."
411
if test $ssltype = 2; then
412
encryption="Encryption Required"
417
cat >/tmp/cups-$user/cupsd.conf <<EOF
418
StrictConformance Yes
420
Listen localhost:$port
422
PassEnv DYLD_INSERT_LIBRARIES
425
AccessLogLevel actions
428
PreserveJobHistory Yes
437
cat >/tmp/cups-$user/cups-files.conf <<EOF
441
ServerRoot /tmp/cups-$user
442
StateDir /tmp/cups-$user
443
ServerBin /tmp/cups-$user/bin
444
CacheDir /tmp/cups-$user/share
445
DataDir /tmp/cups-$user/share
446
FontPath /tmp/cups-$user/share/fonts
447
DocumentRoot $root/doc
448
RequestRoot /tmp/cups-$user/spool
449
TempDir /tmp/cups-$user/spool/temp
450
PidFile /tmp/cups-$user/cupsd.pid
451
AccessLog /tmp/cups-$user/log/access_log
452
ErrorLog /tmp/cups-$user/log/error_log
453
PageLog /tmp/cups-$user/log/page_log
457
# Setup lots of test queues - half with PPD files, half without...
460
echo "Creating printers.conf for test..."
463
while test $i -le $nprinters1; do
464
cat >>/tmp/cups-$user/printers.conf <<EOF
467
DeviceURI file:/dev/null
468
Info Test PS printer $i
470
Location CUPS test suite
472
StateMessage Printer $1 is idle.
476
cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
481
while test $i -le $nprinters2; do
482
cat >>/tmp/cups-$user/printers.conf <<EOF
485
DeviceURI file:/dev/null
486
Info Test raw printer $i
488
Location CUPS test suite
490
StateMessage Printer $1 is idle.
497
if test -f /tmp/cups-$user/printers.conf; then
498
cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
500
touch /tmp/cups-$user/printers.conf.orig
507
echo "Setting up environment variables for test..."
509
if test "x$LD_LIBRARY_PATH" = x; then
510
LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
512
LD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$LD_LIBRARY_PATH"
515
export LD_LIBRARY_PATH
517
LD_PRELOAD="$root/cups/libcups.so.2:$root/filter/libcupsimage.so.2:$root/cgi-bin/libcupscgi.so.1:$root/scheduler/libcupsmime.so.1:$root/ppdc/libcupsppdc.so.1"
518
if test `uname` = SunOS -a -r /usr/lib/libCrun.so.1; then
519
LD_PRELOAD="/usr/lib/libCrun.so.1:$LD_PRELOAD"
522
LD_PRELOAD="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/libcupsfilters.so.1:$LD_PRELOAD"
525
if test "x$DYLD_LIBRARY_PATH" = x; then
526
DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
528
DYLD_LIBRARY_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$DYLD_LIBRARY_PATH"
531
export DYLD_LIBRARY_PATH
533
if test "x$SHLIB_PATH" = x; then
534
SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc"
536
SHLIB_PATH="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/ppdc:$SHLIB_PATH"
541
CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
542
CUPS_SERVER=localhost:8631; export CUPS_SERVER
543
CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
544
CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
545
CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
546
LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
549
# Set a new home directory to avoid getting user options mixed in...
556
# Force POSIX locale for tests...
566
# Start the server; run as foreground daemon in the background...
569
echo "Starting scheduler:"
570
echo " $VALGRIND ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
573
if test `uname` = Darwin -a "x$VALGRIND" = x; then
574
DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib
575
../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
577
$VALGRIND ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
582
if test "x$testtype" = x0; then
583
# Not running tests...
584
echo "Scheduler is PID $cupsd and is listening on port 8631."
587
# Create a helper script to run programs with...
588
runcups="/tmp/cups-$user/runcups"
590
echo "#!/bin/sh" >$runcups
591
echo "# Helper script for running CUPS test instance." >>$runcups
593
echo "# Set required environment variables..." >>$runcups
594
echo "CUPS_DATADIR=\"$CUPS_DATADIR\"; export CUPS_DATADIR" >>$runcups
595
echo "CUPS_SERVER=\"$CUPS_SERVER\"; export CUPS_SERVER" >>$runcups
596
echo "CUPS_SERVERROOT=\"$CUPS_SERVERROOT\"; export CUPS_SERVERROOT" >>$runcups
597
echo "CUPS_STATEDIR=\"$CUPS_STATEDIR\"; export CUPS_STATEDIR" >>$runcups
598
echo "DYLD_LIBRARY_PATH=\"$DYLD_LIBRARY_PATH\"; export DYLD_LIBRARY_PATH" >>$runcups
599
echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"; export LD_LIBRARY_PATH" >>$runcups
600
echo "LD_PRELOAD=\"$LD_PRELOAD\"; export LD_PRELOAD" >>$runcups
601
echo "LOCALEDIR=\"$LOCALEDIR\"; export LOCALEDIR" >>$runcups
602
echo "SHLIB_PATH=\"$SHLIB_PATH\"; export SHLIB_PATH" >>$runcups
604
echo "# Run command..." >>$runcups
605
echo "exec \"\$@\"" >>$runcups
609
echo "The $runcups helper script can be used to test programs"
610
echo "with the server."
614
if test $argcount -eq 0; then
615
echo "Scheduler is PID $cupsd; run debugger now if you need to."
617
echo $ac_n "Press ENTER to continue... $ac_c"
620
echo "Scheduler is PID $cupsd."
624
IPP_PORT=$port; export IPP_PORT
627
running=`../systemv/lpstat -r 2>/dev/null`
628
if test "x$running" = "xscheduler is running"; then
632
echo "Waiting for scheduler to become ready..."
637
# Create the test report source file...
640
date=`date "+%Y-%m-%d"`
641
strfile=/tmp/cups-$user/cups-str-1.6-$date-$user.html
644
cat str-header.html >$strfile
647
# Run the IPP tests...
651
echo "Running IPP compliance tests..."
653
echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
654
echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
655
echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
656
echo `date "+%Y-%m-%d"` by $user on `hostname`. >>$strfile
657
echo "<PRE>" >>$strfile
660
for file in 4*.test ipp-2.1.test; do
661
echo $ac_n "Performing $file: $ac_c"
664
if test $file = ipp-2.1.test; then
665
uri="ipp://localhost:$port/printers/Test1"
666
options="-V 2.1 -d NOPRINT=1 -f testfile.ps"
668
uri="ipp://localhost:$port/printers"
671
$VALGRIND ./ipptool -tI $options $uri $file >> $strfile
674
if test $status != 0; then
676
fail=`expr $fail + 1`
682
echo "</PRE>" >>$strfile
685
# Run the command tests...
689
echo "Running command tests..."
691
echo "<H1>2 - Command Tests</H1>" >>$strfile
692
echo "<P>This section provides the results to the command tests" >>$strfile
693
echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
694
echo $date by $user on `hostname`. >>$strfile
695
echo "<PRE>" >>$strfile
697
for file in 5*.sh; do
699
# Make sure the past jobs are done before going on.
703
echo $ac_n "Performing $file: $ac_c"
705
echo "\"$file\":" >>$strfile
707
sh $file $pjobs $pprinters >> $strfile
710
if test $status != 0; then
712
fail=`expr $fail + 1`
718
echo "</PRE>" >>$strfile
727
# Append the log files for post-mortim...
730
echo "<H1>3 - Log Files</H1>" >>$strfile
738
echo "<H2>Summary</H2>" >>$strfile
741
count=`ls -1 /tmp/cups-$user/spool | wc -l`
742
count=`expr $count - 1`
743
if test $count != 0; then
744
echo "FAIL: $count job control files were not purged."
745
echo "<P>FAIL: $count job control files were not purged.</P>" >>$strfile
746
fail=`expr $fail + 1`
748
echo "PASS: All job control files purged."
749
echo "<P>PASS: All job control files purged.</P>" >>$strfile
752
# Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
753
count=`$GREP '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
754
expected=`expr $pjobs \* 2 + 34`
755
expected2=`expr $expected + 2`
756
if test $count -lt $expected -a $count -gt $expected2; then
757
echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
758
echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
759
fail=`expr $fail + 1`
761
echo "PASS: Printer 'Test1' correctly produced $count page(s)."
762
echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
765
# Paged printed on Test2
766
count=`$GREP '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
767
expected=`expr $pjobs \* 2 + 3`
768
if test $count != $expected; then
769
echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
770
echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
771
fail=`expr $fail + 1`
773
echo "PASS: Printer 'Test2' correctly produced $count page(s)."
774
echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
777
# Paged printed on Test3
778
count=`$GREP '^Test3 ' /tmp/cups-$user/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
780
if test $count != $expected; then
781
echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
782
echo "<P>FAIL: Printer 'Test3' produced $count page(s), expected $expected.</P>" >>$strfile
783
fail=`expr $fail + 1`
785
echo "PASS: Printer 'Test3' correctly produced $count page(s)."
786
echo "<P>PASS: Printer 'Test3' correctly produced $count page(s).</P>" >>$strfile
790
count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
791
expected=`expr 37 + 18 + 28 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
792
if test $count != $expected; then
793
echo "FAIL: $count requests logged, expected $expected."
794
echo "<P>FAIL: $count requests logged, expected $expected.</P>" >>$strfile
795
fail=`expr $fail + 1`
797
echo "PASS: $count requests logged."
798
echo "<P>PASS: $count requests logged.</P>" >>$strfile
801
# Did CUPS-Get-Default get logged?
802
if $GREP -q CUPS-Get-Default /tmp/cups-$user/log/access_log; then
803
echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
804
echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
805
echo "<PRE>" >>$strfile
806
$GREP CUPS-Get-Default /tmp/cups-$user/log/access_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
807
echo "</PRE>" >>$strfile
808
fail=`expr $fail + 1`
810
echo "PASS: CUPS-Get-Default not logged."
811
echo "<P>PASS: CUPS-Get-Default not logged.</P>" >>$strfile
814
# Emergency log messages
815
count=`$GREP '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
816
if test $count != 0; then
817
echo "FAIL: $count emergency messages, expected 0."
818
$GREP '^X ' /tmp/cups-$user/log/error_log
819
echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
820
echo "<PRE>" >>$strfile
821
$GREP '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
822
echo "</PRE>" >>$strfile
823
fail=`expr $fail + 1`
825
echo "PASS: $count emergency messages."
826
echo "<P>PASS: $count emergency messages.</P>" >>$strfile
830
count=`$GREP '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
831
if test $count != 0; then
832
echo "FAIL: $count alert messages, expected 0."
833
$GREP '^A ' /tmp/cups-$user/log/error_log
834
echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
835
echo "<PRE>" >>$strfile
836
$GREP '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
837
echo "</PRE>" >>$strfile
838
fail=`expr $fail + 1`
840
echo "PASS: $count alert messages."
841
echo "<P>PASS: $count alert messages.</P>" >>$strfile
844
# Critical log messages
845
count=`$GREP '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
846
if test $count != 0; then
847
echo "FAIL: $count critical messages, expected 0."
848
$GREP '^C ' /tmp/cups-$user/log/error_log
849
echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
850
echo "<PRE>" >>$strfile
851
$GREP '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
852
echo "</PRE>" >>$strfile
853
fail=`expr $fail + 1`
855
echo "PASS: $count critical messages."
856
echo "<P>PASS: $count critical messages.</P>" >>$strfile
860
count=`$GREP '^E ' /tmp/cups-$user/log/error_log | grep -v '(usb) crashed on signal 11' | grep -v '(dnssd) stopped with status 1' | wc -l | awk '{print $1}'`
861
if test $count != 33; then
862
echo "FAIL: $count error messages, expected 33."
863
$GREP '^E ' /tmp/cups-$user/log/error_log
864
echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
865
echo "<PRE>" >>$strfile
866
$GREP '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
867
echo "</PRE>" >>$strfile
868
fail=`expr $fail + 1`
870
echo "PASS: $count error messages."
871
echo "<P>PASS: $count error messages.</P>" >>$strfile
874
# Warning log messages
875
count=`$GREP '^W ' /tmp/cups-$user/log/error_log | grep -v 'Unable to initialize USB access via libusb, libusb error' | grep -v 'org.freedesktop.ColorManager' | grep -v -E 'Avahi client failed: -(1|26)' | wc -l | awk '{print $1}'`
876
if test $count != 9; then
877
echo "FAIL: $count warning messages, expected 9."
878
$GREP '^W ' /tmp/cups-$user/log/error_log
879
echo "<P>FAIL: $count warning messages, expected 9.</P>" >>$strfile
880
echo "<PRE>" >>$strfile
881
$GREP '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
882
echo "</PRE>" >>$strfile
883
fail=`expr $fail + 1`
885
echo "PASS: $count warning messages."
886
echo "<P>PASS: $count warning messages.</P>" >>$strfile
889
# Notice log messages
890
count=`$GREP '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
891
if test $count != 0; then
892
echo "FAIL: $count notice messages, expected 0."
893
$GREP '^N ' /tmp/cups-$user/log/error_log
894
echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
895
echo "<PRE>" >>$strfile
896
$GREP '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
897
echo "</PRE>" >>$strfile
898
fail=`expr $fail + 1`
900
echo "PASS: $count notice messages."
901
echo "<P>PASS: $count notice messages.</P>" >>$strfile
905
count=`$GREP '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
906
if test $count = 0; then
907
echo "FAIL: $count info messages, expected more than 0."
908
echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
909
fail=`expr $fail + 1`
911
echo "PASS: $count info messages."
912
echo "<P>PASS: $count info messages.</P>" >>$strfile
916
count=`$GREP '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
917
if test $count = 0; then
918
echo "FAIL: $count debug messages, expected more than 0."
919
echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
920
fail=`expr $fail + 1`
922
echo "PASS: $count debug messages."
923
echo "<P>PASS: $count debug messages.</P>" >>$strfile
926
# Debug2 log messages
927
count=`$GREP '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
928
if test $count = 0; then
929
echo "FAIL: $count debug2 messages, expected more than 0."
930
echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
931
fail=`expr $fail + 1`
933
echo "PASS: $count debug2 messages."
934
echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
938
echo "<H2>access_log</H2>" >>$strfile
939
echo "<PRE>" >>$strfile
940
sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp/cups-$user/log/access_log >>$strfile
941
echo "</PRE>" >>$strfile
943
echo "<H2>error_log</H2>" >>$strfile
944
echo "<PRE>" >>$strfile
945
$GREP -v '^d' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
946
echo "</PRE>" >>$strfile
948
echo "<H2>page_log</H2>" >>$strfile
949
echo "<PRE>" >>$strfile
950
sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp/cups-$user/log/page_log >>$strfile
951
echo "</PRE>" >>$strfile
954
# Format the reports and tell the user where to find them...
957
cat str-trailer.html >>$strfile
961
if test $fail != 0; then
962
echo "$fail tests failed."
963
cp /tmp/cups-$user/log/error_log error_log-$date-$user
966
echo "All tests were successful."
969
echo "Log files can be found in /tmp/cups-$user/log."
970
echo "A HTML report was created in $strfile."
973
if test $fail != 0; then
974
echo "Copies of the error_log and `basename $strfile` files are in"
982
# End of "$Id: run-stp-tests.sh 9034 2010-03-09 07:03:06Z mike $"