Browse Source
Co-authored-by: Rick Cheng <rickchengx@gmail.com> Co-authored-by: caishunfeng <caishunfeng2021@gmail.com>dev_wenjun_refactorMaster
John Huang
9 months ago
committed by
GitHub
11 changed files with 450 additions and 0 deletions
@ -0,0 +1,104 @@ |
|||||||
|
/* |
||||||
|
* 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.server.worker.runner.listener; |
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals; |
||||||
|
import static org.mockito.Mockito.times; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.ITaskInstanceExecutionEvent; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstanceExecutionFinishEventAck; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstanceExecutionInfoEventAck; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstanceExecutionRunningEventAck; |
||||||
|
import org.apache.dolphinscheduler.server.worker.message.MessageRetryRunner; |
||||||
|
|
||||||
|
import org.junit.jupiter.api.Assertions; |
||||||
|
import org.junit.jupiter.api.Test; |
||||||
|
import org.mockito.ArgumentCaptor; |
||||||
|
import org.mockito.Mockito; |
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
|
||||||
|
public class TaskInstanceExecutionEventAckListenFunctionTest { |
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(TaskInstanceExecutionEventAckListenFunctionTest.class); |
||||||
|
private MessageRetryRunner messageRetryRunner = Mockito.mock(MessageRetryRunner.class); |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testTaskInstanceExecutionEventAckListenFunctionManager() { |
||||||
|
TaskInstanceExecutionFinishEventAckListenFunction taskInstanceExecutionFinishEventAckListenFunction = |
||||||
|
new TaskInstanceExecutionFinishEventAckListenFunction(messageRetryRunner); |
||||||
|
TaskInstanceExecutionInfoEventAckListenFunction taskInstanceExecutionInfoEventAckListenFunction = |
||||||
|
new TaskInstanceExecutionInfoEventAckListenFunction(messageRetryRunner); |
||||||
|
TaskInstanceExecutionRunningEventAckListenFunction taskInstanceExecutionRunningEventAckListenFunction = |
||||||
|
new TaskInstanceExecutionRunningEventAckListenFunction(messageRetryRunner); |
||||||
|
TaskInstanceExecutionEventAckListenFunctionManager taskInstanceExecutionEventAckListenFunctionManager = |
||||||
|
new TaskInstanceExecutionEventAckListenFunctionManager( |
||||||
|
taskInstanceExecutionRunningEventAckListenFunction, |
||||||
|
taskInstanceExecutionFinishEventAckListenFunction, |
||||||
|
taskInstanceExecutionInfoEventAckListenFunction); |
||||||
|
Assertions.assertEquals(taskInstanceExecutionRunningEventAckListenFunction, |
||||||
|
taskInstanceExecutionEventAckListenFunctionManager |
||||||
|
.getTaskInstanceExecutionRunningEventAckListenFunction()); |
||||||
|
Assertions.assertEquals(taskInstanceExecutionInfoEventAckListenFunction, |
||||||
|
taskInstanceExecutionEventAckListenFunctionManager |
||||||
|
.getTaskInstanceExecutionInfoEventAckListenFunction()); |
||||||
|
Assertions.assertEquals(taskInstanceExecutionFinishEventAckListenFunction, |
||||||
|
taskInstanceExecutionEventAckListenFunctionManager |
||||||
|
.getTaskInstanceExecutionFinishEventAckListenFunction()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testTaskInstanceExecutionEventAckListenFunctionDryRun() { |
||||||
|
int taskInstanceId1 = 111; |
||||||
|
int taskInstanceId2 = 222; |
||||||
|
int taskInstanceId3 = 333; |
||||||
|
TaskInstanceExecutionFinishEventAckListenFunction taskInstanceExecutionFinishEventAckListenFunction = |
||||||
|
new TaskInstanceExecutionFinishEventAckListenFunction(messageRetryRunner); |
||||||
|
taskInstanceExecutionFinishEventAckListenFunction.handleTaskInstanceExecutionEventAck( |
||||||
|
TaskInstanceExecutionFinishEventAck.success(taskInstanceId1)); |
||||||
|
|
||||||
|
ArgumentCaptor acInt = ArgumentCaptor.forClass(int.class); |
||||||
|
ArgumentCaptor acEventType = |
||||||
|
ArgumentCaptor.forClass(ITaskInstanceExecutionEvent.TaskInstanceExecutionEventType.class); |
||||||
|
|
||||||
|
Mockito.verify(messageRetryRunner, times(1)).removeRetryMessage( |
||||||
|
(int) acInt.capture(), |
||||||
|
(ITaskInstanceExecutionEvent.TaskInstanceExecutionEventType) acEventType.capture()); |
||||||
|
|
||||||
|
assertEquals(taskInstanceId1, acInt.getValue()); |
||||||
|
|
||||||
|
TaskInstanceExecutionInfoEventAckListenFunction taskInstanceExecutionInfoEventAckListenFunction = |
||||||
|
new TaskInstanceExecutionInfoEventAckListenFunction(messageRetryRunner); |
||||||
|
taskInstanceExecutionInfoEventAckListenFunction.handleTaskInstanceExecutionEventAck( |
||||||
|
TaskInstanceExecutionInfoEventAck.success(taskInstanceId2)); |
||||||
|
|
||||||
|
Mockito.verify(messageRetryRunner, times(2)).removeRetryMessage( |
||||||
|
(int) acInt.capture(), |
||||||
|
(ITaskInstanceExecutionEvent.TaskInstanceExecutionEventType) acEventType.capture()); |
||||||
|
assertEquals(taskInstanceId2, acInt.getValue()); |
||||||
|
|
||||||
|
TaskInstanceExecutionRunningEventAckListenFunction taskInstanceExecutionRunningEventAckListenFunction = |
||||||
|
new TaskInstanceExecutionRunningEventAckListenFunction(messageRetryRunner); |
||||||
|
taskInstanceExecutionRunningEventAckListenFunction.handleTaskInstanceExecutionEventAck( |
||||||
|
TaskInstanceExecutionRunningEventAck.success(taskInstanceId3)); |
||||||
|
Mockito.verify(messageRetryRunner, times(3)).removeRetryMessage( |
||||||
|
(int) acInt.capture(), |
||||||
|
(ITaskInstanceExecutionEvent.TaskInstanceExecutionEventType) acEventType.capture()); |
||||||
|
assertEquals(taskInstanceId3, acInt.getValue()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,280 @@ |
|||||||
|
/* |
||||||
|
* 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.server.worker.runner.operator; |
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any; |
||||||
|
import static org.mockito.BDDMockito.given; |
||||||
|
import static org.mockito.Mockito.times; |
||||||
|
import static org.mockito.Mockito.verify; |
||||||
|
import static org.mockito.Mockito.when; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstanceDispatchRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstanceDispatchResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstanceKillRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstanceKillResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstancePauseRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.TaskInstancePauseResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.UpdateWorkflowHostRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.worker.transportor.UpdateWorkflowHostResponse; |
||||||
|
import org.apache.dolphinscheduler.plugin.storage.api.StorageOperate; |
||||||
|
import org.apache.dolphinscheduler.plugin.task.api.AbstractTask; |
||||||
|
import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; |
||||||
|
import org.apache.dolphinscheduler.plugin.task.api.TaskPluginManager; |
||||||
|
import org.apache.dolphinscheduler.plugin.task.api.utils.LogUtils; |
||||||
|
import org.apache.dolphinscheduler.server.worker.config.WorkerConfig; |
||||||
|
import org.apache.dolphinscheduler.server.worker.message.MessageRetryRunner; |
||||||
|
import org.apache.dolphinscheduler.server.worker.registry.WorkerRegistryClient; |
||||||
|
import org.apache.dolphinscheduler.server.worker.rpc.WorkerMessageSender; |
||||||
|
import org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecutor; |
||||||
|
import org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecutorFactoryBuilder; |
||||||
|
import org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecutorHolder; |
||||||
|
import org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecutorThreadPool; |
||||||
|
|
||||||
|
import org.junit.jupiter.api.Assertions; |
||||||
|
import org.junit.jupiter.api.Test; |
||||||
|
import org.mockito.MockedStatic; |
||||||
|
import org.mockito.Mockito; |
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
|
||||||
|
public class TaskInstanceOperationFunctionTest { |
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(TaskInstanceOperationFunctionTest.class); |
||||||
|
private MessageRetryRunner messageRetryRunner = Mockito.mock(MessageRetryRunner.class); |
||||||
|
|
||||||
|
private WorkerConfig workerConfig = Mockito.mock(WorkerConfig.class); |
||||||
|
|
||||||
|
private TaskExecutionContext taskExecutionContext = Mockito.mock(TaskExecutionContext.class); |
||||||
|
|
||||||
|
private WorkerTaskExecutorThreadPool workerTaskExecutorThreadPool = |
||||||
|
Mockito.mock(WorkerTaskExecutorThreadPool.class); |
||||||
|
|
||||||
|
private WorkerTaskExecutor workerTaskExecutor = Mockito.mock(WorkerTaskExecutor.class); |
||||||
|
|
||||||
|
private AbstractTask task = Mockito.mock(AbstractTask.class); |
||||||
|
|
||||||
|
private WorkerMessageSender workerMessageSender = Mockito.mock(WorkerMessageSender.class); |
||||||
|
|
||||||
|
private TaskPluginManager taskPluginManager = Mockito.mock(TaskPluginManager.class); |
||||||
|
|
||||||
|
private WorkerTaskExecutorThreadPool workerManager = Mockito.mock(WorkerTaskExecutorThreadPool.class); |
||||||
|
|
||||||
|
private StorageOperate storageOperate = Mockito.mock(StorageOperate.class); |
||||||
|
|
||||||
|
private WorkerRegistryClient workerRegistryClient = Mockito.mock(WorkerRegistryClient.class); |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testTaskInstanceOperationFunctionManager() { |
||||||
|
TaskInstanceKillOperationFunction taskInstanceKillOperationFunction = new TaskInstanceKillOperationFunction( |
||||||
|
workerTaskExecutorThreadPool, |
||||||
|
messageRetryRunner); |
||||||
|
|
||||||
|
TaskInstancePauseOperationFunction taskInstancePauseOperationFunction = |
||||||
|
new TaskInstancePauseOperationFunction(); |
||||||
|
|
||||||
|
UpdateWorkflowHostOperationFunction updateWorkflowHostOperationFunction = |
||||||
|
new UpdateWorkflowHostOperationFunction( |
||||||
|
messageRetryRunner); |
||||||
|
|
||||||
|
WorkerTaskExecutorFactoryBuilder workerTaskExecutorFactoryBuilder = new WorkerTaskExecutorFactoryBuilder( |
||||||
|
workerConfig, |
||||||
|
workerMessageSender, |
||||||
|
taskPluginManager, |
||||||
|
workerManager, |
||||||
|
storageOperate, |
||||||
|
workerRegistryClient); |
||||||
|
|
||||||
|
TaskInstanceDispatchOperationFunction taskInstanceDispatchOperationFunction = |
||||||
|
new TaskInstanceDispatchOperationFunction( |
||||||
|
workerConfig, |
||||||
|
workerTaskExecutorFactoryBuilder, |
||||||
|
workerTaskExecutorThreadPool); |
||||||
|
|
||||||
|
TaskInstanceOperationFunctionManager taskInstanceOperationFunctionManager = |
||||||
|
new TaskInstanceOperationFunctionManager( |
||||||
|
taskInstanceKillOperationFunction, |
||||||
|
updateWorkflowHostOperationFunction, |
||||||
|
taskInstanceDispatchOperationFunction, |
||||||
|
taskInstancePauseOperationFunction); |
||||||
|
|
||||||
|
Assertions.assertEquals(taskInstanceKillOperationFunction, |
||||||
|
taskInstanceOperationFunctionManager.getTaskInstanceKillOperationFunction()); |
||||||
|
Assertions.assertEquals(taskInstancePauseOperationFunction, |
||||||
|
taskInstanceOperationFunctionManager.getTaskInstancePauseOperationFunction()); |
||||||
|
Assertions.assertEquals(updateWorkflowHostOperationFunction, |
||||||
|
taskInstanceOperationFunctionManager.getUpdateWorkflowHostOperationFunction()); |
||||||
|
Assertions.assertEquals(taskInstanceDispatchOperationFunction, |
||||||
|
taskInstanceOperationFunctionManager.getTaskInstanceDispatchOperationFunction()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testUpdateWorkflowHostOperationFunction() { |
||||||
|
UpdateWorkflowHostOperationFunction updateWorkflowHostOperationFunction = |
||||||
|
new UpdateWorkflowHostOperationFunction( |
||||||
|
messageRetryRunner); |
||||||
|
|
||||||
|
try (MockedStatic<LogUtils> logUtilsMockedStatic = Mockito.mockStatic(LogUtils.class)) { |
||||||
|
logUtilsMockedStatic |
||||||
|
.when(() -> LogUtils |
||||||
|
.setTaskInstanceIdMDC(any(Integer.class))) |
||||||
|
.then(invocationOnMock -> null); |
||||||
|
UpdateWorkflowHostRequest request = new UpdateWorkflowHostRequest(); |
||||||
|
request.setTaskInstanceId(1); |
||||||
|
request.setWorkflowHost("host"); |
||||||
|
UpdateWorkflowHostResponse taskInstanceDispatchResponse = updateWorkflowHostOperationFunction.operate( |
||||||
|
request); |
||||||
|
Assertions.assertEquals(taskInstanceDispatchResponse.isSuccess(), false); |
||||||
|
} |
||||||
|
|
||||||
|
try (MockedStatic<LogUtils> logUtilsMockedStatic = Mockito.mockStatic(LogUtils.class)) { |
||||||
|
logUtilsMockedStatic |
||||||
|
.when(() -> LogUtils |
||||||
|
.setTaskInstanceIdMDC(any(Integer.class))) |
||||||
|
.then(invocationOnMock -> null); |
||||||
|
|
||||||
|
try ( |
||||||
|
MockedStatic<WorkerTaskExecutorHolder> workerTaskExecutorHolderMockedStatic = |
||||||
|
Mockito.mockStatic(WorkerTaskExecutorHolder.class)) { |
||||||
|
given(workerTaskExecutor.getTaskExecutionContext()).willReturn(taskExecutionContext); |
||||||
|
workerTaskExecutorHolderMockedStatic |
||||||
|
.when(() -> WorkerTaskExecutorHolder.get(any(Integer.class))) |
||||||
|
.thenReturn(workerTaskExecutor); |
||||||
|
int taskInstanceId = 111; |
||||||
|
UpdateWorkflowHostRequest request = new UpdateWorkflowHostRequest(); |
||||||
|
request.setTaskInstanceId(taskInstanceId); |
||||||
|
request.setWorkflowHost("host"); |
||||||
|
|
||||||
|
UpdateWorkflowHostResponse taskInstanceDispatchResponse = updateWorkflowHostOperationFunction.operate( |
||||||
|
request); |
||||||
|
Assertions.assertEquals(taskInstanceDispatchResponse.isSuccess(), true); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testTaskInstancePauseOperationFunction() { |
||||||
|
TaskInstancePauseOperationFunction taskInstancePauseOperationFunction = |
||||||
|
new TaskInstancePauseOperationFunction(); |
||||||
|
|
||||||
|
try (MockedStatic<LogUtils> logUtilsMockedStatic = Mockito.mockStatic(LogUtils.class)) { |
||||||
|
logUtilsMockedStatic |
||||||
|
.when(() -> LogUtils |
||||||
|
.setTaskInstanceIdMDC(any(Integer.class))) |
||||||
|
.then(invocationOnMock -> null); |
||||||
|
TaskInstancePauseRequest request = new TaskInstancePauseRequest(); |
||||||
|
request.setTaskInstanceId(1); |
||||||
|
TaskInstancePauseResponse taskInstanceDispatchResponse = taskInstancePauseOperationFunction.operate( |
||||||
|
request); |
||||||
|
Assertions.assertEquals(taskInstanceDispatchResponse.isSuccess(), true); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testTaskInstanceDispatchOperationFunction() { |
||||||
|
WorkerTaskExecutorFactoryBuilder workerTaskExecutorFactoryBuilder = new WorkerTaskExecutorFactoryBuilder( |
||||||
|
workerConfig, |
||||||
|
workerMessageSender, |
||||||
|
taskPluginManager, |
||||||
|
workerManager, |
||||||
|
storageOperate, |
||||||
|
workerRegistryClient); |
||||||
|
|
||||||
|
TaskInstanceDispatchOperationFunction taskInstanceDispatchOperationFunction = |
||||||
|
new TaskInstanceDispatchOperationFunction( |
||||||
|
workerConfig, |
||||||
|
workerTaskExecutorFactoryBuilder, |
||||||
|
workerTaskExecutorThreadPool); |
||||||
|
|
||||||
|
try (MockedStatic<LogUtils> logUtilsMockedStatic = Mockito.mockStatic(LogUtils.class)) { |
||||||
|
logUtilsMockedStatic |
||||||
|
.when(() -> LogUtils |
||||||
|
.getTaskInstanceLogFullPath(any(TaskExecutionContext.class))) |
||||||
|
.thenReturn("test"); |
||||||
|
TaskInstanceDispatchResponse taskInstanceDispatchResponse = taskInstanceDispatchOperationFunction.operate( |
||||||
|
new TaskInstanceDispatchRequest(taskExecutionContext)); |
||||||
|
Assertions.assertEquals(taskInstanceDispatchResponse.isDispatchSuccess(), false); |
||||||
|
logUtilsMockedStatic.verify(times(1), () -> LogUtils.removeWorkflowAndTaskInstanceIdMDC()); |
||||||
|
|
||||||
|
given(workerTaskExecutorThreadPool.submitWorkerTaskExecutor(any())).willReturn(true); |
||||||
|
taskInstanceDispatchResponse = taskInstanceDispatchOperationFunction.operate( |
||||||
|
new TaskInstanceDispatchRequest(taskExecutionContext)); |
||||||
|
Assertions.assertEquals(taskInstanceDispatchResponse.isDispatchSuccess(), true); |
||||||
|
logUtilsMockedStatic.verify(times(2), () -> LogUtils.removeWorkflowAndTaskInstanceIdMDC()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testTaskInstanceKillOperationFunction() { |
||||||
|
TaskInstanceKillOperationFunction taskInstanceKillOperationFunction = new TaskInstanceKillOperationFunction( |
||||||
|
workerManager, |
||||||
|
messageRetryRunner); |
||||||
|
|
||||||
|
try (MockedStatic<LogUtils> logUtilsMockedStatic = Mockito.mockStatic(LogUtils.class)) { |
||||||
|
int taskInstanceId = 111; |
||||||
|
logUtilsMockedStatic |
||||||
|
.when(() -> LogUtils |
||||||
|
.setTaskInstanceLogFullPathMDC(any(String.class))) |
||||||
|
.then(invocationOnMock -> null); |
||||||
|
TaskInstanceKillResponse response = taskInstanceKillOperationFunction.operate( |
||||||
|
new TaskInstanceKillRequest(taskInstanceId)); |
||||||
|
Assertions.assertEquals("Cannot find WorkerTaskExecutor", response.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
try (MockedStatic<LogUtils> logUtilsMockedStatic = Mockito.mockStatic(LogUtils.class)) { |
||||||
|
int processId = 12; |
||||||
|
int taskInstanceId = 111; |
||||||
|
Mockito.reset(taskExecutionContext); |
||||||
|
given(taskExecutionContext.getProcessId()).willReturn(processId); |
||||||
|
given(taskExecutionContext.getLogPath()).willReturn("logpath"); |
||||||
|
logUtilsMockedStatic |
||||||
|
.when(() -> LogUtils |
||||||
|
.setTaskInstanceLogFullPathMDC(any(String.class))) |
||||||
|
.then(invocationOnMock -> null); |
||||||
|
taskInstanceKillOperationFunction.operate( |
||||||
|
new TaskInstanceKillRequest(taskInstanceId)); |
||||||
|
logUtilsMockedStatic.verify(times(1), () -> LogUtils.removeTaskInstanceIdMDC()); |
||||||
|
logUtilsMockedStatic.verify(times(1), () -> LogUtils.removeTaskInstanceLogFullPathMDC()); |
||||||
|
} |
||||||
|
|
||||||
|
try (MockedStatic<LogUtils> logUtilsMockedStatic = Mockito.mockStatic(LogUtils.class)) { |
||||||
|
try ( |
||||||
|
MockedStatic<WorkerTaskExecutorHolder> workerTaskExecutorHolderMockedStatic = |
||||||
|
Mockito.mockStatic(WorkerTaskExecutorHolder.class)) { |
||||||
|
given(workerTaskExecutor.getTaskExecutionContext()).willReturn(taskExecutionContext); |
||||||
|
workerTaskExecutorHolderMockedStatic |
||||||
|
.when(() -> WorkerTaskExecutorHolder.get(any(Integer.class))) |
||||||
|
.thenReturn(workerTaskExecutor); |
||||||
|
int processId = 12; |
||||||
|
int taskInstanceId = 111; |
||||||
|
Mockito.reset(taskExecutionContext); |
||||||
|
given(taskExecutionContext.getProcessId()).willReturn(processId); |
||||||
|
given(taskExecutionContext.getLogPath()).willReturn("logpath"); |
||||||
|
logUtilsMockedStatic |
||||||
|
.when(() -> LogUtils |
||||||
|
.setTaskInstanceLogFullPathMDC(any(String.class))) |
||||||
|
.then(invocationOnMock -> null); |
||||||
|
when(workerTaskExecutor.getTask()).thenReturn(task); |
||||||
|
// given(workerManager.getTaskExecuteThread(taskInstanceId)).willReturn(workerTaskExecutor);
|
||||||
|
taskInstanceKillOperationFunction.operate( |
||||||
|
new TaskInstanceKillRequest(taskInstanceId)); |
||||||
|
verify(task, times(1)).cancel(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue