Home | History | Annotate | Download | only in camera_HAL3
      1 # Copyright 2017 The Chromium 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 """A test which verifies the camera function with HAL3 interface."""
      6 
      7 import os, logging
      8 import xml.etree.ElementTree
      9 from autotest_lib.client.bin import test, utils
     10 from autotest_lib.client.cros import service_stopper
     11 from sets import Set
     12 
     13 class camera_HAL3(test.test):
     14     """
     15     This test is a wrapper of the test binary arc_camera3_test.
     16     """
     17 
     18     version = 1
     19     test_binary = 'arc_camera3_test'
     20     dep = 'camera_hal3'
     21     adapter_service = 'camera-halv3-adapter'
     22     timeout = 600
     23     media_profiles_path = os.path.join('vendor', 'etc', 'media_profiles.xml')
     24     tablet_board_list = ['scarlet']
     25 
     26     def setup(self):
     27         """
     28         Run common setup steps.
     29         """
     30         self.dep_dir = os.path.join(self.autodir, 'deps', self.dep)
     31         self.job.setup_dep([self.dep])
     32         logging.debug('mydep is at %s' % self.dep_dir)
     33 
     34     def run_once(self):
     35         """
     36         Entry point of this test.
     37         """
     38         self.job.install_pkg(self.dep, 'dep', self.dep_dir)
     39 
     40         with service_stopper.ServiceStopper([self.adapter_service]):
     41             cmd = [ os.path.join(self.dep_dir, 'bin', self.test_binary) ]
     42             xml_content = utils.system_output(
     43                 ' '.join(['android-sh', '-c', '\"cat',
     44                           self.media_profiles_path + '\"']))
     45             root = xml.etree.ElementTree.fromstring(xml_content)
     46             recording_params = Set()
     47             for camcorder_profiles in root.findall('CamcorderProfiles'):
     48                 for encoder_profile in camcorder_profiles.findall('EncoderProfile'):
     49                     video = encoder_profile.find('Video')
     50                     recording_params.add('%s:%s:%s:%s' % (
     51                         camcorder_profiles.get('cameraId'), video.get('width'),
     52                         video.get('height'), video.get('frameRate')))
     53             if recording_params:
     54                 cmd.append('--recording_params=' + ','.join(recording_params))
     55             if utils.get_current_board() in self.tablet_board_list:
     56                 cmd.append('--gtest_filter=-*SensorOrientationTest/*')
     57 
     58             utils.system(' '.join(cmd), timeout=self.timeout)
     59