Skip to content

Commit

Permalink
fix: Refactor MPUploadBuilder to attempt to eliminate rare crash in w…
Browse files Browse the repository at this point in the history
…ithLocation: method (#262)
  • Loading branch information
einsteinx2 committed Mar 14, 2024
1 parent cde71a2 commit 60cd0c8
Show file tree
Hide file tree
Showing 8 changed files with 308 additions and 394 deletions.
44 changes: 22 additions & 22 deletions UnitTests/MPBackendControllerTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -676,9 +676,9 @@ - (void)testRampUpload {
dispatch_async(messageQueue, ^{
MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];

MPPersistenceController *persistence = [MParticle sharedInstance].persistenceController;
Expand Down Expand Up @@ -1384,9 +1384,9 @@ - (void)testMessageWithOptOut {

MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];
[[MParticle sharedInstance].backendController saveMessage:message updateSession:NO];

Expand All @@ -1405,7 +1405,7 @@ - (void)testMessageWithOptOutMessage {

MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeOptOut session:session messageInfo:@{kMPOptOutStatus:(@"true")}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeOptOut session:session messageInfo:@{kMPOptOutStatus:(@"true")}];

MPMessage *message = [messageBuilder build];
[[MParticle sharedInstance].backendController saveMessage:message updateSession:NO];
Expand All @@ -1424,9 +1424,9 @@ - (void)testBatchAndMessageLimitsMessagesPerBatch {

NSMutableArray *unlimitedMessages = [NSMutableArray array];
for (int i=0; i<10; i++) {
MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];
[unlimitedMessages addObject:message];
}
Expand All @@ -1444,9 +1444,9 @@ - (void)testBatchAndMessageLimitsMultipleMessagesPerBatch {

NSMutableArray *unlimitedMessages = [NSMutableArray array];
for (int i=0; i<10; i++) {
MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];
[unlimitedMessages addObject:message];
}
Expand All @@ -1461,9 +1461,9 @@ - (void)testBatchAndMessageLimitsMultipleMessagesPerBatch {

- (void)testBatchAndMessageLimitsBytesPerBatch {
MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];
MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];

NSMutableArray *unlimitedMessages = [NSMutableArray array];
Expand All @@ -1490,9 +1490,9 @@ - (void)testBatchAndMessageLimitsBytesPerMessage {
while (longString.length < 1000) {
longString = [NSString stringWithFormat:@"%@%@", longString, longString];
}
MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":longString}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":longString}];
MPMessage *message = [messageBuilder build];
NSMutableArray *unlimitedMessages = [NSMutableArray array];
for (int i=0; i<10; i++) {
Expand Down Expand Up @@ -1521,9 +1521,9 @@ - (MPMessage *)messageWithType:(MPMessageType)type andLength:(NSInteger)length {
while (longString.length < length) {
longString = [NSString stringWithFormat:@"%@%@", longString, longString];
}
MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:type
session:session
messageInfo:@{@"MessageKey1":longString}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:type
session:session
messageInfo:@{@"MessageKey1":longString}];
MPMessage *message = [messageBuilder build];
NSInteger bytesToTruncate = message.messageData.length - length;
NSInteger bytesLongString = longString.length - bytesToTruncate;
Expand Down
36 changes: 18 additions & 18 deletions UnitTests/MPDataModelTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ - (void)testSessionInstance {
- (void)testMessageInstance {
MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
XCTAssertNotNil(messageBuilder, @"Should not have been nil.");

MPMessage *message = [messageBuilder build];
Expand Down Expand Up @@ -153,9 +153,9 @@ - (void)testMessageInstanceWithInfinite {

double four = 4.0;
double zed = 0.0;
MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@(four/zed)}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@(four/zed)}];
XCTAssertNotNil(messageBuilder, @"Should not have been nil.");

MPMessage *message = [messageBuilder build];
Expand Down Expand Up @@ -187,9 +187,9 @@ - (void)testMessageInstanceWithInfinite {
- (void)testUploadInstance {
MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];

NSDictionary *uploadDictionary = @{kMPOptOutKey:@NO,
Expand Down Expand Up @@ -229,9 +229,9 @@ - (void)testUploadInstance {
- (void)testBreadcrumbInstance {
MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];

MPBreadcrumb *breadcrumb = [[MPBreadcrumb alloc] initWithSessionUUID:session.uuid
Expand Down Expand Up @@ -277,9 +277,9 @@ - (void)testBreadcrumbInstance {
- (void)testMessageEncoding {
MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];

XCTAssertNotNil(message, @"Should not have been nil.");
Expand All @@ -292,9 +292,9 @@ - (void)testMessageEncoding {
- (void)testBreadcrumbEncoding {
MPSession *session = [[MPSession alloc] initWithStartTime:[[NSDate date] timeIntervalSince1970] userId:[MPPersistenceController mpId]];

MPMessageBuilder *messageBuilder = [MPMessageBuilder newBuilderWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessageBuilder *messageBuilder = [[MPMessageBuilder alloc] initWithMessageType:MPMessageTypeEvent
session:session
messageInfo:@{@"MessageKey1":@"MessageValue1"}];
MPMessage *message = [messageBuilder build];

MPBreadcrumb *breadcrumb = [[MPBreadcrumb alloc] initWithSessionUUID:session.uuid
Expand Down
Loading

0 comments on commit 60cd0c8

Please sign in to comment.