Beispiel #1
0
    def test_script_step(self):
        def echo():
            print("echo")

        couler.run_script(image="docker/whalesay:latest", source=echo)
        proto_wf = get_default_proto_workflow()
        s = proto_wf.steps[0].steps[0]
        self.assertEqual(s.script, '\nprint("echo")\n')
Beispiel #2
0
 def consumer(inputs):
     # read the content from local artifact
     couler.run_script(
         image="docker/whalesay:latest",
         args=inputs,
         command=[("cat %s" % inputs[0].path)],
         source="sadfa\nasdf",
     )
Beispiel #3
0
 def run_a_gpu_script(self):
     couler.run_script(
         image="python:3.6",
         env=copy.deepcopy(self.envs),
         resources={
             "cpu": 1,
             "memory": 1024,
             "gpu": 1
         },
         source=self.setUp,
     )
Beispiel #4
0
 def test_run_daemon_script(self):
     self.assertEqual(len(couler.workflow.templates), 0)
     couler.run_script(image="python:3.6",
                       command="bash",
                       source="ls",
                       daemon=True)
     self.assertEqual(len(couler.workflow.templates), 1)
     template = couler.workflow.get_template(
         "test-run-daemon-script").to_dict()
     self.assertEqual("test-run-daemon-script", template["name"])
     self.assertTrue(template["daemon"])
     self.assertEqual("python:3.6", template["script"]["image"])
     self.assertEqual(["bash"], template["script"]["command"])
     self.assertEqual("ls", template["script"]["source"])
Beispiel #5
0
 def test_run_python_script(self):
     self.assertEqual(len(couler.workflow.templates), 0)
     couler.run_script("image1", command="python", source=self.setUp)
     self.assertEqual(len(couler.workflow.templates), 1)
     template = couler.workflow.get_template(
         "test-run-python-script").to_dict()
     self.assertEqual("test-run-python-script", template["name"])
     self._verify_script_body(
         template["script"],
         image="image1",
         command=["python"],
         source="\ncouler._cleanup()\nsuper().setUp()\n",
         env=None,
     )
Beispiel #6
0
 def test_run_bash_script(self):
     self.assertEqual(len(couler.workflow.templates), 0)
     couler.run_script(image="image1", command="bash", source="ls")
     self.assertEqual(len(couler.workflow.templates), 1)
     template = couler.workflow.get_template(
         "test-run-bash-script").to_dict()
     self.assertEqual("test-run-bash-script", template.get("name"))
     self._verify_script_body(
         template["script"],
         image="image1",
         command=["bash"],
         source="ls",
         env=None,
     )
Beispiel #7
0
 def test_run_default_script(self):
     # Command is not specified, should use python
     self.assertEqual(len(couler.workflow.templates), 0)
     couler.run_script("image1", source=self.setUp)
     self.assertEqual(len(couler.workflow.templates), 1)
     template = couler.workflow.get_template(
         "test-run-default-script").to_dict()
     self.assertEqual("test-run-default-script", template["name"])
     self._verify_script_body(
         template["script"],
         image="image1",
         command=["python"],
         source="\ncouler._cleanup()\n",
         env=None,
     )
Beispiel #8
0
    def test_when(self):
        def random_code():
            import random

            res = "heads" if random.randint(0, 1) == 0 else "tails"
            print(res)

        def heads():
            return couler.run_container(
                image="alpine:3.6",
                command=["sh", "-c", 'echo "it was heads"'])

        def tails():
            return couler.run_container(
                image="alpine:3.6",
                command=["sh", "-c", 'echo "it was tails"'])

        result = couler.run_script(image="python:alpine3.6",
                                   source=random_code)
        couler.when(couler.equal(result, "heads"), lambda: heads())
        couler.when(couler.equal(result, "tails"), lambda: tails())
        proto_wf = get_default_proto_workflow()
        step_heads = proto_wf.steps[1].steps[0]
        # condition is like: "{{steps.test-when-550.outputs.result}} == heads"
        self.assertTrue(step_heads.when.startswith("{{steps.test-when-"))
        self.assertTrue(step_heads.when.endswith(".outputs.result}} == heads"))
Beispiel #9
0
    def test_script_step(self):
        def echo():
            print("echo")

        couler.run_script(
            image="docker/whalesay:latest",
            source=echo,
            resources={
                "cpu": "2",
                "memory": "1Gi"
            },
        )
        proto_wf = get_default_proto_workflow()
        s = proto_wf.steps[0].steps[0]
        self.assertFalse(s.HasField("resource_spec"))
        self.assertEqual(s.script, '\nprint("echo")\n')
        self.assertEqual(s.container_spec.resources["cpu"], "2")
Beispiel #10
0
        def producer():
            output_artifact = couler.create_local_artifact(path="/mnt/t1.txt")
            outputs = couler.run_script(
                image="docker/whalesay:latest",
                args=["echo -n hello world > %s" % output_artifact.path],
                command=["bash", "-c"],
                output=output_artifact,
                source="sadfa\nasdf",
                step_name="producer",
            )

            return outputs
Beispiel #11
0
    def test_script_step(self):
        def echo():
            print("echo")

        couler.run_script(
            image="docker/whalesay:latest",
            source=echo,
            resources={
                "cpu": "2",
                "memory": "1Gi"
            },
            cache=couler.Cache(name="cache-name",
                               key="cache-key",
                               max_age="60s"),
        )
        proto_wf = get_default_proto_workflow()
        s = proto_wf.steps[0].steps[0]
        self.assertFalse(s.HasField("resource_spec"))
        self.assertEqual(s.script, '\nprint("echo")\n')
        self.assertEqual(s.container_spec.resources["cpu"], "2")
        self.assertEqual(s.cache.name, "cache-name")
        self.assertEqual(s.cache.key, "cache-key")
        self.assertEqual(s.cache.max_age, "60s")
Beispiel #12
0
 def run_a_script(self):
     couler.run_script(image="python:3.6",
                       env=copy.deepcopy(self.envs),
                       source=self.setUp)
 def test_string_sourcecode(self):
     code = """print("hello world")"""
     couler.run_script(image="python:3.6", source=code)
     ret = couler.workflow_yaml()
     self.assertEqual(code, ret["spec"]["templates"][1]["script"]["source"])
Beispiel #14
0
def flip_coin():
    return couler.run_script(
        image="python:3.6", source=random_code, step_name="flip-coin-0"
    )
Beispiel #15
0
def conditional_parent():
    return couler.run_script(image="python:3.6",
                             source=random_code,
                             step_name="condition-parent")
def generate_number():
    return couler.run_script(image="python:3.6", source=random_code)
Beispiel #17
0
def flip_coin():
    return couler.run_script(image="python:alpine3.6", source=random_code)
Beispiel #18
0
 def test_run_none_source(self):
     with self.assertRaises(ValueError):
         couler.run_script(image="image1", command="python")