Ejemplo n.º 1
0
 def test_map_function_callable(self):
     test_paras = ["t1", "t2", "t3"]
     callable_cls = self.create_callable_cls(lambda x: consume(x))
     instance = callable_cls()
     func_names = ["a", "b", "c", "self"]
     for func_name in func_names:
         if func_name == "self":
             couler.map(instance, test_paras)
         else:
             couler.map(getattr(instance, func_name), test_paras)
         expected_with_items = [
             {
                 "para-consume-0": "t1"
             },
             {
                 "para-consume-0": "t2"
             },
             {
                 "para-consume-0": "t3"
             },
         ]
         wf = couler.workflow_yaml()
         templates = wf["spec"]["templates"]
         steps_template = templates[0]
         map_step = steps_template["steps"][0][0]
         self.assertListEqual(map_step["withItems"], expected_with_items)
         couler._cleanup()
def run_multiple_pods(num_pods):
    para = []
    i = 0
    while i < num_pods:
        message = "couler-pod-%s" % i
        para.append(message)
        i = i + 1
    couler.map(lambda x: start_pod(x), para)
Ejemplo n.º 3
0
    def test_map_function(self):

        test_paras = ["t1", "t2", "t3"]
        couler.map(lambda x: consume(x), test_paras)
        wf = couler.workflow_yaml()

        templates = wf["spec"]["templates"]
        self.assertEqual(len(templates), 2)

        # We should have a 'consume' template
        consume_template = templates[1]
        self.assertEqual(consume_template["name"], "consume")
        # Check input parameters
        expected_paras = [{"name": "para-consume-0"}]
        self.assertListEqual(consume_template["inputs"]["parameters"],
                             expected_paras)
        # Check container
        expected_container = {
            "image": "docker/whalesay:latest",
            "command": ["cowsay"],
            "args": ['"{{inputs.parameters.para-consume-0}}"'],
        }
        self.assertDictEqual(consume_template["container"], expected_container)

        # Check the steps template
        steps_template = templates[0]
        self.assertTrue(steps_template["name"] in ["pytest", "runpy"])
        self.assertEqual(len(steps_template["steps"]), 1)
        self.assertEqual(len(steps_template["steps"][0]), 1)
        map_step = steps_template["steps"][0][0]
        self.assertIn("consume", map_step["name"])
        self.assertEqual(map_step["template"], "consume")
        # Check arguments
        expected_paras = [{
            "name": "para-consume-0",
            "value": '"{{item.para-consume-0}}"'
        }]
        self.assertListEqual(map_step["arguments"]["parameters"],
                             expected_paras)
        # Check withItems
        expected_with_items = [
            {
                "para-consume-0": "t1"
            },
            {
                "para-consume-0": "t2"
            },
            {
                "para-consume-0": "t3"
            },
        ]
        self.assertListEqual(map_step["withItems"], expected_with_items)
        couler._cleanup()