Merge "Fuzzer host support case when one hal imports another."
diff --git a/template/iface_fuzzer_test/iface_fuzzer_test.py b/template/iface_fuzzer_test/iface_fuzzer_test.py
index 7733a8d..079c4c7 100644
--- a/template/iface_fuzzer_test/iface_fuzzer_test.py
+++ b/template/iface_fuzzer_test/iface_fuzzer_test.py
@@ -45,9 +45,11 @@
hal_version: string, version of the hal, e.g '7.4'
"""
# Push .vts spec files.
- hal_name_dir = hal_name.replace('.', '/')
+ hal_name_dir = vts_spec_utils.HalNameDir(hal_name)
src_dir = os.path.join(self.data_file_path, 'spec', 'hardware',
'interfaces', hal_name_dir, hal_version, 'vts')
+ dst_dir = os.path.join(self._VTS_SPEC_DIR_TARGET, hal_name_dir,
+ hal_version)
# Push corresponding VTS drivers.
driver_name = 'android.hardware.%s@%s-vts.driver.so' % (hal_name,
@@ -56,37 +58,63 @@
driver32 = os.path.join(asan_path, 'lib', driver_name)
driver64 = os.path.join(asan_path, 'lib64', driver_name)
try:
- self._dut.adb.push(src_dir, self._VTS_SPEC_DIR_TARGET)
+ self._dut.adb.push(src_dir, dst_dir)
self._dut.adb.push(driver32, 'data/local/tmp/32')
self._dut.adb.push(driver64, 'data/local/tmp/64')
except adb.AdbError as e:
logging.exception(e)
+ def _VtsSpecDirsTarget(self, hal_name, hal_version):
+ """Returns a list of directories on target with .vts specs.
+
+ Args:
+ hal_name: string, name of the hal, e.g. 'vibrator'.
+ hal_version: string, version of the hal, e.g '7.4'
+
+ Returns:
+ string list, directories on target
+ """
+ hal_name_dir = vts_spec_utils.HalNameDir(hal_name)
+ spec_dirs = [os.path.join(self._VTS_SPEC_DIR_TARGET, hal_name_dir,
+ hal_version)]
+
+ imported_hals = self._vts_spec_parser.ImportedHals(hal_name,
+ hal_version)
+ for name, version in imported_hals:
+ spec_dirs.append(
+ os.path.join(self._VTS_SPEC_DIR_TARGET,
+ vts_spec_utils.HalNameDir(name), version))
+ return spec_dirs
+
# Override
def CreateTestCases(self):
"""See base class."""
hal_package = self.hal_hidl_package_name
hal_name, hal_version = vts_spec_utils.HalPackageToNameAndVersion(
hal_package)
+
+ imported_hals = self._vts_spec_parser.ImportedHals(hal_name,
+ hal_version)
self._PushVtsResources(hal_name, hal_version)
- vts_spec_names = self._vts_spec_parser.VtsSpecNames(hal_name,
- hal_version)
- registered_interfaces = self._RegisteredInterfaces(
- self.hal_hidl_package_name)
+ for name, version in imported_hals:
+ self._PushVtsResources(name, version)
+
+ registered_interfaces = self._RegisteredInterfaces(hal_package)
+ spec_dirs = ':'.join(self._VtsSpecDirsTarget(hal_name, hal_version))
test_cases = []
for iface in registered_interfaces:
additional_params = {
- 'vts_spec_dir': self._VTS_SPEC_DIR_TARGET,
- 'vts_exec_size': 128,
+ 'vts_spec_dir': spec_dirs,
+ 'vts_exec_size': 16,
'vts_target_iface': iface,
}
libfuzzer_params = {
'max_len': 65536,
- 'max_total_time': 1,
+ 'max_total_time': 10,
}
bin_host_path = os.path.join(self.data_file_path, 'DATA', 'bin',
- 'vts_proto_fuzzer')
+ 'vts_proto_fuzzer')
test_case = libfuzzer_test_case.LibFuzzerTestCase(
bin_host_path, libfuzzer_params, additional_params)
test_case.test_name = iface