diff --git a/dsms-engine-application/src/test/java/com/dsms/common/taskmanager/model/TaskContextTest.java b/dsms-engine-application/src/test/java/com/dsms/common/taskmanager/model/TaskContextTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6b910f9e975e450f3d6dd963df8e7e0a2a0feba9 --- /dev/null +++ b/dsms-engine-application/src/test/java/com/dsms/common/taskmanager/model/TaskContextTest.java @@ -0,0 +1,71 @@ +package com.dsms.common.taskmanager.model; + +import com.dsms.common.constant.TaskTypeEnum; +import com.dsms.common.taskmanager.TaskContext; +import com.dsms.common.taskmanager.TaskStrategy; +import com.dsms.modules.node.task.AddOsdTask; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +class TaskContextTest { + + @Test + void execute() { + AddOsdTask mock = Mockito.mock(AddOsdTask.class); + Map dsmsStorageTaskMap = new HashMap<>(); + Task task = new Task(); + task.setTaskType(TaskTypeEnum.ADD_OSD.getType()); + dsmsStorageTaskMap.put(TaskTypeEnum.TypeConstants.ADD_OSD, mock); + Mockito.when(mock.execute(task)).thenReturn(task); + + TaskContext taskContext = new TaskContext(dsmsStorageTaskMap); + + Task execute = taskContext.execute(task); + Assertions.assertEquals(task, execute); + + Task task1 = new Task(); + task1.setTaskType(TaskTypeEnum.REMOVE_OSD.getType()); + Assertions.assertThrows(IllegalArgumentException.class, () -> taskContext.execute(task1)); + } + + @Test + void rollback() { + AddOsdTask mock = Mockito.mock(AddOsdTask.class); + Map dsmsStorageTaskMap = new HashMap<>(); + Task task = new Task(); + task.setTaskType(TaskTypeEnum.ADD_OSD.getType()); + dsmsStorageTaskMap.put(TaskTypeEnum.TypeConstants.ADD_OSD, mock); + Mockito.when(mock.rollback(task)).thenReturn(task); + + TaskContext taskContext = new TaskContext(dsmsStorageTaskMap); + + Task execute = taskContext.rollback(task); + Assertions.assertEquals(task, execute); + + Task task1 = new Task(); + task1.setTaskType(TaskTypeEnum.REMOVE_OSD.getType()); + Assertions.assertThrows(IllegalArgumentException.class, () -> taskContext.rollback(task1)); + } + + @Test + void validateTask() { + AddOsdTask mock = Mockito.mock(AddOsdTask.class); + Map dsmsStorageTaskMap = new HashMap<>(); + Task task = new Task(); + task.setTaskType(TaskTypeEnum.ADD_OSD.getType()); + dsmsStorageTaskMap.put(TaskTypeEnum.TypeConstants.ADD_OSD, mock); + Mockito.when(mock.rollback(task)).thenReturn(task); + + TaskContext taskContext = new TaskContext(dsmsStorageTaskMap); + + boolean result = taskContext.validateTask(TaskTypeEnum.ADD_OSD, ""); + Assertions.assertFalse(result); + + Task task1 = new Task(); + task1.setTaskType(TaskTypeEnum.REMOVE_OSD.getType()); + Assertions.assertThrows(IllegalArgumentException.class, () -> taskContext.validateTask(TaskTypeEnum.REMOVE_OSD, "")); + } +} \ No newline at end of file