Beispiel #1
0
 def test_from_json_dict_invalids(self):
     json_dict = json.loads('{"header": {}}')
     with self.assertRaises(ValueError) as cm:
         Workflow.from_json_dict(json_dict)
     self.assertEqual(
         str(cm.exception),
         'missing mandatory property "qualified_name" in Workflow-JSON')
Beispiel #2
0
 def test_from_json_dict_empty(self):
     json_dict = json.loads('{"qualified_name": "hello"}')
     workflow = Workflow.from_json_dict(json_dict)
     self.assertEqual(workflow.id, 'hello')
Beispiel #3
0
    def test_from_json_dict(self):
        workflow_json_text = """
        {
            "qualified_name": "my_workflow",
            "header": {
                "description": "My workflow is not too bad."
            },
            "inputs": {
                "p": {"description": "Input 'p'"}
            },
            "outputs": {
                "q": {"source": "op3.w", "description": "Output 'q'"}
            },
            "steps": [
                {
                    "id": "op1",
                    "op": "tests.core.test_workflow.op1",
                    "inputs": {
                        "x": { "source": ".p" }
                    }
                },
                {
                    "id": "op2",
                    "op": "tests.core.test_workflow.op2",
                    "inputs": {
                        "a": {"source": "op1"}
                    }
                },
                {
                    "id": "op3",
                    "persistent": true,
                    "op": "tests.core.test_workflow.op3",
                    "inputs": {
                        "u": {"source": "op1.y"},
                        "v": {"source": "op2.b"}
                    }
                }
            ]
        }
        """
        workflow_json_dict = json.loads(workflow_json_text)
        workflow = Workflow.from_json_dict(workflow_json_dict)

        self.assertIsNotNone(workflow)
        self.assertEqual(workflow.id, "my_workflow")

        self.assertEqual(workflow.op_meta_info.qualified_name, workflow.id)
        self.assertEqual(workflow.op_meta_info.header,
                         dict(description="My workflow is not too bad."))
        self.assertEqual(len(workflow.op_meta_info.inputs), 1)
        self.assertEqual(len(workflow.op_meta_info.outputs), 1)
        self.assertEqual(workflow.op_meta_info.inputs['p'],
                         dict(description="Input 'p'"))
        self.assertEqual(workflow.op_meta_info.outputs['q'],
                         dict(source="op3.w", description="Output 'q'"))

        self.assertEqual(len(workflow.inputs), 1)
        self.assertEqual(len(workflow.outputs), 1)

        self.assertIn('p', workflow.inputs)
        self.assertIn('q', workflow.outputs)

        self.assertEqual(len(workflow.steps), 3)
        step1 = workflow.steps[0]
        step2 = workflow.steps[1]
        step3 = workflow.steps[2]

        self.assertEqual(step1.id, 'op1')
        self.assertEqual(step2.id, 'op2')
        self.assertEqual(step3.id, 'op3')

        self.assertIs(step1.inputs.x.source, workflow.inputs.p)
        self.assertIs(step2.inputs.a.source, step1.outputs.y)
        self.assertIs(step3.inputs.u.source, step1.outputs.y)
        self.assertIs(step3.inputs.v.source, step2.outputs.b)
        self.assertIs(workflow.outputs.q.source, step3.outputs.w)

        self.assertEqual(step1.persistent, False)
        self.assertEqual(step2.persistent, False)
        self.assertEqual(step3.persistent, True)
Beispiel #4
0
 def from_json_dict(cls, json_dict):
     base_dir = json_dict.get('base_dir', None)
     workflow_json = json_dict.get('workflow', {})
     is_modified = json_dict.get('is_modified', False)
     workflow = Workflow.from_json_dict(workflow_json)
     return Workspace(base_dir, workflow, is_modified=is_modified)
Beispiel #5
0
 def test_from_json_dict_invalids(self):
     json_dict = json.loads('{"header": {}}')
     with self.assertRaises(ValueError) as cm:
         Workflow.from_json_dict(json_dict)
     self.assertEqual(str(cm.exception), 'missing mandatory property "qualified_name" in Workflow-JSON')
Beispiel #6
0
 def test_from_json_dict_empty(self):
     json_dict = json.loads('{"qualified_name": "hello"}')
     workflow = Workflow.from_json_dict(json_dict)
     self.assertEqual(workflow.id, 'hello')
Beispiel #7
0
    def test_from_json_dict(self):
        workflow_json_text = """
        {
            "qualified_name": "my_workflow",
            "header": {
                "description": "My workflow is not too bad."
            },
            "inputs": {
                "p": {"description": "Input 'p'"}
            },
            "outputs": {
                "q": {"source": "op3.w", "description": "Output 'q'"}
            },
            "steps": [
                {
                    "id": "op1",
                    "op": "test.core.test_workflow.op1",
                    "inputs": {
                        "x": { "source": ".p" }
                    }
                },
                {
                    "id": "op2",
                    "op": "test.core.test_workflow.op2",
                    "inputs": {
                        "a": {"source": "op1"}
                    }
                },
                {
                    "id": "op3",
                    "persistent": true,
                    "op": "test.core.test_workflow.op3",
                    "inputs": {
                        "u": {"source": "op1.y"},
                        "v": {"source": "op2.b"}
                    }
                }
            ]
        }
        """
        workflow_json_dict = json.loads(workflow_json_text)
        workflow = Workflow.from_json_dict(workflow_json_dict)

        self.assertIsNotNone(workflow)
        self.assertEqual(workflow.id, "my_workflow")

        self.assertEqual(workflow.op_meta_info.qualified_name, workflow.id)
        self.assertEqual(workflow.op_meta_info.header, dict(description="My workflow is not too bad."))
        self.assertEqual(len(workflow.op_meta_info.inputs), 1)
        self.assertEqual(len(workflow.op_meta_info.outputs), 1)
        self.assertEqual(workflow.op_meta_info.inputs['p'], dict(description="Input 'p'"))
        self.assertEqual(workflow.op_meta_info.outputs['q'], dict(source="op3.w", description="Output 'q'"))

        self.assertEqual(len(workflow.inputs), 1)
        self.assertEqual(len(workflow.outputs), 1)

        self.assertIn('p', workflow.inputs)
        self.assertIn('q', workflow.outputs)

        self.assertEqual(len(workflow.steps), 3)
        step1 = workflow.steps[0]
        step2 = workflow.steps[1]
        step3 = workflow.steps[2]

        self.assertEqual(step1.id, 'op1')
        self.assertEqual(step2.id, 'op2')
        self.assertEqual(step3.id, 'op3')

        self.assertIs(step1.inputs.x.source, workflow.inputs.p)
        self.assertIs(step2.inputs.a.source, step1.outputs.y)
        self.assertIs(step3.inputs.u.source, step1.outputs.y)
        self.assertIs(step3.inputs.v.source, step2.outputs.b)
        self.assertIs(workflow.outputs.q.source, step3.outputs.w)

        self.assertEqual(step1.persistent, False)
        self.assertEqual(step2.persistent, False)
        self.assertEqual(step3.persistent, True)