Skip to content

Commit

Permalink
Increased delay time in workspace switching tests to account for slow…
Browse files Browse the repository at this point in the history
… CI runners
  • Loading branch information
einsteinx2 committed Mar 18, 2024
1 parent 7c46e3c commit 3076626
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions UnitTests/MParticleTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -1092,25 +1092,30 @@ - (void)testLogCrashNilStackTrace {
[mockBackend verifyWithDelay:5];
}

#pragma mark Workspace Switching Tests

#define WORKSPACE_SWITCHING_TIMEOUT 60
#define WORKSPACE_SWITCHING_DELAY (int64_t)(10 * NSEC_PER_SEC)

- (void)testSwitchWorkspaceOptions {
XCTestExpectation *expectation = [self expectationWithDescription:@"async work"];

MParticle *instance = [MParticle sharedInstance];
XCTAssertNotNil(instance);
XCTAssertNil(instance.options);

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
MParticleOptions *options1 = [MParticleOptions optionsWithKey:@"unit-test-key1" secret:@"unit-test-secret1"];
[instance startWithOptions:options1];
XCTAssertNotNil(instance.options);
XCTAssertEqualObjects(instance.options.apiKey, @"unit-test-key1");
XCTAssertEqualObjects(instance.options.apiSecret, @"unit-test-secret1");

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
MParticleOptions *options2 = [MParticleOptions optionsWithKey:@"unit-test-key2" secret:@"unit-test-secret2"];
[instance switchWorkspaceWithOptions:options2];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
MParticle *instance3 = [MParticle sharedInstance];
MParticle *instance4 = [MParticle sharedInstance];
XCTAssertNotNil(instance.options);
Expand All @@ -1128,7 +1133,7 @@ - (void)testSwitchWorkspaceOptions {
});
});

[self waitForExpectationsWithTimeout:DEFAULT_TIMEOUT handler:nil];
[self waitForExpectationsWithTimeout:WORKSPACE_SWITCHING_TIMEOUT handler:nil];
}

- (void)testSwitchWorkspaceSideloadedKits {
Expand All @@ -1141,7 +1146,7 @@ - (void)testSwitchWorkspaceSideloadedKits {

[[MParticle sharedInstance] startWithOptions:options1];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
XCTAssertEqual(MPKitContainer.registeredKits.count, 1);
XCTAssertEqualObjects(MPKitContainer.registeredKits.anyObject.wrapperInstance, kitTestSideloaded1);

Expand All @@ -1152,23 +1157,23 @@ - (void)testSwitchWorkspaceSideloadedKits {

[[MParticle sharedInstance] switchWorkspaceWithOptions:options2];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
XCTAssertEqual(MPKitContainer.registeredKits.count, 1);
XCTAssertEqualObjects(MPKitContainer.registeredKits.anyObject.wrapperInstance, kitTestSideloaded2);

// Switch workspace with no sideloaded kits
MParticleOptions *options3 = [MParticleOptions optionsWithKey:@"unit-test-key" secret:@"unit-test-secret"];
[[MParticle sharedInstance] switchWorkspaceWithOptions:options3];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
XCTAssertEqual(MPKitContainer.registeredKits.count, 0);

[expectation fulfill];
});
});
});

[self waitForExpectationsWithTimeout:DEFAULT_TIMEOUT handler:nil];
[self waitForExpectationsWithTimeout:(WORKSPACE_SWITCHING_TIMEOUT) handler:nil];
}

// Kits without configurations should NOT be removed from the registry even if they implement `stop` becuase it means they weren't used by the previous workspace
Expand All @@ -1183,17 +1188,17 @@ - (void)testSwitchWorkspaceKitsNoConfigurations {
MParticleOptions *options = [MParticleOptions optionsWithKey:@"unit-test-key" secret:@"unit-test-secret"];
[[MParticle sharedInstance] startWithOptions:options];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
XCTAssertEqual(MPKitContainer.registeredKits.count, 2);
[[MParticle sharedInstance] switchWorkspaceWithOptions:options];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
XCTAssertEqual(MPKitContainer.registeredKits.count, 2);
[expectation fulfill];
});
});

[self waitForExpectationsWithTimeout:DEFAULT_TIMEOUT handler:nil];
[self waitForExpectationsWithTimeout:WORKSPACE_SWITCHING_TIMEOUT handler:nil];
}

// Kits with configurations that don't implement `stop` should be removed from the registry because they can't be cleanly restarted
Expand All @@ -1207,21 +1212,21 @@ - (void)testSwitchWorkspaceKitsWithoutStop {
MParticleOptions *options = [MParticleOptions optionsWithKey:@"unit-test-key" secret:@"unit-test-secret"];
[[MParticle sharedInstance] startWithOptions:options];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
registerNoStop.wrapperInstance = [[MPKitTestClassNoStartImmediately alloc] init];
[MParticle sharedInstance].kitContainer.kitConfigurations[@42] = [[MPKitConfiguration alloc] init];

XCTAssertEqual(MPKitContainer.registeredKits.count, 1);

[[MParticle sharedInstance] switchWorkspaceWithOptions:options];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
XCTAssertEqual(MPKitContainer.registeredKits.count, 0);
[expectation fulfill];
});
});

[self waitForExpectationsWithTimeout:DEFAULT_TIMEOUT handler:nil];
[self waitForExpectationsWithTimeout:WORKSPACE_SWITCHING_TIMEOUT handler:nil];
}

// Kits with configurations that implement `stop` shouldn't be removed from the registry because they can be cleanly restarted
Expand All @@ -1235,21 +1240,21 @@ - (void)testSwitchWorkspaceKitsWithStop {
MParticleOptions *options = [MParticleOptions optionsWithKey:@"unit-test-key" secret:@"unit-test-secret"];
[[MParticle sharedInstance] startWithOptions:options];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
registerWithStop.wrapperInstance = [[MPKitTestClassNoStartImmediatelyWithStop alloc] init];
[MParticle sharedInstance].kitContainer.kitConfigurations[@43] = [[MPKitConfiguration alloc] init];

XCTAssertEqual(MPKitContainer.registeredKits.count, 1);

[[MParticle sharedInstance] switchWorkspaceWithOptions:options];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, WORKSPACE_SWITCHING_DELAY), dispatch_get_main_queue(), ^{
XCTAssertEqual(MPKitContainer.registeredKits.count, 1);
[expectation fulfill];
});
});

[self waitForExpectationsWithTimeout:DEFAULT_TIMEOUT handler:nil];
[self waitForExpectationsWithTimeout:WORKSPACE_SWITCHING_TIMEOUT handler:nil];
}

@end

0 comments on commit 3076626

Please sign in to comment.