summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apct-tests/perftests/core/Android.bp1
-rw-r--r--apct-tests/perftests/core/src/android/os/TracePerfTest.java75
2 files changed, 76 insertions, 0 deletions
diff --git a/apct-tests/perftests/core/Android.bp b/apct-tests/perftests/core/Android.bp
index 1e299cdf8002..f16f2caccd49 100644
--- a/apct-tests/perftests/core/Android.bp
+++ b/apct-tests/perftests/core/Android.bp
@@ -50,6 +50,7 @@ android_test {
"junit-params",
"core-tests-support",
"guava",
+ "perfetto_trace_java_protos",
],
libs: ["android.test.base.stubs.system"],
diff --git a/apct-tests/perftests/core/src/android/os/TracePerfTest.java b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
index 0d64c390f4c2..bf7c96a3cb85 100644
--- a/apct-tests/perftests/core/src/android/os/TracePerfTest.java
+++ b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
@@ -17,6 +17,8 @@
package android.os;
+import static android.os.PerfettoTrace.Category;
+
import android.perftests.utils.BenchmarkState;
import android.perftests.utils.PerfStatusReporter;
import android.perftests.utils.ShellHelper;
@@ -31,19 +33,35 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import perfetto.protos.DataSourceConfigOuterClass.DataSourceConfig;
+import perfetto.protos.TraceConfigOuterClass.TraceConfig;
+import perfetto.protos.TraceConfigOuterClass.TraceConfig.BufferConfig;
+import perfetto.protos.TraceConfigOuterClass.TraceConfig.DataSource;
+import perfetto.protos.TrackEventConfigOuterClass.TrackEventConfig;
+
@RunWith(AndroidJUnit4.class)
public class TracePerfTest {
@Rule
public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+ private static final String FOO = "foo";
+ private static final Category FOO_CATEGORY = new Category(FOO);
+ private static PerfettoTrace.Session sPerfettoSession;
+
@BeforeClass
public static void startTracing() {
ShellHelper.runShellCommandRaw("atrace -c --async_start -a *");
+ PerfettoTrace.register(false /* isBackendInProcess */);
+ FOO_CATEGORY.register();
+ sPerfettoSession = new PerfettoTrace.Session(false /* isBackendInProcess */,
+ getTraceConfig(FOO).toByteArray());
}
@AfterClass
public static void endTracing() {
ShellHelper.runShellCommandRaw("atrace --async_stop");
+ FOO_CATEGORY.unregister();
+ sPerfettoSession.close();
}
@Before
@@ -84,4 +102,61 @@ public class TracePerfTest {
Trace.setCounter("testCounter", 123);
}
}
+
+ @Test
+ public void testInstant() {
+ Trace.instant(Trace.TRACE_TAG_APP, "testInstantA");
+
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ Trace.instant(Trace.TRACE_TAG_APP, "testInstantA");
+ }
+ }
+
+ @Test
+ public void testInstantPerfetto() {
+ PerfettoTrace.instant(FOO_CATEGORY, "testInstantP").emit();
+
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ PerfettoTrace.instant(FOO_CATEGORY, "testInstantP").emit();
+ }
+ }
+
+ @Test
+ public void testInstantPerfettoWithArgs() {
+ PerfettoTrace.instant(FOO_CATEGORY, "testInstantP")
+ .addArg("foo", "bar")
+ .addFlow(1)
+ .emit();
+
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ PerfettoTrace.instant(FOO_CATEGORY, "testInstantP")
+ .addArg("foo", "bar")
+ .addFlow(1)
+ .emit();
+ }
+ }
+
+ private static TraceConfig getTraceConfig(String cat) {
+ BufferConfig bufferConfig = BufferConfig.newBuilder().setSizeKb(1024).build();
+ TrackEventConfig trackEventConfig = TrackEventConfig
+ .newBuilder()
+ .addEnabledCategories(cat)
+ .build();
+ DataSourceConfig dsConfig = DataSourceConfig
+ .newBuilder()
+ .setName("track_event")
+ .setTargetBuffer(0)
+ .setTrackEventConfig(trackEventConfig)
+ .build();
+ DataSource ds = DataSource.newBuilder().setConfig(dsConfig).build();
+ TraceConfig traceConfig = TraceConfig
+ .newBuilder()
+ .addBuffers(bufferConfig)
+ .addDataSources(ds)
+ .build();
+ return traceConfig;
+ }
}