#! /usr/bin/perl -w
-# $Cambridge: exim/test/runtest,v 1.17 2006/11/06 11:27:54 ph10 Exp $
+# $Cambridge: exim/test/runtest,v 1.25 2007/03/14 12:15:56 ph10 Exp $
###############################################################################
# This is the controlling script for the "new" test suite for Exim. It should #
# Start by initializing some global variables
-$testversion = "4.64 (05-Sep-06)";
+$testversion = "4.67 (15-Jan-07)";
$cf = "bin/cf";
$cr = "\r";
# Date/time in exim -bV output
s/\d\d-[A-Z][a-z]{2}-\d{4}\s\d\d:\d\d:\d\d/07-Mar-2000 12:21:52/g;
+ # Time on queue tolerance
+ s/QT=1s/QT=0s/;
+
+ # Eximstats heading
+ s/Exim\sstatistics\sfrom\s\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d\sto\s
+ \d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d/Exim statistics from <time> to <time>/x;
+
# ======== Caller's login, uid, gid, home ========
# ======== Exim's login ========
- # For bounce messages, this will appear on the U= lines in logs and also
- # after Received: and in addresses. In one pipe test it appears after
- # "Running as:". It also appears in addresses, and in the names of lock
+ # For messages received by the daemon, this is in the -H file, which some
+ # tests inspect. For bounce messages, this will appear on the U= lines in
+ # logs and also after Received: and in addresses. In one pipe test it appears
+ # after "Running as:". It also appears in addresses, and in the names of lock
# files.
s/U=$parm_eximuser/U=EXIMUSER/;
s/\buid=$parm_exim_uid\b/uid=EXIM_UID/g;
s/\bgid=$parm_exim_gid\b/gid=EXIM_GID/g;
+ s/^$parm_eximuser $parm_exim_uid $parm_exim_gid/EXIMUSER EXIM_UID EXIM_GID/;
+
# ======== General uids, gids, and pids ========
# Note: this must come after munges for caller's and exim's uid/gid
# Pid in temp file in appendfile transport
s"test-mail/temp\.\d+\."test-mail/temp.pppp.";
+ # Optional pid in log lines
+ s/^(\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d)(\s[+-]\d\d\d\d|)(\s\[\d+\])/
+ "$1$2 [" . new_value($3, "%s", \$next_pid) . "]"/gxe;
+
# Detect a daemon stderr line with a pid and save the pid for subsequent
# removal from following lines.
$spid = $1 if /^(\s*\d+) (?:listening|LOG: MAIN|(?:daemon_smtp_port|local_interfaces) overridden by)/;
s/\(port=(\d+)/"(port=" . new_value($1, "%s", \$next_port)/e;
# This handles "connection from" and the like, when the port is given
- if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/\*>/ &&
- !/Connection refused/)
+ if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/->/
+ && !/\*>/ && !/Connection refused/)
{
s/\[([a-z\d:]+|\d+(?:\.\d+){3})\]:(\d+)/"[".$1."]:".new_value($2,"%s",\$next_port)/ie;
}
s/\+0100,\d+;/+0100,ddd;/;
s/\(\d+ bytes written\)/(ddd bytes written)/;
s/added '\d+ 1'/added 'ddd 1'/;
+ s/Received\s+\d+/Received nnn/;
+ s/Delivered\s+\d+/Delivered nnn/;
# ======== Values in spool space failure message ========
# This gives the process time to get started; otherwise the next
# process may not find it there when it expects it.
- select(undef, undef, undef, 0.01);
+ select(undef, undef, undef, 0.1);
return 3;
}
}
+# The "exigrep" command runs exigrep on the current mainlog
+
+if (/^exigrep\s+(.*)/)
+ {
+ run_system("(./eximdir/exigrep " .
+ "$1 $parm_cwd/spool/log/mainlog;" .
+ "echo exigrep exit code = \$?)" .
+ ">>test-stdout");
+ return 1;
+ }
+
+
+# The "eximstats" command runs eximstats on the current mainlog
+
+if (/^eximstats\s+(.*)/)
+ {
+ run_system("(./eximdir/eximstats " .
+ "$1 $parm_cwd/spool/log/mainlog;" .
+ "echo eximstats exit code = \$?)" .
+ ">>test-stdout");
+ return 1;
+ }
+
+
# The "gnutls" command makes a copy of saved GnuTLS parameter data in the
# spool directory, to save Exim from re-creating it each time.
# This gives the server time to get started; otherwise the next
# process may not find it there when it expects it.
- select(undef, undef, undef, 0.01);
+ select(undef, undef, undef, 0.5);
return 3;
}
tests_exit(-1, "Failed to make a copy of exinext: $!");
}
+if (system("cp $parm_exim_dir/exigrep eximdir") != 0)
+ {
+ tests_exit(-1, "Failed to make a copy of exigrep: $!");
+ }
+
+if (system("cp $parm_exim_dir/eximstats eximdir") != 0)
+ {
+ tests_exit(-1, "Failed to make a copy of eximstats: $!");
+ }
+
##################################################
# Check that the Exim user can access stuff #
undef %cache;
$next_msgid = "aX";
+ $next_pid = 1234;
$next_port = 1111;
$message_skip = 0;
$msglog_skip = 0;