diff options
| author | Stephen Warren <[email protected]> | 2016-01-22 12:30:07 -0700 |
|---|---|---|
| committer | Simon Glass <[email protected]> | 2016-01-28 21:01:22 -0700 |
| commit | d314e247e1aede35cdfe448ad9262edc0d90a9ba (patch) | |
| tree | de081e8583beeca04b7ae5c747c633d7829666d4 /test | |
| parent | b75fdc11ebcd3607f840a00363679a3a5cbc8da4 (diff) | |
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 <[email protected]>
Reviewed-by: Lukasz Majewski <[email protected]>
Acked-by: Simon Glass <[email protected]>
Diffstat (limited to 'test')
| -rw-r--r-- | test/py/u_boot_spawn.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/test/py/u_boot_spawn.py b/test/py/u_boot_spawn.py index 1baee63df25..df4c67597ca 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) |
