This is an automated email from the ASF dual-hosted git repository.
liuxiaochun pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new bc8e06b SchemaUtils.java TaskParametersUtils.java unit test (#1660)
bc8e06b is described below
commit bc8e06bb08be1eb7361e88f6c4f2c799aa170677
Author: khadgarmage <[email protected]>
AuthorDate: Tue Dec 31 22:51:56 2019 +0800
SchemaUtils.java TaskParametersUtils.java unit test (#1660)
* schemautils test and TaskParametersUtils test
---
.../dolphinscheduler/common/utils/SchemaUtils.java | 24 ++---
.../common/utils/SchemaUtilsTest.java | 119 +++++++++++++++++++++
.../common/utils/TaskParametersUtilsTest.java | 48 +++++++++
3 files changed, 179 insertions(+), 12 deletions(-)
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
index a4e16ba..7d341f3 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
@@ -35,7 +35,7 @@ import java.util.regex.Pattern;
*
*/
public class SchemaUtils {
-
+
private static final Logger logger =
LoggerFactory.getLogger(SchemaUtils.class);
private static Pattern p = Pattern.compile("\\s*|\t|\r|\n");
@@ -50,11 +50,11 @@ public class SchemaUtils {
if(schemaDirArr == null || schemaDirArr.length == 0) {
return null;
}
-
+
for(File file : schemaDirArr) {
schemaDirList.add(file.getName());
}
-
+
Collections.sort(schemaDirList , new Comparator() {
@Override
public int compare(Object o1 , Object o2){
@@ -66,23 +66,23 @@ public class SchemaUtils {
if(version1.equals(version2)) {
return 0;
}
-
+
if(SchemaUtils.isAGreatVersion(version1, version2)) {
return 1;
}
-
+
return -1;
-
+
} catch (Exception e) {
logger.error(e.getMessage(),e);
throw new RuntimeException(e);
}
}
});
-
+
return schemaDirList;
}
-
+
/**
* Determine whether schemaVersion is higher than version
* @param schemaVersion schema version
@@ -93,7 +93,7 @@ public class SchemaUtils {
if(StringUtils.isEmpty(schemaVersion) ||
StringUtils.isEmpty(version)) {
throw new RuntimeException("schemaVersion or version is
empty");
}
-
+
String[] schemaVersionArr = schemaVersion.split("\\.");
String[] versionArr = version.split("\\.");
int arrLength = schemaVersionArr.length < versionArr.length ?
schemaVersionArr.length : versionArr.length;
@@ -104,11 +104,11 @@ public class SchemaUtils {
return false;
}
}
-
+
// If the version and schema version is the same from 0 up to
the arrlength-1 element,whoever has a larger arrLength has a larger version
number
return schemaVersionArr.length > versionArr.length;
}
-
+
/**
* Gets the current software version number of the system
* @return current software version
@@ -127,7 +127,7 @@ public class SchemaUtils {
}
return soft_version;
}
-
+
/**
* Strips the string of space carriage returns and tabs
* @param str string
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SchemaUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SchemaUtilsTest.java
new file mode 100644
index 0000000..907a09e
--- /dev/null
+++
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SchemaUtilsTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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 org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({ LoggerFactory.class, FileUtils.class })
+public class SchemaUtilsTest {
+
+ @Test
+ public void testReplaceBlank() {
+ Assert.assertEquals("abc", SchemaUtils.replaceBlank(" abc"));
+ Assert.assertEquals("abc", SchemaUtils.replaceBlank("abc "));
+ Assert.assertEquals("abc", SchemaUtils.replaceBlank("a b c"));
+ Assert.assertEquals("abc", SchemaUtils.replaceBlank("a b c"));
+ Assert.assertEquals("", SchemaUtils.replaceBlank(" "));
+ Assert.assertEquals("", SchemaUtils.replaceBlank(null));
+ Assert.assertEquals("我怕的你", SchemaUtils.replaceBlank("我怕的 你"));
+ }
+
+ @Test
+ public void testGetSoftVersion() {
+ // file not found
+ try {
+ SchemaUtils.getSoftVersion();
+ } catch (RuntimeException e) {
+ Assert.assertEquals("Failed to get the product version description
file. The file could not be found",
+ e.getMessage());
+ }
+
+ // file exists, fmt is invalid
+ FileUtils.writeContent2File("32432423", "sql/soft_version");
+ Assert.assertEquals("32432423", SchemaUtils.getSoftVersion());
+ }
+
+ @Test
+ public void testIsAGreatVersion() {
+ // param is null
+ try {
+ SchemaUtils.isAGreatVersion(null, null);
+ } catch (RuntimeException e) {
+ Assert.assertEquals("schemaVersion or version is empty",
e.getMessage());
+ }
+
+ // param is ""
+ try {
+ SchemaUtils.isAGreatVersion("", "");
+ } catch (RuntimeException e) {
+ Assert.assertEquals("schemaVersion or version is empty",
e.getMessage());
+ }
+ Assert.assertFalse(SchemaUtils.isAGreatVersion("1", "1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("2", "1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1", "1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1", "1.0.1"));
+ Assert.assertFalse(SchemaUtils.isAGreatVersion("1.1", "1.2"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("1.1.1", "1.1"));
+ Assert.assertTrue(SchemaUtils.isAGreatVersion("10.1.1", "1.01.100"));
+ try {
+ SchemaUtils.isAGreatVersion("10.1.1", ".1");
+ } catch (Exception e) {
+ Assert.assertNotNull(e);
+ }
+ try {
+ SchemaUtils.isAGreatVersion("a.1.1", "b.1");
+ } catch (Exception e) {
+ Assert.assertNotNull(e);
+ }
+ }
+
+ @Test
+ public void testGetAllSchemaList() {
+ //normal
+ PowerMockito.mockStatic(FileUtils.class);
+ File[] files = new File[4];
+ files[0] = new File("sql/upgrade/1.2.0_schema");
+ files[1] = new File("sql/upgrade/1.0.1_schema");
+ files[2] = new File("sql/upgrade/1.0.2_schema");
+ files[3] = new File("sql/upgrade/1.1.0_schema");
+
PowerMockito.when(FileUtils.getAllDir("sql/upgrade")).thenReturn(files);
+ List<String> real = SchemaUtils.getAllSchemaList();
+ List<String> expect = Arrays.asList("1.0.1_schema", "1.0.2_schema",
+ "1.1.0_schema", "1.2.0_schema");
+ Assert.assertTrue(CollectionUtils.isEqualCollection(real, expect));
+
+ //normal
+ files = new File[0];
+
PowerMockito.when(FileUtils.getAllDir("sql/upgrade")).thenReturn(files);
+ real = SchemaUtils.getAllSchemaList();
+ Assert.assertNull(real);
+ }
+}
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtilsTest.java
new file mode 100644
index 0000000..db4a86b
--- /dev/null
+++
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtilsTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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 org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.slf4j.LoggerFactory;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(LoggerFactory.class)
+public class TaskParametersUtilsTest {
+
+ @Test
+ public void testGetParameters() {
+ Assert.assertNull(TaskParametersUtils.getParameters("xx", "ttt"));
+ Assert.assertNull(TaskParametersUtils.getParameters("SHELL", "ttt"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("SHELL", "{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("SQL", "{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("SUB_PROCESS",
"{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("PROCEDURE",
"{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("MR", "{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("SPARK", "{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("PYTHON",
"{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("DEPENDENT",
"{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("FLINK", "{}"));
+ Assert.assertNotNull(TaskParametersUtils.getParameters("HTTP", "{}"));
+ }
+}