diff options
author | Howard Chen <howardsoc@google.com> | 2017-05-31 15:34:46 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-05-31 15:34:46 +0000 |
commit | f417e43992ed76db885b8f34e9761631319cc680 (patch) | |
tree | 4563e54faf982239ed37f434f8fe333534b94f41 | |
parent | 11f54e3a798da9ae7fa2c5fa597c3f0c40917ff0 (diff) | |
parent | 020c924dfd4b0c4944e34272eb5eae4096748e75 (diff) | |
download | performance-f417e43992ed76db885b8f34e9761631319cc680.tar.gz |
Merge "Add hwbinder latency Test"
am: 020c924dfd
Change-Id: I40c0e998e4fe4f1c25e88ecd477bdf8b60e737ee
12 files changed, 343 insertions, 0 deletions
diff --git a/hwbinder_latency_test/HwBinderLatencyTest.py b/hwbinder_latency_test/HwBinderLatencyTest.py new file mode 100644 index 0000000..5d70625 --- /dev/null +++ b/hwbinder_latency_test/HwBinderLatencyTest.py @@ -0,0 +1,107 @@ +#!/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 json +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 test_runner +from vts.utils.python.controllers import android_device +from vts.utils.python.cpu import cpu_frequency_scaling + + +class HwBinderLatencyTest(base_test.BaseTestClass): + """A test case for the hwbinder latency benchmarking.""" + + def setUpClass(self): + required_params = ["hidl_hal_mode"] + self.getUserParams(required_params) + self.dut = self.registerController(android_device)[0] + self.dut.shell.InvokeTerminal("one") + self._cpu_freq = cpu_frequency_scaling.CpuFrequencyScalingController(self.dut) + self._cpu_freq.DisableCpuScaling() + + def setUp(self): + self._cpu_freq.SkipIfThermalThrottling(retry_delay_secs=30) + + def tearDown(self): + self._cpu_freq.SkipIfThermalThrottling() + + def tearDownClass(self): + self._cpu_freq.EnableCpuScaling() + + def testRunBenchmark32Bit(self): + self._uploadResult(self._runBenchmark(32), 32) + + def testRunBenchmark64Bit(self): + self._uploadResult(self._runBenchmark(64), 64) + + def _runBenchmark(self, bits): + """Runs the native binary and parses its result. + + Args: + bits: integer (32 or 64), the bitness of the binary to run. + + Returns: + dict, the benchmarking result converted from native binary's JSON + output. + """ + logging.info("Start %d-bit hwbinder latency test with HIDL mode=%s", + bits, self.hidl_hal_mode) + binary = "/data/local/tmp/%s/libhwbinder_latency%s" % (bits, bits) + min_cpu, max_cpu = self._cpu_freq.GetMinAndMaxCpuNo() + iterations = 1000 // (max_cpu - min_cpu) + results = self.dut.shell.one.Execute([ + "chmod 755 %s" % binary, + "LD_LIBRARY_PATH=/system/lib%s:/data/local/tmp/%s/hw:" + "/data/local/tmp/%s:$LD_LIBRARY_PATH " + "%s -raw_data -pair %d -i %d -m %s" % (bits, bits, bits, + binary, max_cpu - min_cpu, iterations, + self.hidl_hal_mode.encode("utf-8"))]) + # Parses the result. + asserts.assertEqual(len(results[const.STDOUT]), 2) + logging.info("stderr: %s", results[const.STDERR][1]) + logging.info("stdout: %s", results[const.STDOUT][1]) + asserts.assertFalse( + any(results[const.EXIT_CODE]), + "testRunBenchmark%sBit failed." % (bits)) + json_result = json.loads(results[const.STDOUT][1]); + asserts.assertTrue(json_result["inheritance"] == "PASS", + "Scheduler does not support priority inheritance."); + return json_result + + def _uploadResult(self, result, bits): + """Uploads the output of benchmark program to web DB. + + Args: + result: dict which is the benchmarking result. + bits: integer (32 or 64). + """ + opts = ["hidl_hal_mode=%s" % self.hidl_hal_mode.encode("utf-8")]; + min_cpu, max_cpu = self._cpu_freq.GetMinAndMaxCpuNo() + for i in range(max_cpu - min_cpu): + self.web.AddProfilingDataUnlabeledVector( + "hwbinder_latency_%sbits" % bits, + result["fifo_%d_data" % i], options=opts, + x_axis_label="hwbinder latency", + y_axis_label="Frequency") + + +if __name__ == "__main__": + test_runner.main() diff --git a/hwbinder_latency_test/__init__.py b/hwbinder_latency_test/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/hwbinder_latency_test/__init__.py diff --git a/hwbinder_latency_test/binderize/Android.mk b/hwbinder_latency_test/binderize/Android.mk new file mode 100644 index 0000000..9c440a4 --- /dev/null +++ b/hwbinder_latency_test/binderize/Android.mk @@ -0,0 +1,22 @@ +# +# 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. +# +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := HwBinderBinderizeLatencyTest +VTS_CONFIG_SRC_DIR := testcases/performance/hwbinder_latency_test/binderize +include test/vts/tools/build/Android.host_config.mk diff --git a/hwbinder_latency_test/binderize/AndroidTest.xml b/hwbinder_latency_test/binderize/AndroidTest.xml new file mode 100644 index 0000000..0c47d69 --- /dev/null +++ b/hwbinder_latency_test/binderize/AndroidTest.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 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 libhwbinder latency tests"> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"> + <option name="abort-on-push-failure" value="false" /> + <option name="push-group" value="HostDrivenTest.push" /> + <option name="cleanup" value="true" /> + <option name="push" value="DATA/lib/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/32/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/lib64/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/64/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/nativetest/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/32/libhwbinder_latency32" /> + <option name="push" value="DATA/nativetest64/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/64/libhwbinder_latency64" /> + <option name="push" value="DATA/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + <option name="push" value="DATA/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + </target_preparer> + <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"> + </target_preparer> + <test class="com.android.tradefed.testtype.VtsMultiDeviceTest"> + <option name="test-module-name" value="HwBinderBinderizeLatencyTest" /> + <option name="test-case-path" value="vts/testcases/performance/hwbinder_latency_test/HwBinderLatencyTest" /> + <option name="test-config-path" value="vts/testcases/performance/hwbinder_latency_test/binderize/HwBinderBinderizeLatencyTest.config" /> + </test> +</configuration> diff --git a/hwbinder_latency_test/binderize/HwBinderBinderizeLatencyTest.config b/hwbinder_latency_test/binderize/HwBinderBinderizeLatencyTest.config new file mode 100644 index 0000000..fc792a7 --- /dev/null +++ b/hwbinder_latency_test/binderize/HwBinderBinderizeLatencyTest.config @@ -0,0 +1,3 @@ +{ + "hidl_hal_mode": "BINDERIZE" +} diff --git a/hwbinder_latency_test/binderize_systrace/Android.mk b/hwbinder_latency_test/binderize_systrace/Android.mk new file mode 100644 index 0000000..e716aa7 --- /dev/null +++ b/hwbinder_latency_test/binderize_systrace/Android.mk @@ -0,0 +1,22 @@ +# +# 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. +# +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := HwBinderBinderizeLatencySystraceTest +VTS_CONFIG_SRC_DIR := testcases/performance/hwbinder_latency_test/binderize_systrace +include test/vts/tools/build/Android.host_config.mk diff --git a/hwbinder_latency_test/binderize_systrace/AndroidTest.xml b/hwbinder_latency_test/binderize_systrace/AndroidTest.xml new file mode 100644 index 0000000..a6ca43f --- /dev/null +++ b/hwbinder_latency_test/binderize_systrace/AndroidTest.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 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 libhwbinder latency tests with systrace"> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"> + <option name="abort-on-push-failure" value="false" /> + <option name="push-group" value="HostDrivenTest.push" /> + <option name="cleanup" value="true" /> + <option name="push" value="DATA/lib/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/32/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/lib64/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/64/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/nativetest/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/32/libhwbinder_latency32" /> + <option name="push" value="DATA/nativetest64/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/64/libhwbinder_latency64" /> + <option name="push" value="DATA/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + <option name="push" value="DATA/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + </target_preparer> + <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"> + </target_preparer> + <test class="com.android.tradefed.testtype.VtsMultiDeviceTest"> + <option name="test-module-name" value="HwBinderBinderizeLatencySystraceTest" /> + <option name="test-case-path" value="vts/testcases/performance/hwbinder_latency_test/HwBinderLatencyTest" /> + <option name="test-config-path" value="vts/testcases/performance/hwbinder_latency_test/binderize/HwBinderBinderizeLatencyTest.config" /> + <option name="enable-systrace" value="true" /> + </test> +</configuration> diff --git a/hwbinder_latency_test/passthrough/Android.mk b/hwbinder_latency_test/passthrough/Android.mk new file mode 100644 index 0000000..12ca61f --- /dev/null +++ b/hwbinder_latency_test/passthrough/Android.mk @@ -0,0 +1,22 @@ +# +# 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. +# +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := HwBinderPassthroughLatencyTest +VTS_CONFIG_SRC_DIR := testcases/performance/hwbinder_latency_test/passthrough +include test/vts/tools/build/Android.host_config.mk diff --git a/hwbinder_latency_test/passthrough/AndroidTest.xml b/hwbinder_latency_test/passthrough/AndroidTest.xml new file mode 100644 index 0000000..d6b8f86 --- /dev/null +++ b/hwbinder_latency_test/passthrough/AndroidTest.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 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 libhwbinder latency tests"> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"> + <option name="abort-on-push-failure" value="false" /> + <option name="push-group" value="HostDrivenTest.push" /> + <option name="cleanup" value="true" /> + <option name="push" value="DATA/lib/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/32/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/lib64/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/64/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/nativetest/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/32/libhwbinder_latency32" /> + <option name="push" value="DATA/nativetest64/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/64/libhwbinder_latency64" /> + <option name="push" value="DATA/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + <option name="push" value="DATA/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + </target_preparer> + <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"> + </target_preparer> + <test class="com.android.tradefed.testtype.VtsMultiDeviceTest"> + <option name="test-module-name" value="HwBinderPassthroughLatencyTest" /> + <option name="test-case-path" value="vts/testcases/performance/hwbinder_latency_test/HwBinderLatencyTest" /> + <option name="test-config-path" value="vts/testcases/performance/hwbinder_latency_test/passthrough/HwBinderPassthroughLatencyTest.config" /> + </test> +</configuration> diff --git a/hwbinder_latency_test/passthrough/HwBinderPassthroughLatencyTest.config b/hwbinder_latency_test/passthrough/HwBinderPassthroughLatencyTest.config new file mode 100644 index 0000000..54d9875 --- /dev/null +++ b/hwbinder_latency_test/passthrough/HwBinderPassthroughLatencyTest.config @@ -0,0 +1,3 @@ +{ + "hidl_hal_mode": "PASSTHROUGH" +} diff --git a/hwbinder_latency_test/passthrough_systrace/Android.mk b/hwbinder_latency_test/passthrough_systrace/Android.mk new file mode 100644 index 0000000..3a619e0 --- /dev/null +++ b/hwbinder_latency_test/passthrough_systrace/Android.mk @@ -0,0 +1,22 @@ +# +# 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. +# +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := HwBinderPassthroughLatencySystraceTest +VTS_CONFIG_SRC_DIR := testcases/performance/hwbinder_latency_test/passthrough_systrace +include test/vts/tools/build/Android.host_config.mk diff --git a/hwbinder_latency_test/passthrough_systrace/AndroidTest.xml b/hwbinder_latency_test/passthrough_systrace/AndroidTest.xml new file mode 100644 index 0000000..767abcb --- /dev/null +++ b/hwbinder_latency_test/passthrough_systrace/AndroidTest.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 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 libhwbinder latency tests with systrace"> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"> + <option name="abort-on-push-failure" value="false" /> + <option name="push-group" value="HostDrivenTest.push" /> + <option name="cleanup" value="true" /> + <option name="push" value="DATA/lib/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/32/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/lib64/android.hardware.tests.libhwbinder@1.0.so->/data/local/tmp/64/android.hardware.tests.libhwbinder@1.0.so" /> + <option name="push" value="DATA/nativetest/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/32/libhwbinder_latency32" /> + <option name="push" value="DATA/nativetest64/libhwbinder_latency/libhwbinder_latency->/data/local/tmp/64/libhwbinder_latency64" /> + <option name="push" value="DATA/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + <option name="push" value="DATA/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so->/vendor/lib64/hw/android.hardware.tests.libhwbinder@1.0-impl.so" /> + </target_preparer> + <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer"> + </target_preparer> + <test class="com.android.tradefed.testtype.VtsMultiDeviceTest"> + <option name="test-module-name" value="HwBinderPassthroughLatencySystraceTest" /> + <option name="test-case-path" value="vts/testcases/performance/hwbinder_latency_test/HwBinderLatencyTest" /> + <option name="test-config-path" value="vts/testcases/performance/hwbinder_latency_test/passthrough/HwBinderPassthroughLatencyTest.config" /> + <option name="enable-systrace" value="true" /> + </test> +</configuration> |