summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2016-01-22 19:30:07 (GMT)
committerSimon Glass <sjg@chromium.org>2016-01-29 04:01:22 (GMT)
commitd314e247e1aede35cdfe448ad9262edc0d90a9ba (patch)
treede081e8583beeca04b7ae5c747c633d7829666d4
parentb75fdc11ebcd3607f840a00363679a3a5cbc8da4 (diff)
downloadu-boot-d314e247e1aede35cdfe448ad9262edc0d90a9ba.tar.xz
test/py: fix timeout to be absolute
Currently, Spawn.expect() imposes its timeout solely upon receipt of new data, not on its overall operation. In theory, this could cause the timeout not to fire if U-Boot continually generated output that did not match the expected patterns. Fix the code to additionally impose a timeout on overall operation, which is the intended mode of operation. Signed-off-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Lukasz Majewski <l.majewski@samsung.com> Acked-by: Simon Glass <sjg@chromium.org>
-rw-r--r--test/py/u_boot_spawn.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/test/py/u_boot_spawn.py b/test/py/u_boot_spawn.py
index 1baee63..df4c675 100644
--- a/test/py/u_boot_spawn.py
+++ b/test/py/u_boot_spawn.py
@@ -122,6 +122,7 @@ class Spawn(object):
if type(patterns[pi]) == type(''):
patterns[pi] = re.compile(patterns[pi])
+ tstart_s = time.time()
try:
while True:
earliest_m = None
@@ -142,7 +143,11 @@ class Spawn(object):
self.after = self.buf[pos:posafter]
self.buf = self.buf[posafter:]
return earliest_pi
- events = self.poll.poll(self.timeout)
+ tnow_s = time.time()
+ tdelta_ms = (tnow_s - tstart_s) * 1000
+ if tdelta_ms > self.timeout:
+ raise Timeout()
+ events = self.poll.poll(self.timeout - tdelta_ms)
if not events:
raise Timeout()
c = os.read(self.fd, 1024)