Loading core/java/com/android/internal/protolog/ProtoLogDataSource.java +3 −3 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance, * @param onStartCallback The callback object to unregister. */ public void unregisterOnStartCallback(Instance.TracingInstanceStartCallback onStartCallback) { mOnStartCallbacks.add(onStartCallback); mOnStartCallbacks.remove(onStartCallback); } /** Loading @@ -167,7 +167,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance, * @param onFlushCallback The callback object to unregister. */ public void unregisterOnFlushCallback(Instance.TracingFlushCallback onFlushCallback) { mOnFlushCallbacks.add(onFlushCallback); mOnFlushCallbacks.remove(onFlushCallback); } /** Loading @@ -175,7 +175,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance, * @param onStopCallback The callback object to unregister. */ public void unregisterOnStopCallback(Instance.TracingInstanceStopCallback onStopCallback) { mOnStopCallbacks.add(onStopCallback); mOnStopCallbacks.remove(onStopCallback); } private synchronized void executeOnStartCallbacks(int instanceIdx, ProtoLogConfig config) { Loading tests/Tracing/src/com/android/internal/protolog/ProtologDataSourceTest.java +50 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,56 @@ public class ProtologDataSourceTest { Truth.assertThat(tlsState.getShouldCollectStacktrace("UNKNOWN_TAG")).isFalse(); } @Test public void registerAndUnregisterAllCallbacksSuccessfully() { final ProtoLogDataSource ds = new ProtoLogDataSource(); ProtoLogDataSource.Instance.TracingInstanceStartCallback mockStartCallback = Mockito.mock(ProtoLogDataSource.Instance.TracingInstanceStartCallback.class); // Updated type for mockFlushCallback ProtoLogDataSource.Instance.TracingFlushCallback mockFlushCallback = Mockito.mock(ProtoLogDataSource.Instance.TracingFlushCallback.class); ProtoLogDataSource.Instance.TracingInstanceStopCallback mockStopCallback = Mockito.mock(ProtoLogDataSource.Instance.TracingInstanceStopCallback.class); // Register all callbacks ds.registerOnStartCallback(mockStartCallback); ds.registerOnFlushCallback(mockFlushCallback); ds.registerOnStopCallback(mockStopCallback); // Simulate events to trigger callbacks ProtoLogDataSource.Instance instance1 = ds.createInstance(new ProtoInputStream( DataSourceConfigOuterClass.DataSourceConfig.newBuilder().build().toByteArray()), 0); instance1.onStart(Mockito.mock(android.tracing.perfetto.StartCallbackArguments.class)); instance1.onFlush(Mockito.mock(android.tracing.perfetto.FlushCallbackArguments.class)); instance1.onStop(Mockito.mock(android.tracing.perfetto.StopCallbackArguments.class)); // Verify callbacks were called once with correct methods and arguments Mockito.verify(mockStartCallback, Mockito.times(1)).onTracingInstanceStart(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); Mockito.verify(mockFlushCallback, Mockito.times(1)).onTracingFlush(); Mockito.verify(mockStopCallback, Mockito.times(1)).onTracingInstanceStop(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); // Unregister all callbacks ds.unregisterOnStartCallback(mockStartCallback); ds.unregisterOnFlushCallback(mockFlushCallback); ds.unregisterOnStopCallback(mockStopCallback); // Simulate events again ProtoLogDataSource.Instance instance2 = ds.createInstance(new ProtoInputStream( DataSourceConfigOuterClass.DataSourceConfig.newBuilder().build().toByteArray()), 1); instance2.onStart(Mockito.mock(android.tracing.perfetto.StartCallbackArguments.class)); instance2.onFlush(Mockito.mock(android.tracing.perfetto.FlushCallbackArguments.class)); instance2.onStop(Mockito.mock(android.tracing.perfetto.StopCallbackArguments.class)); // Verify callbacks were not called again (still only once in total) Mockito.verify(mockStartCallback, Mockito.times(1)).onTracingInstanceStart(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); Mockito.verify(mockFlushCallback, Mockito.times(1)).onTracingFlush(); Mockito.verify(mockStopCallback, Mockito.times(1)).onTracingInstanceStop(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); } private ProtoLogDataSource.TlsState createTlsState( DataSourceConfigOuterClass.DataSourceConfig config) { final ProtoLogDataSource ds = Mockito.spy(new ProtoLogDataSource()); Loading Loading
core/java/com/android/internal/protolog/ProtoLogDataSource.java +3 −3 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance, * @param onStartCallback The callback object to unregister. */ public void unregisterOnStartCallback(Instance.TracingInstanceStartCallback onStartCallback) { mOnStartCallbacks.add(onStartCallback); mOnStartCallbacks.remove(onStartCallback); } /** Loading @@ -167,7 +167,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance, * @param onFlushCallback The callback object to unregister. */ public void unregisterOnFlushCallback(Instance.TracingFlushCallback onFlushCallback) { mOnFlushCallbacks.add(onFlushCallback); mOnFlushCallbacks.remove(onFlushCallback); } /** Loading @@ -175,7 +175,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance, * @param onStopCallback The callback object to unregister. */ public void unregisterOnStopCallback(Instance.TracingInstanceStopCallback onStopCallback) { mOnStopCallbacks.add(onStopCallback); mOnStopCallbacks.remove(onStopCallback); } private synchronized void executeOnStartCallbacks(int instanceIdx, ProtoLogConfig config) { Loading
tests/Tracing/src/com/android/internal/protolog/ProtologDataSourceTest.java +50 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,56 @@ public class ProtologDataSourceTest { Truth.assertThat(tlsState.getShouldCollectStacktrace("UNKNOWN_TAG")).isFalse(); } @Test public void registerAndUnregisterAllCallbacksSuccessfully() { final ProtoLogDataSource ds = new ProtoLogDataSource(); ProtoLogDataSource.Instance.TracingInstanceStartCallback mockStartCallback = Mockito.mock(ProtoLogDataSource.Instance.TracingInstanceStartCallback.class); // Updated type for mockFlushCallback ProtoLogDataSource.Instance.TracingFlushCallback mockFlushCallback = Mockito.mock(ProtoLogDataSource.Instance.TracingFlushCallback.class); ProtoLogDataSource.Instance.TracingInstanceStopCallback mockStopCallback = Mockito.mock(ProtoLogDataSource.Instance.TracingInstanceStopCallback.class); // Register all callbacks ds.registerOnStartCallback(mockStartCallback); ds.registerOnFlushCallback(mockFlushCallback); ds.registerOnStopCallback(mockStopCallback); // Simulate events to trigger callbacks ProtoLogDataSource.Instance instance1 = ds.createInstance(new ProtoInputStream( DataSourceConfigOuterClass.DataSourceConfig.newBuilder().build().toByteArray()), 0); instance1.onStart(Mockito.mock(android.tracing.perfetto.StartCallbackArguments.class)); instance1.onFlush(Mockito.mock(android.tracing.perfetto.FlushCallbackArguments.class)); instance1.onStop(Mockito.mock(android.tracing.perfetto.StopCallbackArguments.class)); // Verify callbacks were called once with correct methods and arguments Mockito.verify(mockStartCallback, Mockito.times(1)).onTracingInstanceStart(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); Mockito.verify(mockFlushCallback, Mockito.times(1)).onTracingFlush(); Mockito.verify(mockStopCallback, Mockito.times(1)).onTracingInstanceStop(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); // Unregister all callbacks ds.unregisterOnStartCallback(mockStartCallback); ds.unregisterOnFlushCallback(mockFlushCallback); ds.unregisterOnStopCallback(mockStopCallback); // Simulate events again ProtoLogDataSource.Instance instance2 = ds.createInstance(new ProtoInputStream( DataSourceConfigOuterClass.DataSourceConfig.newBuilder().build().toByteArray()), 1); instance2.onStart(Mockito.mock(android.tracing.perfetto.StartCallbackArguments.class)); instance2.onFlush(Mockito.mock(android.tracing.perfetto.FlushCallbackArguments.class)); instance2.onStop(Mockito.mock(android.tracing.perfetto.StopCallbackArguments.class)); // Verify callbacks were not called again (still only once in total) Mockito.verify(mockStartCallback, Mockito.times(1)).onTracingInstanceStart(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); Mockito.verify(mockFlushCallback, Mockito.times(1)).onTracingFlush(); Mockito.verify(mockStopCallback, Mockito.times(1)).onTracingInstanceStop(Mockito.anyInt(), Mockito.any(ProtoLogDataSource.ProtoLogConfig.class)); } private ProtoLogDataSource.TlsState createTlsState( DataSourceConfigOuterClass.DataSourceConfig config) { final ProtoLogDataSource ds = Mockito.spy(new ProtoLogDataSource()); Loading