mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-12-04 13:17:50 +08:00
SchemaUtils.java TaskParametersUtils.java unit test (#1660)
* schemautils test and TaskParametersUtils test
This commit is contained in:
parent
677e9cfd33
commit
bc8e06bb08
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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", "{}"));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user