3939import com .google .firebase .perf .config .DeviceCacheManager ;
4040import com .google .firebase .perf .metrics .NetworkRequestMetricBuilder ;
4141import com .google .firebase .perf .metrics .Trace ;
42+ import com .google .firebase .perf .session .PerfSession ;
43+ import com .google .firebase .perf .session .SessionManager ;
4244import com .google .firebase .perf .session .gauges .GaugeManager ;
4345import com .google .firebase .perf .transport .TransportManager ;
4446import com .google .firebase .perf .util .Clock ;
@@ -72,6 +74,12 @@ public class AppStateMonitorTest extends FirebasePerformanceTestBase {
7274
7375 @ Captor private ArgumentCaptor <TraceMetric > argTraceMetric ;
7476
77+ @ Mock private GaugeManager mockGaugeManager ;
78+ @ Mock private AppStateMonitor mockAppStateMonitor ;
79+ private PerfSession session = new PerfSession ("sessionId" , new Clock ());
80+ private SessionManager sessionManager =
81+ new SessionManager (mockGaugeManager , session , mockAppStateMonitor );
82+
7583 private long currentTime = 0 ;
7684
7785 private Activity activity1 ;
@@ -96,6 +104,7 @@ public void setUp() {
96104 @ Test
97105 public void foregroundBackgroundEvent_activityStateChanges_fgBgEventsCreated () {
98106 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
107+ monitor .setSessionManager (sessionManager );
99108 // activity1 comes to foreground.
100109 currentTime = 1 ;
101110 monitor .incrementCount ("counter1" , 10 );
@@ -156,6 +165,7 @@ public void foregroundBackgroundEvent_activityStateChanges_fgBgEventsCreated() {
156165 @ Test
157166 public void testIncrementCount () {
158167 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
168+ monitor .setSessionManager (sessionManager );
159169
160170 monitor .incrementCount ("counter1" , 10 );
161171 monitor .incrementCount ("counter2" , 20 );
@@ -176,6 +186,7 @@ public void testIncrementCount() {
176186 @ Test
177187 public void testTwoActivities () {
178188 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
189+ monitor .setSessionManager (sessionManager );
179190 // activity1 comes to foreground.
180191 currentTime = 1 ;
181192 monitor .onActivityResumed (activity1 );
@@ -250,6 +261,7 @@ public void testTwoActivities() {
250261 @ Test
251262 public void testAppStateCallbackWithTrace () {
252263 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
264+ monitor .setSessionManager (sessionManager );
253265 Trace trace = new Trace ("TRACE_1" , transportManager , clock , monitor );
254266 // Trace is not started yet, default state is APPLICATION_PROCESS_STATE_UNKNOWN
255267 Assert .assertEquals (
@@ -289,10 +301,11 @@ public void testAppStateCallbackWithTrace() {
289301 @ Test
290302 public void testAppStateCallbackWithNetworkRequestMetricBuilder () {
291303 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
304+ monitor .setSessionManager (sessionManager );
292305 // registerForAppState() is called by NetworkRequestMetricBuilder's constructor.
293306 NetworkRequestMetricBuilder builder =
294307 new NetworkRequestMetricBuilder (
295- mock (TransportManager .class ), monitor , mock (GaugeManager .class ));
308+ mock (TransportManager .class ), monitor , mock (GaugeManager .class ), sessionManager );
296309 Assert .assertEquals (ApplicationProcessState .BACKGROUND , builder .getAppState ());
297310 // activity1 comes to foreground.
298311 currentTime = 1 ;
@@ -320,6 +333,7 @@ public void testAppStateCallbackWithNetworkRequestMetricBuilder() {
320333 @ Test
321334 public void testRegisterActivityLifecycleCallbacks () {
322335 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
336+ monitor .setSessionManager (sessionManager );
323337 Context context = mock (Context .class );
324338 Application application = mock (Application .class );
325339 when (context .getApplicationContext ()).thenReturn (application );
@@ -334,6 +348,7 @@ public void testRegisterActivityLifecycleCallbacks() {
334348 @ Test
335349 public void testUnregisterActivityLifecycleCallbacks () {
336350 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
351+ monitor .setSessionManager (sessionManager );
337352 Context context = mock (Context .class );
338353 Application application = mock (Application .class );
339354 when (context .getApplicationContext ()).thenReturn (application );
@@ -346,6 +361,7 @@ public void testUnregisterActivityLifecycleCallbacks() {
346361 @ Test
347362 public void testUnregisterActivityLifecycleCallbacksBeforeItWasRegistered () {
348363 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
364+ monitor .setSessionManager (sessionManager );
349365 Context context = mock (Context .class );
350366 Application application = mock (Application .class );
351367 when (context .getApplicationContext ()).thenReturn (application );
@@ -357,6 +373,7 @@ public void testUnregisterActivityLifecycleCallbacksBeforeItWasRegistered() {
357373 @ Test
358374 public void screenTrace_twoActivities_traceStartedAndStoppedWithActivityLifecycle () {
359375 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
376+ monitor .setSessionManager (sessionManager );
360377
361378 Activity [] arr = {activity1 , activity2 };
362379 for (int i = 0 ; i < arr .length ; ++i ) {
@@ -376,6 +393,7 @@ public void screenTrace_twoActivities_traceStartedAndStoppedWithActivityLifecycl
376393 @ Test
377394 public void screenTrace_noHardwareAccelerated_noExceptionThrown () {
378395 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
396+ monitor .setSessionManager (sessionManager );
379397 Activity activityWithNonHardwareAcceleratedView =
380398 createFakeActivity (/* isHardwareAccelerated= */ false );
381399
@@ -388,6 +406,7 @@ public void screenTrace_noHardwareAccelerated_noExceptionThrown() {
388406 @ Test
389407 public void screenTrace_perfMonDisabledAtBuildTime_traceNotCreated () {
390408 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
409+ monitor .setSessionManager (sessionManager );
391410 Activity activityWithNonHardwareAcceleratedView =
392411 createFakeActivity (/* isHardwareAccelerated= */ true );
393412
@@ -404,6 +423,7 @@ public void screenTrace_perfMonDisabledAtBuildTime_traceNotCreated() {
404423 @ Test
405424 public void screenTrace_perfMonEnabledSwitchAtRuntime_traceCreationDependsOnRuntime () {
406425 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
426+ monitor .setSessionManager (sessionManager );
407427 Activity activityWithNonHardwareAcceleratedView =
408428 createFakeActivity (/* isHardwareAccelerated= */ true );
409429
@@ -436,6 +456,7 @@ public void screenTrace_perfMonEnabledSwitchAtRuntime_traceCreationDependsOnRunt
436456 @ Test
437457 public void screenTrace_perfMonDeactivated_traceNotCreated () {
438458 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
459+ monitor .setSessionManager (sessionManager );
439460 Activity activityWithNonHardwareAcceleratedView =
440461 createFakeActivity (/* isHardwareAccelerated= */ true );
441462 ConfigResolver configResolver = ConfigResolver .getInstance ();
@@ -458,6 +479,7 @@ public void screenTrace_perfMonDeactivated_traceNotCreated() {
458479 @ Test
459480 public void foregroundTrace_perfMonDisabledAtRuntime_traceNotCreated () {
460481 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
482+ monitor .setSessionManager (sessionManager );
461483
462484 // activity1 comes to foreground.
463485 currentTime = 1 ;
@@ -488,6 +510,7 @@ public void foregroundTrace_perfMonDisabledAtRuntime_traceNotCreated() {
488510 @ Test
489511 public void foregroundTrace_perfMonEnabledAtRuntime_traceCreated () {
490512 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
513+ monitor .setSessionManager (sessionManager );
491514
492515 // Firebase Performance is disabled at build time.
493516 Bundle bundle = new Bundle ();
@@ -525,6 +548,7 @@ public void foregroundTrace_perfMonEnabledAtRuntime_traceCreated() {
525548 @ Test
526549 public void foregroundTrace_perfMonDeactivated_traceCreated () {
527550 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
551+ monitor .setSessionManager (sessionManager );
528552
529553 // Firebase Performance is deactivated at build time.
530554 Bundle bundle = new Bundle ();
@@ -560,6 +584,7 @@ public void foregroundTrace_perfMonDeactivated_traceCreated() {
560584 @ Test
561585 public void backgroundTrace_perfMonDisabledAtRuntime_traceNotCreated () {
562586 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
587+ monitor .setSessionManager (sessionManager );
563588
564589 // activity1 comes to background.
565590 currentTime = 1 ;
@@ -593,6 +618,7 @@ public void backgroundTrace_perfMonDisabledAtRuntime_traceNotCreated() {
593618 @ Test
594619 public void backgroundTrace_perfMonEnabledAtRuntime_traceCreated () {
595620 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
621+ monitor .setSessionManager (sessionManager );
596622
597623 // Firebase Performance is disabled at build time.
598624 Bundle bundle = new Bundle ();
@@ -631,6 +657,7 @@ public void backgroundTrace_perfMonEnabledAtRuntime_traceCreated() {
631657 @ Test
632658 public void backgroundTrace_perfMonDeactivated_traceCreated () {
633659 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
660+ monitor .setSessionManager (sessionManager );
634661
635662 // Firebase Performance is deactivated at build time.
636663 Bundle bundle = new Bundle ();
@@ -667,6 +694,7 @@ public void backgroundTrace_perfMonDeactivated_traceCreated() {
667694 @ Test
668695 public void activityStateChanges_singleSubscriber_callbackIsCalled () {
669696 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
697+ monitor .setSessionManager (sessionManager );
670698 Map <Integer , ApplicationProcessState > subscriberState = new HashMap <>();
671699
672700 // Register callbacks, but note that each callback is saved in a local variable. Otherwise
@@ -687,6 +715,7 @@ public void activityStateChanges_singleSubscriber_callbackIsCalled() {
687715 @ Test
688716 public void activityStateChanges_multipleSubscribers_callbackCalledOnEachSubscriber () {
689717 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
718+ monitor .setSessionManager (sessionManager );
690719 Map <Integer , ApplicationProcessState > subscriberState = new HashMap <>();
691720
692721 // Register callbacks, but note that each callback is saved in a local variable. Otherwise
@@ -719,6 +748,7 @@ public void activityStateChanges_multipleSubscribers_callbackCalledOnEachSubscri
719748 @ Test
720749 public void appColdStart_singleSubscriber_callbackIsCalled () {
721750 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
751+ monitor .setSessionManager (sessionManager );
722752 FirebasePerformanceInitializer mockInitializer = mock (FirebasePerformanceInitializer .class );
723753 monitor .registerForAppColdStart (mockInitializer );
724754
@@ -730,6 +760,7 @@ public void appColdStart_singleSubscriber_callbackIsCalled() {
730760 @ Test
731761 public void appHotStart_singleSubscriber_callbackIsNotCalled () {
732762 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
763+ monitor .setSessionManager (sessionManager );
733764 FirebasePerformanceInitializer mockInitializer = mock (FirebasePerformanceInitializer .class );
734765 monitor .registerForAppColdStart (mockInitializer );
735766
@@ -748,6 +779,7 @@ public void appHotStart_singleSubscriber_callbackIsNotCalled() {
748779 @ Test
749780 public void appColdStart_multipleSubscriber_callbackIsCalled () {
750781 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
782+ monitor .setSessionManager (sessionManager );
751783 FirebasePerformanceInitializer mockInitializer1 = mock (FirebasePerformanceInitializer .class );
752784 FirebasePerformanceInitializer mockInitializer2 = mock (FirebasePerformanceInitializer .class );
753785 monitor .registerForAppColdStart (mockInitializer1 );
@@ -762,6 +794,7 @@ public void appColdStart_multipleSubscriber_callbackIsCalled() {
762794 @ Test
763795 public void appColdStart_singleSubscriberRegistersForMultipleTimes_oneCallbackIsCalled () {
764796 AppStateMonitor monitor = new AppStateMonitor (transportManager , clock );
797+ monitor .setSessionManager (sessionManager );
765798 FirebasePerformanceInitializer mockInitializer1 = mock (FirebasePerformanceInitializer .class );
766799 monitor .registerForAppColdStart (mockInitializer1 );
767800 monitor .registerForAppColdStart (mockInitializer1 );
0 commit comments