From 90730133ac560770683c22d7e73713b43a0f41ea Mon Sep 17 00:00:00 2001 From: xingchun-chen <55787491+xingchun-chen@users.noreply.github.com> Date: Thu, 26 Dec 2019 20:09:21 +0800 Subject: [PATCH] common/ParameterUtils Utils Test (#1583) * common/parameterUtils unit test --- .../common/utils/ParameterUtilsTest.java | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/ParameterUtilsTest.java diff --git a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/ParameterUtilsTest.java b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/ParameterUtilsTest.java new file mode 100644 index 0000000000..8bb64b03c8 --- /dev/null +++ b/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 parameterMap = new HashMap(); + 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 globalParamMap = new HashMap<>(); + globalParamMap.put("globalParams1","Params1"); + + //define globalParamList + List 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")); + } + +}