diff options
author | sungchul.park <sungchul.park@lge.com> | 2023-06-01 15:34:01 +0900 |
---|---|---|
committer | Hugo Drumond Jacob <hugojacob@google.com> | 2023-07-19 09:38:29 +0200 |
commit | 98a1d0817c57530b26dfd09296eca4c5d22ef888 (patch) | |
tree | 40aadc4b741c6446f06c1f678179fa3b5410e72a | |
parent | 741b68b82bfbcd72fa7a5e0ba8084bd7ce657f9f (diff) | |
download | perfetto-98a1d0817c57530b26dfd09296eca4c5d22ef888.tar.gz |
Temporarily enable traced for testing
The CDD doesn't enforce traced to be enabled (`persist.traced.enable`)
by default in all device types. In fact, only handheld is required to
have do to so.
Originally, the test assumes that traced is enabled by default, which
may not be true for all device types.
Improve that by temporarily enabling traced if it's not enabled, run
the tests and disable traces again if enabled by the test case.
Bug: 285215697
Change-Id: I3e93e4b93a0349fe3d9f790525ae61a0f484bc97
-rw-r--r-- | test/cts/Android.bp | 3 | ||||
-rw-r--r-- | test/cts/AndroidTest.xml | 11 | ||||
-rw-r--r-- | test/cts/perfetto_device_preparer.sh | 47 |
3 files changed, 61 insertions, 0 deletions
diff --git a/test/cts/Android.bp b/test/cts/Android.bp index 3958566c8..0631dbe46 100644 --- a/test/cts/Android.bp +++ b/test/cts/Android.bp @@ -52,4 +52,7 @@ cc_test { defaults: [ "perfetto_defaults", ], + data: [ + "perfetto_device_preparer.sh", + ], } diff --git a/test/cts/AndroidTest.xml b/test/cts/AndroidTest.xml index 2a9276c6a..82c2d3519 100644 --- a/test/cts/AndroidTest.xml +++ b/test/cts/AndroidTest.xml @@ -36,6 +36,17 @@ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"> <option name="run-command" value="setprop persist.traced_perf.enable 1" /> </target_preparer> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher"> + <option name="cleanup" value="true" /> + <option name="push" + value="perfetto_device_preparer.sh->/data/local/tests/perfetto_device_preparer.sh" /> + </target_preparer> + <target_preparer class="com.android.tradefed.targetprep.RunHostCommandTargetPreparer"> + <option name="host-setup-command" + value="adb -s $SERIAL shell sh /data/local/tests/perfetto_device_preparer.sh setup" /> + <option name="host-teardown-command" + value="adb -s $SERIAL shell sh /data/local/tests/perfetto_device_preparer.sh teardown" /> + </target_preparer> <test class="com.android.tradefed.testtype.GTest" > <option name="native-test-device-path" value="/data/local/tmp" /> <option name="module-name" value="CtsPerfettoTestCases" /> diff --git a/test/cts/perfetto_device_preparer.sh b/test/cts/perfetto_device_preparer.sh new file mode 100644 index 000000000..407cbdec3 --- /dev/null +++ b/test/cts/perfetto_device_preparer.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# +# Copyright 2023 - 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. + +# Setups the device before running perfetto tests. Recovers the state after the +# tests are done. The setup and the tead-down phases are distinguished via the +# first argument: [setup|teardown]. + +if [ "$1" != setup -a "$1" != teardown ]; then + echo "Usage: $0 [setup|teardown]" + exit 1 +fi + +# Only force persist.traced.enable=1 on automotive as other form factors +# might have to have traced enabled by default per the CDD. +if ! getprop ro.build.characteristics | grep -q automotive; then + exit 0 +fi + +# b/285215697: Set the persist.traced.enable during the test. +PROP=persist.traced.enable +SAVED=/data/local/tests/persist.traced.enable.saved +if [ "$1" = setup ]; then + if [ -n "$(getprop ${PROP})" ]; then + getprop ${PROP} > ${SAVED} + fi + setprop ${PROP} "1" +elif [ "$1" = teardown ]; then + if [ -e ${SAVED} ]; then + setprop ${PROP} $(cat ${SAVED}) + rm ${SAVED} + else + setprop ${PROP} "" + fi +fi |