|
|
|
@ -14,22 +14,28 @@
|
|
|
|
|
* See the License for the specific language governing permissions and |
|
|
|
|
* limitations under the License. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
package org.apache.dolphinscheduler.api.service; |
|
|
|
|
|
|
|
|
|
import static org.mockito.ArgumentMatchers.any; |
|
|
|
|
import static org.mockito.ArgumentMatchers.anyInt; |
|
|
|
|
import static org.mockito.Mockito.times; |
|
|
|
|
import static org.mockito.Mockito.verify; |
|
|
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.api.enums.ExecuteType; |
|
|
|
|
import org.apache.dolphinscheduler.api.enums.Status; |
|
|
|
|
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl; |
|
|
|
|
import org.apache.dolphinscheduler.common.Constants; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.CommandType; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.ExecutionStatus; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.Priority; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.ReleaseState; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.RunMode; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.TaskType; |
|
|
|
|
import org.apache.dolphinscheduler.common.model.Server; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.Command; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.ProcessInstance; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.Project; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.Schedule; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.Tenant; |
|
|
|
@ -81,12 +87,16 @@ public class ExecutorService2Test {
|
|
|
|
|
|
|
|
|
|
private int processDefinitionId = 1; |
|
|
|
|
|
|
|
|
|
private int processInstanceId = 1; |
|
|
|
|
|
|
|
|
|
private int tenantId = 1; |
|
|
|
|
|
|
|
|
|
private int userId = 1; |
|
|
|
|
|
|
|
|
|
private ProcessDefinition processDefinition = new ProcessDefinition(); |
|
|
|
|
|
|
|
|
|
private ProcessInstance processInstance = new ProcessInstance(); |
|
|
|
|
|
|
|
|
|
private User loginUser = new User(); |
|
|
|
|
|
|
|
|
|
private String projectName = "projectName"; |
|
|
|
@ -106,6 +116,13 @@ public class ExecutorService2Test {
|
|
|
|
|
processDefinition.setTenantId(tenantId); |
|
|
|
|
processDefinition.setUserId(userId); |
|
|
|
|
|
|
|
|
|
// processInstance
|
|
|
|
|
processInstance.setId(processInstanceId); |
|
|
|
|
processInstance.setProcessDefinitionId(processDefinitionId); |
|
|
|
|
processInstance.setState(ExecutionStatus.FAILURE); |
|
|
|
|
processInstance.setExecutorId(userId); |
|
|
|
|
processInstance.setTenantId(tenantId); |
|
|
|
|
|
|
|
|
|
// project
|
|
|
|
|
project.setName(projectName); |
|
|
|
|
|
|
|
|
@ -119,6 +136,8 @@ public class ExecutorService2Test {
|
|
|
|
|
Mockito.when(processService.getTenantForProcess(tenantId, userId)).thenReturn(new Tenant()); |
|
|
|
|
Mockito.when(processService.createCommand(any(Command.class))).thenReturn(1); |
|
|
|
|
Mockito.when(monitorService.getServerListFromZK(true)).thenReturn(getMasterServersList()); |
|
|
|
|
Mockito.when(processService.findProcessInstanceDetailById(processInstanceId)).thenReturn(processInstance); |
|
|
|
|
Mockito.when(processService.findProcessDefineById(processDefinitionId)).thenReturn(processDefinition); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -231,6 +250,25 @@ public class ExecutorService2Test {
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testExecute() { |
|
|
|
|
List<Integer> mockRes = new ArrayList<>(); |
|
|
|
|
mockRes.add(1); |
|
|
|
|
mockRes.add(2); |
|
|
|
|
Mockito.when(processService.findTaskIdByInstanceStatusAndType(anyInt(), any(ExecutionStatus[].class), any(TaskType.class))) |
|
|
|
|
.thenReturn(mockRes); |
|
|
|
|
|
|
|
|
|
Mockito.when(processService.haveForcedSuccessInSubProcess(anyInt())) |
|
|
|
|
.thenReturn(true); |
|
|
|
|
|
|
|
|
|
Mockito.when(processService.verifyIsNeedCreateCommand(any(Command.class))) |
|
|
|
|
.thenReturn(true); |
|
|
|
|
|
|
|
|
|
Map<String, Object> result = executorService.execute(loginUser, projectName, processInstanceId, ExecuteType.RESUME_FROM_FORCED_SUCCESS); |
|
|
|
|
Assert.assertEquals(result.get(Constants.STATUS), Status.SUCCESS); |
|
|
|
|
verify(processService, times(1)).createCommand(any(Command.class)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<Server> getMasterServersList() { |
|
|
|
|
List<Server> masterServerList = new ArrayList<>(); |
|
|
|
|
Server masterServer1 = new Server(); |
|
|
|
|