summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsin-Yi Chen <hsinyichen@google.com>2020-04-28 08:51:18 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-04-28 08:51:18 +0000
commite7cf89c0c8fbca82a9a9e39dee23e00f12354645 (patch)
treebf053e4d23db7f1d8535b440baf65f3239a77a4a
parent8bd02918003ddea55b9d7f0b8b1d51750ef78157 (diff)
parent93f1e7c21364b36fd0ec7e97a20e0f1bb14c7add (diff)
downloadvndk-e7cf89c0c8fbca82a9a9e39dee23e00f12354645.tar.gz
Remove vts_vndk_open_libraries_test am: 93f1e7c213
Change-Id: I665cd8e35f26e24dd3db33e23e8c2b17dc3e19b4
-rw-r--r--Android.bp13
-rw-r--r--golden/vndk_data.py4
-rw-r--r--open_libraries/Android.bp19
-rw-r--r--open_libraries/AndroidTest.xml27
-rw-r--r--open_libraries/VtsVndkOpenLibrariesTest.py143
-rw-r--r--open_libraries/__init__.py0
-rw-r--r--open_libraries/vts_vndk_open_libraries_test.py164
-rw-r--r--open_libraries/vts_vndk_open_libraries_test.xml23
8 files changed, 0 insertions, 393 deletions
diff --git a/Android.bp b/Android.bp
index 3d8ab5a..dd7852f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -91,16 +91,3 @@ python_test_host {
],
test_config: "files/vts_vndk_files_test.xml",
}
-
-python_test_host {
- name: "vts_vndk_open_libraries_test",
- defaults: ["vts_vndk_default"],
- main: "open_libraries/vts_vndk_open_libraries_test.py",
- srcs: [
- "open_libraries/vts_vndk_open_libraries_test.py",
- ],
- test_suites: [
- "vts",
- ],
- test_config: "open_libraries/vts_vndk_open_libraries_test.xml",
-}
diff --git a/golden/vndk_data.py b/golden/vndk_data.py
index ffa1527..5e971aa 100644
--- a/golden/vndk_data.py
+++ b/golden/vndk_data.py
@@ -30,9 +30,6 @@ except ImportError:
# Low-level NDK libraries that can be used by framework and vendor modules.
LL_NDK = "LLNDK"
-# LL-NDK dependencies that vendor modules cannot directly access.
-LL_NDK_PRIVATE = "LLNDK-private"
-
# Same-process HAL implementation in vendor partition.
SP_HAL = "SP-HAL"
@@ -220,7 +217,6 @@ def _LoadVndkLibraryListsFile(vndk_lists, tags, vndk_lib_list_file):
# Compute VNDK-core-private and VNDK-SP-private.
private = lib_sets.get('VNDK-private', set())
- lib_sets[LL_NDK_PRIVATE].update(lib_sets[LL_NDK] & private)
lib_sets[VNDK_PRIVATE].update(lib_sets[VNDK] & private)
lib_sets[VNDK_SP_PRIVATE].update(lib_sets[VNDK_SP] & private)
diff --git a/open_libraries/Android.bp b/open_libraries/Android.bp
deleted file mode 100644
index 8fd540f..0000000
--- a/open_libraries/Android.bp
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Copyright (C) 2017 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-vts_config {
- name: "VtsVndkOpenLibraries",
-}
diff --git a/open_libraries/AndroidTest.xml b/open_libraries/AndroidTest.xml
deleted file mode 100644
index 0aee080..0000000
--- a/open_libraries/AndroidTest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<configuration description="Config for VTS VNDK open libraries test cases">
- <option name="config-descriptor:metadata" key="plan" value="vts-vndk" />
- <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
- <option name="push-group" value="HostDrivenTest.push" />
- </target_preparer>
- <multi_target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer">
- </multi_target_preparer>
- <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
- <option name="test-module-name" value="VtsVndkOpenLibraries" />
- <option name="test-case-path" value="vts/testcases/vndk/open_libraries/VtsVndkOpenLibrariesTest" />
- </test>
-</configuration>
diff --git a/open_libraries/VtsVndkOpenLibrariesTest.py b/open_libraries/VtsVndkOpenLibrariesTest.py
deleted file mode 100644
index a6b066d..0000000
--- a/open_libraries/VtsVndkOpenLibrariesTest.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-import logging
-
-from vts.runners.host import asserts
-from vts.runners.host import base_test
-from vts.runners.host import const
-from vts.runners.host import keys
-from vts.runners.host import test_runner
-from vts.testcases.vndk.golden import vndk_data
-from vts.utils.python.os import path_utils
-from vts.utils.python.vndk import vndk_utils
-
-
-class VtsVndkOpenLibrariesTest(base_test.BaseTestClass):
- """A test module to verify libraries opened by running processes.
-
- Attributes:
- data_file_path: The path to VTS data directory.
- _dut: The AndroidDevice under test.
- _shell: The ShellMirrorObject to execute commands
- """
-
- def setUpClass(self):
- """Initializes the data file path and shell."""
- required_params = [keys.ConfigKeys.IKEY_DATA_FILE_PATH]
- self.getUserParams(required_params)
- self._dut = self.android_devices[0]
- self._shell = self._dut.shell
-
- def _ListProcessCommands(self, cmd_filter):
- """Finds current processes whose commands match the filter.
-
- Args:
- cmd_filter: A function that takes a binary file path as argument and
- returns whether the path matches the condition.
-
- Returns:
- A dict of {pid: command} where pid and command are strings.
- """
- result = self._shell.Execute("ps -Aw -o PID,COMMAND")
- asserts.assertEqual(result[const.EXIT_CODE][0], 0)
- lines = result[const.STDOUT][0].split("\n")
- pid_end = lines[0].index("PID") + len("PID")
- cmd_begin = lines[0].index("COMMAND", pid_end)
- cmds = {}
- for line in lines[1:]:
- cmd = line[cmd_begin:]
- if not cmd_filter(cmd):
- continue
- pid = line[:pid_end].lstrip()
- cmds[pid] = cmd
- return cmds
-
- def _ListOpenFiles(self, pids, file_filter):
- """Finds open files whose names match the filter.
-
- Args:
- pids: A collection of strings, the PIDs to list open files.
- file_filter: A function that takes a file path as argument and
- returns whether the path matches the condition.
-
- Returns:
- A dict of {pid: [file, ...]} where pid and file are strings.
- """
- lsof_cmd = "lsof -p " + ",".join(pids)
- result = self._shell.Execute(lsof_cmd)
- asserts.assertEqual(result[const.EXIT_CODE][0], 0)
- lines = result[const.STDOUT][0].split("\n")
- pid_end = lines[0].index("PID") + len("PID")
- name_begin = lines[0].index("NAME")
- files = {}
- for line in lines[1:]:
- name = line[name_begin:]
- if not file_filter(name):
- continue
- pid_begin = line.rindex(" ", 0, pid_end) + 1
- pid = line[pid_begin:pid_end]
- if pid in files:
- files[pid].append(name)
- else:
- files[pid] = [name]
- return files
-
- def testVendorProcessOpenLibraries(self):
- """Checks if vendor processes load shared libraries on system."""
- asserts.skipIf(not vndk_utils.IsVndkRuntimeEnforced(self._dut),
- "VNDK runtime is not enforced on the device.")
- vndk_lists = vndk_data.LoadVndkLibraryLists(
- self.data_file_path,
- self._dut.vndk_version,
- vndk_data.LL_NDK,
- vndk_data.LL_NDK_PRIVATE,
- vndk_data.VNDK,
- vndk_data.VNDK_PRIVATE,
- vndk_data.VNDK_SP,
- vndk_data.VNDK_SP_PRIVATE)
- asserts.assertTrue(vndk_lists, "Cannot load VNDK library lists.")
- allowed_libs = set().union(*vndk_lists)
- logging.debug("Allowed system libraries: %s", allowed_libs)
-
- asserts.assertTrue(self._dut.isAdbRoot,
- "Must be root to find all libraries in use.")
- cmds = self._ListProcessCommands(lambda x: (x.startswith("/odm/") or
- x.startswith("/vendor/")))
-
- def _IsDisallowedSystemLib(lib_path):
- return ((lib_path.startswith("/system/") or
- lib_path.startswith("/apex/")) and
- lib_path.endswith(".so") and
- path_utils.TargetBaseName(lib_path) not in allowed_libs)
-
- deps = self._ListOpenFiles(cmds.keys(), _IsDisallowedSystemLib)
- if deps:
- error_lines = ["%s %s %s" % (pid, cmds[pid], libs)
- for pid, libs in deps.iteritems()]
- logging.error("pid command libraries\n%s", "\n".join(error_lines))
-
- assert_lines = ["pid command libraries"] + error_lines[:20]
- if len(deps) > 20:
- assert_lines.append("...")
- assert_lines.append("Number of vendor processes using system "
- "libraries: " + str(len(deps)))
- asserts.fail("\n".join(assert_lines))
-
-
-if __name__ == "__main__":
- test_runner.main()
diff --git a/open_libraries/__init__.py b/open_libraries/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/open_libraries/__init__.py
+++ /dev/null
diff --git a/open_libraries/vts_vndk_open_libraries_test.py b/open_libraries/vts_vndk_open_libraries_test.py
deleted file mode 100644
index b238142..0000000
--- a/open_libraries/vts_vndk_open_libraries_test.py
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env python3
-#
-# Copyright (C) 2020 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-import logging
-import os
-import posixpath as target_path_module
-import re
-import unittest
-
-from vts.testcases.vndk import utils
-from vts.testcases.vndk.golden import vndk_data
-from vts.utils.python.vndk import vndk_utils
-
-
-class VtsVndkOpenLibrariesTest(unittest.TestCase):
- """A test module to verify libraries opened by running processes.
-
- Attributes:
- _dut: The AndroidDevice under test.
- """
-
- def setUp(self):
- """Initializes attributes."""
- serial_number = os.environ.get("ANDROID_SERIAL")
- self.assertTrue(serial_number, "$ANDROID_SERIAL is empty.")
- self._dut = utils.AndroidDevice(serial_number)
-
- def _ListProcessCommands(self, cmd_filter):
- """Finds current processes whose commands match the filter.
-
- Args:
- cmd_filter: A function that takes a binary file path as argument
- and returns whether the path matches the condition.
-
- Returns:
- A dict of {pid: command} where pid and command are strings.
- """
- ps_cmd = ["ps", "-Aw", "-o", "PID,COMMAND"]
- out, err, return_code = self._dut.Execute(*ps_cmd)
- if err.strip():
- logging.info("`%s` stderr: %s", " ".join(ps_cmd), err)
- self.assertEqual(return_code, 0)
-
- lines = out.split("\n")
- pid_end = lines[0].index("PID") + len("PID")
- cmd_begin = lines[0].index("COMMAND", pid_end)
- cmds = {}
- for line in lines[1:]:
- cmd = line[cmd_begin:]
- if not cmd_filter(cmd):
- continue
- pid = line[:pid_end].lstrip()
- cmds[pid] = cmd
- return cmds
-
- def _ListOpenFiles(self, pids, file_filter):
- """Finds open files whose names match the filter.
-
- Args:
- pids: A collection of strings, the PIDs to list open files.
- file_filter: A function that takes a file path as argument and
- returns whether the path matches the condition.
-
- Returns:
- A dict of {pid: [file, ...]} where pid and file are strings.
- """
- lsof_cmd = ["lsof", "-p", ",".join(pids)]
- out, err, return_code = self._dut.Execute(*lsof_cmd)
- if err.strip():
- logging.info("`%s` stderr: %s", " ".join(lsof), err)
- self.assertEqual(return_code, 0)
- # The first line consists of the column names:
- # COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- # PID is right-justified. NAME is left-justified.
- lines = out.split("\n")
- pid_end = lines[0].index("PID") + len("PID")
- name_begin = lines[0].index("NAME")
- files = {}
- for line in lines[1:]:
- if not line.strip():
- continue
- # On Android, COMMAND may exceed the column and causes the right
- # columns to be misaligned. This program looks for digits in the
- # PID column or on the right of the column.
- try:
- match_pid = next(match for match in
- re.finditer(r"\s(\d+)\s", line) if
- match.end(1) >= pid_end)
- except StopIteration:
- self.fail("Cannot parse PID from lsof output: " + line)
- offset = match_pid.end(1) - pid_end
- self.assertEqual(line[name_begin + offset - 1], " ",
- "Cannot parse NAME from lsof output: " + line)
- name = line[name_begin + offset:]
- if not file_filter(name):
- continue
- pid = match_pid.group(1)
- if pid in files:
- files[pid].append(name)
- else:
- files[pid] = [name]
- return files
-
- def testVendorProcessOpenLibraries(self):
- """Checks if vendor processes load shared libraries on system."""
- if not vndk_utils.IsVndkRuntimeEnforced(self._dut):
- logging.info("Skip the test as VNDK runtime is not enforced on "
- "the device.")
- return
- vndk_lists = vndk_data.LoadVndkLibraryListsFromResources(
- self._dut.GetVndkVersion(),
- vndk_data.LL_NDK,
- vndk_data.LL_NDK_PRIVATE,
- vndk_data.VNDK,
- vndk_data.VNDK_PRIVATE,
- vndk_data.VNDK_SP,
- vndk_data.VNDK_SP_PRIVATE)
- self.assertTrue(vndk_lists, "Cannot load VNDK library lists.")
- allowed_libs = set().union(*vndk_lists)
- logging.debug("Allowed system libraries: %s", allowed_libs)
-
- self.assertTrue(self._dut.IsRoot(),
- "Must be root to find all libraries in use.")
- cmds = self._ListProcessCommands(lambda x: (x.startswith("/odm/") or
- x.startswith("/vendor/")))
-
- def _IsDisallowedSystemLib(lib_path):
- return ((lib_path.startswith("/system/") or
- lib_path.startswith("/apex/")) and
- lib_path.endswith(".so") and
- target_path_module.basename(lib_path) not in allowed_libs)
-
- deps = self._ListOpenFiles(cmds.keys(), _IsDisallowedSystemLib)
- if deps:
- error_lines = ["%s %s %s" % (pid, cmds[pid], libs)
- for pid, libs in deps.items()]
- logging.error("pid command libraries\n%s", "\n".join(error_lines))
-
- assert_lines = ["pid command libraries"] + error_lines[:20]
- if len(deps) > 20:
- assert_lines.append("...")
- assert_lines.append("Number of vendor processes using system "
- "libraries: " + str(len(deps)))
- self.fail("\n".join(assert_lines))
-
-
-if __name__ == "__main__":
- # Setting verbosity is required to generate output that the TradeFed test
- # runner can parse.
- unittest.main(verbosity=3)
diff --git a/open_libraries/vts_vndk_open_libraries_test.xml b/open_libraries/vts_vndk_open_libraries_test.xml
deleted file mode 100644
index 664f60e..0000000
--- a/open_libraries/vts_vndk_open_libraries_test.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<configuration description="Config for vts_vndk_open_libraries_test">
- <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
- <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest">
- <option name="par-file-name" value="vts_vndk_open_libraries_test" />
- <option name="test-timeout" value="2m" />
- </test>
-</configuration>
-