1 #!/usr/bin/env python 2 # 3 # Copyright (C) 2016 The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 # 17 18 import logging 19 import time 20 21 from vts.runners.host import asserts 22 from vts.runners.host import base_test 23 from vts.runners.host import test_runner 24 from vts.utils.python.controllers import android_device 25 from vts.utils.python.precondition import precondition_utils 26 27 28 class SensorsHidlTest(base_test.BaseTestClass): 29 """Host testcase class for the SENSORS HIDL HAL. 30 31 This class set-up/tear-down the webDB host test framwork and contains host test cases for 32 sensors HIDL HAL. 33 """ 34 35 def setUpClass(self): 36 """Creates a mirror and turns on the framework-layer SENSORS service.""" 37 self.dut = self.registerController(android_device)[0] 38 39 self.dut.shell.InvokeTerminal("one") 40 self.dut.shell.one.Execute("setenforce 0") # SELinux permissive mode 41 if not precondition_utils.CanRunHidlHalTest( 42 self, self.dut, self.dut.shell.one): 43 self._skip_all_testcases = True 44 return 45 46 # Test using the binderized mode 47 self.dut.shell.one.Execute( 48 "setprop vts.hal.vts.hidl.get_stub true") 49 50 self.dut.hal.InitHidlHal( 51 target_type="sensors", 52 target_basepaths=self.dut.libPaths, 53 target_version=1.0, 54 target_package="android.hardware.sensors", 55 target_component_name="ISensors", 56 bits=int(self.abi_bitness)) 57 58 def tearDownClass(self): 59 """ If profiling is enabled for the test, collect the profiling data 60 and disable profiling after the test is done. 61 """ 62 if not self._skip_all_testcases and self.profiling.enabled: 63 self.profiling.ProcessAndUploadTraceData() 64 65 def setUp(self): 66 if self.profiling.enabled: 67 self.profiling.EnableVTSProfiling(self.dut.shell.one) 68 69 def tearDown(self): 70 if self.profiling.enabled: 71 self.profiling.ProcessTraceDataForTestCase(self.dut) 72 self.profiling.DisableVTSProfiling(self.dut.shell.one) 73 74 def testSensorsBasic(self): 75 """Test the basic operation of test framework and sensor HIDL HAL 76 77 This test obtains predefined enum values via sensors HIDL HAL host test framework and 78 compares them to known values as a sanity check to make sure both sensors HAL 79 and the test framework are working properly. 80 """ 81 sensors_types = self.dut.hal.sensors.GetHidlTypeInterface("types") 82 logging.info("sensors_types: %s", sensors_types) 83 logging.info("OK: %s", sensors_types.Result.OK) 84 logging.info("BAD_VALUE: %s", sensors_types.Result.BAD_VALUE) 85 logging.info("NO_MEMORY: %s", sensors_types.Result.NO_MEMORY) 86 logging.info("PERMISSION_DENIED: %s", sensors_types.Result.PERMISSION_DENIED) 87 logging.info("INVALID_OPERATION: %s", sensors_types.Result.INVALID_OPERATION) 88 asserts.assertEqual(sensors_types.Result.OK, 0) 89 asserts.assertEqual(sensors_types.Result.NO_MEMORY, -12) 90 asserts.assertEqual(sensors_types.Result.BAD_VALUE, -22) 91 asserts.assertEqual(sensors_types.Result.INVALID_OPERATION, -38) 92 93 logging.info("sensor types:") 94 logging.info("ACCELEROMETER: %s", sensors_types.SensorType.ACCELEROMETER) 95 logging.info("MAGNETIC_FIELD: %s", sensors_types.SensorType.MAGNETIC_FIELD) 96 logging.info("GYROSCOPE: %s", sensors_types.SensorType.GYROSCOPE) 97 asserts.assertEqual(sensors_types.SensorType.ACCELEROMETER, 1) 98 asserts.assertEqual(sensors_types.SensorType.MAGNETIC_FIELD, 2) 99 asserts.assertEqual(sensors_types.SensorType.GYROSCOPE, 4) 100 101 if __name__ == "__main__": 102 test_runner.main() 103