[Tools 1/3] testbot/TestAgent: Add a minimum interval between connection attempts.

Francois Gouget <[email protected]>
Newsgroups gmane.comp.emulators.wine.patches
Message-ID <E1e6zYV-0008SY-58@amboise>
This can be used to ensure the remote host has enough time to boot 
before TestAgent gives up, or to paper over very short network outages.

Signed-off-by: Francois Gouget <[email protected]>
---
 testbot/lib/WineTestBot/TestAgent.pm | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/testbot/lib/WineTestBot/TestAgent.pm b/testbot/lib/WineTestBot/TestAgent.pm
index e4d655c0..255c1a19 100644
--- a/testbot/lib/WineTestBot/TestAgent.pm
+++ b/testbot/lib/WineTestBot/TestAgent.pm
@@ -106,6 +106,7 @@ sub new($$$;$)
     connection => "$Hostname:$Port",
     ctimeout   => 20,
     cattempts  => 3,
+    cinterval  => 0,
     timeout    => 0,
     fd         => undef,
     deadline   => undef,
@@ -147,9 +148,9 @@ sub Disconnect($)
   $self->{agentversion} = undef;
 }
 
-sub SetConnectTimeout($$;$)
+sub SetConnectTimeout($$;$$)
 {
-  my ($self, $Timeout, $Attempts) = @_;
+  my ($self, $Timeout, $Attempts, $Interval) = @_;
   my @Ret;
   if (defined $Timeout)
   {
@@ -161,6 +162,11 @@ sub SetConnectTimeout($$;$)
     push @Ret, $self->{cattempts};
     $self->{cattempts} = $Attempts;
   }
+  if (defined $Interval)
+  {
+    push @Ret, $self->{cinterval};
+    $self->{cinterval} = $Interval;
+  }
   return @Ret;
 }
 
@@ -891,7 +897,8 @@ sub _Connect($)
   $self->{rpc} = ($self->{rpc} ? "$self->{rpc}/" : "") ."connect";
 
   my $Step;
-  foreach my $Dummy (1..$self->{cattempts})
+  my $Start = time();
+  foreach my $Attempt (1..$self->{cattempts})
   {
     my $Step = "initializing";
     eval
@@ -1026,7 +1033,8 @@ sub _Connect($)
     }
     # Ideally we should probably check the error and not retry if it is likely
     # permanent, like a hostname that does not resolve.
-    sleep(1);
+    my $Remaining = $Attempt * $self->{cinterval} - (time() - $Start);
+    sleep($Remaining) if ($Remaining > 0);
   }
   $self->{rpc} = $OldRPC;
   return undef;
-- 
2.14.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.