summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-10-07 18:57:24 +1100
committerChris Johns <chrisj@rtems.org>2017-10-07 18:57:24 +1100
commit9580804ae56c9d428a4dc922a71ef33728b0966b (patch)
tree0390db872c5542d1b8c7ada64efa72318f5360af
parenttester: Add Zedboard. (diff)
downloadrtems-tools-9580804ae56c9d428a4dc922a71ef33728b0966b.tar.bz2
Add a target start and target reset to manage boards that do not boot cleanly.
Rename the reset regex as start regex to detect a board has started. Add a reset regex to detect if a board has failed to boot cleanly and needs to be reset. The Microzed I have can fail to boot. The PHY does not initalise. I do not know if it is the board, the design or u-boot.
-rw-r--r--tester/rt/config.py51
-rw-r--r--tester/rtems/testing/bsps/xilinx_zynq_zedboard.mc3
2 files changed, 34 insertions, 20 deletions
diff --git a/tester/rt/config.py b/tester/rt/config.py
index 455b175..5aadc61 100644
--- a/tester/rt/config.py
+++ b/tester/rt/config.py
@@ -75,6 +75,7 @@ class file(config.file):
self.kill_on_end = False
self.test_label = None
self.target_reset_regx = None
+ self.target_start_regx = None
def __del__(self):
if self.console:
@@ -102,6 +103,17 @@ class file(config.file):
except:
pass
+ def _target_regex(self, label):
+ regex = None
+ if self.defined(label):
+ r = self.expand('%%{%s}' % (label))
+ try:
+ regex = re.compile(r, re.MULTILINE)
+ except:
+ msg = 'invalid target regex: %s: %s' % (label, r)
+ raise error.general(msg)
+ return regex
+
def _target_reset(self):
if self.defined('target_reset_command'):
reset_cmd = self.expand('%{target_reset_command}').strip()
@@ -259,37 +271,38 @@ class file(config.file):
print(' '.join(l))
def run(self):
- if self.defined('target_reset_regex'):
- try:
- regex = self.expand('%{target_reset_regex}')
- self.target_reset_regx = re.compile(regex, re.MULTILINE)
- except:
- msg = 'invalid target reset regex: %s' % (regex)
- raise error.general(msg)
+ self.target_start_regx = self._target_regex('target_start_regex')
+ self.target_reset_regx = self._target_regex('target_reset_regex')
self.load(self.name)
def capture(self, text):
if not self.test_started:
- self.test_started = '*** BEGIN OF TEST ' in text
+ s = text.find('*** BEGIN OF TEST ')
+ if s >= 0:
+ self.test_started = True
+ e = text[s + 3:].find('***')
+ if e >= 0:
+ self.test_label = text[s + len('*** BEGIN OF TEST '):s + e + 3 - 1]
+ self.capture_console('test start: %s' % (self.test_label))
ok_to_kill = '*** TEST STATE: USER_INPUT' in text or \
'*** TEST STATE: BENCHMARK' in text
if ok_to_kill:
reset_target = True
else:
reset_target = False
- if self.test_started and self.target_reset_regx is not None:
- if self.target_reset_regx.match(text):
- self.capture_console('target reset detected')
+ if self.test_started and self.target_start_regx is not None:
+ if self.target_start_regx.match(text):
+ self.capture_console('target start detected')
ok_to_kill = True
+ 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')
+ reset_target = True
if self.kill_on_end:
- if self.test_label is None:
- s = text.find('*** BEGIN OF TEST ')
- if s >= 0:
- e = text[s + 3:].find('***')
- if e >= 0:
- self.test_label = text[s + len('*** BEGIN OF TEST '):s + e + 3 - 1]
- if not ok_to_kill and self.test_label is not None:
- ok_to_kill = '*** END OF TEST %s ***' % (self.test_label) in text
+ if not ok_to_kill and '*** END OF TEST ' 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
text = [(']', l) for l in text.replace(chr(13), '').splitlines()]
self._lock()
if self.output is not None:
diff --git a/tester/rtems/testing/bsps/xilinx_zynq_zedboard.mc b/tester/rtems/testing/bsps/xilinx_zynq_zedboard.mc
index 5e457a4..2718640 100644
--- a/tester/rtems/testing/bsps/xilinx_zynq_zedboard.mc
+++ b/tester/rtems/testing/bsps/xilinx_zynq_zedboard.mc
@@ -54,5 +54,6 @@ xilinx_zynq_zedboard: none, none, '%{_rtscripts}/tftp.cfg'
xilinx_zynq_zedboard_arch: none, none, 'arm'
test_restarts: none, none, '3'
target_reset_command: none, none, 'wemo-reset CSEng1 3'
-target_reset_regex: none, none, '^U-Boot SPL .*'
+target_reset_regex: none, none, '^No ethernet found.*|BOOTP broadcast 9.*'
+target_start_regex: none, none, '^U-Boot SPL .*'
bsp_tty_dev: none, none, 'tuke:30005'