topotest: fix Lou's framework command wait

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>
This commit is contained in:
Rafael Zalamena 2019-07-18 10:56:50 -03:00
parent dfd15ebfa6
commit 2a76b0a8e2

View File

@ -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