aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsungchul.park <sungchul.park@lge.com>2023-06-01 15:34:01 +0900
committerHugo Drumond Jacob <hugojacob@google.com>2023-07-19 09:38:29 +0200
commit98a1d0817c57530b26dfd09296eca4c5d22ef888 (patch)
tree40aadc4b741c6446f06c1f678179fa3b5410e72a
parent741b68b82bfbcd72fa7a5e0ba8084bd7ce657f9f (diff)
downloadperfetto-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.bp3
-rw-r--r--test/cts/AndroidTest.xml11
-rw-r--r--test/cts/perfetto_device_preparer.sh47
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