29
29
import com .google .firebase .crashlytics .internal .model .CrashlyticsReport .Session .Event .Application .Execution .Thread .Frame ;
30
30
import com .google .firebase .crashlytics .internal .model .ImmutableList ;
31
31
import com .google .firebase .crashlytics .internal .settings .Settings ;
32
+ import com .google .firebase .crashlytics .internal .settings .Settings .FeatureFlagData ;
32
33
import com .google .firebase .crashlytics .internal .settings .SettingsProvider ;
33
34
import java .io .IOException ;
34
35
import java .text .DecimalFormat ;
@@ -47,14 +48,17 @@ public class CrashlyticsReportPersistenceTest extends CrashlyticsTestCase {
47
48
private CrashlyticsReportPersistence reportPersistence ;
48
49
private FileStore fileStore ;
49
50
50
- private static SettingsProvider getSettingsMock (
51
+ private static SettingsProvider createSettingsProviderMock (
51
52
int maxCompleteSessionsCount , int maxCustomExceptionEvents ) {
53
+
52
54
SettingsProvider settingsProvider = mock (SettingsProvider .class );
53
- Settings settingsMock = mock ( Settings . class );
54
- Settings .SessionData sessionSettingsDataMock =
55
+
56
+ Settings .SessionData sessionData =
55
57
new Settings .SessionData (maxCustomExceptionEvents , maxCompleteSessionsCount );
56
- when (settingsMock .getSessionData ()).thenReturn (sessionSettingsDataMock );
57
- when (settingsProvider .getSettingsSync ()).thenReturn (settingsMock );
58
+ Settings settings =
59
+ new Settings (0 , sessionData , new FeatureFlagData (true , false ), 3 , 0 , 1.0 , 1.0 , 1 );
60
+
61
+ when (settingsProvider .getSettingsSync ()).thenReturn (settings );
58
62
return settingsProvider ;
59
63
}
60
64
@@ -63,7 +67,7 @@ public void setUp() throws Exception {
63
67
fileStore = new FileStore (getContext ());
64
68
reportPersistence =
65
69
new CrashlyticsReportPersistence (
66
- fileStore , getSettingsMock (VERY_LARGE_UPPER_LIMIT , VERY_LARGE_UPPER_LIMIT ));
70
+ fileStore , createSettingsProviderMock (VERY_LARGE_UPPER_LIMIT , VERY_LARGE_UPPER_LIMIT ));
67
71
}
68
72
69
73
public void testListSortedOpenSessionIds () {
@@ -269,7 +273,8 @@ public void testFinalizeReports_skipsCappingCurrentSession() throws IOException
269
273
270
274
public void testFinalizeReports_capsReports () {
271
275
reportPersistence =
272
- new CrashlyticsReportPersistence (fileStore , getSettingsMock (4 , VERY_LARGE_UPPER_LIMIT ));
276
+ new CrashlyticsReportPersistence (
277
+ fileStore , createSettingsProviderMock (4 , VERY_LARGE_UPPER_LIMIT ));
273
278
for (int i = 0 ; i < 10 ; i ++) {
274
279
persistReportWithEvent (reportPersistence , "testSession" + i , true );
275
280
}
@@ -283,13 +288,16 @@ public void testFinalizeReports_capsReports() {
283
288
284
289
public void testFinalizeReports_whenSettingsChanges_capsReports () throws IOException {
285
290
SettingsProvider settingsProvider = mock (SettingsProvider .class );
286
- Settings settingsMock = mock (Settings .class );
287
- Settings .SessionData sessionSettingsDataMock =
288
- new Settings .SessionData (VERY_LARGE_UPPER_LIMIT , 4 );
289
- Settings .SessionData sessionSettingsDataMockDifferentValues =
290
- new Settings .SessionData (VERY_LARGE_UPPER_LIMIT , 8 );
291
- when (settingsMock .getSessionData ()).thenReturn (sessionSettingsDataMock );
292
- when (settingsProvider .getSettingsSync ()).thenReturn (settingsMock );
291
+
292
+ Settings .SessionData sessionData1 = new Settings .SessionData (VERY_LARGE_UPPER_LIMIT , 4 );
293
+ Settings .SessionData sessionData2 = new Settings .SessionData (VERY_LARGE_UPPER_LIMIT , 8 );
294
+
295
+ Settings settings1 =
296
+ new Settings (0 , sessionData1 , new FeatureFlagData (true , true ), 3 , 0 , 1.0 , 1.0 , 1 );
297
+ Settings settings2 =
298
+ new Settings (0 , sessionData2 , new FeatureFlagData (true , true ), 3 , 0 , 1.0 , 1.0 , 1 );
299
+
300
+ when (settingsProvider .getSettingsSync ()).thenReturn (settings1 );
293
301
reportPersistence = new CrashlyticsReportPersistence (fileStore , settingsProvider );
294
302
295
303
DecimalFormat format = new DecimalFormat ("00" );
@@ -301,7 +309,7 @@ public void testFinalizeReports_whenSettingsChanges_capsReports() throws IOExcep
301
309
List <CrashlyticsReportWithSessionId > finalizedReports =
302
310
reportPersistence .loadFinalizedReports ();
303
311
assertEquals (4 , finalizedReports .size ());
304
- when (settingsMock . getSessionData ()).thenReturn (sessionSettingsDataMockDifferentValues );
312
+ when (settingsProvider . getSettingsSync ()).thenReturn (settings2 );
305
313
306
314
for (int i = 16 ; i < 32 ; i ++) {
307
315
persistReportWithEvent (reportPersistence , "testSession" + i , true );
@@ -315,7 +323,8 @@ public void testFinalizeReports_whenSettingsChanges_capsReports() throws IOExcep
315
323
316
324
public void testFinalizeReports_removesLowPriorityReportsFirst () throws IOException {
317
325
reportPersistence =
318
- new CrashlyticsReportPersistence (fileStore , getSettingsMock (4 , VERY_LARGE_UPPER_LIMIT ));
326
+ new CrashlyticsReportPersistence (
327
+ fileStore , createSettingsProviderMock (4 , VERY_LARGE_UPPER_LIMIT ));
319
328
320
329
for (int i = 0 ; i < 10 ; i ++) {
321
330
boolean priority = i >= 3 && i <= 8 ;
@@ -337,7 +346,8 @@ public void testFinalizeReports_prioritizesNativeAndNonnativeFatals() throws IOE
337
346
338
347
CrashlyticsReport .FilesPayload filesPayload = makeFilePayload ();
339
348
reportPersistence =
340
- new CrashlyticsReportPersistence (fileStore , getSettingsMock (4 , VERY_LARGE_UPPER_LIMIT ));
349
+ new CrashlyticsReportPersistence (
350
+ fileStore , createSettingsProviderMock (4 , VERY_LARGE_UPPER_LIMIT ));
341
351
342
352
persistReportWithEvent (reportPersistence , "testSession1" , true );
343
353
reportPersistence .finalizeSessionWithNativeEvent ("testSession1" , filesPayload );
@@ -359,7 +369,8 @@ public void testFinalizeReports_prioritizesNativeAndNonnativeFatals() throws IOE
359
369
360
370
public void testFinalizeReports_removesOldestReportsFirst () throws IOException {
361
371
reportPersistence =
362
- new CrashlyticsReportPersistence (fileStore , getSettingsMock (4 , VERY_LARGE_UPPER_LIMIT ));
372
+ new CrashlyticsReportPersistence (
373
+ fileStore , createSettingsProviderMock (4 , VERY_LARGE_UPPER_LIMIT ));
363
374
for (int i = 0 ; i < 8 ; i ++) {
364
375
String sessionId = "testSession" + i ;
365
376
persistReportWithEvent (reportPersistence , sessionId , true );
@@ -507,7 +518,8 @@ public void testDeleteAllReports_removesAllReports() {
507
518
508
519
public void testPersistEvent_keepsAppropriateNumberOfMostRecentEvents () throws IOException {
509
520
reportPersistence =
510
- new CrashlyticsReportPersistence (fileStore , getSettingsMock (VERY_LARGE_UPPER_LIMIT , 4 ));
521
+ new CrashlyticsReportPersistence (
522
+ fileStore , createSettingsProviderMock (VERY_LARGE_UPPER_LIMIT , 4 ));
511
523
final String sessionId = "testSession" ;
512
524
final CrashlyticsReport testReport = makeTestReport (sessionId );
513
525
final CrashlyticsReport .Session .Event testEvent1 = makeTestEvent ("type1" , "reason1" );
@@ -542,13 +554,15 @@ public void testPersistEvent_keepsAppropriateNumberOfMostRecentEvents() throws I
542
554
public void testPersistEvent_whenSettingsChanges_keepsAppropriateNumberOfMostRecentEvents ()
543
555
throws IOException {
544
556
SettingsProvider settingsProvider = mock (SettingsProvider .class );
545
- Settings settingsMock = mock (Settings .class );
546
- Settings .SessionData sessionSettingsDataMock =
547
- new Settings .SessionData (4 , VERY_LARGE_UPPER_LIMIT );
548
- Settings .SessionData sessionSettingsDataMockDifferentValues =
549
- new Settings .SessionData (8 , VERY_LARGE_UPPER_LIMIT );
550
- when (settingsMock .getSessionData ()).thenReturn (sessionSettingsDataMock );
551
- when (settingsProvider .getSettingsSync ()).thenReturn (settingsMock );
557
+ Settings .SessionData sessionData1 = new Settings .SessionData (4 , VERY_LARGE_UPPER_LIMIT );
558
+ Settings .SessionData sessionData2 = new Settings .SessionData (8 , VERY_LARGE_UPPER_LIMIT );
559
+
560
+ Settings settings1 =
561
+ new Settings (0 , sessionData1 , new FeatureFlagData (true , true ), 3 , 0 , 1.0 , 1.0 , 1 );
562
+ Settings settings2 =
563
+ new Settings (0 , sessionData2 , new FeatureFlagData (true , true ), 3 , 0 , 1.0 , 1.0 , 1 );
564
+
565
+ when (settingsProvider .getSettingsSync ()).thenReturn (settings1 );
552
566
reportPersistence = new CrashlyticsReportPersistence (fileStore , settingsProvider );
553
567
554
568
final String sessionId = "testSession" ;
@@ -581,7 +595,7 @@ public void testPersistEvent_whenSettingsChanges_keepsAppropriateNumberOfMostRec
581
595
.withEvents (ImmutableList .from (testEvent2 , testEvent3 , testEvent4 , testEvent5 )),
582
596
finalizedReport );
583
597
584
- when (settingsMock . getSessionData ()).thenReturn (sessionSettingsDataMockDifferentValues );
598
+ when (settingsProvider . getSettingsSync ()).thenReturn (settings2 );
585
599
586
600
final CrashlyticsReport .Session .Event testEvent6 = makeTestEvent ("type6" , "reason6" );
587
601
final CrashlyticsReport .Session .Event testEvent7 = makeTestEvent ("type7" , "reason7" );
@@ -630,7 +644,8 @@ public void testPersistEvent_whenSettingsChanges_keepsAppropriateNumberOfMostRec
630
644
631
645
public void testPersistReportWithAnrEvent () throws IOException {
632
646
reportPersistence =
633
- new CrashlyticsReportPersistence (fileStore , getSettingsMock (VERY_LARGE_UPPER_LIMIT , 4 ));
647
+ new CrashlyticsReportPersistence (
648
+ fileStore , createSettingsProviderMock (VERY_LARGE_UPPER_LIMIT , 4 ));
634
649
final String sessionId = "testSession" ;
635
650
final CrashlyticsReport testReport = makeTestReport (sessionId );
636
651
final Event testEvent = makeTestAnrEvent ();
0 commit comments