]> git.saurik.com Git - apple/security.git/blobdiff - MultiDeviceSimulator/ClientInfoByNotification/ClientInfoByNotification.m
Security-59306.11.20.tar.gz
[apple/security.git] / MultiDeviceSimulator / ClientInfoByNotification / ClientInfoByNotification.m
diff --git a/MultiDeviceSimulator/ClientInfoByNotification/ClientInfoByNotification.m b/MultiDeviceSimulator/ClientInfoByNotification/ClientInfoByNotification.m
deleted file mode 100644 (file)
index 88c68f5..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-//
-//  ClientInfoByNotification.m
-//  Security
-//
-//  Created by murf on 4/12/18.
-//
-
-#import <XCTest/XCTest.h>
-#import <Foundation/Foundation.h>
-#import <Foundation/NSXPCConnection_Private.h>
-#import <Security/Security.h>
-#include <Security/SecureObjectSync/SOSCloudCircle.h>
-#include <Security/SecureObjectSync/SOSCloudCircleInternal.h>
-
-#undef DOVIEWMACRO
-#define DOVIEWMACRO(VIEWNAME, DEFSTRING, CMDSTRING, SYSTEM, DEFAULTSETTING, INITIALSYNCSETTING, ALWAYSONSETTING, BACKUPSETTING, V0SETTING) \
-const CFStringRef k##SYSTEM##View##VIEWNAME          = CFSTR(DEFSTRING);
-#include "Security/SecureObjectSync/ViewList.list"
-
-#import "DeviceSimulatorProtocol.h"
-#import "MultiDeviceNetworking.h"
-#import <objc/runtime.h>
-
-
-#if 1
-@interface MDDevice2 : NSObject<DeviceSimulatorProtocol>
-@property NSXPCConnection *connection;
-@property NSString *name;
-- (instancetype)initWithConnection:(NSXPCConnection *)connection;
-@end
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wprotocol"
-@implementation MDDevice2
-
-- (instancetype)initWithConnection:(NSXPCConnection *)connection
-{
-    self = [super init];
-    if (self) {
-        self.connection = connection;
-    }
-    return self;
-}
-
-/* Oh, ObjC, you are my friend */
-- (void)forwardInvocation:(NSInvocation *)invocation
-{
-    struct objc_method_description desc = protocol_getMethodDescription(@protocol(DeviceSimulatorProtocol), [invocation selector], true, true);
-    if (desc.name == NULL) {
-        [super forwardInvocation:invocation];
-    } else {
-        __block bool dooooooEeeeetExclamationPoint = true;
-        id object = [self.connection synchronousRemoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) {
-            NSLog(@"peer failed with: %@", error);
-            dooooooEeeeetExclamationPoint = false;
-            //abort();
-        }];
-        if(dooooooEeeeetExclamationPoint) {
-            [invocation invokeWithTarget:object];
-        }
-    }
-}
-@end
-#pragma clang diagnostic pop
-#endif
-
-@interface ClientInfoByNotification : XCTestCase
-@property NSMutableDictionary<NSString *,MDDevice2 *> *connections;
-@property MultiDeviceNetworking *network;
-@property MDDevice2 *masterDevice;
-@end
-
-static NSString *testInstanceUUID;
-
-@implementation ClientInfoByNotification
-
-
-+ (void)setUp
-{
-    testInstanceUUID = [[NSUUID UUID] UUIDString];
-}
-
-- (void)setUp
-{
-    self.connections = [NSMutableDictionary dictionary];
-    self.network = [[MultiDeviceNetworking alloc] init];
-    [self runSigninWithAdditionalDevices:0];
-}
-
-- (void)tearDown
-{
-    __block uint64_t totalUserUsec = 0, totalSysUsec = 0;
-    NSMutableDictionary *result = [NSMutableDictionary dictionary];
-    
-    for (NSString *name in self.connections) {
-        MDDevice2 *device = self.connections[name];
-        NSLog(@"device: %@", name);
-        [device diagnosticsCPUUsage:^(bool success, uint64_t user_usec, uint64_t sys_usec, NSError *error) {
-            NSLog(@"%@: %d: u:%llu s:%llu", device.name, success, (unsigned long long)user_usec, (unsigned long long)sys_usec);
-            totalUserUsec += user_usec;
-            totalSysUsec += sys_usec;
-            result[[NSString stringWithFormat:@"cpu-%@", name]] = @{ @"user_usec" : @(user_usec), @"system_usec" : @(sys_usec)};
-        }];
-    }
-    
-    result[@"cpu-total"] = @{ @"user_usec" : @(totalUserUsec), @"system_usec" : @(totalSysUsec)};
-    
-    NSLog(@"Total: u:%llu s:%llu", (unsigned long long)totalUserUsec, (unsigned long long)totalSysUsec);
-    
-    /* XXX check for leaks in all devices */
-    for (NSString *name in self.connections) {
-        MDDevice2 *device = self.connections[name];
-        [device.connection invalidate];
-    }
-    self.connections = NULL;
-    [self.network dumpKVSState];
-    [self.network dumpCounters];
-    [self.network disconnectAll];
-    self.network = NULL;
-    
-    NSData * jsonData = [NSJSONSerialization dataWithJSONObject:result options:0 error:NULL];
-    
-    [jsonData writeToFile:[NSString stringWithFormat:@"/tmp/test-result-%@", [self name]] atomically:NO];
-    
-}
-
-//MARK: - Device logic
-
-- (MDDevice2 *)device:(NSString *)name model:(NSString *)model version:(NSString *)version
-{
-    MDDevice2 *device = self.connections[name];
-    if (device != NULL) {
-        return NULL;
-    }
-    
-    NSXPCConnection *conn = [[NSXPCConnection alloc] initWithServiceName:@"com.apple.Security.DeviceSimulator"];
-    conn.remoteObjectInterface = [NSXPCInterface interfaceWithProtocol:@protocol(DeviceSimulatorProtocol)];
-    [conn _setUUID:[NSUUID UUID]]; // select a random instance
-    [conn resume];
-    
-    device = [[MDDevice2 alloc] initWithConnection:conn];
-    device.name = name;
-    
-    self.connections[name] = device;
-    
-    [device setDevice:name
-              version:version
-                model:model
-         testInstance:testInstanceUUID
-              network:[self.network endpoint]
-             complete:^(BOOL success) {
-                 if (!success) {
-                     abort();
-                 }
-             }];
-    return device;
-}
-
-- (void)runSigninWithAdditionalDevices:(unsigned)additionalDeviceCount {
-    signal(SIGPIPE, SIG_IGN);
-    _masterDevice = [self device:@"ipad" model:@"iPad" version:@"15E143a"];
-    NSMutableArray<MDDevice2 *> *otherDevices = [NSMutableArray array];
-    
-    [_masterDevice setupSOSCircle:@"user" password:@"foo" complete:^void(bool success, NSError *error) {
-        XCTAssert(success, "Expect success: %@", error);
-    }];
-    
-    [_masterDevice sosCircleStatus:^void(SOSCCStatus status, NSError *error) {
-        XCTAssertEqual(status, kSOSCCInCircle, @"expected to be in circle: %@", error);
-    }];
-    
-    sleep(4); // give "kvs" a chance to get the word out.
-    for (unsigned n = 0; n < additionalDeviceCount; n++) {
-        MDDevice2 *dev = [self device:[NSString stringWithFormat:@"mac-%u", n] model:@"Mac Pro" version:@"17E121"];
-        
-        [dev setupSOSCircle:@"user" password:@"foo" complete:^void(bool success, NSError *error) {
-            XCTAssert(success, "%u: Expect success: %@", n, error);
-        }];
-        
-        __block NSString *devPeerID = NULL;
-        [dev sosRequestToJoin:^(bool success, NSString *peerID, NSError *error) {
-            XCTAssert(success, "%u: Expect success: %@", n, error);
-            XCTAssertNotEqual(peerID, NULL, @"%u: expected to find peerID for peer2", n);
-            devPeerID = peerID;
-        }];
-        
-        __block NSError *localErr = nil;
-        __block bool done = false;
-        for(int tries=0; tries < 5; tries++) {
-            
-            [_masterDevice sosApprovePeer:devPeerID complete:^(BOOL success, NSError *error) {
-                localErr = [error copy];
-                if(success) {
-                    localErr = nil;
-                    done = true;
-                }
-            }];
-            if(done) break;
-            sleep(10);
-        }
-        XCTAssert(done, "%u: Expect success (for approve of %@): %@", n, devPeerID, localErr);
-        
-        [otherDevices addObject:dev];
-    }
-}
-
-- (void)testSOSIsThisDeviceInCircle
-{
-    [self measureBlock:^{
-        for(int i=0; i<100; i++) {
-            [self.masterDevice sosCircleStatus:^void(SOSCCStatus status, NSError *error) {
-                XCTAssertEqual(status, kSOSCCInCircle, @"expected to be in circle: %@", error);
-            }];
-        }
-    }];
-}
-
-- (void)testSOSIsThisDeviceInCircleNonCached
-{
-    [self measureBlock:^{
-        for(int i=0; i<100; i++) {
-            [self.masterDevice sosCircleStatusNonCached:^void(SOSCCStatus status, NSError *error) {
-                XCTAssertEqual(status, kSOSCCInCircle, @"expected to be in circle: %@", error);
-            }];
-        }
-    }];
-}
-
-
-#if TARGET_OS_IPHONE
-- (void)testSOSViews2
-{
-    [self.masterDevice sosViewStatus: (__bridge NSString*)kSOSViewAutofillPasswords withCompletion: ^void(SOSCCStatus status, NSError *error) {
-        XCTAssertEqual(status, kSOSCCViewNotMember, @"expected to be not in view: %@", error);
-    }];
-    [self.masterDevice sosViewStatus: (__bridge NSString*)kSOSViewHomeKit withCompletion: ^void(SOSCCStatus status, NSError *error) {
-        XCTAssertEqual(status, kSOSCCViewMember, @"expected to be in view: %@", error);
-    }];
-    [self.masterDevice sosViewStatus: (__bridge NSString*)kSOSViewWiFi withCompletion: ^void(SOSCCStatus status, NSError *error) {
-        XCTAssertEqual(status, kSOSCCViewNotMember, @"expected to be not in view: %@", error);
-    }];
-    [self.masterDevice sosViewStatus: (__bridge NSString*)kSOSViewContinuityUnlock withCompletion: ^void(SOSCCStatus status, NSError *error) {
-        XCTAssertEqual(status, kSOSCCViewMember, @"expected to be in view: %@", error);
-    }];
-    
-    [self.masterDevice sosEnableAllViews:^(BOOL success, NSError *error) {
-        XCTAssert(success, "Expected to enable all views");
-    }];
-
-    //uint64_t bitmask = [self.masterDevice sosCachedCircleBitmask];
-    //XCTAssertEqual(bitmask, 0, "Expected bitmask to be %llx", bitmask);
-
-
-    [self.masterDevice sosViewStatus: (__bridge NSString*)kSOSViewWiFi withCompletion: ^void(SOSCCStatus status, NSError *error) {
-        XCTAssertEqual(status, kSOSCCViewMember, @"expected to be in view: %@", error);
-    }];
-
-    [self.masterDevice sosCachedViewBitmask:^(uint64_t bitmask) {
-        XCTAssertEqual(bitmask, 33554367, @"expected bitmask of %llx", bitmask);
-    }];
-    
-    [self measureBlock:^{
-        for(int i=0; i<100; i++) {
-            [self.masterDevice sosViewStatus: (__bridge NSString*)kSOSViewHomeKit withCompletion: ^void(SOSCCStatus status, NSError *error) {
-            }];
-        }
-    }];
-}
-#endif
-
-
-- (void)testSOSMultiView
-{
-    [self.masterDevice sosEnableAllViews:^(BOOL success, NSError *error) {
-        XCTAssert(success, "Expected to enable all views");
-    }];
-    
-    [self.masterDevice sosICKStatus: ^void(bool status) {
-        XCTAssert(status, "Expected to enable iCloud Keychain");
-    }];
-
-    [self measureBlock:^{
-        for(int i=0; i<100; i++) {
-            [self.masterDevice sosICKStatus: ^void(bool status) {
-            }];
-        }
-    }];
-}
-
-- (void) testMaster2
-{
-    [self testSOSMultiView];
-}
-
-@end