Parcourir la source

common/ParameterUtils Utils Test (#1583)

* common/parameterUtils unit test
xingchun-chen il y a 5 ans
Parent
commit
90730133ac

+ 130 - 0
dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/ParameterUtilsTest.java

@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dolphinscheduler.common.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang.time.DateUtils;
+import org.apache.dolphinscheduler.common.enums.CommandType;
+import org.apache.dolphinscheduler.common.enums.DataType;
+import org.apache.dolphinscheduler.common.enums.Direct;
+import org.apache.dolphinscheduler.common.process.Property;
+import org.apache.dolphinscheduler.common.utils.placeholder.PlaceholderUtils;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.*;
+import static org.apache.dolphinscheduler.common.Constants.PARAMETER_FORMAT_TIME;
+import static org.apache.dolphinscheduler.common.utils.placeholder.TimePlaceholderUtils.replacePlaceholders;
+
+
+public class ParameterUtilsTest {
+    public static final Logger logger = LoggerFactory.getLogger(ParameterUtilsTest.class);
+
+    /**
+     * Test convertParameterPlaceholders
+     */
+    @Test
+    public void testConvertParameterPlaceholders() throws Exception {
+        // parameterString,parameterMap is null
+        Assert.assertNull(ParameterUtils.convertParameterPlaceholders(null, null));
+
+        // parameterString is null,parameterMap is not null
+        Map<String, String> parameterMap = new HashMap<String,String>();
+        parameterMap.put("testParameter","testParameter");
+        Assert.assertNull(ParameterUtils.convertParameterPlaceholders(null, parameterMap));
+
+        // parameterString、parameterMap is not null
+        String parameterString = "test_parameter";
+        Assert.assertEquals(parameterString, ParameterUtils.convertParameterPlaceholders(parameterString, parameterMap));
+
+        //replace variable ${} form
+        parameterMap.put("testParameter2","${testParameter}");
+        Assert.assertEquals(parameterString,PlaceholderUtils.replacePlaceholders(parameterString, parameterMap, true));
+
+        // replace time $[...] form, eg. $[yyyyMMdd]
+        Date cronTime = new Date();
+        Assert.assertEquals(parameterString, replacePlaceholders(parameterString, cronTime, true));
+
+        // replace time $[...] form, eg. $[yyyyMMdd]
+        Date cronTimeStr = DateUtils.parseDate("20191220145900", new String[]{PARAMETER_FORMAT_TIME});
+        Assert.assertEquals(parameterString, replacePlaceholders(parameterString, cronTimeStr, true));
+    }
+
+    /**
+     * Test curingGlobalParams
+     */
+    @Test
+    public void testCuringGlobalParams() throws Exception {
+        //define globalMap
+        Map<String, String> globalParamMap = new HashMap<>();
+        globalParamMap.put("globalParams1","Params1");
+
+        //define globalParamList
+        List<Property> globalParamList = new ArrayList<>();
+
+        //define scheduleTime
+        Date scheduleTime = DateUtils.parseDate("20191220145900", new String[]{PARAMETER_FORMAT_TIME});
+
+        //test globalParamList is null
+        String result = ParameterUtils.curingGlobalParams(globalParamMap, globalParamList, CommandType.START_CURRENT_TASK_PROCESS, scheduleTime);
+        Assert.assertNull(result);
+        Assert.assertNull(ParameterUtils.curingGlobalParams(null,null,CommandType.START_CURRENT_TASK_PROCESS,null));
+        Assert.assertNull(ParameterUtils.curingGlobalParams(globalParamMap,null,CommandType.START_CURRENT_TASK_PROCESS,scheduleTime));
+
+        //test globalParamList is not null
+        Property property=new Property("testGlobalParam", Direct.IN, DataType.VARCHAR,"testGlobalParam");
+        globalParamList.add(property);
+
+        String result2 =  ParameterUtils.curingGlobalParams(null,globalParamList,CommandType.START_CURRENT_TASK_PROCESS,scheduleTime);
+        Assert.assertEquals(result2, JSONObject.toJSONString(globalParamList));
+
+        String result3 =  ParameterUtils.curingGlobalParams(globalParamMap,globalParamList,CommandType.START_CURRENT_TASK_PROCESS,null);
+        Assert.assertEquals(result3, JSONObject.toJSONString(globalParamList));
+
+        String result4 = ParameterUtils.curingGlobalParams(globalParamMap, globalParamList, CommandType.START_CURRENT_TASK_PROCESS, scheduleTime);
+        Assert.assertEquals(result4, JSONObject.toJSONString(globalParamList));
+
+        //test var $ startsWith
+        globalParamMap.put("bizDate","${system.biz.date}");
+        globalParamMap.put("b1zCurdate","${system.biz.curdate}");
+
+
+        Property property2=new Property("testParamList1", Direct.IN, DataType.VARCHAR,"testParamList");
+        Property property3=new Property("testParamList2", Direct.IN, DataType.VARCHAR,"{testParamList1}");
+        Property property4=new Property("testParamList3", Direct.IN, DataType.VARCHAR,"${b1zCurdate}");
+
+        globalParamList.add(property2);
+        globalParamList.add(property3);
+        globalParamList.add(property4);
+
+        String result5 = ParameterUtils.curingGlobalParams(globalParamMap, globalParamList, CommandType.START_CURRENT_TASK_PROCESS, scheduleTime);
+        Assert.assertEquals(result5,JSONUtils.toJsonString(globalParamList));
+    }
+
+    /**
+     * Test handleEscapes
+     */
+    @Test
+    public void testHandleEscapes() throws Exception {
+        Assert.assertNull(ParameterUtils.handleEscapes(null));
+        Assert.assertEquals("",ParameterUtils.handleEscapes(""));
+        Assert.assertEquals("test Parameter",ParameterUtils.handleEscapes("test Parameter"));
+        Assert.assertEquals("////%test////%Parameter",ParameterUtils.handleEscapes("%test%Parameter"));
+    }
+
+}