Browse Source
* Modify Project and ProjectUser Mapper * Modify Project and ProjectUser Mapper * project_code is bigint(20) * modify ERROR name * modify saveProcessDefine, remove the duplicate code with createTaskAndRelation * modify import/export processdefinition, add genProcessData * fix ut and bug * code style * repalce project_id with code * conflicts solve * conflicts solve * conflicts solve * bugfix * modify listResources mothod and remove getResourceIds mothod * 1 * conflicts solve * modify listResources mothod and remove getResourceIds mothod * modify listResources mothod and remove getResourceIds mothod * replace processDefinitionVersion with processDefinitionLog * codestyle * codestyle * add ProcessTaskRelationServiceImplTest/TaskDefinitionServiceImplTest * conflicts solve * conflicts solve * conflicts solve * add ProcessTaskRelationServiceImplTest/TaskDefinitionServiceImplTest * codestylepull/3/MERGE
Simon
4 years ago
committed by
GitHub
9 changed files with 466 additions and 87 deletions
@ -0,0 +1,107 @@
|
||||
/* |
||||
* 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.api.service; |
||||
|
||||
import org.apache.dolphinscheduler.api.enums.Status; |
||||
import org.apache.dolphinscheduler.api.service.impl.ProcessTaskRelationServiceImpl; |
||||
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl; |
||||
import org.apache.dolphinscheduler.common.Constants; |
||||
import org.apache.dolphinscheduler.common.enums.UserType; |
||||
import org.apache.dolphinscheduler.dao.entity.Project; |
||||
import org.apache.dolphinscheduler.dao.entity.User; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper; |
||||
|
||||
import java.text.MessageFormat; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
import org.junit.Assert; |
||||
import org.junit.Test; |
||||
import org.junit.runner.RunWith; |
||||
import org.mockito.InjectMocks; |
||||
import org.mockito.Mock; |
||||
import org.mockito.Mockito; |
||||
import org.mockito.junit.MockitoJUnitRunner; |
||||
|
||||
@RunWith(MockitoJUnitRunner.class) |
||||
public class ProcessTaskRelationServiceImplTest { |
||||
@InjectMocks |
||||
private ProcessTaskRelationServiceImpl processTaskRelationService; |
||||
|
||||
@Mock |
||||
private ProcessDefinitionMapper processDefineMapper; |
||||
|
||||
@Mock |
||||
private ProcessTaskRelationMapper processTaskRelationMapper; |
||||
|
||||
@Mock |
||||
private ProjectMapper projectMapper; |
||||
|
||||
@Mock |
||||
private ProjectServiceImpl projectService; |
||||
|
||||
@Test |
||||
public void queryProcessTaskRelationTest() { |
||||
String projectName = "project_test1"; |
||||
|
||||
Project project = getProject(projectName); |
||||
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project); |
||||
|
||||
User loginUser = new User(); |
||||
loginUser.setId(-1); |
||||
loginUser.setUserType(UserType.GENERAL_USER); |
||||
|
||||
Map<String, Object> result = new HashMap<>(); |
||||
putMsg(result, Status.SUCCESS, projectName); |
||||
|
||||
//project check auth fail
|
||||
Mockito.when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); |
||||
|
||||
Map<String, Object> relation = processTaskRelationService |
||||
.queryProcessTaskRelation(loginUser, projectName, 11L); |
||||
|
||||
Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS)); |
||||
} |
||||
|
||||
private void putMsg(Map<String, Object> result, Status status, Object... statusParams) { |
||||
result.put(Constants.STATUS, status); |
||||
if (statusParams != null && statusParams.length > 0) { |
||||
result.put(Constants.MSG, MessageFormat.format(status.getMsg(), statusParams)); |
||||
} else { |
||||
result.put(Constants.MSG, status.getMsg()); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* get mock Project |
||||
* |
||||
* @param projectName projectName |
||||
* @return Project |
||||
*/ |
||||
private Project getProject(String projectName) { |
||||
Project project = new Project(); |
||||
project.setCode(11L); |
||||
project.setId(1); |
||||
project.setName(projectName); |
||||
project.setUserId(1); |
||||
return project; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,298 @@
|
||||
/* |
||||
* 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.api.service; |
||||
|
||||
import org.apache.dolphinscheduler.api.enums.Status; |
||||
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl; |
||||
import org.apache.dolphinscheduler.api.service.impl.TaskDefinitionServiceImpl; |
||||
import org.apache.dolphinscheduler.common.Constants; |
||||
import org.apache.dolphinscheduler.common.enums.UserType; |
||||
import org.apache.dolphinscheduler.common.model.TaskNode; |
||||
import org.apache.dolphinscheduler.common.utils.JSONUtils; |
||||
import org.apache.dolphinscheduler.dao.entity.Project; |
||||
import org.apache.dolphinscheduler.dao.entity.TaskDefinition; |
||||
import org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog; |
||||
import org.apache.dolphinscheduler.dao.entity.User; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper; |
||||
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper; |
||||
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper; |
||||
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper; |
||||
import org.apache.dolphinscheduler.service.process.ProcessService; |
||||
|
||||
import java.text.MessageFormat; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
import org.junit.Assert; |
||||
import org.junit.Test; |
||||
import org.junit.runner.RunWith; |
||||
import org.mockito.InjectMocks; |
||||
import org.mockito.Mock; |
||||
import org.mockito.Mockito; |
||||
import org.mockito.junit.MockitoJUnitRunner; |
||||
|
||||
@RunWith(MockitoJUnitRunner.class) |
||||
public class TaskDefinitionServiceImplTest { |
||||
|
||||
String taskDefinitionJson = "{\n" |
||||
+ " \"type\": \"SQL\",\n" |
||||
+ " \"id\": \"tasks-27297\",\n" |
||||
+ " \"name\": \"SQL\",\n" |
||||
+ " \"params\": {\n" |
||||
+ " \"type\": \"MYSQL\",\n" |
||||
+ " \"datasource\": 1,\n" |
||||
+ " \"sql\": \"select * from test\",\n" |
||||
+ " \"udfs\": \"\",\n" |
||||
+ " \"sqlType\": \"1\",\n" |
||||
+ " \"title\": \"\",\n" |
||||
+ " \"receivers\": \"\",\n" |
||||
+ " \"receiversCc\": \"\",\n" |
||||
+ " \"showType\": \"TABLE\",\n" |
||||
+ " \"localParams\": [\n" |
||||
+ " \n" |
||||
+ " ],\n" |
||||
+ " \"connParams\": \"\",\n" |
||||
+ " \"preStatements\": [\n" |
||||
+ " \n" |
||||
+ " ],\n" |
||||
+ " \"postStatements\": [\n" |
||||
+ " \n" |
||||
+ " ]\n" |
||||
+ " },\n" |
||||
+ " \"description\": \"\",\n" |
||||
+ " \"runFlag\": \"NORMAL\",\n" |
||||
+ " \"dependence\": {\n" |
||||
+ " \n" |
||||
+ " },\n" |
||||
+ " \"maxRetryTimes\": \"0\",\n" |
||||
+ " \"retryInterval\": \"1\",\n" |
||||
+ " \"timeout\": {\n" |
||||
+ " \"strategy\": \"\",\n" |
||||
+ " \"enable\": false\n" |
||||
+ " },\n" |
||||
+ " \"taskInstancePriority\": \"MEDIUM\",\n" |
||||
+ " \"workerGroupId\": -1,\n" |
||||
+ " \"preTasks\": [\n" |
||||
+ " \"dependent\"\n" |
||||
+ " ]\n" |
||||
+ "}\n"; |
||||
|
||||
@InjectMocks |
||||
private TaskDefinitionServiceImpl taskDefinitionService; |
||||
|
||||
@Mock |
||||
private TaskDefinitionMapper taskDefinitionMapper; |
||||
|
||||
@Mock |
||||
private TaskDefinitionLogMapper taskDefinitionLogMapper; |
||||
|
||||
@Mock |
||||
private ProcessDefinitionMapper processDefineMapper; |
||||
|
||||
@Mock |
||||
private ProcessTaskRelationMapper processTaskRelationMapper; |
||||
|
||||
@Mock |
||||
private ProjectMapper projectMapper; |
||||
|
||||
@Mock |
||||
private ProjectServiceImpl projectService; |
||||
|
||||
@Mock |
||||
private ProcessService processService; |
||||
|
||||
@Test |
||||
public void createTaskDefinition() { |
||||
String projectName = "project_test1"; |
||||
|
||||
Project project = getProject(projectName); |
||||
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project); |
||||
|
||||
User loginUser = new User(); |
||||
loginUser.setId(-1); |
||||
loginUser.setUserType(UserType.GENERAL_USER); |
||||
|
||||
Map<String, Object> result = new HashMap<>(); |
||||
putMsg(result, Status.SUCCESS, projectName); |
||||
|
||||
//project check auth fail
|
||||
Mockito.when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); |
||||
|
||||
TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson, TaskNode.class); |
||||
|
||||
Mockito.when(processService.saveTaskDefinition(Mockito.eq(loginUser) |
||||
, Mockito.eq(project.getCode()) |
||||
, Mockito.eq(taskNode) |
||||
, Mockito.any(TaskDefinition.class))) |
||||
.thenReturn(1); |
||||
|
||||
Map<String, Object> relation = taskDefinitionService |
||||
.createTaskDefinition(loginUser, projectName, taskDefinitionJson); |
||||
|
||||
Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS)); |
||||
|
||||
} |
||||
|
||||
@Test |
||||
public void queryTaskDefinitionByName() { |
||||
String projectName = "project_test1"; |
||||
String taskName = "task"; |
||||
Project project = getProject(projectName); |
||||
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project); |
||||
|
||||
User loginUser = new User(); |
||||
loginUser.setId(-1); |
||||
loginUser.setUserType(UserType.GENERAL_USER); |
||||
|
||||
Map<String, Object> result = new HashMap<>(); |
||||
putMsg(result, Status.SUCCESS, projectName); |
||||
|
||||
//project check auth fail
|
||||
Mockito.when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); |
||||
|
||||
TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson, TaskNode.class); |
||||
|
||||
Mockito.when(taskDefinitionMapper.queryByDefinitionName(project.getCode(), taskName)) |
||||
.thenReturn(new TaskDefinition()); |
||||
|
||||
Map<String, Object> relation = taskDefinitionService |
||||
.queryTaskDefinitionByName(loginUser, projectName, taskName); |
||||
|
||||
Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS)); |
||||
} |
||||
|
||||
@Test |
||||
public void deleteTaskDefinitionByCode() { |
||||
String projectName = "project_test1"; |
||||
|
||||
Project project = getProject(projectName); |
||||
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project); |
||||
|
||||
User loginUser = new User(); |
||||
loginUser.setId(-1); |
||||
loginUser.setUserType(UserType.GENERAL_USER); |
||||
|
||||
Map<String, Object> result = new HashMap<>(); |
||||
putMsg(result, Status.SUCCESS, projectName); |
||||
|
||||
//project check auth fail
|
||||
Mockito.when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); |
||||
|
||||
TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson, TaskNode.class); |
||||
|
||||
Mockito.when(taskDefinitionMapper.deleteByCode(Mockito.anyLong())) |
||||
.thenReturn(1); |
||||
|
||||
Map<String, Object> relation = taskDefinitionService |
||||
.deleteTaskDefinitionByCode(loginUser, projectName, 11L); |
||||
|
||||
Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS)); |
||||
|
||||
} |
||||
|
||||
@Test |
||||
public void updateTaskDefinition() { |
||||
String projectName = "project_test1"; |
||||
|
||||
Project project = getProject(projectName); |
||||
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project); |
||||
|
||||
User loginUser = new User(); |
||||
loginUser.setId(-1); |
||||
loginUser.setUserType(UserType.GENERAL_USER); |
||||
|
||||
Map<String, Object> result = new HashMap<>(); |
||||
putMsg(result, Status.SUCCESS, projectName); |
||||
|
||||
//project check auth fail
|
||||
Mockito.when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); |
||||
|
||||
TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson, TaskNode.class); |
||||
|
||||
Mockito.when(processService.updateTaskDefinition(Mockito.eq(loginUser) |
||||
, Mockito.eq(project.getCode()) |
||||
, Mockito.eq(taskNode) |
||||
, Mockito.any(TaskDefinition.class))) |
||||
.thenReturn(1); |
||||
|
||||
Mockito.when(taskDefinitionMapper.queryByDefinitionCode(11L)) |
||||
.thenReturn(new TaskDefinition()); |
||||
|
||||
Map<String, Object> relation = taskDefinitionService |
||||
.updateTaskDefinition(loginUser, projectName, 11L, taskDefinitionJson); |
||||
|
||||
Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS)); |
||||
} |
||||
|
||||
@Test |
||||
public void switchVersion() { |
||||
String projectName = "project_test1"; |
||||
int version = 1; |
||||
Long taskCode = 11L; |
||||
Project project = getProject(projectName); |
||||
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project); |
||||
|
||||
User loginUser = new User(); |
||||
loginUser.setId(-1); |
||||
loginUser.setUserType(UserType.GENERAL_USER); |
||||
|
||||
Map<String, Object> result = new HashMap<>(); |
||||
putMsg(result, Status.SUCCESS, projectName); |
||||
|
||||
//project check auth fail
|
||||
Mockito.when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); |
||||
|
||||
TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson, TaskNode.class); |
||||
|
||||
Mockito.when(taskDefinitionLogMapper.queryByDefinitionCodeAndVersion(taskCode, version)) |
||||
.thenReturn(new TaskDefinitionLog()); |
||||
|
||||
Mockito.when(taskDefinitionMapper.queryByDefinitionCode(taskCode)) |
||||
.thenReturn(new TaskDefinition()); |
||||
|
||||
Map<String, Object> relation = taskDefinitionService |
||||
.switchVersion(loginUser, projectName, taskCode, version); |
||||
|
||||
Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS)); |
||||
} |
||||
|
||||
private void putMsg(Map<String, Object> result, Status status, Object... statusParams) { |
||||
result.put(Constants.STATUS, status); |
||||
if (statusParams != null && statusParams.length > 0) { |
||||
result.put(Constants.MSG, MessageFormat.format(status.getMsg(), statusParams)); |
||||
} else { |
||||
result.put(Constants.MSG, status.getMsg()); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* get mock Project |
||||
* |
||||
* @param projectName projectName |
||||
* @return Project |
||||
*/ |
||||
private Project getProject(String projectName) { |
||||
Project project = new Project(); |
||||
project.setId(1); |
||||
project.setName(projectName); |
||||
project.setUserId(1); |
||||
return project; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue