mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 11:52:08 +08:00
单元测试:ClusterHostTaskServiceTest,ClusterRoleTaskServiceTest,ClusterTaskServiceTest,KafkaFileServiceTest,TopicCommandsTest,TopicReassignUtilsTest
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
package com.xiaojukeji.kafka.manager.kcm;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.CreationTaskData;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.dto.ClusterHostTaskDTO;
|
||||
import com.xiaojukeji.kafka.manager.kcm.config.BaseTest;
|
||||
import com.xiaojukeji.kafka.manager.kcm.tasks.ClusterHostTaskService;
|
||||
import org.junit.Assert;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author xuguang
|
||||
* @Date 2022/1/5
|
||||
*/
|
||||
public class ClusterHostTaskServiceTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private ClusterHostTaskService clusterHostTaskService;
|
||||
|
||||
private ClusterHostTaskDTO getClusterHostTaskDTO() {
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = new ClusterHostTaskDTO();
|
||||
clusterHostTaskDTO.setClusterId(-1L);
|
||||
clusterHostTaskDTO.setHostList(Arrays.asList("127.0.0.1"));
|
||||
clusterHostTaskDTO.setTaskType("");
|
||||
clusterHostTaskDTO.setKafkaFileBaseUrl("");
|
||||
clusterHostTaskDTO.setKafkaPackageMd5("");
|
||||
clusterHostTaskDTO.setKafkaPackageName("");
|
||||
clusterHostTaskDTO.setServerPropertiesMd5("");
|
||||
clusterHostTaskDTO.setServerPropertiesName("");
|
||||
return clusterHostTaskDTO;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getOperationHostsTest() {
|
||||
// cluster task host list illegal
|
||||
getOperationHosts2HostListIllegalTest();
|
||||
// success
|
||||
getOperationHosts2SuccessTest();
|
||||
}
|
||||
|
||||
private void getOperationHosts2HostListIllegalTest() {
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
clusterHostTaskDTO.setHostList(Arrays.asList(""));
|
||||
Result<CreationTaskData> result = clusterHostTaskService.getOperationHosts(clusterHostTaskDTO);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.CLUSTER_TASK_HOST_LIST_ILLEGAL.getCode());
|
||||
}
|
||||
|
||||
private void getOperationHosts2SuccessTest() {
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
Result<CreationTaskData> result = clusterHostTaskService.getOperationHosts(clusterHostTaskDTO);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getCreateTaskParamDTOTest() {
|
||||
// not success
|
||||
getCreateTaskParamDTO2NotSuccessTest();
|
||||
// success
|
||||
getCreateTaskParamDTO2SuccessTest();
|
||||
}
|
||||
|
||||
private void getCreateTaskParamDTO2NotSuccessTest() {
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
clusterHostTaskDTO.setHostList(Arrays.asList(""));
|
||||
Result<CreationTaskData> dto = clusterHostTaskService.getCreateTaskParamDTO(clusterHostTaskDTO);
|
||||
Assert.assertEquals(dto.getCode(), ResultStatus.CLUSTER_TASK_HOST_LIST_ILLEGAL.getCode());
|
||||
}
|
||||
|
||||
private void getCreateTaskParamDTO2SuccessTest() {
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
Result<CreationTaskData> dto = clusterHostTaskService.getCreateTaskParamDTO(clusterHostTaskDTO);
|
||||
Assert.assertEquals(dto.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.xiaojukeji.kafka.manager.kcm;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.KafkaBrokerRoleEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.CreationTaskData;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.dto.ClusterRoleTaskDTO;
|
||||
import com.xiaojukeji.kafka.manager.kcm.config.BaseTest;
|
||||
import com.xiaojukeji.kafka.manager.kcm.tasks.ClusterRoleTaskService;
|
||||
import org.junit.Assert;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author xuguang
|
||||
* @Date 2022/1/5
|
||||
*/
|
||||
public class ClusterRoleTaskServiceTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private ClusterRoleTaskService clusterRoleTaskService;
|
||||
|
||||
private ClusterRoleTaskDTO getClusterRoleTaskDTO() {
|
||||
ClusterRoleTaskDTO clusterRoleTaskDTO = new ClusterRoleTaskDTO();
|
||||
clusterRoleTaskDTO.setClusterId(-1L);
|
||||
clusterRoleTaskDTO.setTaskType("");
|
||||
return clusterRoleTaskDTO;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getOperationHostsTest() {
|
||||
// controller not alive
|
||||
getOperationHosts2ControllerNotAliveTest();
|
||||
// success
|
||||
getOperationHosts2SuccessTest();
|
||||
}
|
||||
|
||||
private void getOperationHosts2ControllerNotAliveTest() {
|
||||
ClusterRoleTaskDTO dto = getClusterRoleTaskDTO();
|
||||
List<String> upgradeSequenceList = new ArrayList<>();
|
||||
upgradeSequenceList.add(KafkaBrokerRoleEnum.CONTROLLER.getRole());
|
||||
dto.setUpgradeSequenceList(upgradeSequenceList);
|
||||
dto.setKafkaRoleBrokerHostMap(new HashMap<>(0));
|
||||
|
||||
Result<CreationTaskData> result = clusterRoleTaskService.getOperationHosts(dto);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.CONTROLLER_NOT_ALIVE.getCode());
|
||||
}
|
||||
|
||||
private void getOperationHosts2SuccessTest() {
|
||||
ClusterRoleTaskDTO dto = getClusterRoleTaskDTO();
|
||||
List<String> upgradeSequenceList = new ArrayList<>();
|
||||
upgradeSequenceList.add(KafkaBrokerRoleEnum.CONTROLLER.getRole());
|
||||
upgradeSequenceList.add(KafkaBrokerRoleEnum.NORMAL.getRole());
|
||||
upgradeSequenceList.add(KafkaBrokerRoleEnum.COORDINATOR.getRole());
|
||||
dto.setUpgradeSequenceList(upgradeSequenceList);
|
||||
Map<String, List<String>> map = new HashMap<>();
|
||||
List<String> controllerList = new ArrayList<>();
|
||||
controllerList.add("127.0.0.1");
|
||||
controllerList.add("localhost");
|
||||
List<String> coordinatorList = new ArrayList<>();
|
||||
coordinatorList.add("127.0.0.1");
|
||||
coordinatorList.add("localhost");
|
||||
map.put(KafkaBrokerRoleEnum.CONTROLLER.getRole(), controllerList);
|
||||
map.put(KafkaBrokerRoleEnum.COORDINATOR.getRole(), coordinatorList);
|
||||
dto.setKafkaRoleBrokerHostMap(map);
|
||||
|
||||
Result<CreationTaskData> result = clusterRoleTaskService.getOperationHosts(dto);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,354 @@
|
||||
package com.xiaojukeji.kafka.manager.kcm;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterTaskDO;
|
||||
import com.xiaojukeji.kafka.manager.dao.ClusterTaskDao;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskStateEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskTypeEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.ClusterTaskLog;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.ClusterTaskStatus;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.dto.AbstractClusterTaskDTO;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.dto.ClusterHostTaskDTO;
|
||||
import com.xiaojukeji.kafka.manager.kcm.component.agent.AbstractAgent;
|
||||
import com.xiaojukeji.kafka.manager.kcm.config.BaseTest;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author xuguang
|
||||
* @Date 2021/12/27
|
||||
*/
|
||||
public class ClusterTaskServiceTest {
|
||||
public class ClusterTaskServiceTest extends BaseTest {
|
||||
|
||||
private static final Long REAL_CLUSTER_ID_IN_MYSQL = 1L;
|
||||
|
||||
private static final String ADMIN = "admin";
|
||||
|
||||
private static final String BASEURL = "127.0.0.1";
|
||||
|
||||
private static final String MD5 = "md5";
|
||||
|
||||
private static final Long REAL_TASK_ID_IN_MYSQL = 1L;
|
||||
|
||||
private static final Long INVALID_TASK_ID = -1L;
|
||||
|
||||
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private ClusterTaskService clusterTaskService;
|
||||
|
||||
@Mock
|
||||
private AbstractAgent abstractAgent;
|
||||
|
||||
@Mock
|
||||
private ClusterTaskDao clusterTaskDao;
|
||||
|
||||
private ClusterHostTaskDTO getClusterHostTaskDTO() {
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = new ClusterHostTaskDTO();
|
||||
clusterHostTaskDTO.setClusterId(-1L);
|
||||
clusterHostTaskDTO.setHostList(Arrays.asList(BASEURL));
|
||||
clusterHostTaskDTO.setTaskType(ClusterTaskTypeEnum.HOST_UPGRADE.getName());
|
||||
clusterHostTaskDTO.setKafkaFileBaseUrl(BASEURL);
|
||||
clusterHostTaskDTO.setKafkaPackageMd5(MD5);
|
||||
clusterHostTaskDTO.setKafkaPackageName("name");
|
||||
clusterHostTaskDTO.setServerPropertiesMd5(MD5);
|
||||
clusterHostTaskDTO.setServerPropertiesName("name");
|
||||
return clusterHostTaskDTO;
|
||||
}
|
||||
|
||||
private ClusterTaskDO getClusterTaskDO() {
|
||||
ClusterTaskDO clusterTaskDO = new ClusterTaskDO();
|
||||
clusterTaskDO.setClusterId(REAL_CLUSTER_ID_IN_MYSQL);
|
||||
clusterTaskDO.setId(REAL_TASK_ID_IN_MYSQL);
|
||||
clusterTaskDO.setAgentTaskId(-1L);
|
||||
clusterTaskDO.setAgentRollbackTaskId(-1L);
|
||||
clusterTaskDO.setTaskStatus(0);
|
||||
return clusterTaskDO;
|
||||
}
|
||||
|
||||
@BeforeMethod
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
@Test(description = "测试创建任务")
|
||||
public void createTaskTest() {
|
||||
// paramIllegal
|
||||
createTask2ParamIllegalTest();
|
||||
// not success
|
||||
createTask2NotSuccessTest();
|
||||
// CallClusterTaskAgentFailed
|
||||
createTask2CallClusterTaskAgentFailedTest();
|
||||
// success
|
||||
createTask2SuccessTest();
|
||||
// mysqlError
|
||||
createTask2MysqlErrorTest();
|
||||
}
|
||||
|
||||
private void createTask2ParamIllegalTest() {
|
||||
AbstractClusterTaskDTO dto = getClusterHostTaskDTO();
|
||||
dto.setTaskType(null);
|
||||
Result result1 = clusterTaskService.createTask(dto, ADMIN);
|
||||
Assert.assertEquals(result1.getCode(), ResultStatus.PARAM_ILLEGAL.getCode());
|
||||
|
||||
dto.setTaskType("");
|
||||
Result result2 = clusterTaskService.createTask(dto, ADMIN);
|
||||
Assert.assertEquals(result2.getCode(), ResultStatus.PARAM_ILLEGAL.getCode());
|
||||
}
|
||||
|
||||
private void createTask2NotSuccessTest() {
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
clusterHostTaskDTO.setHostList(Arrays.asList("host"));
|
||||
Result result = clusterTaskService.createTask(clusterHostTaskDTO, ADMIN);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.CLUSTER_TASK_HOST_LIST_ILLEGAL.getCode());
|
||||
}
|
||||
|
||||
private void createTask2CallClusterTaskAgentFailedTest() {
|
||||
Mockito.when(abstractAgent.createTask(Mockito.any())).thenReturn(null);
|
||||
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
Result result = clusterTaskService.createTask(clusterHostTaskDTO, ADMIN);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.CALL_CLUSTER_TASK_AGENT_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void createTask2SuccessTest() {
|
||||
Mockito.when(abstractAgent.createTask(Mockito.any())).thenReturn(Result.buildSuc(1L));
|
||||
Mockito.when(clusterTaskDao.insert(Mockito.any())).thenReturn(1);
|
||||
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
Result result = clusterTaskService.createTask(clusterHostTaskDTO, ADMIN);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
|
||||
private void createTask2MysqlErrorTest() {
|
||||
Mockito.when(abstractAgent.createTask(Mockito.any())).thenReturn(Result.buildSuc(1L));
|
||||
Mockito.when(clusterTaskDao.insert(Mockito.any())).thenThrow(RuntimeException.class);
|
||||
|
||||
ClusterHostTaskDTO clusterHostTaskDTO = getClusterHostTaskDTO();
|
||||
Result result = clusterTaskService.createTask(clusterHostTaskDTO, ADMIN);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.MYSQL_ERROR.getCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeTaskTest() {
|
||||
// task not exist
|
||||
executeTask2TaskNotExistTest();
|
||||
// CallClusterTaskAgentFailed
|
||||
executeTask2CallClusterTaskAgentFailedTest();
|
||||
// 暂停状态, 可以执行开始
|
||||
executeTask2StartTest();
|
||||
// 运行状态, 可以执行暂停
|
||||
executeTask2PauseTest();
|
||||
// 忽略
|
||||
executeTask2IgnoreTest();
|
||||
// 取消
|
||||
executeTask2CancelTest();
|
||||
// operation failed
|
||||
executeTask2OperationFailedTest();
|
||||
// 回滚 operation forbidden
|
||||
executeTask2RollbackForbiddenTest();
|
||||
}
|
||||
|
||||
private void executeTask2TaskNotExistTest() {
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(INVALID_TASK_ID, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.RESOURCE_NOT_EXIST.getCode());
|
||||
}
|
||||
|
||||
private void executeTask2CallClusterTaskAgentFailedTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(null);
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.CALL_CLUSTER_TASK_AGENT_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void executeTask2StartTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildSuc(ClusterTaskStateEnum.BLOCKED));
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void executeTask2PauseTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildSuc(ClusterTaskStateEnum.RUNNING));
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.PAUSE.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.PAUSE.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void executeTask2IgnoreTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildSuc(ClusterTaskStateEnum.RUNNING));
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.IGNORE.getAction(), "");
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.IGNORE.getAction(), "");
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void executeTask2CancelTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildSuc(ClusterTaskStateEnum.RUNNING));
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.CANCEL.getAction(), "");
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.CANCEL.getAction(), "");
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void executeTask2OperationFailedTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildSuc(ClusterTaskStateEnum.RUNNING));
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// operation failed
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void executeTask2RollbackForbiddenTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildSuc(ClusterTaskStateEnum.RUNNING));
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// operation failed
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.ROLLBACK.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FORBIDDEN.getCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getTaskLogTest() {
|
||||
// task not exist
|
||||
getTaskLog2TaskNotExistTest();
|
||||
// call cluster task agent failed
|
||||
getTaskLog2CallClusterTaskAgentFailedTest();
|
||||
// success
|
||||
getTaskLog2SuccessTest();
|
||||
}
|
||||
|
||||
private void getTaskLog2TaskNotExistTest() {
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(null);
|
||||
|
||||
Result<String> result = clusterTaskService.getTaskLog(REAL_TASK_ID_IN_MYSQL, ADMIN);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.TASK_NOT_EXIST.getCode());
|
||||
}
|
||||
|
||||
private void getTaskLog2CallClusterTaskAgentFailedTest() {
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
Mockito.when(abstractAgent.getTaskLog(Mockito.anyLong(), Mockito.any())).thenReturn(null);
|
||||
|
||||
Result<String> result = clusterTaskService.getTaskLog(REAL_TASK_ID_IN_MYSQL, ADMIN);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.CALL_CLUSTER_TASK_AGENT_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void getTaskLog2SuccessTest() {
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
Mockito.when(abstractAgent.getTaskLog(Mockito.anyLong(), Mockito.any()))
|
||||
.thenReturn(Result.buildSuc(new ClusterTaskLog("")));
|
||||
|
||||
Result<String> result = clusterTaskService.getTaskLog(REAL_TASK_ID_IN_MYSQL, ADMIN);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getTaskStateTest() {
|
||||
// null
|
||||
getTaskState2NullTest();
|
||||
//
|
||||
getTaskState2NotNullTest();
|
||||
}
|
||||
|
||||
private void getTaskState2NullTest() {
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(null);
|
||||
|
||||
ClusterTaskStateEnum taskState = clusterTaskService.getTaskState(REAL_TASK_ID_IN_MYSQL);
|
||||
Assert.assertNull(taskState);
|
||||
}
|
||||
|
||||
private void getTaskState2NotNullTest() {
|
||||
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildSuc(ClusterTaskStateEnum.RUNNING));
|
||||
|
||||
ClusterTaskStateEnum taskState = clusterTaskService.getTaskState(REAL_TASK_ID_IN_MYSQL);
|
||||
Assert.assertNotNull(taskState);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getTaskStatusTest() {
|
||||
// task not exist
|
||||
getTaskStatus2TaskNotExistTest();
|
||||
// get failed
|
||||
getTaskStatus2FailedTest();
|
||||
// success
|
||||
getTaskStatus2SuccessTest();
|
||||
}
|
||||
|
||||
private void getTaskStatus2TaskNotExistTest() {
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(null);
|
||||
|
||||
Result<ClusterTaskStatus> result = clusterTaskService.getTaskStatus(REAL_TASK_ID_IN_MYSQL);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.TASK_NOT_EXIST.getCode());
|
||||
}
|
||||
|
||||
private void getTaskStatus2FailedTest() {
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong())).thenReturn(Result.buildFailure(""));
|
||||
|
||||
Result<ClusterTaskStatus> result = clusterTaskService.getTaskStatus(REAL_TASK_ID_IN_MYSQL);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.FAIL.getCode());
|
||||
}
|
||||
|
||||
private void getTaskStatus2SuccessTest() {
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
Mockito.when(abstractAgent.getTaskExecuteState(Mockito.anyLong()))
|
||||
.thenReturn(Result.buildSuc(ClusterTaskStateEnum.RUNNING));
|
||||
|
||||
Result<ClusterTaskStatus> result = clusterTaskService.getTaskStatus(REAL_TASK_ID_IN_MYSQL);
|
||||
Assert.assertEquals(result.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
package com.xiaojukeji.kafka.manager.kcm;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.KafkaFileEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.KafkaFileDTO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.KafkaFileDO;
|
||||
import com.xiaojukeji.kafka.manager.dao.KafkaFileDao;
|
||||
import com.xiaojukeji.kafka.manager.kcm.component.storage.AbstractStorageService;
|
||||
import com.xiaojukeji.kafka.manager.kcm.config.BaseTest;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @author xuguang
|
||||
* @Date 2022/1/4
|
||||
*/
|
||||
public class KafkaFileServiceTest extends BaseTest {
|
||||
|
||||
private static final Long KAFKA_FILE_ID = 1L;
|
||||
|
||||
private static final String ADMIN = "admin";
|
||||
|
||||
private KafkaFileDTO getKafkaFileDTO() {
|
||||
KafkaFileDTO kafkaFileDTO = new KafkaFileDTO();
|
||||
kafkaFileDTO.setId(KAFKA_FILE_ID);
|
||||
kafkaFileDTO.setClusterId(-1L);
|
||||
kafkaFileDTO.setFileMd5("");
|
||||
kafkaFileDTO.setFileName(".tgz");
|
||||
kafkaFileDTO.setFileType(KafkaFileEnum.PACKAGE.getCode());
|
||||
kafkaFileDTO.setUploadFile(new MockMultipartFile("name", new byte[]{1}));
|
||||
return kafkaFileDTO;
|
||||
}
|
||||
|
||||
private KafkaFileDO getKafkaFileDO() {
|
||||
KafkaFileDO kafkaFileDO = new KafkaFileDO();
|
||||
kafkaFileDO.setFileType(KafkaFileEnum.PACKAGE.getCode());
|
||||
kafkaFileDO.setFileName(".tgz");
|
||||
return kafkaFileDO;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private KafkaFileService kafkaFileService;
|
||||
|
||||
@Mock
|
||||
private KafkaFileDao kafkaFileDao;
|
||||
|
||||
@Mock
|
||||
private AbstractStorageService storageService;
|
||||
|
||||
@BeforeMethod
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void uploadKafkaFile() {
|
||||
// paramIllegal
|
||||
uploadKafkaFile2ParamIllegalTest();
|
||||
// mysqlError
|
||||
uploadKafkaFile2MysqlErrorTest();
|
||||
// storage upload file failed
|
||||
uploadKafkaFile2StorageUploadFileFailedTest();
|
||||
// success
|
||||
uploadKafkaFile2SuccessTest();
|
||||
// DuplicateKey
|
||||
uploadKafkaFile2DuplicateKeyTest();
|
||||
}
|
||||
|
||||
private void uploadKafkaFile2ParamIllegalTest() {
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
kafkaFileDTO.setUploadFile(null);
|
||||
ResultStatus resultStatus = kafkaFileService.uploadKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.PARAM_ILLEGAL.getCode());
|
||||
}
|
||||
|
||||
private void uploadKafkaFile2MysqlErrorTest() {
|
||||
Mockito.when(kafkaFileDao.insert(Mockito.any())).thenReturn(-1);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
ResultStatus resultStatus = kafkaFileService.uploadKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.MYSQL_ERROR.getCode());
|
||||
}
|
||||
|
||||
private void uploadKafkaFile2StorageUploadFileFailedTest() {
|
||||
Mockito.when(kafkaFileDao.insert(Mockito.any())).thenReturn(1);
|
||||
Mockito.when(kafkaFileDao.deleteById(Mockito.any())).thenReturn(1);
|
||||
Mockito.when(storageService.upload(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(false);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
ResultStatus resultStatus = kafkaFileService.uploadKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.STORAGE_UPLOAD_FILE_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void uploadKafkaFile2SuccessTest() {
|
||||
Mockito.when(kafkaFileDao.insert(Mockito.any())).thenReturn(1);
|
||||
Mockito.when(kafkaFileDao.deleteById(Mockito.any())).thenReturn(1);
|
||||
Mockito.when(storageService.upload(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(true);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
ResultStatus resultStatus = kafkaFileService.uploadKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
|
||||
private void uploadKafkaFile2DuplicateKeyTest() {
|
||||
Mockito.when(kafkaFileDao.insert(Mockito.any())).thenThrow(DuplicateKeyException.class);
|
||||
Mockito.when(kafkaFileDao.deleteById(Mockito.any())).thenReturn(1);
|
||||
Mockito.when(storageService.upload(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(true);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
ResultStatus resultStatus = kafkaFileService.uploadKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.RESOURCE_ALREADY_EXISTED.getCode());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void modifyKafkaFileTest() {
|
||||
// paramIllegal
|
||||
modifyKafkaFile2ParamIllegalTest();
|
||||
// resource not exist
|
||||
modifyKafkaFile2ResourceNotExistTest();
|
||||
// operation failed
|
||||
modifyKafkaFile2OperationFailedTest();
|
||||
// mysqlError
|
||||
modifyKafkaFile2MysqlErrorTest();
|
||||
// success
|
||||
modifyKafkaFile2SuccessTest();
|
||||
}
|
||||
|
||||
private void modifyKafkaFile2ParamIllegalTest() {
|
||||
ResultStatus resultStatus = kafkaFileService.modifyKafkaFile(null, ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.PARAM_ILLEGAL.getCode());
|
||||
}
|
||||
|
||||
private void modifyKafkaFile2ResourceNotExistTest() {
|
||||
Mockito.when(kafkaFileDao.getById(Mockito.anyLong())).thenReturn(null);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
ResultStatus resultStatus = kafkaFileService.modifyKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.RESOURCE_NOT_EXIST.getCode());
|
||||
}
|
||||
|
||||
private void modifyKafkaFile2OperationFailedTest() {
|
||||
Mockito.when(kafkaFileDao.getById(Mockito.anyLong())).thenReturn(new KafkaFileDO());
|
||||
Mockito.when(kafkaFileDao.updateById(Mockito.any())).thenReturn(-1);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
kafkaFileDTO.setFileType(-1);
|
||||
ResultStatus resultStatus1 = kafkaFileService.modifyKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus1.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
|
||||
kafkaFileDTO.setFileType(KafkaFileEnum.PACKAGE.getCode());
|
||||
kafkaFileDTO.setFileName("xxx");
|
||||
ResultStatus resultStatus2 = kafkaFileService.modifyKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
private void modifyKafkaFile2MysqlErrorTest() {
|
||||
KafkaFileDO kafkaFileDO = getKafkaFileDO();
|
||||
Mockito.when(kafkaFileDao.getById(Mockito.anyLong())).thenReturn(kafkaFileDO);
|
||||
Mockito.when(kafkaFileDao.updateById(Mockito.any())).thenReturn(-1);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
ResultStatus resultStatus1 = kafkaFileService.modifyKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus1.getCode(), ResultStatus.MYSQL_ERROR.getCode());
|
||||
|
||||
}
|
||||
|
||||
private void modifyKafkaFile2SuccessTest() {
|
||||
KafkaFileDO kafkaFileDO = getKafkaFileDO();
|
||||
Mockito.when(kafkaFileDao.getById(Mockito.anyLong())).thenReturn(kafkaFileDO);
|
||||
Mockito.when(kafkaFileDao.updateById(Mockito.any())).thenReturn(1);
|
||||
Mockito.when(storageService.upload(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(true);
|
||||
|
||||
KafkaFileDTO kafkaFileDTO = getKafkaFileDTO();
|
||||
ResultStatus resultStatus1 = kafkaFileService.modifyKafkaFile(kafkaFileDTO, ADMIN);
|
||||
Assert.assertEquals(resultStatus1.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void downloadKafkaFileTest() {
|
||||
// resource not exist
|
||||
downloadKafkaFile2ResourceNotExist();
|
||||
// STORAGE_FILE_TYPE_NOT_SUPPORT
|
||||
downloadKafkaFile2FileNotSupportExist();
|
||||
// success
|
||||
downloadKafkaFile2SuccessExist();
|
||||
}
|
||||
|
||||
private void downloadKafkaFile2ResourceNotExist() {
|
||||
Mockito.when(kafkaFileDao.getById(Mockito.anyLong())).thenReturn(null);
|
||||
Result<MultipartFile> resultStatus = kafkaFileService.downloadKafkaFile(KAFKA_FILE_ID);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.RESOURCE_NOT_EXIST.getCode());
|
||||
}
|
||||
|
||||
private void downloadKafkaFile2FileNotSupportExist() {
|
||||
KafkaFileDO kafkaFileDO = getKafkaFileDO();
|
||||
Mockito.when(kafkaFileDao.getById(Mockito.anyLong())).thenReturn(kafkaFileDO);
|
||||
Result<MultipartFile> resultStatus = kafkaFileService.downloadKafkaFile(KAFKA_FILE_ID);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.STORAGE_FILE_TYPE_NOT_SUPPORT.getCode());
|
||||
}
|
||||
|
||||
private void downloadKafkaFile2SuccessExist() {
|
||||
Mockito.when(storageService.download(Mockito.any(), Mockito.any())).thenReturn(Result.buildFrom(ResultStatus.SUCCESS));
|
||||
KafkaFileDO kafkaFileDO = getKafkaFileDO();
|
||||
kafkaFileDO.setFileType(KafkaFileEnum.SERVER_CONFIG.getCode());
|
||||
Mockito.when(kafkaFileDao.getById(Mockito.anyLong())).thenReturn(kafkaFileDO);
|
||||
|
||||
Result<MultipartFile> resultStatus = kafkaFileService.downloadKafkaFile(KAFKA_FILE_ID);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user