From e4f427a8d8bf99754698e054845291a5223c2ea6 Mon Sep 17 00:00:00 2001 From: wen-hemin <39549317+wen-hemin@users.noreply.github.com> Date: Thu, 8 Jul 2021 13:59:40 +0800 Subject: [PATCH] [Fix-5763]: The scheduler online/offline interface, projectName -> projectCode (#5764) * fix: createSchedule interface, process definition id -> process definition code * fix: add junit * fix junit * fix: projectName -> projectCode * fix UT * Optimize variable type * fix: the updateSchedule interface, projectName -> projectCode * fix comment * fix: The scheduler online/offline interface, projectName -> projectCode * fix UT Co-authored-by: wen-hemin --- .../api/controller/SchedulerController.java | 12 +++---- .../api/service/SchedulerService.java | 4 +-- .../service/impl/SchedulerServiceImpl.java | 6 ++-- .../controller/SchedulerControllerTest.java | 12 +++++-- .../api/service/SchedulerServiceTest.java | 31 ++++++++++++------- .../src/js/conf/home/store/dag/actions.js | 4 +-- 6 files changed, 42 insertions(+), 27 deletions(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java index 458fedb3d..75210439f 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java @@ -166,7 +166,7 @@ public class SchedulerController extends BaseController { * publish schedule setScheduleState * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param id scheduler id * @return publish result code */ @@ -178,9 +178,9 @@ public class SchedulerController extends BaseController { @ApiException(PUBLISH_SCHEDULE_ONLINE_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result online(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam("id") Integer id) { - Map result = schedulerService.setScheduleState(loginUser, projectName, id, ReleaseState.ONLINE); + Map result = schedulerService.setScheduleState(loginUser, projectCode, id, ReleaseState.ONLINE); return returnDataList(result); } @@ -188,7 +188,7 @@ public class SchedulerController extends BaseController { * offline schedule * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param id schedule id * @return operation result code */ @@ -200,10 +200,10 @@ public class SchedulerController extends BaseController { @ApiException(OFFLINE_SCHEDULE_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result offline(@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam("id") Integer id) { - Map result = schedulerService.setScheduleState(loginUser, projectName, id, ReleaseState.OFFLINE); + Map result = schedulerService.setScheduleState(loginUser, projectCode, id, ReleaseState.OFFLINE); return returnDataList(result); } diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/SchedulerService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/SchedulerService.java index 4e00ae31f..92707db8f 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/SchedulerService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/SchedulerService.java @@ -83,13 +83,13 @@ public interface SchedulerService { * set schedule online or offline * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param id scheduler id * @param scheduleStatus schedule status * @return publish result code */ Map setScheduleState(User loginUser, - String projectName, + long projectCode, Integer id, ReleaseState scheduleStatus); diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java index 5a111235a..780425e56 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java @@ -293,7 +293,7 @@ public class SchedulerServiceImpl extends BaseServiceImpl implements SchedulerSe * set schedule online or offline * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param id scheduler id * @param scheduleStatus schedule status * @return publish result code @@ -301,12 +301,12 @@ public class SchedulerServiceImpl extends BaseServiceImpl implements SchedulerSe @Override @Transactional(rollbackFor = RuntimeException.class) public Map setScheduleState(User loginUser, - String projectName, + long projectCode, Integer id, ReleaseState scheduleStatus) { Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); + Project project = projectMapper.queryByCode(projectCode); // check project auth boolean hasProjectAndPerm = projectService.hasProjectAndPerm(loginUser, project, result); if (!hasProjectAndPerm) { diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/SchedulerControllerTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/SchedulerControllerTest.java index 9ce254b28..307d81698 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/SchedulerControllerTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/SchedulerControllerTest.java @@ -28,6 +28,7 @@ import org.apache.dolphinscheduler.api.service.SchedulerService; import org.apache.dolphinscheduler.api.utils.Result; import org.apache.dolphinscheduler.common.enums.FailureStrategy; import org.apache.dolphinscheduler.common.enums.Priority; +import org.apache.dolphinscheduler.common.enums.ReleaseState; import org.apache.dolphinscheduler.common.enums.WarningType; import org.apache.dolphinscheduler.common.utils.JSONUtils; import org.apache.dolphinscheduler.dao.entity.User; @@ -115,7 +116,10 @@ public class SchedulerControllerTest extends AbstractControllerTest { MultiValueMap paramsMap = new LinkedMultiValueMap<>(); paramsMap.add("id","37"); - MvcResult mvcResult = mockMvc.perform(post("/projects/{projectName}/schedule/online","cxc_1113") + Mockito.when(schedulerService.setScheduleState(isA(User.class), isA(Long.class), isA(Integer.class), + isA(ReleaseState.class))).thenReturn(successResult()); + + MvcResult mvcResult = mockMvc.perform(post("/projects/{projectCode}/schedule/online",123) .header(SESSION_ID, sessionId) .params(paramsMap)) .andExpect(status().isOk()) @@ -127,13 +131,15 @@ public class SchedulerControllerTest extends AbstractControllerTest { logger.info(mvcResult.getResponse().getContentAsString()); } - @Test public void testOffline() throws Exception { MultiValueMap paramsMap = new LinkedMultiValueMap<>(); paramsMap.add("id","28"); - MvcResult mvcResult = mockMvc.perform(post("/projects/{projectName}/schedule/offline","cxc_1113") + Mockito.when(schedulerService.setScheduleState(isA(User.class), isA(Long.class), isA(Integer.class), + isA(ReleaseState.class))).thenReturn(successResult()); + + MvcResult mvcResult = mockMvc.perform(post("/projects/{projectCode}/schedule/offline",123) .header(SESSION_ID, sessionId) .params(paramsMap)) .andExpect(status().isOk()) diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java index 0866e40e9..7cd383a07 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java @@ -91,12 +91,12 @@ public class SchedulerServiceTest { @Test public void testSetScheduleState() { - String projectName = "test"; + long projectCode = 1L; User loginUser = new User(); loginUser.setId(1); Map result = new HashMap(); - Project project = getProject(projectName); + Project project = getProject(projectName, projectCode); ProcessDefinition processDefinition = new ProcessDefinition(); @@ -110,49 +110,50 @@ public class SchedulerServiceTest { Mockito.when(scheduleMapper.selectById(1)).thenReturn(schedule); + Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(project); Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project); Mockito.when(processService.findProcessDefineById(1)).thenReturn(processDefinition); //hash no auth - result = schedulerService.setScheduleState(loginUser, projectName, 1, ReleaseState.ONLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 1, ReleaseState.ONLINE); Mockito.when(projectService.hasProjectAndPerm(loginUser, project, result)).thenReturn(true); //schedule not exists - result = schedulerService.setScheduleState(loginUser, projectName, 2, ReleaseState.ONLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 2, ReleaseState.ONLINE); Assert.assertEquals(Status.SCHEDULE_CRON_NOT_EXISTS, result.get(Constants.STATUS)); //SCHEDULE_CRON_REALEASE_NEED_NOT_CHANGE - result = schedulerService.setScheduleState(loginUser, projectName, 1, ReleaseState.OFFLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 1, ReleaseState.OFFLINE); Assert.assertEquals(Status.SCHEDULE_CRON_REALEASE_NEED_NOT_CHANGE, result.get(Constants.STATUS)); //PROCESS_DEFINE_NOT_EXIST schedule.setProcessDefinitionId(2); - result = schedulerService.setScheduleState(loginUser, projectName, 1, ReleaseState.ONLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 1, ReleaseState.ONLINE); Assert.assertEquals(Status.PROCESS_DEFINE_NOT_EXIST, result.get(Constants.STATUS)); schedule.setProcessDefinitionId(1); // PROCESS_DEFINE_NOT_RELEASE - result = schedulerService.setScheduleState(loginUser, projectName, 1, ReleaseState.ONLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 1, ReleaseState.ONLINE); Assert.assertEquals(Status.PROCESS_DEFINE_NOT_RELEASE, result.get(Constants.STATUS)); processDefinition.setReleaseState(ReleaseState.ONLINE); Mockito.when(processService.findProcessDefineById(1)).thenReturn(processDefinition); //MASTER_NOT_EXISTS - result = schedulerService.setScheduleState(loginUser, projectName, 1, ReleaseState.ONLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 1, ReleaseState.ONLINE); Assert.assertEquals(Status.MASTER_NOT_EXISTS, result.get(Constants.STATUS)); //set master Mockito.when(monitorService.getServerListFromRegistry(true)).thenReturn(masterServers); //SUCCESS - result = schedulerService.setScheduleState(loginUser, projectName, 1, ReleaseState.ONLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 1, ReleaseState.ONLINE); Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); //OFFLINE Mockito.when(quartzExecutors.deleteJob(null, null)).thenReturn(true); - result = schedulerService.setScheduleState(loginUser, projectName, 1, ReleaseState.OFFLINE); + result = schedulerService.setScheduleState(loginUser, project.getCode(), 1, ReleaseState.OFFLINE); Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); } @@ -174,12 +175,20 @@ public class SchedulerServiceTest { } private Project getProject(String name) { + Project project = new Project(); + project.setName(name); + project.setUserId(1); + + return project; + } + private Project getProject(String name, long code) { Project project = new Project(); project.setName(name); + project.setCode(code); project.setUserId(1); return project; } -} \ No newline at end of file +} diff --git a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js index fb5acaf32..0d8e2abde 100644 --- a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js +++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js @@ -592,7 +592,7 @@ export default { */ scheduleOffline ({ state }, payload) { return new Promise((resolve, reject) => { - io.post(`projects/${state.projectName}/schedule/offline`, payload, res => { + io.post(`projects/${state.projectCode}/schedule/offline`, payload, res => { resolve(res) }).catch(e => { reject(e) @@ -604,7 +604,7 @@ export default { */ scheduleOnline ({ state }, payload) { return new Promise((resolve, reject) => { - io.post(`projects/${state.projectName}/schedule/online`, payload, res => { + io.post(`projects/${state.projectCode}/schedule/online`, payload, res => { resolve(res) }).catch(e => { reject(e) -- GitLab