[Improvement-3558][API] Improve `DataSourceServiceTest.java` (#3579)
* Fixed this bug "multiple threads creating folders will result in multiple identical folders" #3487 * 1. Improvement `DataSourceServiceTest` #3558 2. Get rid of some useless arguments to functions in the `DataSourceService` class * The rollback `ResourceService.java` * The rollback `ResourceService.java` * The rollback `ResourceService.java` * 1.Modify code styles. 2.Make improvement according to Yichao Yang's advice. Thank you very much for guidance.@Yichao Yang * Modify code styles. * Circumventing the checkConnection problem * Modify code styles.
This commit is contained in:
parent
836e86dca5
commit
78eb07b361
|
|
@ -100,7 +100,7 @@ public class DataSourceController extends BaseController {
|
|||
@RequestParam(value = "other") String other) {
|
||||
logger.info("login user {} create datasource name: {}, note: {}, type: {}, host: {}, port: {}, database : {}, principal: {}, userName : {}, connectType: {}, other: {}",
|
||||
loginUser.getUserName(), name, note, type, host, port, database, principal, userName, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(name, note, type, host, port, database, principal, userName, password, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other);
|
||||
Map<String, Object> result = dataSourceService.createDataSource(loginUser, name, note, type, parameter);
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
|
@ -155,7 +155,7 @@ public class DataSourceController extends BaseController {
|
|||
@RequestParam(value = "other") String other) {
|
||||
logger.info("login user {} updateProcessInstance datasource name: {}, note: {}, type: {}, connectType: {}, other: {}",
|
||||
loginUser.getUserName(), name, note, type, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(name, note, type, host, port, database, principal, userName, password, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other);
|
||||
Map<String, Object> dataSource = dataSourceService.updateDataSource(id, loginUser, name, note, type, parameter);
|
||||
return returnDataList(dataSource);
|
||||
}
|
||||
|
|
@ -280,7 +280,7 @@ public class DataSourceController extends BaseController {
|
|||
@RequestParam(value = "other") String other) {
|
||||
logger.info("login user {}, connect datasource: {}, note: {}, type: {}, connectType: {}, other: {}",
|
||||
loginUser.getUserName(), name, note, type, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(name, note, type, host, port, database, principal, userName, password, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other);
|
||||
Boolean isConnection = dataSourceService.checkConnection(type, parameter);
|
||||
Result result = new Result();
|
||||
|
||||
|
|
@ -310,7 +310,7 @@ public class DataSourceController extends BaseController {
|
|||
@RequestParam("id") int id) {
|
||||
logger.info("connection test, login user:{}, id:{}", loginUser.getUserName(), id);
|
||||
|
||||
Boolean isConnection = dataSourceService.connectionTest(loginUser, id);
|
||||
Boolean isConnection = dataSourceService.connectionTest(id);
|
||||
Result result = new Result();
|
||||
|
||||
if (isConnection) {
|
||||
|
|
@ -361,7 +361,7 @@ public class DataSourceController extends BaseController {
|
|||
logger.info("login user {}, verfiy datasource name: {}",
|
||||
loginUser.getUserName(), name);
|
||||
|
||||
return dataSourceService.verifyDataSourceName(loginUser, name);
|
||||
return dataSourceService.verifyDataSourceName(name);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ import static org.apache.dolphinscheduler.common.utils.PropertyUtils.getString;
|
|||
* datasource service
|
||||
*/
|
||||
@Service
|
||||
public class DataSourceService extends BaseService{
|
||||
public class DataSourceService extends BaseService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DataSourceService.class);
|
||||
|
||||
|
|
@ -65,7 +65,6 @@ public class DataSourceService extends BaseService{
|
|||
public static final String PRINCIPAL = "principal";
|
||||
public static final String DATABASE = "database";
|
||||
public static final String USER_NAME = "userName";
|
||||
public static final String PASSWORD = Constants.PASSWORD;
|
||||
public static final String OTHER = "other";
|
||||
|
||||
|
||||
|
|
@ -80,9 +79,9 @@ public class DataSourceService extends BaseService{
|
|||
* create data source
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param name data source name
|
||||
* @param desc data source description
|
||||
* @param type data source type
|
||||
* @param name data source name
|
||||
* @param desc data source description
|
||||
* @param type data source type
|
||||
* @param parameter datasource parameters
|
||||
* @return create result code
|
||||
*/
|
||||
|
|
@ -131,11 +130,11 @@ public class DataSourceService extends BaseService{
|
|||
* updateProcessInstance datasource
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param name data source name
|
||||
* @param desc data source description
|
||||
* @param type data source type
|
||||
* @param name data source name
|
||||
* @param desc data source description
|
||||
* @param type data source type
|
||||
* @param parameter datasource parameters
|
||||
* @param id data source id
|
||||
* @param id data source id
|
||||
* @return update result code
|
||||
*/
|
||||
public Map<String, Object> updateDataSource(int id, User loginUser, String name, String desc, DbType type, String parameter) {
|
||||
|
|
@ -148,13 +147,13 @@ public class DataSourceService extends BaseService{
|
|||
return result;
|
||||
}
|
||||
|
||||
if(!hasPerm(loginUser, dataSource.getUserId())){
|
||||
if (!hasPerm(loginUser, dataSource.getUserId())) {
|
||||
putMsg(result, Status.USER_NO_OPERATION_PERM);
|
||||
return result;
|
||||
}
|
||||
|
||||
//check name can use or not
|
||||
if(!name.trim().equals(dataSource.getName()) && checkName(name)){
|
||||
if (!name.trim().equals(dataSource.getName()) && checkName(name)) {
|
||||
putMsg(result, Status.DATASOURCE_EXIST);
|
||||
return result;
|
||||
}
|
||||
|
|
@ -199,6 +198,7 @@ public class DataSourceService extends BaseService{
|
|||
|
||||
/**
|
||||
* updateProcessInstance datasource
|
||||
*
|
||||
* @param id datasource id
|
||||
* @return data source detail
|
||||
*/
|
||||
|
|
@ -220,11 +220,11 @@ public class DataSourceService extends BaseService{
|
|||
String parameter = dataSource.getConnectionParams();
|
||||
|
||||
BaseDataSource datasourceForm = DataSourceFactory.getDatasource(dataSource.getType(), parameter);
|
||||
DbConnectType connectType = null;
|
||||
DbConnectType connectType = null;
|
||||
String hostSeperator = Constants.DOUBLE_SLASH;
|
||||
if(DbType.ORACLE.equals(dataSource.getType())){
|
||||
if (DbType.ORACLE.equals(dataSource.getType())) {
|
||||
connectType = ((OracleDataSource) datasourceForm).getConnectType();
|
||||
if(DbConnectType.ORACLE_SID.equals(connectType)){
|
||||
if (DbConnectType.ORACLE_SID.equals(connectType)) {
|
||||
hostSeperator = Constants.AT_SIGN;
|
||||
}
|
||||
}
|
||||
|
|
@ -233,7 +233,7 @@ public class DataSourceService extends BaseService{
|
|||
String other = datasourceForm.getOther();
|
||||
String address = datasourceForm.getAddress();
|
||||
|
||||
String[] hostsPorts = getHostsAndPort(address,hostSeperator);
|
||||
String[] hostsPorts = getHostsAndPort(address, hostSeperator);
|
||||
// ip host
|
||||
String host = hostsPorts[0];
|
||||
// prot
|
||||
|
|
@ -285,14 +285,13 @@ public class DataSourceService extends BaseService{
|
|||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* query datasource list by keyword
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param searchVal search value
|
||||
* @param pageNo page number
|
||||
* @param pageSize page size
|
||||
* @param pageNo page number
|
||||
* @param pageSize page size
|
||||
* @return data source list page
|
||||
*/
|
||||
public Map<String, Object> queryDataSourceListPaging(User loginUser, String searchVal, Integer pageNo, Integer pageSize) {
|
||||
|
|
@ -302,14 +301,14 @@ public class DataSourceService extends BaseService{
|
|||
|
||||
if (isAdmin(loginUser)) {
|
||||
dataSourceList = dataSourceMapper.selectPaging(dataSourcePage, 0, searchVal);
|
||||
}else{
|
||||
} else {
|
||||
dataSourceList = dataSourceMapper.selectPaging(dataSourcePage, loginUser.getId(), searchVal);
|
||||
}
|
||||
|
||||
List<DataSource> dataSources = dataSourceList.getRecords();
|
||||
List<DataSource> dataSources = dataSourceList != null ? dataSourceList.getRecords() : new ArrayList<>();
|
||||
handlePasswd(dataSources);
|
||||
PageInfo pageInfo = new PageInfo<Resource>(pageNo, pageSize);
|
||||
pageInfo.setTotalCount((int)(dataSourceList.getTotal()));
|
||||
pageInfo.setTotalCount((int) (dataSourceList != null ? dataSourceList.getTotal() : 0L));
|
||||
pageInfo.setLists(dataSources);
|
||||
result.put(Constants.DATA_LIST, pageInfo);
|
||||
putMsg(result, Status.SUCCESS);
|
||||
|
|
@ -319,14 +318,15 @@ public class DataSourceService extends BaseService{
|
|||
|
||||
/**
|
||||
* handle datasource connection password for safety
|
||||
*
|
||||
* @param dataSourceList
|
||||
*/
|
||||
private void handlePasswd(List<DataSource> dataSourceList) {
|
||||
|
||||
for (DataSource dataSource : dataSourceList) {
|
||||
|
||||
String connectionParams = dataSource.getConnectionParams();
|
||||
ObjectNode object = JSONUtils.parseObject(connectionParams);
|
||||
String connectionParams = dataSource.getConnectionParams();
|
||||
ObjectNode object = JSONUtils.parseObject(connectionParams);
|
||||
object.put(Constants.PASSWORD, Constants.XXXXXX);
|
||||
dataSource.setConnectionParams(object.toString());
|
||||
|
||||
|
|
@ -337,7 +337,7 @@ public class DataSourceService extends BaseService{
|
|||
* query data resource list
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param type data source type
|
||||
* @param type data source type
|
||||
* @return data source list page
|
||||
*/
|
||||
public Map<String, Object> queryDataSourceList(User loginUser, Integer type) {
|
||||
|
|
@ -347,7 +347,7 @@ public class DataSourceService extends BaseService{
|
|||
|
||||
if (isAdmin(loginUser)) {
|
||||
datasourceList = dataSourceMapper.listAllDataSourceByType(type);
|
||||
}else{
|
||||
} else {
|
||||
datasourceList = dataSourceMapper.queryDataSourceByType(loginUser.getId(), type);
|
||||
}
|
||||
|
||||
|
|
@ -360,11 +360,10 @@ public class DataSourceService extends BaseService{
|
|||
/**
|
||||
* verify datasource exists
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param name datasource name
|
||||
* @param name datasource name
|
||||
* @return true if data datasource not exists, otherwise return false
|
||||
*/
|
||||
public Result verifyDataSourceName(User loginUser, String name) {
|
||||
public Result verifyDataSourceName(String name) {
|
||||
Result result = new Result();
|
||||
List<DataSource> dataSourceList = dataSourceMapper.queryDataSourceByName(name);
|
||||
if (dataSourceList != null && dataSourceList.size() > 0) {
|
||||
|
|
@ -380,7 +379,7 @@ public class DataSourceService extends BaseService{
|
|||
/**
|
||||
* get connection
|
||||
*
|
||||
* @param dbType datasource type
|
||||
* @param dbType datasource type
|
||||
* @param parameter parameter
|
||||
* @return connection for datasource
|
||||
*/
|
||||
|
|
@ -399,18 +398,18 @@ public class DataSourceService extends BaseService{
|
|||
break;
|
||||
case HIVE:
|
||||
case SPARK:
|
||||
if (CommonUtils.getKerberosStartupState()) {
|
||||
System.setProperty(org.apache.dolphinscheduler.common.Constants.JAVA_SECURITY_KRB5_CONF,
|
||||
getString(org.apache.dolphinscheduler.common.Constants.JAVA_SECURITY_KRB5_CONF_PATH));
|
||||
Configuration configuration = new Configuration();
|
||||
configuration.set(org.apache.dolphinscheduler.common.Constants.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
||||
UserGroupInformation.setConfiguration(configuration);
|
||||
UserGroupInformation.loginUserFromKeytab(getString(org.apache.dolphinscheduler.common.Constants.LOGIN_USER_KEY_TAB_USERNAME),
|
||||
getString(org.apache.dolphinscheduler.common.Constants.LOGIN_USER_KEY_TAB_PATH));
|
||||
if (CommonUtils.getKerberosStartupState()) {
|
||||
System.setProperty(org.apache.dolphinscheduler.common.Constants.JAVA_SECURITY_KRB5_CONF,
|
||||
getString(org.apache.dolphinscheduler.common.Constants.JAVA_SECURITY_KRB5_CONF_PATH));
|
||||
Configuration configuration = new Configuration();
|
||||
configuration.set(org.apache.dolphinscheduler.common.Constants.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
||||
UserGroupInformation.setConfiguration(configuration);
|
||||
UserGroupInformation.loginUserFromKeytab(getString(org.apache.dolphinscheduler.common.Constants.LOGIN_USER_KEY_TAB_USERNAME),
|
||||
getString(org.apache.dolphinscheduler.common.Constants.LOGIN_USER_KEY_TAB_PATH));
|
||||
}
|
||||
if (dbType == DbType.HIVE){
|
||||
if (dbType == DbType.HIVE) {
|
||||
datasource = JSONUtils.parseObject(parameter, HiveDataSource.class);
|
||||
}else if (dbType == DbType.SPARK){
|
||||
} else if (dbType == DbType.SPARK) {
|
||||
datasource = JSONUtils.parseObject(parameter, SparkDataSource.class);
|
||||
}
|
||||
Class.forName(Constants.ORG_APACHE_HIVE_JDBC_HIVE_DRIVER);
|
||||
|
|
@ -439,20 +438,19 @@ public class DataSourceService extends BaseService{
|
|||
break;
|
||||
}
|
||||
|
||||
if(datasource != null){
|
||||
if (datasource != null) {
|
||||
connection = DriverManager.getConnection(datasource.getJdbcUrl(), datasource.getUser(), datasource.getPassword());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getMessage(),e);
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
return connection;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* check connection
|
||||
*
|
||||
* @param type data source type
|
||||
* @param type data source type
|
||||
* @param parameter data source parameters
|
||||
* @return true if connect successfully, otherwise false
|
||||
*/
|
||||
|
|
@ -470,35 +468,35 @@ public class DataSourceService extends BaseService{
|
|||
return isConnection;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* test connection
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param id datasource id
|
||||
* @return connect result code
|
||||
*/
|
||||
public boolean connectionTest(User loginUser, int id) {
|
||||
public boolean connectionTest(int id) {
|
||||
DataSource dataSource = dataSourceMapper.selectById(id);
|
||||
return checkConnection(dataSource.getType(), dataSource.getConnectionParams());
|
||||
if (dataSource != null) {
|
||||
return checkConnection(dataSource.getType(), dataSource.getConnectionParams());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* build paramters
|
||||
*
|
||||
* @param name data source name
|
||||
* @param desc data source description
|
||||
* @param type data source type
|
||||
* @param host data source host
|
||||
* @param port data source port
|
||||
* @param database data source database name
|
||||
* @param userName user name
|
||||
* @param password password
|
||||
* @param other other parameters
|
||||
* @param type data source type
|
||||
* @param host data source host
|
||||
* @param port data source port
|
||||
* @param database data source database name
|
||||
* @param userName user name
|
||||
* @param password password
|
||||
* @param other other parameters
|
||||
* @param principal principal
|
||||
* @return datasource parameter
|
||||
*/
|
||||
public String buildParameter(String name, String desc, DbType type, String host,
|
||||
public String buildParameter(DbType type, String host,
|
||||
String port, String database, String principal, String userName,
|
||||
String password, DbConnectType connectType, String other) {
|
||||
|
||||
|
|
@ -510,7 +508,7 @@ public class DataSourceService extends BaseService{
|
|||
}
|
||||
|
||||
if (CommonUtils.getKerberosStartupState() &&
|
||||
(type == DbType.HIVE || type == DbType.SPARK)){
|
||||
(type == DbType.HIVE || type == DbType.SPARK)) {
|
||||
jdbcUrl += ";principal=" + principal;
|
||||
}
|
||||
|
||||
|
|
@ -535,14 +533,14 @@ public class DataSourceService extends BaseService{
|
|||
parameterMap.put(Constants.USER, userName);
|
||||
parameterMap.put(Constants.PASSWORD, CommonUtils.encodePassword(password));
|
||||
if (CommonUtils.getKerberosStartupState() &&
|
||||
(type == DbType.HIVE || type == DbType.SPARK)){
|
||||
parameterMap.put(Constants.PRINCIPAL,principal);
|
||||
(type == DbType.HIVE || type == DbType.SPARK)) {
|
||||
parameterMap.put(Constants.PRINCIPAL, principal);
|
||||
}
|
||||
if (other != null && !"".equals(other)) {
|
||||
Map<String, String> map = JSONUtils.toMap(other);
|
||||
if (map.size() > 0) {
|
||||
StringBuilder otherSb = new StringBuilder();
|
||||
for (Map.Entry<String, String> entry: map.entrySet()) {
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||
otherSb.append(String.format("%s=%s%s", entry.getKey(), entry.getValue(), separator));
|
||||
}
|
||||
if (!Constants.DB2.equals(type.name())) {
|
||||
|
|
@ -553,7 +551,7 @@ public class DataSourceService extends BaseService{
|
|||
|
||||
}
|
||||
|
||||
if(logger.isDebugEnabled()){
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.info("parameters map:{}", JSONUtils.toJsonString(parameterMap));
|
||||
}
|
||||
return JSONUtils.toJsonString(parameterMap);
|
||||
|
|
@ -605,7 +603,7 @@ public class DataSourceService extends BaseService{
|
|||
/**
|
||||
* delete datasource
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param loginUser login user
|
||||
* @param datasourceId data source id
|
||||
* @return delete result code
|
||||
*/
|
||||
|
|
@ -615,12 +613,12 @@ public class DataSourceService extends BaseService{
|
|||
try {
|
||||
//query datasource by id
|
||||
DataSource dataSource = dataSourceMapper.selectById(datasourceId);
|
||||
if(dataSource == null){
|
||||
if (dataSource == null) {
|
||||
logger.error("resource id {} not exist", datasourceId);
|
||||
putMsg(result, Status.RESOURCE_NOT_EXIST);
|
||||
return result;
|
||||
}
|
||||
if(!hasPerm(loginUser, dataSource.getUserId())){
|
||||
if (!hasPerm(loginUser, dataSource.getUserId())) {
|
||||
putMsg(result, Status.USER_NO_OPERATION_PERM);
|
||||
return result;
|
||||
}
|
||||
|
|
@ -628,7 +626,7 @@ public class DataSourceService extends BaseService{
|
|||
datasourceUserMapper.deleteByDatasourceId(datasourceId);
|
||||
putMsg(result, Status.SUCCESS);
|
||||
} catch (Exception e) {
|
||||
logger.error("delete datasource error",e);
|
||||
logger.error("delete datasource error", e);
|
||||
throw new RuntimeException("delete datasource error");
|
||||
}
|
||||
return result;
|
||||
|
|
@ -638,7 +636,7 @@ public class DataSourceService extends BaseService{
|
|||
* unauthorized datasource
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param userId user id
|
||||
* @param userId user id
|
||||
* @return unauthed data source result code
|
||||
*/
|
||||
public Map<String, Object> unauthDatasource(User loginUser, Integer userId) {
|
||||
|
|
@ -679,7 +677,7 @@ public class DataSourceService extends BaseService{
|
|||
* authorized datasource
|
||||
*
|
||||
* @param loginUser login user
|
||||
* @param userId user id
|
||||
* @param userId user id
|
||||
* @return authorized result code
|
||||
*/
|
||||
public Map<String, Object> authedDatasource(User loginUser, Integer userId) {
|
||||
|
|
@ -700,11 +698,11 @@ public class DataSourceService extends BaseService{
|
|||
/**
|
||||
* get host and port by address
|
||||
*
|
||||
* @param address address
|
||||
* @param address address
|
||||
* @return sting array: [host,port]
|
||||
*/
|
||||
private String[] getHostsAndPort(String address) {
|
||||
return getHostsAndPort(address,Constants.DOUBLE_SLASH);
|
||||
return getHostsAndPort(address, Constants.DOUBLE_SLASH);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -714,7 +712,7 @@ public class DataSourceService extends BaseService{
|
|||
* @param separator separator
|
||||
* @return sting array: [host,port]
|
||||
*/
|
||||
private String[] getHostsAndPort(String address,String separator) {
|
||||
private String[] getHostsAndPort(String address, String separator) {
|
||||
String[] result = new String[2];
|
||||
String[] tmpArray = address.split(separator);
|
||||
String hostsAndPorts = tmpArray[tmpArray.length - 1];
|
||||
|
|
|
|||
|
|
@ -22,10 +22,14 @@ import org.apache.dolphinscheduler.common.Constants;
|
|||
import org.apache.dolphinscheduler.common.enums.DbConnectType;
|
||||
import org.apache.dolphinscheduler.common.enums.DbType;
|
||||
import org.apache.dolphinscheduler.common.enums.UserType;
|
||||
import org.apache.dolphinscheduler.common.utils.JSONUtils;
|
||||
import org.apache.dolphinscheduler.common.utils.PropertyUtils;
|
||||
import org.apache.dolphinscheduler.dao.datasource.DataSourceFactory;
|
||||
import org.apache.dolphinscheduler.dao.datasource.MySQLDataSource;
|
||||
import org.apache.dolphinscheduler.dao.entity.DataSource;
|
||||
import org.apache.dolphinscheduler.dao.entity.User;
|
||||
import org.apache.dolphinscheduler.dao.mapper.DataSourceMapper;
|
||||
import org.apache.dolphinscheduler.dao.mapper.DataSourceUserMapper;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
|
@ -35,8 +39,6 @@ import org.mockito.Mockito;
|
|||
import org.powermock.api.mockito.PowerMockito;
|
||||
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -45,16 +47,172 @@ import java.util.Map;
|
|||
@RunWith(PowerMockRunner.class)
|
||||
@PowerMockIgnore({"sun.security.*", "javax.net.*"})
|
||||
public class DataSourceServiceTest {
|
||||
private static final Logger logger = LoggerFactory.getLogger(DataSourceServiceTest.class);
|
||||
|
||||
@InjectMocks
|
||||
private DataSourceService dataSourceService;
|
||||
@Mock
|
||||
private DataSourceMapper dataSourceMapper;
|
||||
@Mock
|
||||
private DataSourceUserMapper datasourceUserMapper;
|
||||
|
||||
public void createDataSourceTest() {
|
||||
User loginUser = getAdminUser();
|
||||
|
||||
String dataSourceName = "dataSource01";
|
||||
String dataSourceDesc = "test dataSource";
|
||||
DbType dataSourceType = DbType.POSTGRESQL;
|
||||
String parameter = dataSourceService.buildParameter(dataSourceType, "172.16.133.200", "5432", "dolphinscheduler", null, "postgres", "", null, null);
|
||||
|
||||
// data source exits
|
||||
List<DataSource> dataSourceList = new ArrayList<>();
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setName(dataSourceName);
|
||||
dataSourceList.add(dataSource);
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName.trim())).thenReturn(dataSourceList);
|
||||
Map<String, Object> dataSourceExitsResult = dataSourceService.createDataSource(loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.DATASOURCE_EXIST, dataSourceExitsResult.get(Constants.STATUS));
|
||||
|
||||
// data source exits
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName.trim())).thenReturn(null);
|
||||
PowerMockito.when(dataSourceService.checkConnection(dataSourceType, parameter)).thenReturn(false);
|
||||
Map<String, Object> connectFailedResult = dataSourceService.createDataSource(loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.DATASOURCE_CONNECT_FAILED, connectFailedResult.get(Constants.STATUS));
|
||||
|
||||
// data source exits
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName.trim())).thenReturn(null);
|
||||
PowerMockito.when(dataSourceService.checkConnection(dataSourceType, parameter)).thenReturn(true);
|
||||
PowerMockito.when(DataSourceFactory.getDatasource(dataSourceType, parameter)).thenReturn(null);
|
||||
Map<String, Object> notValidError = dataSourceService.createDataSource(loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR, notValidError.get(Constants.STATUS));
|
||||
|
||||
// success
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName.trim())).thenReturn(null);
|
||||
PowerMockito.when(dataSourceService.checkConnection(dataSourceType, parameter)).thenReturn(true);
|
||||
PowerMockito.when(DataSourceFactory.getDatasource(dataSourceType, parameter)).thenReturn(JSONUtils.parseObject(parameter, MySQLDataSource.class));
|
||||
Map<String, Object> success = dataSourceService.createDataSource(loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.SUCCESS, success.get(Constants.STATUS));
|
||||
}
|
||||
|
||||
public void updateDataSourceTest() {
|
||||
User loginUser = getAdminUser();
|
||||
|
||||
int dataSourceId = 12;
|
||||
String dataSourceName = "dataSource01";
|
||||
String dataSourceDesc = "test dataSource";
|
||||
DbType dataSourceType = DbType.POSTGRESQL;
|
||||
String parameter = dataSourceService.buildParameter(dataSourceType, "172.16.133.200", "5432", "dolphinscheduler", null, "postgres", "", null, null);
|
||||
|
||||
// data source not exits
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(null);
|
||||
Map<String, Object> resourceNotExits = dataSourceService.updateDataSource(dataSourceId, loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.RESOURCE_NOT_EXIST, resourceNotExits.get(Constants.STATUS));
|
||||
// user no operation perm
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setUserId(0);
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(dataSource);
|
||||
Map<String, Object> userNoOperationPerm = dataSourceService.updateDataSource(dataSourceId, loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.USER_NO_OPERATION_PERM, userNoOperationPerm.get(Constants.STATUS));
|
||||
|
||||
// data source name exits
|
||||
dataSource.setUserId(-1);
|
||||
List<DataSource> dataSourceList = new ArrayList<>();
|
||||
dataSourceList.add(dataSource);
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(dataSource);
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName)).thenReturn(dataSourceList);
|
||||
Map<String, Object> dataSourceNameExist = dataSourceService.updateDataSource(dataSourceId, loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.DATASOURCE_EXIST, dataSourceNameExist.get(Constants.STATUS));
|
||||
|
||||
// data source connect failed
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(dataSource);
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName)).thenReturn(null);
|
||||
PowerMockito.when(dataSourceService.checkConnection(dataSourceType, parameter)).thenReturn(true);
|
||||
Map<String, Object> connectFailed = dataSourceService.updateDataSource(dataSourceId, loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.DATASOURCE_CONNECT_FAILED, connectFailed.get(Constants.STATUS));
|
||||
|
||||
//success
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(dataSource);
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName)).thenReturn(null);
|
||||
PowerMockito.when(dataSourceService.checkConnection(dataSourceType, parameter)).thenReturn(false);
|
||||
Map<String, Object> success = dataSourceService.updateDataSource(dataSourceId, loginUser, dataSourceName, dataSourceDesc, dataSourceType, parameter);
|
||||
Assert.assertEquals(Status.SUCCESS, connectFailed.get(Constants.STATUS));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDataSourceListTest(){
|
||||
public void queryDataSourceListPagingTest() {
|
||||
User loginUser = getAdminUser();
|
||||
String searchVal = "";
|
||||
int pageNo = 1;
|
||||
int pageSize = 10;
|
||||
Map<String, Object> success = dataSourceService.queryDataSourceListPaging(loginUser, searchVal, pageNo, pageSize);
|
||||
Assert.assertEquals(Status.SUCCESS, success.get(Constants.STATUS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void connectionTest() {
|
||||
int dataSourceId = -1;
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(null);
|
||||
Assert.assertFalse(dataSourceService.connectionTest(dataSourceId));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deleteTest() {
|
||||
User loginUser = getAdminUser();
|
||||
int dataSourceId = 1;
|
||||
Result result = new Result();
|
||||
|
||||
//resource not exist
|
||||
dataSourceService.putMsg(result, Status.RESOURCE_NOT_EXIST);
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(null);
|
||||
Assert.assertEquals(result.getCode(), dataSourceService.delete(loginUser, dataSourceId).getCode());
|
||||
|
||||
// user no operation perm
|
||||
dataSourceService.putMsg(result, Status.USER_NO_OPERATION_PERM);
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setUserId(0);
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(dataSource);
|
||||
Assert.assertEquals(result.getCode(), dataSourceService.delete(loginUser, dataSourceId).getCode());
|
||||
|
||||
// success
|
||||
dataSourceService.putMsg(result, Status.SUCCESS);
|
||||
dataSource.setUserId(-1);
|
||||
PowerMockito.when(dataSourceMapper.selectById(dataSourceId)).thenReturn(dataSource);
|
||||
Assert.assertEquals(result.getCode(), dataSourceService.delete(loginUser, dataSourceId).getCode());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unauthDatasourceTest() {
|
||||
User loginUser = getAdminUser();
|
||||
int userId = -1;
|
||||
|
||||
//user no operation perm
|
||||
Map<String, Object> noOperationPerm = dataSourceService.unauthDatasource(loginUser, userId);
|
||||
Assert.assertEquals(Status.USER_NO_OPERATION_PERM, noOperationPerm.get(Constants.STATUS));
|
||||
|
||||
//success
|
||||
loginUser.setUserType(UserType.ADMIN_USER);
|
||||
Map<String, Object> success = dataSourceService.unauthDatasource(loginUser, userId);
|
||||
Assert.assertEquals(Status.SUCCESS, success.get(Constants.STATUS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void authedDatasourceTest() {
|
||||
User loginUser = getAdminUser();
|
||||
int userId = -1;
|
||||
|
||||
//user no operation perm
|
||||
Map<String, Object> noOperationPerm = dataSourceService.authedDatasource(loginUser, userId);
|
||||
Assert.assertEquals(Status.USER_NO_OPERATION_PERM, noOperationPerm.get(Constants.STATUS));
|
||||
|
||||
//success
|
||||
loginUser.setUserType(UserType.ADMIN_USER);
|
||||
Map<String, Object> success = dataSourceService.authedDatasource(loginUser, userId);
|
||||
Assert.assertEquals(Status.SUCCESS, success.get(Constants.STATUS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDataSourceListTest() {
|
||||
User loginUser = new User();
|
||||
loginUser.setUserType(UserType.GENERAL_USER);
|
||||
Map<String, Object> map = dataSourceService.queryDataSourceList(loginUser, DbType.MYSQL.ordinal());
|
||||
|
|
@ -62,35 +220,34 @@ public class DataSourceServiceTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void verifyDataSourceNameTest(){
|
||||
public void verifyDataSourceNameTest() {
|
||||
User loginUser = new User();
|
||||
loginUser.setUserType(UserType.GENERAL_USER);
|
||||
String dataSourceName = "dataSource1";
|
||||
PowerMockito.when(dataSourceMapper.queryDataSourceByName(dataSourceName)).thenReturn(getDataSourceList());
|
||||
Result result = dataSourceService.verifyDataSourceName(loginUser, dataSourceName);
|
||||
Assert.assertEquals(Status.DATASOURCE_EXIST.getMsg(),result.getMsg());
|
||||
Result result = dataSourceService.verifyDataSourceName(dataSourceName);
|
||||
Assert.assertEquals(Status.DATASOURCE_EXIST.getMsg(), result.getMsg());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDataSourceTest(){
|
||||
public void queryDataSourceTest() {
|
||||
PowerMockito.when(dataSourceMapper.selectById(Mockito.anyInt())).thenReturn(null);
|
||||
Map<String, Object> result = dataSourceService.queryDataSource(Mockito.anyInt());
|
||||
Assert.assertEquals(((Status)result.get(Constants.STATUS)).getCode(),Status.RESOURCE_NOT_EXIST.getCode());
|
||||
Assert.assertEquals(((Status) result.get(Constants.STATUS)).getCode(), Status.RESOURCE_NOT_EXIST.getCode());
|
||||
|
||||
PowerMockito.when(dataSourceMapper.selectById(Mockito.anyInt())).thenReturn(getOracleDataSource());
|
||||
result = dataSourceService.queryDataSource(Mockito.anyInt());
|
||||
Assert.assertEquals(((Status)result.get(Constants.STATUS)).getCode(),Status.SUCCESS.getCode());
|
||||
Assert.assertEquals(((Status) result.get(Constants.STATUS)).getCode(), Status.SUCCESS.getCode());
|
||||
}
|
||||
|
||||
private List<DataSource> getDataSourceList() {
|
||||
|
||||
private List<DataSource> getDataSourceList(){
|
||||
|
||||
List<DataSource> dataSources = new ArrayList<>();
|
||||
List<DataSource> dataSources = new ArrayList<>();
|
||||
dataSources.add(getOracleDataSource());
|
||||
return dataSources;
|
||||
}
|
||||
|
||||
private DataSource getOracleDataSource(){
|
||||
private DataSource getOracleDataSource() {
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setName("test");
|
||||
dataSource.setNote("Note");
|
||||
|
|
@ -101,31 +258,40 @@ public class DataSourceServiceTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void buildParameter(){
|
||||
String param = dataSourceService.buildParameter("","", DbType.ORACLE, "192.168.9.1","1521","im"
|
||||
,"","test","test", DbConnectType.ORACLE_SERVICE_NAME,"");
|
||||
public void buildParameter() {
|
||||
String param = dataSourceService.buildParameter(DbType.ORACLE, "192.168.9.1", "1521", "im"
|
||||
, "", "test", "test", DbConnectType.ORACLE_SERVICE_NAME, "");
|
||||
String expected = "{\"connectType\":\"ORACLE_SERVICE_NAME\",\"type\":\"ORACLE_SERVICE_NAME\",\"address\":\"jdbc:oracle:thin:@//192.168.9.1:1521\",\"database\":\"im\",\"jdbcUrl\":\"jdbc:oracle:thin:@//192.168.9.1:1521/im\",\"user\":\"test\",\"password\":\"test\"}";
|
||||
Assert.assertEquals(expected, param);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildParameterWithDecodePassword(){
|
||||
PropertyUtils.setValue(Constants.DATASOURCE_ENCRYPTION_ENABLE,"true");
|
||||
String param = dataSourceService.buildParameter("name","desc", DbType.MYSQL, "192.168.9.1","1521","im"
|
||||
,"","test","123456", null,"");
|
||||
public void buildParameterWithDecodePassword() {
|
||||
PropertyUtils.setValue(Constants.DATASOURCE_ENCRYPTION_ENABLE, "true");
|
||||
String param = dataSourceService.buildParameter(DbType.MYSQL, "192.168.9.1", "1521", "im"
|
||||
, "", "test", "123456", null, "");
|
||||
String expected = "{\"type\":null,\"address\":\"jdbc:mysql://192.168.9.1:1521\",\"database\":\"im\",\"jdbcUrl\":\"jdbc:mysql://192.168.9.1:1521/im\",\"user\":\"test\",\"password\":\"IUAjJCVeJipNVEl6TkRVMg==\"}";
|
||||
Assert.assertEquals(expected, param);
|
||||
|
||||
|
||||
PropertyUtils.setValue(Constants.DATASOURCE_ENCRYPTION_ENABLE,"false");
|
||||
param = dataSourceService.buildParameter("name","desc", DbType.MYSQL, "192.168.9.1","1521","im"
|
||||
,"","test","123456", null,"");
|
||||
PropertyUtils.setValue(Constants.DATASOURCE_ENCRYPTION_ENABLE, "false");
|
||||
param = dataSourceService.buildParameter(DbType.MYSQL, "192.168.9.1", "1521", "im"
|
||||
, "", "test", "123456", null, "");
|
||||
expected = "{\"type\":null,\"address\":\"jdbc:mysql://192.168.9.1:1521\",\"database\":\"im\",\"jdbcUrl\":\"jdbc:mysql://192.168.9.1:1521/im\",\"user\":\"test\",\"password\":\"123456\"}";
|
||||
Assert.assertEquals(expected, param);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* get Mock Admin User
|
||||
*
|
||||
* @return admin user
|
||||
*/
|
||||
private User getAdminUser() {
|
||||
User loginUser = new User();
|
||||
loginUser.setId(-1);
|
||||
loginUser.setUserName("admin");
|
||||
loginUser.setUserType(UserType.GENERAL_USER);
|
||||
return loginUser;
|
||||
}
|
||||
|
||||
}
|
||||
2
pom.xml
2
pom.xml
|
|
@ -724,7 +724,7 @@
|
|||
<include>**/api/service/BaseDAGServiceTest.java</include>
|
||||
<include>**/api/service/BaseServiceTest.java</include>
|
||||
<include>**/api/service/DataAnalysisServiceTest.java</include>
|
||||
<!--<include>**/api/service/DataSourceServiceTest.java</include>-->
|
||||
<include>**/api/service/DataSourceServiceTest.java</include>
|
||||
<include>**/api/service/ExecutorService2Test.java</include>
|
||||
<include>**/api/service/ExecutorServiceTest.java</include>
|
||||
<include>**/api/service/LoggerServiceTest.java</include>
|
||||
|
|
|
|||
Loading…
Reference in New Issue