summaryrefslogtreecommitdiffstats
path: root/tester/rt/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'tester/rt/config.py')
-rw-r--r--tester/rt/config.py46
1 files changed, 33 insertions, 13 deletions
diff --git a/tester/rt/config.py b/tester/rt/config.py
index a7b9ee3..2361bc9 100644
--- a/tester/rt/config.py
+++ b/tester/rt/config.py
@@ -37,6 +37,7 @@ from __future__ import print_function
import datetime
import os
import re
+import shlex
import threading
from rtemstoolkit import configuration
@@ -258,6 +259,7 @@ class file(config.file):
script = self.expand('%%{%s}' % data[2])
if script:
script = [l.strip() for l in script.splitlines()]
+ self.kill_on_end = True
if not self.in_error:
if self.console:
self.console.open()
@@ -282,7 +284,12 @@ class file(config.file):
raise error.general('invalid %tftp port')
self.kill_on_end = True
if not self.opts.dry_run():
+ if self.defined('session_timeout'):
+ session_timeout = int(self.expand('%{session_timeout}'))
+ else:
+ session_timeout = 120
self.process = tester.rt.tftp.tftp(bsp_arch, bsp,
+ session_timeout = session_timeout,
trace = self.exe_trace('tftp'))
if not self.in_error:
if self.console:
@@ -325,7 +332,7 @@ class file(config.file):
if len(_data):
ds = [_data[0]]
if len(_data) > 1:
- ds += _data[1].split()
+ ds += shlex.split(_data[1])
ds = self.expand(ds)
if _directive == '%console':
@@ -413,28 +420,41 @@ class file(config.file):
reset_target = True
else:
reset_target = False
- if self.target_start_regx is not None:
- if self.target_start_regx.match(text):
- if self.test_started:
- self._capture_console('target start detected')
+ if ('*** TIMEOUT TIMEOUT' in text or \
+ '*** TEST TOO LONG' in text) and \
+ self.defined('target_reset_on_timeout'):
+ reset_target = True
+ restart = \
+ (self.target_start_regx is not None and self.target_start_regx.match(text))
+ if restart:
+ if self.test_started:
+ self._capture_console('target start detected')
+ ok_to_kill = True
+ else:
+ self.restarts += 1
+ if self.restarts > self.max_restarts:
+ self._capture_console('target restart maximum count reached')
ok_to_kill = True
else:
- self.restarts += 1
- if self.restarts > self.max_restarts:
- self._capture_console('target restart maximum count reached')
- ok_to_kill = True
- else:
- self.process.target_restart(self.test_started)
+ self.process.target_restart(self.test_started)
if not reset_target and self.target_reset_regx is not None:
if self.target_reset_regx.match(text):
self._capture_console('target reset condition detected')
self._target_command('reset')
self.process.target_reset(self.test_started)
if self.kill_on_end:
- if not ok_to_kill and '*** END OF TEST ' in text:
+ if not ok_to_kill and \
+ ('*** END OF TEST ' in text or \
+ '*** FATAL ***' in text or \
+ '*** TIMEOUT TIMEOUT' in text or \
+ '*** TEST TOO LONG' in text):
self._capture_console('test end: %s' % (self.test_label))
if self.test_label is not None:
- ok_to_kill = '*** END OF TEST %s ***' % (self.test_label) in text
+ ok_to_kill = \
+ '*** END OF TEST %s ***' % (self.test_label) in text or \
+ '*** FATAL ***' in text or \
+ '*** TIMEOUT TIMEOUT' in text or \
+ '*** TEST TOO LONG' in text
self.process.target_end()
text = [(self.console_prefix, l) for l in text.replace(chr(13), '').splitlines()]
if self.output is not None: