From e1e2ae2ed4c5911dcdb6f82469dc633592b92e53 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Chen Date: Thu, 7 Dec 2023 15:36:57 +0800 Subject: Load LLNDK list from device VTS used to load LLNDK list from the text files built in the test binaries. The files will be removed after VNDK deprecation. The tests read /system/etc/llndk.libraries.txt instead. Test: atest vts_vndk_dependency_test vts_vndk_files_test Bug: 315256423 Change-Id: Ic94a53b317b8b7a4e175159a88b35955dedb56e7 --- dependency/vts_vndk_dependency_test.py | 6 +++-- files/vts_vndk_files_test.py | 42 ++++++++++++++-------------------- utils.py | 13 +++++++++++ 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/dependency/vts_vndk_dependency_test.py b/dependency/vts_vndk_dependency_test.py index e829558..fff1272 100644 --- a/dependency/vts_vndk_dependency_test.py +++ b/dependency/vts_vndk_dependency_test.py @@ -116,8 +116,10 @@ class VtsVndkDependencyTest(unittest.TestCase): sp_hal_strings = vndk_lists[0] self._sp_hal = [re.compile(x) for x in sp_hal_strings] - (self._ll_ndk, self._vndk, self._vndk_sp) = vndk_lists[1:] - if not vndk_utils.IsVndkRequired(self._dut): + if vndk_utils.IsVndkRequired(self._dut): + (self._ll_ndk, self._vndk, self._vndk_sp) = vndk_lists[1:] + else: + self._ll_ndk = self._dut.GetLlndkList() (self._vndk, self._vndk_sp) = ([], []) logging.debug("LL_NDK: %s", self._ll_ndk) diff --git a/files/vts_vndk_files_test.py b/files/vts_vndk_files_test.py index 1563d24..17539e7 100644 --- a/files/vts_vndk_files_test.py +++ b/files/vts_vndk_files_test.py @@ -101,28 +101,24 @@ class VtsVndkFilesTest(unittest.TestCase): "The above libraries are not %s." % ", ".join(vndk_list_names)) - def _TestNotInVndkDirecotory(self, vndk_dir, vndk_list_names, except_libs): - """Verifies that VNDK directory doesn't contain specific files. + def _TestNoLlndkInDirectory(self, lib_dir): + """Verifies that the vendor directory doesn't contain LLNDK libraries. Args: - vndk_dir, The path to the VNDK directory on device. - vndk_list_names: A list of strings, the categories of the VNDK - libraries that should not be in the directory. - except_libs: A set of strings, the file names of the libraries that - are exceptions to this test. + lib_dir: The path to the directory on device. """ - vndk_lists = vndk_data.LoadVndkLibraryListsFromResources( - self._vndk_version, *vndk_list_names) - self.assertTrue(vndk_lists, "Cannot load VNDK library lists.") - vndk_set = set().union(*vndk_lists) - vndk_set.difference_update(except_libs) - logging.debug("vndk set: %s", vndk_set) - unexpected = [x for x in self._ListFiles(vndk_dir) if - target_path_module.basename(x) in vndk_set] + if vndk_utils.IsVndkRequired(self._dut): + llndk_list = vndk_data.LoadVndkLibraryListsFromResources( + self._vndk_version, vndk_data.LL_NDK)[0] + else: + llndk_list = self._dut.GetLlndkList() + llndk_set = set(llndk_list).difference(self._LL_NDK_COLLIDING_NAMES) + logging.debug("llndk set: %s", llndk_set) + unexpected = [x for x in self._ListFiles(lib_dir) if + target_path_module.basename(x) in llndk_set] if unexpected: self._Fail(unexpected, - "%s must not contain %s libraries." % - (vndk_dir, ", ".join(vndk_list_names))) + lib_dir + " must not contain LLNDK libraries.") def _TestVndkCoreDirectory(self, bitness): """Verifies that VNDK directory doesn't contain extra files.""" @@ -159,10 +155,8 @@ class VtsVndkFilesTest(unittest.TestCase): def _TestNoLlndkInVendor(self, bitness): """Verifies that vendor partition has no LL-NDK libraries.""" - self._TestNotInVndkDirecotory( - vndk_utils.FormatVndkPath(self._TARGET_VENDOR_LIB, bitness), - (vndk_data.LL_NDK,), - self._LL_NDK_COLLIDING_NAMES) + self._TestNoLlndkInDirectory( + vndk_utils.FormatVndkPath(self._TARGET_VENDOR_LIB, bitness)) def testNoLlndkInVendor32(self): """Runs _TestNoLlndkInVendor for 32-bit libraries.""" @@ -178,10 +172,8 @@ class VtsVndkFilesTest(unittest.TestCase): def _TestNoLlndkInOdm(self, bitness): """Verifies that odm partition has no LL-NDK libraries.""" - self._TestNotInVndkDirecotory( - vndk_utils.FormatVndkPath(self._TARGET_ODM_LIB, bitness), - (vndk_data.LL_NDK,), - self._LL_NDK_COLLIDING_NAMES) + self._TestNoLlndkInDirectory( + vndk_utils.FormatVndkPath(self._TARGET_ODM_LIB, bitness)) def testNoLlndkInOdm32(self): """Runs _TestNoLlndkInOdm for 32-bit libraries.""" diff --git a/utils.py b/utils.py index 58c4992..36814ab 100644 --- a/utils.py +++ b/utils.py @@ -215,6 +215,19 @@ class AndroidDevice(object): else: return 64 + def GetLlndkList(self): + """Loads the list of LLNDK library names from the device. + + Returns: + A list of strings, the library names including ".so". + """ + out, err, return_code = self.Execute("cat", + "/system/etc/llndk.libraries.txt") + if err.strip() or return_code != 0: + raise IOError("`cat /system/etc/llndk.libraries.txt` " + f"stdout: {out}\nstderr: {err}\n") + return out.split() + def IsRoot(self): """Returns whether adb has root privilege on the device.""" out, err, return_code = self.Execute("id") -- cgit v1.2.3