diff options
-rw-r--r-- | apct-tests/perftests/core/Android.bp | 1 | ||||
-rw-r--r-- | apct-tests/perftests/core/src/android/os/TracePerfTest.java | 75 |
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; + } } |