Home | History | Annotate | Download | only in graphics_Drm
      1 # Copyright 2016 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
      6 from autotest_lib.client.bin import test
      7 from autotest_lib.client.common_lib import error
      8 from autotest_lib.client.common_lib import utils
      9 from autotest_lib.client.cros import service_stopper
     10 from autotest_lib.client.cros.graphics import graphics_utils
     11 
     12 
     13 class graphics_Drm(test.test):
     14     """Runs one of the drm-tests.
     15     """
     16     version = 1
     17     GSC = None
     18     _services = None
     19     _timeout = 120
     20 
     21     def initialize(self):
     22         self.GSC = graphics_utils.GraphicsStateChecker()
     23         self._services = service_stopper.ServiceStopper(['ui'])
     24 
     25     def cleanup(self):
     26         if self.GSC:
     27             self.GSC.finalize()
     28         if self._services:
     29             self._services.restore_services()
     30 
     31     def run_once(self, cmd, stop_ui=True, display_required=True):
     32         num_displays = graphics_utils.get_num_outputs_on()
     33         # Sanity check to guard against incorrect silent passes.
     34         if num_displays == 0 and utils.get_device_type() == 'CHROMEBOOK':
     35             raise error.TestFail('Error: found Chromebook without display.')
     36         if display_required and num_displays == 0:
     37             # If a test needs a display and we don't have a display,
     38             # consider it a pass.
     39             logging.warning('No display connected, skipping test.')
     40             return
     41         if stop_ui:
     42             self._services.stop_services()
     43         try:
     44             result = utils.run(cmd,
     45                                timeout=self._timeout,
     46                                ignore_status=True,
     47                                stderr_is_expected=True,
     48                                verbose=True,
     49                                stdout_tee=utils.TEE_TO_LOGS,
     50                                stderr_tee=utils.TEE_TO_LOGS)
     51         except Exception:
     52             # Fail on exceptions.
     53             raise error.TestFail('Failed: Exception running %s' % cmd)
     54 
     55         # Last but not least check return code and use it for triage.
     56         if result.exit_status != 0:
     57             raise error.TestFail('Failed: %s (exit=%d)' %
     58                                     (cmd, result.exit_status))
     59