Testsuite: avoid time-quantization issue
authorJeremy Harris <jgh146exb@wizmail.org>
Fri, 9 Nov 2018 17:12:09 +0000 (17:12 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 9 Nov 2018 17:12:09 +0000 (17:12 +0000)
test/confs/0548
test/runtest
test/scripts/0000-Basic/0548
test/stdout/0548

index 3e1f0eb..a450f45 100644 (file)
@@ -50,7 +50,7 @@ smtp:
 
 begin retry
 
-thishost.test.ex  *  F,20s,2s
-*                 *  F,1s,1s; F,1s,5s
+thishost.test.ex  *  F,40s,4s
+*                 *  F,2s,2s; F,2s,10s
 
 # End
index d4cf9f9..df7de0d 100755 (executable)
@@ -460,7 +460,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     {
     my($date1,$date2,$date3,$expired) = ($1,$2,$3,$4);
     $expired = '' if !defined $expired;
-    my($increment) = date_seconds($date3) - date_seconds($date2);
+
+    # Round the time-difference up to nearest even value
+    my($increment) = ((date_seconds($date3) - date_seconds($date2) + 1) >> 1) << 1;
 
     # We used to use globally unique replacement values, but timing
     # differences make this impossible. Just show the increment on the
index 29e4784..a0a7fa0 100644 (file)
@@ -2,6 +2,12 @@
 # In this test, the primary host (normal IP address) defers the recipient, and
 # the secondary host (loopback address) defers the connection.
 #
+#XXX the test is relying on one-second accuracy, which is too tight.
+# The measured time is only one-second precision, so certain to sometime
+# straddle a boundary, even ignoring scheduling and I/O-wait issues.
+# Consider a factor of (?) two, in the retry section of the conf/ file
+# and +1 /2 after the diff operation (runtest:463).
+#
 need_ipv4
 #
 exim -DSERVER=server -bd -oX PORT_D
@@ -11,13 +17,13 @@ Test message
 ****
 # defers from both
 dump retry
-millisleep 2100
+millisleep 4200
 # At this point, the primary host retry rule ehould have timed out
 # and the secondary is ready for a retry
 exim -q
 ****
 dump retry
-millisleep 2100
+millisleep 4200
 # This should be similar
 exim -q
 ****
@@ -29,7 +35,7 @@ exim -odi usery@test.ex
 Test message 2.
 ****
 dump retry
-millisleep 2000
+millisleep 4000
 exim -q
 ****
 killdaemon
index 522bec9..a3cff84 100644 (file)
@@ -1,22 +1,22 @@
 +++++++++++++++++++++++++++
   R:userx@test.ex:<CALLER@test.ex> -44 13121 H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 451 Recipient deferred
-first failed = time last try = time2 next try = time2 + 1
-  T:thishost.test.ex:127.0.0.1:1225 0 65 H=thishost.test.ex [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 host deferred
 first failed = time last try = time2 next try = time2 + 2
+  T:thishost.test.ex:127.0.0.1:1225 0 65 H=thishost.test.ex [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 host deferred
+first failed = time last try = time2 next try = time2 + 4
 +++++++++++++++++++++++++++
   R:userx@test.ex:<CALLER@test.ex> -44 13121 H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 451 Recipient deferred
-first failed = time last try = time2 next try = time2 + 5 *
+first failed = time last try = time2 next try = time2 + 10 *
   T:thishost.test.ex:127.0.0.1:1225 0 65 H=thishost.test.ex [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 host deferred
-first failed = time last try = time2 next try = time2 + 2
+first failed = time last try = time2 next try = time2 + 4
 +++++++++++++++++++++++++++
   R:userx@test.ex:<CALLER@test.ex> -44 13121 H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 451 Recipient deferred
-first failed = time last try = time2 next try = time2 + 5 *
+first failed = time last try = time2 next try = time2 + 10 *
   T:thishost.test.ex:127.0.0.1:1225 0 65 H=thishost.test.ex [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 host deferred
-first failed = time last try = time2 next try = time2 + 2
+first failed = time last try = time2 next try = time2 + 4
 +++++++++++++++++++++++++++
   R:userx@test.ex:<CALLER@test.ex> -44 13121 H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 451 Recipient deferred
-first failed = time last try = time2 next try = time2 + 5 *
+first failed = time last try = time2 next try = time2 + 10 *
   R:usery@test.ex:<CALLER@test.ex> -44 13121 H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]: SMTP error from remote mail server after RCPT TO:<usery@test.ex>: 451 Recipient deferred
-first failed = time last try = time2 next try = time2 + 1
-  T:thishost.test.ex:127.0.0.1:1225 0 65 H=thishost.test.ex [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 host deferred
 first failed = time last try = time2 next try = time2 + 2
+  T:thishost.test.ex:127.0.0.1:1225 0 65 H=thishost.test.ex [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 host deferred
+first failed = time last try = time2 next try = time2 + 4