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')
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", )
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, )
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"])
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, )
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, )
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, )
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"))
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")
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
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")
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"])
def flip_coin(): return couler.run_script( image="python:3.6", source=random_code, step_name="flip-coin-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)
def flip_coin(): return couler.run_script(image="python:alpine3.6", source=random_code)
def test_run_none_source(self): with self.assertRaises(ValueError): couler.run_script(image="image1", command="python")