Home | History | Annotate | Download | only in platform_HWwatchdog
      1 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 # This test isn't really HW specific. It's testing /dev/watchdog API
      6 # to make sure it works as expected. The most robust implementations is
      7 # based on real HW but it doesn't have to be.
      8 
      9 import logging
     10 
     11 # http://docs.python.org/2/library/errno.html
     12 import errno
     13 
     14 from autotest_lib.client.common_lib import error
     15 from autotest_lib.server import test
     16 from autotest_lib.server.cros.watchdog_tester import WatchdogTester
     17 
     18 
     19 class platform_HWwatchdog(test.test):
     20     """Test to make sure that /dev/watchdog will reboot the system."""
     21 
     22     version = 1
     23 
     24     def _stop_watchdog(self, client, wd_dev):
     25         # HW watchdog is open and closed "properly".
     26         try:
     27             client.run('echo "V" > %s' % wd_dev)
     28         except error.AutoservRunError, e:
     29             raise error.TestError('write to %s failed (%s)' %
     30                                   (wd_dev, errno.errorcode[e.errno]))
     31 
     32     def run_once(self, host=None):
     33         tester = WatchdogTester(host)
     34         # If watchdog not present, just skip this test
     35         if not tester.is_supported():
     36             logging.info("INFO: %s not present. Skipping test." % tester.WD_DEV)
     37             return
     38 
     39         with tester:
     40             self._stop_watchdog(host, tester.WD_DEV)
     41             tester.trigger_watchdog()
     42