]> git.puffer.fish Git - matthieu/frr.git/commitdiff
topotest: fix Lou's framework command wait
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 18 Jul 2019 13:56:50 +0000 (10:56 -0300)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Tue, 23 Jul 2019 13:26:15 +0000 (10:26 -0300)
Fix two main issues:

  * Don't use float to figure out if we spent the time user asked;
  * Don't depend on system clock to find we reached the end of time;

The fix is basically pre caculating the amount of wait cycles we are
going to peform and use a counter.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
tests/topotests/lib/lutil.py

index d3a275d118756a65c88303a690a485aefa54022e..bd26dec67e7ae3496f5bdc756e2071c82f4f0728 100755 (executable)
@@ -22,6 +22,7 @@ import sys
 import time
 import datetime
 import json
+import math
 from topolog import logger
 from mininet.net import Mininet
 
@@ -248,14 +249,18 @@ Total %-4d                                                           %-4d %d\n\
         found = False
         n = 0
         startt = time.time()
-        delta = time.time() - startt
-        while delta < wait and found is False:
+
+        # Calculate the amount of `sleep`s we are going to peform.
+        wait_count = int(math.ceil(wait / 0.5))
+
+        while wait_count > 0 and found is False:
             found = self.command(target, command, regexp, op, result, returnJson)
+            wait_count -= 1
             n+=1
-            delta = time.time() - startt
-            self.log('\tFound: %s n: %s delta: %s and wait: %s' % (found, n, delta, wait))
-            if delta < wait and found is False:
+            if wait_count > 0 and found is False:
                 time.sleep (0.5)
+
+        delta = time.time() - startt
         self.log('Done after %d loops, time=%s, Found=%s' % (n, delta, found))
         found = self.command(target, command, regexp, 'pass', '%s +%4.2f secs' % (result, delta), returnJson)
         return found