Exemplo n.º 1
0
 def __init__(
     self,
     methodName,
     fbsimctl_path,
     use_custom_set,
 ):
     super(FBSimctlTestCase, self).__init__(methodName)
     set_path = tempfile.mkdtemp() if use_custom_set else None
     self.methodName = methodName
     self.use_custom_set = use_custom_set
     self.fbsimctl = FBSimctl(fbsimctl_path, set_path)
Exemplo n.º 2
0
 def __init__(
     self,
     methodName: str,
     fbsimctl_path: str,
     use_custom_set: bool,
 ) -> None:
     super(FBSimctlTestCase, self).__init__(methodName)
     set_path = tempfile.mkdtemp() if use_custom_set else None
     self.methodName = methodName
     self.use_custom_set = use_custom_set
     self.fbsimctl = FBSimctl(fbsimctl_path, set_path)
     self.metal = Metal()
     self.tmpdir = tempfile.mkdtemp()
Exemplo n.º 3
0
class FBSimctlTestCase(unittest.TestCase):
    def __init__(
        self,
        methodName,
        fbsimctl_path,
        use_custom_set,
    ):
        super(FBSimctlTestCase, self).__init__(methodName)
        set_path = tempfile.mkdtemp() if use_custom_set else None
        self.methodName = methodName
        self.use_custom_set = use_custom_set
        self.fbsimctl = FBSimctl(fbsimctl_path, set_path)

    def tearDown(self):
        action = 'delete' if self.use_custom_set else 'shutdown'
        self.fbsimctl(['--simulators', action])

    def __str__(self):
        return '{}: {}'.format(
            self.methodName,
            'Custom Set' if self.use_custom_set else 'Default Set',
        )

    def assertEventSuccesful(self, arguments, event_name):
        return self.assertEventsFromRun(
            arguments=arguments,
            event_name=event_name,
            event_type='ended',
            min_count=1,
            max_count=1,
        )[0]

    def assertEventsFromRun(
        self,
        arguments,
        event_name,
        event_type,
        min_count=1,
        max_count=None,
        timeout=Defaults.TIMEOUT,
    ):
        events = self.fbsimctl.run(arguments, timeout)
        matching_events = events.matching(event_name, event_type)
        match_count = len(matching_events)
        if min_count is not None:
            self.assertGreaterEqual(
                match_count,
                min_count,
                'Expected at least {} {} {} event, but there were {}. Other events: \b {}'.format(
                    str(min_count),
                    event_name,
                    event_type,
                    str(match_count),
                    events
                )
            )
        if max_count is not None:
            self.assertLessEqual(
                match_count,
                max_count,
                'Expected no more than {} {} {} event, but there were {}. Other events: \b {}'.format(
                    str(max_count),
                    event_name,
                    event_type,
                    str(match_count),
                    events
                )
            )
        return matching_events

    def assertListContainsOnly(self, expected_udids, query=[]):
        events = self.fbsimctl.run(query + ['list'])
        list_events = events.matching('list', 'discrete')
        list_udids = [
            event.get('subject').get('udid') for event in list_events
        ]
        remainder = set(expected_udids) - set(list_udids)
        self.assertEqual(
            len(remainder),
            0,
            'Expected list command to contain {}, but it was missing'.format(
                remainder
            )
        )
        additional = set(list_udids) - set(expected_udids)
        self.assertEqual(
            len(additional),
            0,
            'Expected list command only contain {}, but it had additional {}'.format(
                expected_udids,
                additional,
            )
        )
        return list_events

    def assertExtractSimulator(self, json_event):
        sim_json = json_event.get('subject')
        self.assertIsNotNone(
            sim_json,
            'Expected {} to contain a simulator, but it did not'.format(
                json_event,
            )
        )
        return Simulator(sim_json)

    def assertExtractAndKeyDiagnostics(self, json_events):
        return {
            event['subject']['short_name']: event['subject']
            for event
            in json_events
        }

    def assertCreatesSimulator(self, args):
        args = ['create'] + args
        return self.assertExtractSimulator(
            self.assertEventSuccesful(args, 'create')
        )

    def testList(self):
        self.fbsimctl(['list'])

    def testCommandThatDoesNotExist(self):
        with self.assertRaises(Exception):
            self.fbsimctl(['foo'])
Exemplo n.º 4
0
class FBSimctlTestCase(unittest.TestCase):
    def __init__(self, methodName, fbsimctl_path, use_custom_set):
        super(FBSimctlTestCase, self).__init__(methodName)
        set_path = tempfile.mkdtemp() if use_custom_set else None
        self.methodName = methodName
        self.use_custom_set = use_custom_set
        self.fbsimctl = FBSimctl(fbsimctl_path, set_path)

    def tearDown(self):
        action = "delete" if self.use_custom_set else "shutdown"
        self.fbsimctl(["--simulators", action])

    def __str__(self):
        return "{}: {}".format(self.methodName, "Custom Set" if self.use_custom_set else "Default Set")

    def assertEventSuccesful(self, arguments, event_name):
        return self.assertEventsFromRun(
            arguments=arguments, event_name=event_name, event_type="ended", min_count=1, max_count=1
        )[0]

    def assertEventsFromRun(
        self, arguments, event_name, event_type, min_count=1, max_count=None, timeout=DEFAULT_TIMEOUT
    ):
        events = self.fbsimctl.run(arguments, timeout)
        matching_events = events.matching(event_name, event_type)
        match_count = len(matching_events)
        if min_count is not None:
            self.assertGreaterEqual(
                match_count,
                min_count,
                "Expected at least {} {} {} event, but there were {}. Other events: \b {}".format(
                    str(min_count), event_name, event_type, str(match_count), events
                ),
            )
        if max_count is not None:
            self.assertLessEqual(
                match_count,
                max_count,
                "Expected no more than {} {} {} event, but there were {}. Other events: \b {}".format(
                    str(max_count), event_name, event_type, str(match_count), events
                ),
            )
        return matching_events

    def assertListContainsOnly(self, expected_udids, query=[]):
        events = self.fbsimctl.run(query + ["list"])
        list_events = events.matching("list", "discrete")
        list_udids = [event.get("subject").get("udid") for event in list_events]
        remainder = set(expected_udids) - set(list_udids)
        self.assertEqual(len(remainder), 0, "Expected list command to contain {}, but it was missing".format(remainder))
        additional = set(list_udids) - set(expected_udids)
        self.assertEqual(
            len(additional),
            0,
            "Expected list command only contain {}, but it had additional {}".format(expected_udids, additional),
        )
        return list_events

    def assertExtractSimulator(self, json_event):
        sim_json = json_event.get("subject")
        self.assertIsNotNone(sim_json, "Expected {} to contain a simulator, but it did not".format(json_event))
        return Simulator(sim_json)

    def assertExtractAndKeyDiagnostics(self, json_events):
        return {event["subject"]["short_name"]: event["subject"] for event in json_events}

    def assertCreatesSimulator(self, args):
        args = ["create"] + args
        return self.assertExtractSimulator(self.assertEventSuccesful(args, "create"))

    def testList(self):
        self.fbsimctl(["list"])

    def testCommandThatDoesNotExist(self):
        with self.assertRaises(Exception):
            self.fbsimctl(["foo"])
Exemplo n.º 5
0
 def setUp(self):
     self.fbsimctl = FBSimctl(EXECUTABLE_PATH, self.provideSetPath())
Exemplo n.º 6
0
class FBSimctlTestCase(unittest.TestCase):
    def setUp(self):
        self.fbsimctl = FBSimctl(EXECUTABLE_PATH, self.provideSetPath())

    def provideSetPath(self):
        return None

    def assertEventSuccesful(self, arguments, event_name):
        events = self.fbsimctl.run(arguments)
        matching_events = events.matching(event_name, 'ended')
        match_count = len(matching_events)
        self.assertNotEqual(
            0,
            match_count,
            'Expected one successful {} event, but there were none. Other events: \b {}'.format(
                event_name,
                events
            )
        )
        self.assertLess(
            match_count,
            2,
            'Expected one successful {} event, but there were {}. Matching events: \b {}'.format(
                event_name,
                str(match_count),
                matching_events,
            )
        )
        return matching_events[0]

    def assertListContainsOnly(self, expected_udids):
        events = self.fbsimctl.run(['list'])
        list_events = events.matching('list', 'discrete')
        list_udids = [
            event.get('subject').get('udid') for event in list_events
        ]
        remainder = set(expected_udids) - set(list_udids)
        self.assertEqual(
            len(remainder),
            0,
            'Expected list command to contain {}, but it was missing'.format(
                remainder
            )
        )
        additional = set(list_udids) - set(expected_udids)
        self.assertEqual(
            len(additional),
            0,
            'Expected list command only contain {}, but it had additional {}'.format(
                expected_udids,
                additional,
            )
        )
        return list_events

    def assertExtractSimulator(self, json_event):
        sim_json = json_event.get('subject')
        self.assertIsNotNone(
            sim_json,
            'Expected {} to contain a simulator, but it did not'.format(
                json_event,
            )
        )
        return Simulator(sim_json)