Skip to content

Commit 4fe7179

Browse files
authored
fix: flaky FIRCLSSettingsTests.m (#15623)
1 parent b8ee504 commit 4fe7179

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

Crashlytics/Crashlytics/Models/FIRCLSSettings.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ NS_ASSUME_NONNULL_BEGIN
3030
- (instancetype)init NS_UNAVAILABLE;
3131
+ (instancetype)new NS_UNAVAILABLE;
3232
- (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager
33-
appIDModel:(FIRCLSApplicationIdentifierModel *)appIDModel
34-
NS_DESIGNATED_INITIALIZER;
33+
appIDModel:(FIRCLSApplicationIdentifierModel *)appIDModel;
3534

3635
/**
3736
* Recreates the settings dictionary by re-reading the settings file from persistent storage. This

Crashlytics/Crashlytics/Models/FIRCLSSettings.m

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,23 @@ @interface FIRCLSSettings ()
4040

4141
@property(nonatomic) BOOL isCacheKeyExpired;
4242

43+
@property(nonatomic) dispatch_queue_t deletionQueue;
44+
4345
@end
4446

4547
@implementation FIRCLSSettings
4648

4749
- (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager
4850
appIDModel:(FIRCLSApplicationIdentifierModel *)appIDModel {
51+
return
52+
[self initWithFileManager:fileManager
53+
appIDModel:appIDModel
54+
deletionQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)];
55+
}
56+
57+
- (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager
58+
appIDModel:(FIRCLSApplicationIdentifierModel *)appIDModel
59+
deletionQueue:(dispatch_queue_t)deletionQueue {
4960
self = [super init];
5061
if (!self) {
5162
return nil;
@@ -57,6 +68,8 @@ - (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager
5768
_settingsDictionary = nil;
5869
_isCacheKeyExpired = NO;
5970

71+
_deletionQueue = deletionQueue;
72+
6073
return self;
6174
}
6275

@@ -190,19 +203,15 @@ - (NSDictionary *)loadCacheKey {
190203

191204
- (void)deleteCachedSettings {
192205
__weak FIRCLSSettings *weakSelf = self;
193-
#ifndef FIREBASE_IS_NIGHTLY_TESTING
194-
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
195-
#endif
206+
dispatch_async(_deletionQueue, ^{
196207
__strong FIRCLSSettings *strongSelf = weakSelf;
197208
if ([strongSelf.fileManager fileExistsAtPath:strongSelf.fileManager.settingsFilePath]) {
198209
[strongSelf.fileManager removeItemAtPath:strongSelf.fileManager.settingsFilePath];
199210
}
200211
if ([strongSelf.fileManager fileExistsAtPath:strongSelf.fileManager.settingsCacheKeyPath]) {
201212
[strongSelf.fileManager removeItemAtPath:strongSelf.fileManager.settingsCacheKeyPath];
202213
}
203-
#ifndef FIREBASE_IS_NIGHTLY_TESTING
204214
});
205-
#endif
206215

207216
@synchronized(self) {
208217
self.isCacheKeyExpired = YES;

Crashlytics/UnitTests/FIRCLSSettingsTests.m

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ @interface FIRCLSSettings (Testing)
6060

6161
@property(nonatomic, strong) NSDictionary<NSString *, id> *settingsDictionary;
6262

63+
- (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager
64+
appIDModel:(FIRCLSApplicationIdentifierModel *)appIDModel
65+
deletionQueue:(dispatch_queue_t)deletionQueue;
66+
6367
@end
6468

6569
@interface FIRCLSSettingsTests : XCTestCase
@@ -75,15 +79,18 @@ @implementation FIRCLSSettingsTests
7579

7680
- (void)setUp {
7781
[super setUp];
78-
7982
_fileManager = [[FIRCLSMockFileManager alloc] init];
8083

8184
_appIDModel = [[FABMockApplicationIdentifierModel alloc] init];
8285
_appIDModel.buildInstanceID = FIRCLSDefaultMockBuildInstanceID;
8386
_appIDModel.displayVersion = FIRCLSDefaultMockAppDisplayVersion;
8487
_appIDModel.buildVersion = FIRCLSDefaultMockAppBuildVersion;
8588

86-
_settings = [[FIRCLSSettings alloc] initWithFileManager:_fileManager appIDModel:_appIDModel];
89+
// Inject a higher priority queue for deletion operations to reduce flakes.
90+
_settings = [[FIRCLSSettings alloc]
91+
initWithFileManager:_fileManager
92+
appIDModel:_appIDModel
93+
deletionQueue:dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)];
8794
}
8895

8996
- (void)testDefaultSettings {
@@ -134,7 +141,7 @@ - (void)cacheSettingsWithGoogleAppID:(NSString *)googleAppID
134141

135142
[self.settings cacheSettingsWithGoogleAppID:googleAppID currentTimestamp:currentTimestamp];
136143

137-
[self waitForExpectations:@[ self.fileManager.removeExpectation ] timeout:1];
144+
[self waitForExpectations:@[ self.fileManager.removeExpectation ] timeout:5.0];
138145
}
139146

140147
- (void)reloadFromCacheWithGoogleAppID:(NSString *)googleAppID

0 commit comments

Comments
 (0)