my($date1,$date2,$date3,$expired) = ($1,$2,$3,$4);
$expired = '' if !defined $expired;
- # Round the time-difference up to nearest even value
- my($increment) = ((date_seconds($date3) - date_seconds($date2) + 1) >> 1) << 1;
+ # Round the time-difference down to nearest even value
+ my($increment) = ((date_seconds($date3) - date_seconds($date2)) >> 1) << 1;
# We used to use globally unique replacement values, but timing
# differences make this impossible. Just show the increment on the
s/\b(gethostbyname2?|\bgetipnodebyname)(\(af=inet\))?/get[host|ipnode]byname[2]/;
+ # Extra lookups done when ipv6 is supported
+ next if /^host_fake_gethostbyname\(af=inet6\) returned 1 \(HOST_NOT_FOUND\)$/;
+
# we don't care what TZ enviroment the testhost was running
next if /^Reset TZ to/;
# this is timing-dependent
next if /^OpenSSL: creating STEK$/;
+ # TLS preload
# only OpenSSL speaks of these
next if /^TLS: preloading DH params for server/;
next if /^Diffie-Hellman initialized from default/;
next if /^TLS: preloading ECDH curve for server/;
- next if /^ECDH OpenSSL [\d.+]+ temp key parameter settings: default selection$/;
- next if /^watch dir '\/etc\/pki\/tls'$/;
+ next if /^ECDH OpenSSL [< ]?[\d.+]+ temp key parameter settings:/;
+ next if /^ECDH: .'*prime256v1'/;
+ next if /^watch dir/;
+ # TLS preload
# only GnuTLS speaks of these
next if /^GnuTLS global init required$/;
next if /^TLS: basic cred init, server/;
s/^GnuTLS using default session cipher\/priority "NORMAL"$/TLS: not preloading cipher list for server/;
next if /^GnuTLS<2>: added \d+ protocols, \d+ ciphersuites, \d+ sig algos and \d+ groups into priority list$/;
+ # TLS preload
# there happen in different orders for OpenSSL/GnuTLS/noTLS
next if /^TLS: not preloading (CA bundle|cipher list) for server$/;
next if /^TLS: not preloading server certs$/;
s/^(\s*\d+|ppppp) \@?(.*exim_daemon_notify)$/ppppp $2/;
next if /unlinking notifier socket/;
+ # daemon notifier socket
+ # Timing variance over runs. Collapse repeated memssages.
+ if (/notify triggered queue run/)
+ {
+ my $line = $_;
+ while (/notify triggered queue run/) { $_ = <IN>; }
+ $_ = $line . $_;
+ }
+
# DISABLE_OCSP
next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
next if /^date:\w+,\{SP\}/;
next if /^DKIM \[[^[]+\] (Header hash|b) computed:/;
- # Timing variable over runs. Collapse repeated memssages.
- if (/notify triggered queue run/)
- {
- my $line = $_;
- while (/notify triggered queue run/) { $_ = <IN>; }
- $_ = $line . $_;
- }
-
# Not all platforms support TCP Fast Open, and the compile omits the check
if (s/\S+ in hosts_try_fastopen\? (no \(option unset\)|no \(end of list\)|yes \(matched "\*"\))\n$//)
{
# Run the command, with stdin connected to a pipe, and write the stdin data
-# to it, with appropriate substitutions. If a line ends with \NONL\, chop off
-# the terminating newline (and the \NONL\). If the command contains
+# to it, with appropriate substitutions. If a starts with '>>> ', process it
+# via Perl's string eval().
+# If the command contains
# -DSERVER=server add "-server" to the command, where it will adjoin the name
# for the stderr file. See comment above about the use of -DSERVER.
open CMD, "|${cmd}${stderrsuffix}" || tests_exit(1, "Failed to run $cmd");
CMD->autoflush(1);
-while (<SCRIPT>)
+LINE: while (<SCRIPT>)
{
$lineno++;
last if /^\*{4}\s*$/;
do_substitute($testno);
- if (/^(.*)\\NONL\\\s*$/) { print CMD $1; } else { print CMD; }
+ if (my ($cmd, $line) = /^(:\S+?:)(.*)/) {
+ $_ = $line;
+ {
+ $cmd eq ':eval:' and do {
+ $_ = eval "\"$_\"";
+ last;
+ };
+ $cmd eq ':noeol:' and do {
+ s/[\r\n]*$//;
+ last;
+ };
+ $cmd eq ':sleep:' and do {
+ sleep $_;
+ next LINE;
+ };
+ }
+ }
+ print CMD;
}
# For timeout tests, wait before closing the pipe; we expect a