1616
1717import static com .google .common .truth .Truth .assertThat ;
1818import static org .mockito .ArgumentMatchers .any ;
19- import static org .mockito .ArgumentMatchers .anyString ;
20- import static org .mockito .ArgumentMatchers .eq ;
21- import static org .mockito .ArgumentMatchers .nullable ;
2219import static org .mockito .Mockito .mock ;
2320import static org .mockito .Mockito .never ;
2421import static org .mockito .Mockito .spy ;
4037import org .junit .Before ;
4138import org .junit .Test ;
4239import org .junit .runner .RunWith ;
43- import org .mockito .AdditionalMatchers ;
4440import org .mockito .ArgumentMatchers ;
4541import org .mockito .InOrder ;
4642import org .mockito .Mock ;
@@ -86,101 +82,12 @@ public void setApplicationContext_initializeGaugeMetadataManager()
8682 inOrder .verify (mockGaugeManager ).initializeGaugeMetadataManager (any ());
8783 }
8884
89- @ Test
90- public void testOnUpdateAppStateDoesNothingDuringAppStart () {
91- String oldSessionId = SessionManager .getInstance ().perfSession ().sessionId ();
92-
93- assertThat (oldSessionId ).isNotNull ();
94- assertThat (oldSessionId ).isEqualTo (SessionManager .getInstance ().perfSession ().sessionId ());
95-
96- AppStateMonitor .getInstance ().setIsColdStart (true );
97-
98- SessionManager .getInstance ().onUpdateAppState (ApplicationProcessState .FOREGROUND );
99- assertThat (oldSessionId ).isEqualTo (SessionManager .getInstance ().perfSession ().sessionId ());
100- }
101-
102- @ Test
103- public void testOnUpdateAppStateGeneratesNewSessionIdOnForegroundState () {
104- String oldSessionId = SessionManager .getInstance ().perfSession ().sessionId ();
105-
106- assertThat (oldSessionId ).isNotNull ();
107- assertThat (oldSessionId ).isEqualTo (SessionManager .getInstance ().perfSession ().sessionId ());
108-
109- SessionManager .getInstance ().onUpdateAppState (ApplicationProcessState .FOREGROUND );
110- assertThat (oldSessionId ).isNotEqualTo (SessionManager .getInstance ().perfSession ().sessionId ());
111- }
112-
113- @ Test
114- public void testOnUpdateAppStateDoesntGenerateNewSessionIdOnBackgroundState () {
115- String oldSessionId = SessionManager .getInstance ().perfSession ().sessionId ();
116-
117- assertThat (oldSessionId ).isNotNull ();
118- assertThat (oldSessionId ).isEqualTo (SessionManager .getInstance ().perfSession ().sessionId ());
119-
120- SessionManager .getInstance ().onUpdateAppState (ApplicationProcessState .BACKGROUND );
121- assertThat (oldSessionId ).isEqualTo (SessionManager .getInstance ().perfSession ().sessionId ());
122- }
123-
124- @ Test
125- public void testOnUpdateAppStateGeneratesNewSessionIdOnBackgroundStateIfPerfSessionExpires () {
126- when (mockPerfSession .isSessionRunningTooLong ()).thenReturn (true );
127- SessionManager testSessionManager =
128- new SessionManager (mockGaugeManager , mockPerfSession , mockAppStateMonitor );
129- String oldSessionId = testSessionManager .perfSession ().sessionId ();
130-
131- assertThat (oldSessionId ).isNotNull ();
132- assertThat (oldSessionId ).isEqualTo (testSessionManager .perfSession ().sessionId ());
133-
134- testSessionManager .onUpdateAppState (ApplicationProcessState .BACKGROUND );
135- assertThat (oldSessionId ).isNotEqualTo (testSessionManager .perfSession ().sessionId ());
136- }
137-
138- @ Test
139- public void
140- testOnUpdateAppStateDoesntMakeGaugeManagerLogGaugeMetadataOnForegroundStateIfSessionIsNonVerbose () {
141- forceNonVerboseSession ();
142-
143- SessionManager testSessionManager =
144- new SessionManager (mockGaugeManager , mockPerfSession , mockAppStateMonitor );
145- testSessionManager .onUpdateAppState (ApplicationProcessState .FOREGROUND );
146-
147- verify (mockGaugeManager , never ())
148- .logGaugeMetadata (
149- anyString (), nullable (com .google .firebase .perf .v1 .ApplicationProcessState .class ));
150- }
151-
152- @ Test
153- public void
154- testOnUpdateAppStateDoesntMakeGaugeManagerLogGaugeMetadataOnBackgroundStateEvenIfSessionIsVerbose () {
155- forceVerboseSession ();
156-
157- SessionManager testSessionManager =
158- new SessionManager (mockGaugeManager , mockPerfSession , mockAppStateMonitor );
159- testSessionManager .onUpdateAppState (ApplicationProcessState .BACKGROUND );
160-
161- verify (mockGaugeManager , never ())
162- .logGaugeMetadata (
163- anyString (), nullable (com .google .firebase .perf .v1 .ApplicationProcessState .class ));
164- }
165-
166- @ Test
167- public void testOnUpdateAppStateMakesGaugeManagerStartCollectingGaugesIfSessionIsVerbose () {
168- forceVerboseSession ();
169-
170- SessionManager testSessionManager =
171- new SessionManager (mockGaugeManager , mockPerfSession , mockAppStateMonitor );
172- testSessionManager .onUpdateAppState (ApplicationProcessState .FOREGROUND );
173-
174- verify (mockGaugeManager )
175- .startCollectingGauges (AdditionalMatchers .not (eq (mockPerfSession )), any ());
176- }
177-
17885 // LogGaugeData on new perf session when Verbose
17986 // NotLogGaugeData on new perf session when not Verbose
18087 // Mark Session as expired after time limit.
18188
18289 @ Test
183- public void testOnUpdateAppStateMakesGaugeManagerStopCollectingGaugesIfSessionIsNonVerbose () {
90+ public void testUpdatePerfSessionMakesGaugeManagerStopCollectingGaugesIfSessionIsNonVerbose () {
18491 forceNonVerboseSession ();
18592
18693 SessionManager testSessionManager =
@@ -191,7 +98,7 @@ public void testOnUpdateAppStateMakesGaugeManagerStopCollectingGaugesIfSessionIs
19198 }
19299
193100 @ Test
194- public void testOnUpdateAppStateMakesGaugeManagerStopCollectingGaugesWhenSessionsDisabled () {
101+ public void testUpdatePerfSessionMakesGaugeManagerStopCollectingGaugesWhenSessionsDisabled () {
195102 forceSessionsFeatureDisabled ();
196103
197104 SessionManager testSessionManager =
@@ -221,22 +128,25 @@ public void testSessionIdDoesNotUpdateIfPerfSessionRunsTooLong() {
221128 }
222129
223130 @ Test
224- public void testPerfSessionExpiredMakesGaugeManagerStopsCollectingGaugesIfSessionIsVerbose () {
225- forceVerboseSession ();
131+ public void testUpdatePerfSessionStartsCollectingGaugesIfSessionIsVerbose () {
226132 Timer mockTimer = mock (Timer .class );
227133 when (mockClock .getTime ()).thenReturn (mockTimer );
134+ when (mockAppStateMonitor .getAppState ()).thenReturn (ApplicationProcessState .FOREGROUND );
228135
229- PerfSession session = new PerfSession ("sessionId" , mockClock );
230- SessionManager testSessionManager =
231- new SessionManager (mockGaugeManager , session , mockAppStateMonitor );
136+ PerfSession previousSession = new PerfSession ("previousSession" , mockClock );
137+ previousSession .setGaugeAndEventCollectionEnabled (false );
232138
233- assertThat (session .isSessionRunningTooLong ()).isFalse ();
139+ PerfSession newSession = new PerfSession ("newSession" , mockClock );
140+ newSession .setGaugeAndEventCollectionEnabled (true );
234141
235- when (mockTimer .getDurationMicros ())
236- .thenReturn (TimeUnit .HOURS .toMicros (5 )); // Default Max Session Length is 4 hours
142+ SessionManager testSessionManager =
143+ new SessionManager (mockGaugeManager , previousSession , mockAppStateMonitor );
144+ testSessionManager .updatePerfSession (newSession );
145+ testSessionManager .setApplicationContext (mockApplicationContext );
237146
238- assertThat (session .isSessionRunningTooLong ()).isTrue ();
239- verify (mockGaugeManager , times (0 )).logGaugeMetadata (any (), any ());
147+ verify (mockGaugeManager , times (1 )).initializeGaugeMetadataManager (mockApplicationContext );
148+ verify (mockGaugeManager , times (1 ))
149+ .startCollectingGauges (newSession , ApplicationProcessState .FOREGROUND );
240150 }
241151
242152 @ Test
0 commit comments