def test_successful(self): """Tests calling RecipeDefinition.get_graph() successfully""" definition = { 'version': '1.0', 'input_data': [{ 'name': 'Recipe Input', 'type': 'file', 'media_types': ['text/plain'], }], 'jobs': [{ 'name': 'Job 1', 'job_type': { 'name': self.job_type_1.name, 'version': self.job_type_1.version, }, 'recipe_inputs': [{ 'recipe_input': 'Recipe Input', 'job_input': self.input_name_1, }] }, { 'name': 'Job 2', 'job_type': { 'name': self.job_type_2.name, 'version': self.job_type_2.version, }, 'dependencies': [{ 'name': 'Job 1', 'connections': [{ 'output': self.output_name_1, 'input': self.input_name_2, }], }], }], } recipe_definition = RecipeDefinition(definition) graph = recipe_definition.get_graph() self.assertEqual(len(graph.inputs), 1) self.assertEqual(len(graph._root_nodes), 1) self.assertEqual(len(graph._nodes), 2)
def setUp(self): django.setup() self.job_a = job_test_utils.create_job() self.job_b = job_test_utils.create_job() self.job_c = job_test_utils.create_job() self.job_d = job_test_utils.create_job() self.job_e = job_test_utils.create_job() self.job_f = job_test_utils.create_job() self.job_g = job_test_utils.create_job() self.job_h = job_test_utils.create_job() definition = { 'version': '1.0', 'input_data': [{ 'name': 'Recipe Input 1', 'type': 'file', 'media_types': ['text/plain'], }, { 'name': 'Recipe Input 2', 'type': 'property' }], 'jobs': [{ 'name': 'Job A', 'job_type': { 'name': self.job_a.job_type.name, 'version': self.job_a.job_type.version, }, 'recipe_inputs': [{ 'recipe_input': 'Recipe Input 1', 'job_input': 'Job Input 1', }] }, { 'name': 'Job B', 'job_type': { 'name': self.job_b.job_type.name, 'version': self.job_b.job_type.version, }, 'recipe_inputs': [{ 'recipe_input': 'Recipe Input 2', 'job_input': 'Job Input 1', }] }, { 'name': 'Job C', 'job_type': { 'name': self.job_c.job_type.name, 'version': self.job_c.job_type.version, }, 'recipe_inputs': [{ 'recipe_input': 'Recipe Input 2', 'job_input': 'Job Input 1', }] }, { 'name': 'Job D', 'job_type': { 'name': self.job_d.job_type.name, 'version': self.job_d.job_type.version, }, 'dependencies': [{ 'name': 'Job A', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 1', }], }, { 'name': 'Job B', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 2', }], }] }, { 'name': 'Job E', 'job_type': { 'name': self.job_e.job_type.name, 'version': self.job_e.job_type.version, }, 'dependencies': [{ 'name': 'Job B', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 1', }], }] }, { 'name': 'Job F', 'job_type': { 'name': self.job_f.job_type.name, 'version': self.job_f.job_type.version, }, 'dependencies': [{ 'name': 'Job D', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 1', }], }] }, { 'name': 'Job G', 'job_type': { 'name': self.job_g.job_type.name, 'version': self.job_g.job_type.version, }, 'dependencies': [{ 'name': 'Job D', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 1', }], }, { 'name': 'Job E', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 2', }], }] }, { 'name': 'Job H', 'job_type': { 'name': self.job_h.job_type.name, 'version': self.job_h.job_type.version, }, 'dependencies': [{ 'name': 'Job C', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 1', }], }, { 'name': 'Job D', 'connections': [{ 'output': 'Job Output 1', 'input': 'Job Input 2', }], }] }] } recipe_definition = RecipeDefinition(definition) self.graph = recipe_definition.get_graph()