mirror of https://github.com/ARMmbed/mbed-os.git
Tests: Watchdog: Update the reset-to-sync delay
Change the config parameter used as a delay before sending the sync packet after the device reset in watchdog and reset_reason tests. Use 'forced_reset_timeout' instead of 'program_cycle_s'.pull/10657/head
parent
a37d03d640
commit
337b394048
|
|
@ -18,7 +18,7 @@ import time
|
||||||
from mbed_host_tests import BaseHostTest
|
from mbed_host_tests import BaseHostTest
|
||||||
from mbed_host_tests.host_tests_runner.host_test_default import DefaultTestSelector
|
from mbed_host_tests.host_tests_runner.host_test_default import DefaultTestSelector
|
||||||
|
|
||||||
DEFAULT_CYCLE_PERIOD = 4.0
|
DEFAULT_SYNC_DELAY = 4.0
|
||||||
|
|
||||||
MSG_VALUE_WATCHDOG_PRESENT = 'wdg_present'
|
MSG_VALUE_WATCHDOG_PRESENT = 'wdg_present'
|
||||||
MSG_VALUE_DUMMY = '0'
|
MSG_VALUE_DUMMY = '0'
|
||||||
|
|
@ -68,14 +68,14 @@ class ResetReasonTest(BaseHostTest):
|
||||||
super(ResetReasonTest, self).__init__()
|
super(ResetReasonTest, self).__init__()
|
||||||
self.device_has_watchdog = None
|
self.device_has_watchdog = None
|
||||||
self.raw_reset_reasons = set()
|
self.raw_reset_reasons = set()
|
||||||
self.program_cycle_s = DEFAULT_CYCLE_PERIOD
|
self.sync_delay = DEFAULT_SYNC_DELAY
|
||||||
self.test_steps_sequence = self.test_steps()
|
self.test_steps_sequence = self.test_steps()
|
||||||
# Advance the coroutine to it's first yield statement.
|
# Advance the coroutine to it's first yield statement.
|
||||||
self.test_steps_sequence.send(None)
|
self.test_steps_sequence.send(None)
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
cycle_s = self.get_config_item('program_cycle_s')
|
sync_delay = self.get_config_item('forced_reset_timeout')
|
||||||
self.program_cycle_s = cycle_s if cycle_s is not None else DEFAULT_CYCLE_PERIOD
|
self.sync_delay = sync_delay if sync_delay is not None else DEFAULT_SYNC_DELAY
|
||||||
self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready)
|
self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready)
|
||||||
self.register_callback(MSG_KEY_RESET_REASON_RAW, self.cb_reset_reason_raw)
|
self.register_callback(MSG_KEY_RESET_REASON_RAW, self.cb_reset_reason_raw)
|
||||||
self.register_callback(MSG_KEY_RESET_REASON, self.cb_reset_reason)
|
self.register_callback(MSG_KEY_RESET_REASON, self.cb_reset_reason)
|
||||||
|
|
@ -134,7 +134,7 @@ class ResetReasonTest(BaseHostTest):
|
||||||
# Request a NVIC_SystemReset() call.
|
# Request a NVIC_SystemReset() call.
|
||||||
self.send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_NVIC)
|
self.send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_NVIC)
|
||||||
__ignored_reset_ack = yield
|
__ignored_reset_ack = yield
|
||||||
time.sleep(self.program_cycle_s)
|
time.sleep(self.sync_delay)
|
||||||
self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY)
|
self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY)
|
||||||
reset_reason = yield
|
reset_reason = yield
|
||||||
raise_if_different(RESET_REASONS['SOFTWARE'], reset_reason, 'Wrong reset reason. ')
|
raise_if_different(RESET_REASONS['SOFTWARE'], reset_reason, 'Wrong reset reason. ')
|
||||||
|
|
@ -154,7 +154,7 @@ class ResetReasonTest(BaseHostTest):
|
||||||
else:
|
else:
|
||||||
self.send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_WATCHDOG)
|
self.send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DEVICE_RESET_WATCHDOG)
|
||||||
__ignored_reset_ack = yield
|
__ignored_reset_ack = yield
|
||||||
time.sleep(self.program_cycle_s)
|
time.sleep(self.sync_delay)
|
||||||
self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY)
|
self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY)
|
||||||
reset_reason = yield
|
reset_reason = yield
|
||||||
raise_if_different(RESET_REASONS['WATCHDOG'], reset_reason, 'Wrong reset reason. ')
|
raise_if_different(RESET_REASONS['WATCHDOG'], reset_reason, 'Wrong reset reason. ')
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
import time
|
import time
|
||||||
from mbed_host_tests import BaseHostTest
|
from mbed_host_tests import BaseHostTest
|
||||||
|
|
||||||
DEFAULT_CYCLE_PERIOD = 4.0
|
DEFAULT_SYNC_DELAY = 4.0
|
||||||
|
|
||||||
MSG_VALUE_DUMMY = '0'
|
MSG_VALUE_DUMMY = '0'
|
||||||
MSG_KEY_DEVICE_READY = 'ready'
|
MSG_KEY_DEVICE_READY = 'ready'
|
||||||
|
|
@ -47,11 +47,11 @@ class SyncOnReset(BaseHostTest):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(SyncOnReset, self).__init__()
|
super(SyncOnReset, self).__init__()
|
||||||
self.test_case_num = 0
|
self.test_case_num = 0
|
||||||
self.program_cycle_s = DEFAULT_CYCLE_PERIOD
|
self.sync_delay = DEFAULT_SYNC_DELAY
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
cycle_s = self.get_config_item('program_cycle_s')
|
sync_delay = self.get_config_item('forced_reset_timeout')
|
||||||
self.program_cycle_s = cycle_s if cycle_s is not None else DEFAULT_CYCLE_PERIOD
|
self.sync_delay = sync_delay if sync_delay is not None else DEFAULT_SYNC_DELAY
|
||||||
self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready)
|
self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready)
|
||||||
self.register_callback(MSG_KEY_DEVICE_RESET, self.cb_device_reset)
|
self.register_callback(MSG_KEY_DEVICE_RESET, self.cb_device_reset)
|
||||||
|
|
||||||
|
|
@ -69,5 +69,5 @@ class SyncOnReset(BaseHostTest):
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
self.test_case_num += 1
|
self.test_case_num += 1
|
||||||
time.sleep(self.program_cycle_s)
|
time.sleep(self.sync_delay)
|
||||||
self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY)
|
self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY)
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ from mbed_host_tests import BaseHostTest
|
||||||
|
|
||||||
TestCaseData = collections.namedtuple('TestCaseData', ['index', 'data_to_send'])
|
TestCaseData = collections.namedtuple('TestCaseData', ['index', 'data_to_send'])
|
||||||
|
|
||||||
DEFAULT_CYCLE_PERIOD = 4.0
|
DEFAULT_SYNC_DELAY = 4.0
|
||||||
MAX_HB_PERIOD = 2.5 # [s] Max expected heartbeat period.
|
MAX_HB_PERIOD = 2.5 # [s] Max expected heartbeat period.
|
||||||
|
|
||||||
MSG_VALUE_DUMMY = '0'
|
MSG_VALUE_DUMMY = '0'
|
||||||
|
|
@ -49,7 +49,7 @@ class WatchdogReset(BaseHostTest):
|
||||||
super(WatchdogReset, self).__init__()
|
super(WatchdogReset, self).__init__()
|
||||||
self.current_case = TestCaseData(0, CASE_DATA_INVALID)
|
self.current_case = TestCaseData(0, CASE_DATA_INVALID)
|
||||||
self.__handshake_timer = None
|
self.__handshake_timer = None
|
||||||
self.program_cycle_s = DEFAULT_CYCLE_PERIOD
|
self.sync_delay = DEFAULT_SYNC_DELAY
|
||||||
self.drop_heartbeat_messages = True
|
self.drop_heartbeat_messages = True
|
||||||
self.hb_timestamps_us = []
|
self.hb_timestamps_us = []
|
||||||
|
|
||||||
|
|
@ -93,8 +93,8 @@ class WatchdogReset(BaseHostTest):
|
||||||
self.current_case = TestCaseData(self.current_case.index, dev_data)
|
self.current_case = TestCaseData(self.current_case.index, dev_data)
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
cycle_s = self.get_config_item('program_cycle_s')
|
sync_delay = self.get_config_item('forced_reset_timeout')
|
||||||
self.program_cycle_s = cycle_s if cycle_s is not None else DEFAULT_CYCLE_PERIOD
|
self.sync_delay = sync_delay if sync_delay is not None else DEFAULT_SYNC_DELAY
|
||||||
self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready)
|
self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready)
|
||||||
self.register_callback(MSG_KEY_DEVICE_RESET, self.cb_device_reset)
|
self.register_callback(MSG_KEY_DEVICE_RESET, self.cb_device_reset)
|
||||||
self.register_callback(MSG_KEY_HEARTBEAT, self.cb_heartbeat)
|
self.register_callback(MSG_KEY_HEARTBEAT, self.cb_heartbeat)
|
||||||
|
|
@ -123,7 +123,7 @@ class WatchdogReset(BaseHostTest):
|
||||||
self.handshake_timer_cancel()
|
self.handshake_timer_cancel()
|
||||||
case_num, dev_reset_delay_ms = (int(i, base=16) for i in value.split(','))
|
case_num, dev_reset_delay_ms = (int(i, base=16) for i in value.split(','))
|
||||||
self.current_case = TestCaseData(case_num, CASE_DATA_PHASE2_OK)
|
self.current_case = TestCaseData(case_num, CASE_DATA_PHASE2_OK)
|
||||||
self.handshake_timer_start(self.program_cycle_s + dev_reset_delay_ms / 1000.0)
|
self.handshake_timer_start(self.sync_delay + dev_reset_delay_ms / 1000.0)
|
||||||
|
|
||||||
def cb_heartbeat(self, key, value, timestamp):
|
def cb_heartbeat(self, key, value, timestamp):
|
||||||
"""Save the timestamp of a heartbeat message.
|
"""Save the timestamp of a heartbeat message.
|
||||||
|
|
@ -141,5 +141,5 @@ class WatchdogReset(BaseHostTest):
|
||||||
self.current_case = TestCaseData(case_num, CASE_DATA_INVALID)
|
self.current_case = TestCaseData(case_num, CASE_DATA_INVALID)
|
||||||
self.hb_timestamps_us.append(timestamp_us)
|
self.hb_timestamps_us.append(timestamp_us)
|
||||||
self.handshake_timer_start(
|
self.handshake_timer_start(
|
||||||
seconds=(MAX_HB_PERIOD + self.program_cycle_s),
|
seconds=(MAX_HB_PERIOD + self.sync_delay),
|
||||||
pre_sync_fun=self.heartbeat_timeout_handler)
|
pre_sync_fun=self.heartbeat_timeout_handler)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue