summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tester/rt/config.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/tester/rt/config.py b/tester/rt/config.py
index d431093..ac9c8aa 100644
--- a/tester/rt/config.py
+++ b/tester/rt/config.py
@@ -63,6 +63,7 @@ class file(config.file):
self.output = None
self.report = report
self.name = name
+ self.timedout = False
def __del__(self):
if self.console:
@@ -76,6 +77,9 @@ class file(config.file):
self.lock.release()
def _timeout(self):
+ self._lock()
+ self.timedout = True
+ self._unlock()
self.capture('*** TIMEOUT TIMEOUT')
def _dir_console(self, data):
@@ -109,10 +113,12 @@ class file(config.file):
ec, proc = self.process.open(data,
timeout = (int(self.expand('%{timeout}')),
self._timeout))
+ self._lock()
if ec > 0:
- self._lock()
self._error('execute failed: %s: exit-code:%d' % (' '.join(data), ec))
- self._unlock()
+ elif self.timedout:
+ self.process.kill()
+ self._unlock()
if self.console:
self.console.close()