diff options
author | 2024-08-21 16:12:34 +0000 | |
---|---|---|
committer | 2024-08-21 16:12:34 +0000 | |
commit | 8d7d9e4ec068a58d678a5cd082fed8f0922db26f (patch) | |
tree | 1715605f681f1c363f3b601367da1434ff892f17 | |
parent | 528c9c00d05488ac540cb7d5fbbd0c74788ce1c6 (diff) | |
parent | b2c9c52e6a9b60d599e4508fa56ca6e7eed3ca78 (diff) |
Merge "Fix missing ProtoLog viewer config in some tracing instances" into main
-rw-r--r-- | core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java | 9 | ||||
-rw-r--r-- | tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java | 42 |
2 files changed, 44 insertions, 7 deletions
diff --git a/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java b/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java index 78b5cfed1771..49ed55dbdb9f 100644 --- a/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java +++ b/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java @@ -431,15 +431,10 @@ public class PerfettoProtoLogImpl extends IProtoLogClient.Stub implements IProto Log.d(LOG_TAG, "Dumping viewer config to trace"); - ProtoInputStream pis = mViewerConfigInputStreamProvider.getInputStream(); - - if (pis == null) { - Slog.w(LOG_TAG, "Failed to get viewer input stream."); - return; - } - mDataSource.trace(ctx -> { try { + ProtoInputStream pis = mViewerConfigInputStreamProvider.getInputStream(); + final ProtoOutputStream os = ctx.newTracePacket(); os.write(TIMESTAMP, SystemClock.elapsedRealtimeNanos()); diff --git a/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java b/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java index 4826f4241e2b..05a68e9649d4 100644 --- a/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java +++ b/tests/Internal/src/com/android/internal/protolog/PerfettoProtoLogImplTest.java @@ -756,6 +756,48 @@ public class PerfettoProtoLogImplTest { .isEqualTo("My null args: 0, 0, false"); } + @Test + public void handlesConcurrentTracingSessions() throws IOException { + PerfettoTraceMonitor traceMonitor1 = + PerfettoTraceMonitor.newBuilder().enableProtoLog(true) + .build(); + + PerfettoTraceMonitor traceMonitor2 = + PerfettoTraceMonitor.newBuilder().enableProtoLog(true) + .build(); + + final ResultWriter writer2 = new ResultWriter() + .forScenario(new ScenarioBuilder() + .forClass(createTempFile("temp", "").getName()).build()) + .withOutputDir(mTracingDirectory) + .setRunComplete(); + + try { + traceMonitor1.start(); + traceMonitor2.start(); + + mProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP, 1, + LogDataType.BOOLEAN, new Object[]{true}); + } finally { + traceMonitor1.stop(mWriter); + traceMonitor2.stop(writer2); + } + + final ResultReader reader = new ResultReader(mWriter.write(), mTraceConfig); + final ProtoLogTrace protologFromMonitor1 = reader.readProtoLogTrace(); + + final ResultReader reader2 = new ResultReader(writer2.write(), mTraceConfig); + final ProtoLogTrace protologFromMonitor2 = reader2.readProtoLogTrace(); + + Truth.assertThat(protologFromMonitor1.messages).hasSize(1); + Truth.assertThat(protologFromMonitor1.messages.get(0).getMessage()) + .isEqualTo("My Test Debug Log Message true"); + + Truth.assertThat(protologFromMonitor2.messages).hasSize(1); + Truth.assertThat(protologFromMonitor2.messages.get(0).getMessage()) + .isEqualTo("My Test Debug Log Message true"); + } + private enum TestProtoLogGroup implements IProtoLogGroup { TEST_GROUP(true, true, false, "TEST_TAG"); |