mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-18 02:44:37 +00:00
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>
This commit is contained in:
parent
b75fdc11eb
commit
d314e247e1
1 changed files with 6 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue