Home | History | Annotate | Download | only in platform_CleanShutdown
      1 # Copyright 2017 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 import logging, os
      6 from shutil import copyfile
      7 from autotest_lib.client.bin import test
      8 from autotest_lib.client.common_lib import error
      9 
     10 UMOUNT_FAIL_BASENAME = 'shutdown_stateful_umount_failure'
     11 SHUTDOWN_STATEFUL_UMOUNT_FAIL = ('/mnt/stateful_partition/' +
     12                                  UMOUNT_FAIL_BASENAME)
     13 
     14 class platform_CleanShutdown(test.test):
     15     """Checks for the presence of an unclean shutdown file."""
     16     version = 1
     17 
     18     def run_once(self):
     19         if os.path.exists(SHUTDOWN_STATEFUL_UMOUNT_FAIL):
     20             with open(SHUTDOWN_STATEFUL_UMOUNT_FAIL) as f:
     21                 logging.debug('Stateful unmount failure log:\n%s', f.read())
     22 
     23             copyfile(SHUTDOWN_STATEFUL_UMOUNT_FAIL,
     24                      os.path.join(self.resultsdir, UMOUNT_FAIL_BASENAME))
     25 
     26             # Delete the file between each test run to see if the last reboot
     27             # failed.
     28             os.remove(SHUTDOWN_STATEFUL_UMOUNT_FAIL)
     29             raise error.TestFail(
     30                 '{} exists!'.format(SHUTDOWN_STATEFUL_UMOUNT_FAIL))
     31