Skip to content

Commit 2b31307

Browse files
committed
Fix unit tests
1 parent 919f3d7 commit 2b31307

23 files changed

+345
-81
lines changed

firebase-perf/src/test/java/com/google/firebase/perf/FirebasePerfRegistrarTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.firebase.components.Dependency;
2525
import com.google.firebase.components.Qualified;
2626
import com.google.firebase.installations.FirebaseInstallationsApi;
27+
import com.google.firebase.perf.session.SessionManager;
2728
import com.google.firebase.remoteconfig.RemoteConfigComponent;
2829
import java.util.List;
2930
import java.util.concurrent.Executor;
@@ -39,13 +40,14 @@ public void testGetComponents() {
3940
FirebasePerfRegistrar firebasePerfRegistrar = new FirebasePerfRegistrar();
4041
List<Component<?>> components = firebasePerfRegistrar.getComponents();
4142

42-
assertThat(components).hasSize(3);
43+
assertThat(components).hasSize(4);
4344

4445
Component<?> firebasePerfComponent = components.get(0);
4546

4647
assertThat(firebasePerfComponent.getDependencies())
4748
.containsExactly(
4849
Dependency.required(FirebaseApp.class),
50+
Dependency.required(SessionManager.class),
4951
Dependency.requiredProvider(RemoteConfigComponent.class),
5052
Dependency.required(FirebaseInstallationsApi.class),
5153
Dependency.requiredProvider(TransportFactory.class),
@@ -59,6 +61,7 @@ public void testGetComponents() {
5961
.containsExactly(
6062
Dependency.required(Qualified.qualified(UiThread.class, Executor.class)),
6163
Dependency.required(FirebaseApp.class),
64+
Dependency.required(SessionManager.class),
6265
Dependency.optionalProvider(StartupTime.class));
6366

6467
assertThat(firebasePerfEarlyComponent.isLazy()).isFalse();

firebase-perf/src/test/java/com/google/firebase/perf/FirebasePerformanceTestBase.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ public class FirebasePerformanceTestBase {
5353
protected static final String FAKE_FIREBASE_PROJECT_ID = "fir-perftestapp";
5454

5555
protected Context appContext;
56+
protected SessionManager provideSessionManager() {
57+
return SessionManager.getInstance();
58+
}
5659

5760
@Before
5861
public void setUpFirebaseApp() {
@@ -85,19 +88,19 @@ protected static void forceSessionsFeatureDisabled() {
8588
ConfigResolver.getInstance().setMetadataBundle(new ImmutableBundle(bundle));
8689
}
8790

88-
protected static void forceVerboseSession() {
91+
protected void forceVerboseSession() {
8992
forceVerboseSessionWithSamplingPercentage(100);
9093
}
9194

92-
protected static void forceNonVerboseSession() {
95+
protected void forceNonVerboseSession() {
9396
forceVerboseSessionWithSamplingPercentage(0);
9497
}
9598

96-
private static void forceVerboseSessionWithSamplingPercentage(long samplingPercentage) {
99+
private void forceVerboseSessionWithSamplingPercentage(long samplingPercentage) {
97100
Bundle bundle = new Bundle();
98101
bundle.putFloat("sessions_sampling_percentage", samplingPercentage);
99102
ConfigResolver.getInstance().setMetadataBundle(new ImmutableBundle(bundle));
100103

101-
SessionManager.getInstance().setPerfSession(PerfSession.createWithId("sessionId"));
104+
provideSessionManager().setPerfSession(PerfSession.createWithId("sessionId"));
102105
}
103106
}

firebase-perf/src/test/java/com/google/firebase/perf/PerformanceTests.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,14 @@ import com.google.firebase.app
2626
import com.google.firebase.initialize
2727
import com.google.firebase.perf.FirebasePerformance.HttpMethod
2828
import com.google.firebase.perf.application.AppStateMonitor
29+
import com.google.firebase.perf.config.ConfigResolver
2930
import com.google.firebase.perf.metrics.HttpMetric
3031
import com.google.firebase.perf.metrics.Trace
3132
import com.google.firebase.perf.metrics.getTraceCounter
3233
import com.google.firebase.perf.metrics.getTraceCounterCount
34+
import com.google.firebase.perf.session.PerfSession
35+
import com.google.firebase.perf.session.SessionManager
36+
import com.google.firebase.perf.session.gauges.GaugeManager
3337
import com.google.firebase.perf.transport.TransportManager
3438
import com.google.firebase.perf.util.Clock
3539
import com.google.firebase.perf.util.Timer
@@ -47,6 +51,7 @@ import org.mockito.ArgumentMatchers.nullable
4751
import org.mockito.Captor
4852
import org.mockito.Mock
4953
import org.mockito.Mockito.doAnswer
54+
import org.mockito.Mockito.doReturn
5055
import org.mockito.Mockito.verify
5156
import org.mockito.Mockito.`when`
5257
import org.mockito.MockitoAnnotations.initMocks
@@ -103,8 +108,14 @@ class PerformanceTests : BaseTestCase() {
103108

104109
@Mock lateinit var mockClock: Clock
105110

111+
@Mock lateinit var mockGaugeManager: GaugeManager
112+
106113
@Mock lateinit var mockAppStateMonitor: AppStateMonitor
107114

115+
private val session = PerfSession("sessionId", Clock())
116+
117+
private lateinit var sessionManager: SessionManager
118+
108119
@Captor lateinit var argMetricCaptor: ArgumentCaptor<NetworkRequestMetric>
109120

110121
@Captor lateinit var argumentsCaptor: ArgumentCaptor<TraceMetric>
@@ -119,6 +130,9 @@ class PerformanceTests : BaseTestCase() {
119130
`when`(timerMock.getMicros()).thenReturn(1000L)
120131
`when`(timerMock.getDurationMicros()).thenReturn(2000L).thenReturn(3000L)
121132
doAnswer { Timer(currentTime) }.`when`(mockClock).getTime()
133+
134+
sessionManager = SessionManager(mockGaugeManager, session, mockAppStateMonitor)
135+
`when`(mockAppStateMonitor.sessionManager).thenReturn(sessionManager)
122136
}
123137

124138
@Test
@@ -129,7 +143,7 @@ class PerformanceTests : BaseTestCase() {
129143
@Test
130144
fun `httpMetric wrapper test `() {
131145
val metric =
132-
HttpMetric("https://www.google.com/", HttpMethod.GET, transportManagerMock, timerMock)
146+
HttpMetric("https://www.google.com/", HttpMethod.GET, transportManagerMock, timerMock, sessionManager)
133147
metric.trace { setHttpResponseCode(200) }
134148

135149
verify(transportManagerMock)

firebase-perf/src/test/java/com/google/firebase/perf/application/AppStateMonitorTest.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import com.google.firebase.perf.config.DeviceCacheManager;
4040
import com.google.firebase.perf.metrics.NetworkRequestMetricBuilder;
4141
import com.google.firebase.perf.metrics.Trace;
42+
import com.google.firebase.perf.session.PerfSession;
43+
import com.google.firebase.perf.session.SessionManager;
4244
import com.google.firebase.perf.session.gauges.GaugeManager;
4345
import com.google.firebase.perf.transport.TransportManager;
4446
import 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

Comments
 (0)