def test_update_json_list_in_file_two_times(self):
        target_json_file = path.path("./json_out.json")
        if target_json_file.exists():
            target_json_file.remove()
        source_template_json_file = path.path(
            r"./src/wpsremote/xmpp_data/test/CMREOAA_MainConfigFile_template.json"
        )

        param1 = computation_job_param.ComputationJobParam(
            "minlat", "float", "par title", "min latitude")
        param2 = computation_job_param.ComputationJobParam(
            "maxlat", "float", "par title", "max latitude")

        inputs = computation_job_inputs.ComputationJobInputs()

        action1 = computational_job_input_action_update_json_file.ComputationalJobInputActionUpdateJSONFile(
            "minlat", target_json_file, "['Config']['latLim'][0]",
            source_template_json_file)

        inputs.add_input(param1)
        inputs.add_input(param2)

        inputs.set_values({"minlat": "75.5", "maxlat": "76.5"})
        action1.set_inputs(inputs)

        # check target_json_file
        json_text = target_json_file.text()
        j = json.loads(json_text)
        self.assertTrue(75.5, j['Config']['latLim'][0])
        self.assertTrue(76.5, j['Config']['latLim'][1])
 def test_two_params(self):
     p1 = computation_job_param.ComputationJobParam("mypar1", "int",
                                                    "par 1", "par descr 1")
     p2 = computation_job_param.ComputationJobParam("mypar2", "string",
                                                    "par 2", "par descr 2")
     inputs = computation_job_inputs.ComputationJobInputs()
     inputs.add_input([p1, p2])
     inputs.set_values({"mypar1": "1", "mypar2": "abc"})
     self.assertEquals(p1.get_value_string(), "1")
     self.assertEquals(p2.get_value_string(), "abc")
    def test_update_json_file_action_with_string(self):
        os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__),
                                              '..')))
        target_json_file = path.path("./json_out.json")
        if target_json_file.exists():
            target_json_file.remove()
        source_template_json_file = path.path(
            r"./src/wpsremote/xmpp_data/test/CMREOAA_MainConfigFile_template.json"
        )

        param1 = computation_job_param.ComputationJobParam(
            "path_file_name", "string", "par 1", "path_file_name descr")
        inputs = computation_job_inputs.ComputationJobInputs()
        action1 = computational_job_input_action_update_json_file.ComputationalJobInputActionUpdateJSONFile(
            "path_file_name", target_json_file, "['Config']['pathFilename']",
            source_template_json_file)

        inputs.add_input(param1)
        inputs.set_values({"path_file_name": "thisIsOK.txt"})
        action1.set_inputs(inputs)

        # check target_json_file
        json_text = target_json_file.text()
        j = json.loads(json_text)
        self.assertTrue("thisIsOK.txt", j['Config']['pathFilename'])
    def test_create_2_json_file_action(self):
        p1 = computation_job_param.ComputationJobParam("mypar1",
                                                       "application/json",
                                                       "par 1",
                                                       "par descr 1",
                                                       max_occurencies=2)
        inputs = computation_job_inputs.ComputationJobInputs()
        inputs.add_input(p1)

        actions = computational_job_input_actions.ComputationalJobInputActions(
        )
        a1 = computational_job_input_action_create_json_file. \
            ComputationalJobInputActionCreateJSONFile("mypar1",
                                                      path.path("./json_out_${json_path_expr}.json"),
                                                      "['Asset']['id']",
                                                      path.path("./src/wpsremote/xmpp_data/test/asset_schema.json"))
        actions.add_actions(a1)

        inputs.set_values({
            "mypar1": [
                TestComputationJobInputs.json_text1,
                TestComputationJobInputs.json_text2
            ]
        })
        actions.execute(inputs)

        self.assertTrue(a1.exists())
 def test_set_datetime_param(self):
     p1 = computation_job_param.ComputationJobParam("mypar",
                                                    "datetime",
                                                    "par title",
                                                    "par descr",
                                                    formatter="%Y-%m-%d")
     p1.set_value("2019-10-21")
     self.assertEquals(p1.get_value_string(), "2019-10-21")
 def test_set_multiple_int_param(self):
     p1 = computation_job_param.ComputationJobParam("mypar",
                                                    "int",
                                                    "par title",
                                                    "par descr",
                                                    max_occurencies=2)
     p1.set_value(["1", "2"])
     self.assertEquals(p1.get_value_string(), ["1", "2"])
 def test_set_int_param_wrong_value(self):
     p1 = computation_job_param.ComputationJobParam("mypar", "int",
                                                    "par title",
                                                    "par descr")
     # self.assertRaises( TypeError, p1.set_value("zxc") )
     try:
         p1.set_value("all your base are belong to us")
         self.fail()
     except TypeError:
         self.assertTrue(True)
 def test_set_multiple_int_param_wrong_occurrencies(self):
     p1 = computation_job_param.ComputationJobParam("mypar",
                                                    "int",
                                                    "par title",
                                                    "par descr",
                                                    max_occurencies=1)
     try:
         p1.set_value(["1", "2"])
         self.fail()
     except TypeError:
         self.assertTrue(True)
    def test_cmd_line_action_2_values(self):
        p1 = computation_job_param.ComputationJobParam("mypar1", "int",
                                                       "par 1", "par descr 1")
        p2 = computation_job_param.ComputationJobParam("mypar2", "string",
                                                       "par 2", "par descr 2")
        inputs = computation_job_inputs.ComputationJobInputs()
        inputs.add_input([p1, p2])

        actions = computational_job_input_actions.ComputationalJobInputActions(
        )
        actions.add_actions(
            computational_job_input_action_cmd_param.
            ComputationalJobInputActionCmdParam("mypar1", "--name=value"))
        actions.add_actions(
            computational_job_input_action_cmd_param.
            ComputationalJobInputActionCmdParam("mypar2", "--name=value"))

        inputs.set_values({"mypar1": "1", "mypar2": "abc"})
        actions.execute(inputs)

        self.assertEquals(actions.get_cmd_line(), "--mypar1=1 --mypar2=abc")
    def test_cmd_line_action(self):
        inputs = computation_job_inputs.ComputationJobInputs()
        inputs.add_input(
            computation_job_param.ComputationJobParam("mypar1", "int", "par 1",
                                                      "par descr 1"))

        actions = computational_job_input_actions.ComputationalJobInputActions(
        )
        actions.add_actions(
            computational_job_input_action_cmd_param.
            ComputationalJobInputActionCmdParam("mypar1", "--name=value"))
        inputs.set_values({"mypar1": "1"})
        actions.execute(inputs)

        self.assertEquals(actions.get_cmd_line(), "--mypar1=1")
 def test_read_action_from_dict(self):
     input_dict = {
         "Action1": {
             "input_ref": "mypar1",
             "class": "cmdline",
             "template": "--name=value"
         }
     }
     inputs = computation_job_inputs.ComputationJobInputs()
     inputs.add_input(
         computation_job_param.ComputationJobParam("mypar1", "int", "par 1",
                                                   "par descr"))
     actions = computational_job_input_actions. \
         ComputationalJobInputActions.create_from_dict(input_dict)
     inputs.set_values({"mypar1": "1"})
     actions.execute(inputs)
     self.assertEquals(actions.get_cmd_line(), "--mypar1=1")
    def test_create_json_file_action(self):
        os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__),
                                              '..')))
        p1 = computation_job_param.ComputationJobParam("mypar1",
                                                       "application/json",
                                                       "par 1", "par descr 1")
        inputs = computation_job_inputs.ComputationJobInputs()
        inputs.add_input(p1)

        actions = computational_job_input_actions.ComputationalJobInputActions(
        )
        a1 = computational_job_input_action_create_json_file. \
            ComputationalJobInputActionCreateJSONFile("mypar1",
                                                      path.path("./json_out_${json_path_expr}.json"),
                                                      "['Asset']['id']",
                                                      path.path("./src/wpsremote/xmpp_data/test/asset_schema.json"))
        actions.add_actions(a1)

        inputs.set_values({"mypar1": TestComputationJobInputs.json_text1})
        actions.execute(inputs)

        self.assertTrue(a1.exists())
    def test_read_action_from_ini(self):
        ini_text = '''[Action1]
        input_ref = mypar1
        class = cmdline
        template = --name=value
        '''
        config = ConfigParser.ConfigParser()
        ini_file = mockutils.FileLikeObjectMock(ini_text)
        config.readfp(ini_file)
        input_section = config.items('Action1')

        inputs = computation_job_inputs.ComputationJobInputs()
        inputs.add_input(
            computation_job_param.ComputationJobParam("mypar1", "int", "par 1",
                                                      "par descr"))

        actions = computational_job_input_actions. \
            ComputationalJobInputActions.create_from_config({'Action1': input_section})

        inputs.set_values({"mypar1": "1"})
        actions.execute(inputs)

        self.assertEquals(actions.get_cmd_line(), "--mypar1=1")
    def test_update_json_file_action_with_int(self):
        target_json_file = path.path("./json_out.json")
        if target_json_file.exists():
            target_json_file.remove()
        source_template_json_file = path.path(
            r"./src/wpsremote/xmpp_data/test/CMREOAA_MainConfigFile_template.json"
        )

        param1 = computation_job_param.ComputationJobParam(
            "numberOfevaluations", "int", "par 1", "numberOfevaluations descr")
        inputs = computation_job_inputs.ComputationJobInputs()
        action1 = computational_job_input_action_update_json_file.ComputationalJobInputActionUpdateJSONFile(
            "numberOfevaluations", target_json_file,
            "['Config']['nEvaluations']", source_template_json_file)

        inputs.add_input(param1)
        inputs.set_values({"numberOfevaluations": "100"})
        action1.set_inputs(inputs)

        # check target_json_file
        json_text = target_json_file.text()
        j = json.loads(json_text)
        self.assertTrue(100, j['Config']['nEvaluations'])
 def test_set_int_param(self):
     p1 = computation_job_param.ComputationJobParam("mypar", "int",
                                                    "par title",
                                                    "par descr")
     p1.set_value("1")
     self.assertEquals(p1.get_value_string(), "1")
 def test_set_wrong_datetime_param(self):
     p1 = computation_job_param.ComputationJobParam("mypar", "datetime",
                                                    "par title",
                                                    "par descr")
     self.assertIsNone(p1.get_value_string())
 def test_set_wrong_url_param(self):
     p1 = computation_job_param.ComputationJobParam("mypar", "url",
                                                    "par title",
                                                    "par descr")
     self.assertRaises(Exception,
                       lambda: p1.set_value("https://www.google.com/%"))
 def test_set_url_param(self):
     p1 = computation_job_param.ComputationJobParam("mypar", "url",
                                                    "par title",
                                                    "par descr")
     p1.set_value("https://www.google.com/")
     self.assertEquals(p1.get_value_string(), "https://www.google.com/")
 def test_set_wrong_float_param(self):
     p1 = computation_job_param.ComputationJobParam("mypar", "float",
                                                    "par title",
                                                    "par descr")
     self.assertRaises(TypeError, lambda: p1.set_value("not float"))