def watchdog_not_running(self, platform_api_conn): ''' Fixture that automatically runs on each test case and verifies that watchdog is not running before the test begins and disables it after the test ends''' assert not watchdog.is_armed(platform_api_conn) try: yield finally: watchdog.disarm(platform_api_conn)
def test_arm_disarm_states(self, duthost, localhost, platform_api_conn, conf): ''' arm watchdog with a valid timeout value, verify it is in armed state, disarm watchdog and verify it is in disarmed state ''' watchdog_timeout = conf['valid_timeout'] actual_timeout = watchdog.arm(platform_api_conn, watchdog_timeout) if self.expect(actual_timeout is not None, "Watchdog.arm is not supported"): if self.expect(isinstance(actual_timeout, int), "actual_timeout appears incorrect"): if self.expect(actual_timeout != -1, "Failed to arm the watchdog"): self.expect(actual_timeout >= watchdog_timeout, "Actual watchdog timeout {} seconds appears wrong, should be equal or greater than {} seconds".format(actual_timeout, watchdog_timeout)) watchdog_status = watchdog.is_armed(platform_api_conn) if self.expect(watchdog_status is not None, "Failed to retrieve watchdog status"): self.expect(watchdog_status is True, "Watchdog is not armed.") remaining_time = watchdog.get_remaining_time(platform_api_conn) if self.expect(remaining_time is not None, "Failed to get the remaining time of watchdog"): if self.expect(isinstance(remaining_time, int), "remaining_time appears incorrect"): self.expect(remaining_time <= actual_timeout, "Watchdog remaining_time {} seconds appears wrong compared to watchdog timeout {} seocnds".format(remaining_time, actual_timeout)) watchdog_status = watchdog.disarm(platform_api_conn) if self.expect(watchdog_status is not None, "Watchdog.disarm is not supported"): self.expect(watchdog_status is True, "Failed to disarm the watchdog") watchdog_status = watchdog.is_armed(platform_api_conn) if self.expect(watchdog_status is not None, "Failed to check the watchdog status"): self.expect(watchdog_status is False, "Watchdog is not disarmed") remaining_time = watchdog.get_remaining_time(platform_api_conn) if self.expect(remaining_time is not None, "Failed to get the remaining time of watchdog"): self.expect(remaining_time is -1, "Watchdog remaining_time {} seconds is wrong for disarmed state".format(remaining_time)) res = localhost.wait_for(host=duthost.hostname, port=22, state="stopped", delay=5, timeout=watchdog_timeout + TIMEOUT_DEVIATION, module_ignore_errors=True) self.expect('Timeout' in res.get('msg', ''), "unexpected disconnection from dut") self.assert_expectations()