|
38 | 38 | import com.google.firebase.perf.config.DeviceCacheManager;
|
39 | 39 | import com.google.firebase.perf.metrics.NetworkRequestMetricBuilder;
|
40 | 40 | import com.google.firebase.perf.metrics.Trace;
|
| 41 | +import com.google.firebase.perf.session.SessionManager; |
41 | 42 | import com.google.firebase.perf.session.gauges.GaugeManager;
|
42 | 43 | import com.google.firebase.perf.transport.TransportManager;
|
43 | 44 | import com.google.firebase.perf.util.Clock;
|
44 | 45 | import com.google.firebase.perf.util.Constants;
|
45 | 46 | import com.google.firebase.perf.util.ImmutableBundle;
|
46 | 47 | import com.google.firebase.perf.util.Timer;
|
47 | 48 | import com.google.firebase.perf.v1.ApplicationProcessState;
|
| 49 | +import com.google.firebase.perf.v1.PerfSession; |
48 | 50 | import com.google.firebase.perf.v1.TraceMetric;
|
49 | 51 | import com.google.testing.timing.FakeDirectExecutorService;
|
50 | 52 | import java.lang.ref.WeakReference;
|
@@ -766,6 +768,32 @@ public void appColdStart_singleSubscriberRegistersForMultipleTimes_oneCallbackIs
|
766 | 768 | verify(mockInitializer1, times(1)).onAppColdStart();
|
767 | 769 | }
|
768 | 770 |
|
| 771 | + @Test |
| 772 | + public void updatePerfSession_isAfterSendingForegroundOrBackgroundSession() { |
| 773 | + AppStateMonitor monitor = new AppStateMonitor(transportManager, clock); |
| 774 | + monitor.registerForAppState(SessionManager.getInstance().getAppStateCallback()); |
| 775 | + monitor.setStopTime(new Timer(currentTime)); |
| 776 | + monitor.setIsColdStart(false); |
| 777 | + // Mandatory due to circular dependencies of singletons AppStateMonitor and SessionManager |
| 778 | + AppStateMonitor.getInstance().setIsColdStart(false); |
| 779 | + |
| 780 | + // Foreground -> Background, sends _fs |
| 781 | + PerfSession currentSession = SessionManager.getInstance().perfSession().build(); |
| 782 | + monitor.onActivityResumed(activity1); |
| 783 | + |
| 784 | + verify(transportManager, times(1)).log(argTraceMetric.capture(), eq(FOREGROUND_BACKGROUND)); |
| 785 | + PerfSession sentSession = argTraceMetric.getValue().getPerfSessions(0); |
| 786 | + Assert.assertEquals(currentSession, sentSession); |
| 787 | + |
| 788 | + // Background -> Foreground, sends _bs |
| 789 | + currentSession = SessionManager.getInstance().perfSession().build(); |
| 790 | + monitor.onActivityStopped(activity1); |
| 791 | + |
| 792 | + verify(transportManager, times(2)).log(argTraceMetric.capture(), eq(FOREGROUND_BACKGROUND)); |
| 793 | + sentSession = argTraceMetric.getValue().getPerfSessions(0); |
| 794 | + Assert.assertEquals(currentSession, sentSession); |
| 795 | + } |
| 796 | + |
769 | 797 | private static Activity createFakeActivity(boolean isHardwareAccelerated) {
|
770 | 798 | ActivityController<Activity> fakeActivityController = Robolectric.buildActivity(Activity.class);
|
771 | 799 |
|
|
0 commit comments