| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # This test isn't really HW specific. It's testing /dev/watchdog API |
| # to make sure it works as expected. The most robust implementations is |
| # based on real HW but it doesn't have to be. |
| |
| from __future__ import print_function |
| |
| import logging |
| |
| # http://docs.python.org/2/library/errno.html |
| import errno |
| |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.server import test |
| from autotest_lib.server.cros.watchdog_tester import WatchdogTester |
| |
| |
| class platform_HWwatchdog(test.test): |
| """Test to make sure that /dev/watchdog will reboot the system.""" |
| |
| version = 1 |
| |
| def _stop_watchdog(self, client, wd_dev): |
| # HW watchdog is open and closed "properly". |
| try: |
| client.run('echo "V" > %s' % wd_dev) |
| except error.AutoservRunError as e: |
| raise error.TestError('write to %s failed (%s)' % |
| (wd_dev, errno.errorcode[e.errno])) |
| |
| def run_once(self, host=None): |
| tester = WatchdogTester(host) |
| # If watchdog not present, just skip this test |
| if not tester.is_supported(): |
| error.TestNAError('%s or %s not present. Skipping test.' % |
| (tester.WD_DEV, tester.DAISYDOG_PATH)) |
| return |
| |
| with tester: |
| self._stop_watchdog(host, tester.WD_DEV) |
| tester.trigger_watchdog() |