From 653f7faca815526d31b2df675c4caee1c0ffe010 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 28 Jul 2017 09:41:27 -0400 Subject: [PATCH 1/2] Add debug UI for creating groups. // FREEBIE --- .../ViewControllers/DebugUI/DebugUIMessages.m | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m index f9daf3613..7935c89fc 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m @@ -5,6 +5,7 @@ #import "DebugUIMessages.h" #import "Environment.h" #import "OWSTableViewController.h" +#import "SecurityUtils.h" #import "Signal-Swift.h" #import "ThreadUtil.h" #import @@ -186,6 +187,18 @@ NS_ASSUME_NONNULL_BEGIN actionBlock:^{ [DebugUIMessages sendTextAndSystemMessages:1000 thread:thread]; }], + [OWSTableItem itemWithTitle:@"Create 10 new groups (1/sec.)" + actionBlock:^{ + [DebugUIMessages createNewGroups:10]; + }], + [OWSTableItem itemWithTitle:@"Create 100 new groups (1/sec.)" + actionBlock:^{ + [DebugUIMessages createNewGroups:100]; + }], + [OWSTableItem itemWithTitle:@"Create 1,000 new groups (1/sec.)" + actionBlock:^{ + [DebugUIMessages createNewGroups:1000]; + }], ]]; } @@ -918,6 +931,48 @@ NS_ASSUME_NONNULL_BEGIN }); } ++ (void)createNewGroups:(int)counter +{ + if (counter < 1) { + return; + } + + NSString *recipientId = @"+12045002827"; + // NSString *recipientId = @"+19174054216"; + + NSString *groupName = [NSUUID UUID].UUIDString; + NSMutableArray *recipientIds = [@[ + recipientId, + ] mutableCopy]; + NSData *groupId = [SecurityUtils generateRandomBytes:16]; + TSGroupModel *groupModel = + [[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId]; + + __block TSGroupThread *thread; + [[TSStorageManager sharedManager].dbReadWriteConnection + readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { + thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction]; + }]; + OWSAssert(thread); + + TSOutgoingMessage *message = [[TSOutgoingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] + inThread:thread + groupMetaMessage:TSGroupMessageNew]; + // This will save the message. + [message updateWithCustomMessage:NSLocalizedString(@"GROUP_CREATED", nil)]; + + OWSMessageSender *messageSender = [Environment getCurrent].messageSender; + void (^completion)() = ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)1.f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ + [ThreadUtil sendMessageWithText:[@(counter) description] inThread:thread messageSender:messageSender]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)1.f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ + [self createNewGroups:counter - 1]; + }); + }); + }; + [messageSender sendMessage:message success:completion failure:completion]; +} + @end NS_ASSUME_NONNULL_END From 8f17730d9bbcef5fbc0569671734e90374d2f7e7 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 28 Jul 2017 10:16:02 -0400 Subject: [PATCH 2/2] =?UTF-8?q?Modify=20=E2=80=9Ccreate=20groups=E2=80=9D?= =?UTF-8?q?=20debug=20UI=20to=20use=20current=201:1=20contact.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // FREEBIE --- .../ViewControllers/DebugUI/DebugUIMessages.m | 319 +++++++++--------- 1 file changed, 159 insertions(+), 160 deletions(-) diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m index 7935c89fc..8bfa6ab52 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m @@ -45,161 +45,163 @@ NS_ASSUME_NONNULL_BEGIN { OWSAssert(thread); - return [OWSTableSection - sectionWithTitle:self.name - items:@[ - [OWSTableItem itemWithTitle:@"Send 10 messages (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendTextMessages:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 messages (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendTextMessages:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 1,000 messages (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendTextMessages:1000 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 3,000 messages (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendTextMessages:3000 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 10 tiny attachments" - actionBlock:^{ - [DebugUIMessages sendTinyAttachments:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 tiny attachments" - actionBlock:^{ - [DebugUIMessages sendTinyAttachments:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 1,000 tiny attachments" - actionBlock:^{ - [DebugUIMessages sendTinyAttachments:1000 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 3,000 tiny attachments" - actionBlock:^{ - [DebugUIMessages sendTinyAttachments:3000 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Create 10 fake messages" - actionBlock:^{ - [DebugUIMessages sendFakeMessages:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Create 1k fake messages" - actionBlock:^{ - [DebugUIMessages sendFakeMessages:1000 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Create 10k fake messages" - actionBlock:^{ - [DebugUIMessages sendFakeMessages:10 * 1000 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Create 1 fake unread messages" - actionBlock:^{ - [DebugUIMessages createFakeUnreadMessages:1 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Create 10 fake unread messages" - actionBlock:^{ - [DebugUIMessages createFakeUnreadMessages:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send text/x-signal-plain" - actionBlock:^{ - [DebugUIMessages sendOversizeTextMessage:thread]; - }], - [OWSTableItem itemWithTitle:@"Send unknown mimetype" - actionBlock:^{ - [DebugUIMessages - sendRandomAttachment:thread - uti:SignalAttachment.kUnknownTestAttachmentUTI]; - }], - [OWSTableItem itemWithTitle:@"Send pdf" - actionBlock:^{ - [DebugUIMessages sendRandomAttachment:thread uti:(NSString *)kUTTypePDF]; - }], - [OWSTableItem itemWithTitle:@"Send 1 Random GIF (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomGifs:1 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 10 Random GIF (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomGifs:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 Random GIF (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomGifs:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 1 Random JPEG (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomJpegs:1 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 10 Random JPEG (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomJpegs:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 Random JPEG (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomJpegs:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 1 Random Mp3 (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomMp3s:1 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 10 Random Mp3 (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomMp3s:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 Random Mp3 (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomMp3s:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 1 Random Mp4 (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomMp4s:1 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 10 Random Mp4 (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomMp4s:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 Random Mp4 (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendRandomMp4s:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 10 media (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendMediaAttachments:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 media (1/sec.)" - actionBlock:^{ - [DebugUIMessages sendMediaAttachments:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Create all system messages" - actionBlock:^{ - [DebugUIMessages createSystemMessagesInThread:thread]; - }], - - [OWSTableItem itemWithTitle:@"Send 10 text and system messages" - actionBlock:^{ - [DebugUIMessages sendTextAndSystemMessages:10 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 100 text and system messages" - actionBlock:^{ - [DebugUIMessages sendTextAndSystemMessages:100 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Send 1,000 text and system messages" - actionBlock:^{ - [DebugUIMessages sendTextAndSystemMessages:1000 thread:thread]; - }], - [OWSTableItem itemWithTitle:@"Create 10 new groups (1/sec.)" - actionBlock:^{ - [DebugUIMessages createNewGroups:10]; - }], - [OWSTableItem itemWithTitle:@"Create 100 new groups (1/sec.)" - actionBlock:^{ - [DebugUIMessages createNewGroups:100]; - }], - [OWSTableItem itemWithTitle:@"Create 1,000 new groups (1/sec.)" - actionBlock:^{ - [DebugUIMessages createNewGroups:1000]; - }], - ]]; + NSMutableArray *items = [@[ + [OWSTableItem itemWithTitle:@"Send 10 messages (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendTextMessages:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 messages (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendTextMessages:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 1,000 messages (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendTextMessages:1000 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 3,000 messages (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendTextMessages:3000 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 10 tiny attachments" + actionBlock:^{ + [DebugUIMessages sendTinyAttachments:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 tiny attachments" + actionBlock:^{ + [DebugUIMessages sendTinyAttachments:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 1,000 tiny attachments" + actionBlock:^{ + [DebugUIMessages sendTinyAttachments:1000 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 3,000 tiny attachments" + actionBlock:^{ + [DebugUIMessages sendTinyAttachments:3000 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Create 10 fake messages" + actionBlock:^{ + [DebugUIMessages sendFakeMessages:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Create 1k fake messages" + actionBlock:^{ + [DebugUIMessages sendFakeMessages:1000 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Create 10k fake messages" + actionBlock:^{ + [DebugUIMessages sendFakeMessages:10 * 1000 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Create 1 fake unread messages" + actionBlock:^{ + [DebugUIMessages createFakeUnreadMessages:1 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Create 10 fake unread messages" + actionBlock:^{ + [DebugUIMessages createFakeUnreadMessages:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send text/x-signal-plain" + actionBlock:^{ + [DebugUIMessages sendOversizeTextMessage:thread]; + }], + [OWSTableItem itemWithTitle:@"Send unknown mimetype" + actionBlock:^{ + [DebugUIMessages sendRandomAttachment:thread + uti:SignalAttachment.kUnknownTestAttachmentUTI]; + }], + [OWSTableItem itemWithTitle:@"Send pdf" + actionBlock:^{ + [DebugUIMessages sendRandomAttachment:thread uti:(NSString *)kUTTypePDF]; + }], + [OWSTableItem itemWithTitle:@"Send 1 Random GIF (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomGifs:1 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 10 Random GIF (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomGifs:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 Random GIF (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomGifs:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 1 Random JPEG (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomJpegs:1 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 10 Random JPEG (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomJpegs:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 Random JPEG (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomJpegs:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 1 Random Mp3 (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomMp3s:1 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 10 Random Mp3 (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomMp3s:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 Random Mp3 (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomMp3s:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 1 Random Mp4 (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomMp4s:1 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 10 Random Mp4 (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomMp4s:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 Random Mp4 (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendRandomMp4s:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 10 media (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendMediaAttachments:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 media (1/sec.)" + actionBlock:^{ + [DebugUIMessages sendMediaAttachments:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Create all system messages" + actionBlock:^{ + [DebugUIMessages createSystemMessagesInThread:thread]; + }], + + [OWSTableItem itemWithTitle:@"Send 10 text and system messages" + actionBlock:^{ + [DebugUIMessages sendTextAndSystemMessages:10 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 100 text and system messages" + actionBlock:^{ + [DebugUIMessages sendTextAndSystemMessages:100 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Send 1,000 text and system messages" + actionBlock:^{ + [DebugUIMessages sendTextAndSystemMessages:1000 thread:thread]; + }], + ] mutableCopy]; + if ([thread isKindOfClass:[TSContactThread class]]) { + TSContactThread *contactThread = (TSContactThread *)thread; + NSString *recipientId = contactThread.contactIdentifier; + [items addObject:[OWSTableItem itemWithTitle:@"Create 10 new groups" + actionBlock:^{ + [DebugUIMessages createNewGroups:10 recipientId:recipientId]; + }]]; + [items addObject:[OWSTableItem itemWithTitle:@"Create 100 new groups" + actionBlock:^{ + [DebugUIMessages createNewGroups:100 recipientId:recipientId]; + }]]; + [items addObject:[OWSTableItem itemWithTitle:@"Create 1,000 new groups" + actionBlock:^{ + [DebugUIMessages createNewGroups:1000 recipientId:recipientId]; + }]]; + } + return [OWSTableSection sectionWithTitle:self.name items:items]; } + (void)sendTextMessageInThread:(TSThread *)thread counter:(int)counter @@ -931,15 +933,12 @@ NS_ASSUME_NONNULL_BEGIN }); } -+ (void)createNewGroups:(int)counter ++ (void)createNewGroups:(int)counter recipientId:(NSString *)recipientId { if (counter < 1) { return; } - NSString *recipientId = @"+12045002827"; - // NSString *recipientId = @"+19174054216"; - NSString *groupName = [NSUUID UUID].UUIDString; NSMutableArray *recipientIds = [@[ recipientId, @@ -966,7 +965,7 @@ NS_ASSUME_NONNULL_BEGIN dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)1.f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ [ThreadUtil sendMessageWithText:[@(counter) description] inThread:thread messageSender:messageSender]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)1.f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ - [self createNewGroups:counter - 1]; + [self createNewGroups:counter - 1 recipientId:recipientId]; }); }); };