class InspectorTestCase(unittest.TestCase): def setUp(self): self._factory = Factory() self._factory.create_master(EphemeralStore()) self._inspector = Inspector(self._factory.get_client()) def _post_job_tokens(self): """Add some job tokens to the master.""" request = ModifyRequest(updates=[]) name = Name(workflow='some_workflow', instance='12345') for job_id in range(0, 2): if job_id % 2 == 0: name.job_state = Name.WAITING_STATE else: name.job_state = Name.RUNNABLE_STATE name.job = 'some_job_%d' % job_id job_token = Token(name=name.get_job_token_name()) request.updates.append(job_token) client = self._factory.get_client() client.modify(request) def _post_event_tokens(self): """Add some event tokens to the master.""" request = ModifyRequest(updates=[]) name = Name(workflow='some_workflow', instance='12345') for job_id in range(0, 2): for input_id in range(0, 2): for event_id in range(0, 2): name.job = 'some_job_%d' % job_id name.input = 'some_input_%d' % input_id name.event = 'some_event_%d' % event_id event_token = Token(name=name.get_event_token_name()) request.updates.append(event_token) client = self._factory.get_client() client.modify(request) def test_inspect_empty_tree(self): self.assertEqual([], self._inspector.get_workflow_names()) self.assertEqual([], self._inspector.get_workflow_instances( 'some_workflow')) self.assertEqual([], self._inspector.get_waiting_job_names( 'some_workflow', '12345')) self.assertEqual([], self._inspector.get_runnable_job_names( 'some_workflow', '12345')) self.assertEqual([], self._inspector.get_event_names('some_workflow', '12345', 'some_job_0', 'some_input_0')) def test_inspect_non_empty_tree(self): self._post_job_tokens() self._post_event_tokens() self.assertEqual(['some_workflow'], self._inspector.get_workflow_names()) self.assertEqual(['12345'], self._inspector.get_workflow_instances( 'some_workflow')) self.assertEqual(['some_job_0'], self._inspector.get_waiting_job_names( 'some_workflow', '12345')) self.assertEqual(['some_job_1'], self._inspector.get_runnable_job_names( 'some_workflow', '12345')) event_names = self._inspector.get_event_names('some_workflow', '12345', 'some_job_0', 'some_input_0') event_names = sorted(event_names) self.assertEqual(['some_event_0', 'some_event_1'], event_names)