kill and wait for subprocess before raising TimeoutExpired

This commit is contained in:
Kyle Altendorf 2018-10-04 21:57:29 -04:00
parent d5e5433553
commit 33f0338eeb
1 changed files with 11 additions and 6 deletions

View File

@ -1066,18 +1066,23 @@ class Testdir(object):
) )
timeout = kwargs.get("timeout") timeout = kwargs.get("timeout")
def handle_timeout():
timeout_message = ( timeout_message = (
"{seconds} second timeout expired running:" "{seconds} second timeout expired running:"
" {command}".format(seconds=timeout, command=cmdargs) " {command}".format(seconds=timeout, command=cmdargs)
) )
popen.kill()
popen.wait()
raise self.TimeoutExpired(timeout_message)
if timeout is None: if timeout is None:
ret = popen.wait() ret = popen.wait()
elif six.PY3: elif six.PY3:
try: try:
ret = popen.wait(timeout) ret = popen.wait(timeout)
except subprocess.TimeoutExpired: except subprocess.TimeoutExpired:
raise self.TimeoutExpired(timeout_message) handle_timeout()
else: else:
end = time.time() + timeout end = time.time() + timeout
@ -1088,7 +1093,7 @@ class Testdir(object):
remaining = end - time.time() remaining = end - time.time()
if remaining <= 0: if remaining <= 0:
raise self.TimeoutExpired(timeout_message) handle_timeout()
time.sleep(remaining * 0.9) time.sleep(remaining * 0.9)
finally: finally: