You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2022/12/13 10:25:14 UTC

[kylin] 07/25: KYLIN-5334 Add verification to the parameters about post get api/jobs

This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit e7842ce0fc5b96cd9687e4622ee203a1d5658b88
Author: KmCherry0 <86...@users.noreply.github.com>
AuthorDate: Mon Oct 10 09:59:28 2022 +0800

    KYLIN-5334 Add verification to the parameters about post get api/jobs
---
 .../kylin/rest/controller/v2/JobControllerV2.java  |  5 ---
 .../rest/controller/v2/JobControllerV2Test.java    | 41 +++++++++++++++++++++-
 2 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java b/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java
index acc02883b4..0ca032a5c2 100644
--- a/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java
+++ b/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java
@@ -32,7 +32,6 @@ import org.apache.kylin.job.constant.JobActionEnum;
 import org.apache.kylin.job.constant.JobStatusEnum;
 import org.apache.kylin.rest.controller.BaseController;
 import org.apache.kylin.rest.request.JobFilter;
-import org.apache.kylin.rest.response.DataResult;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.ExecutableResponse;
 import org.apache.kylin.rest.service.JobService;
@@ -90,10 +89,6 @@ public class JobControllerV2 extends BaseController {
             @RequestParam(value = "sortBy", required = false, defaultValue = "last_modified") String sortBy,
             @RequestParam(value = "sortby", required = false) String sortby, //param for 3x
             @RequestParam(value = "reverse", required = false, defaultValue = "true") Boolean reverse) {
-        // 3x default last_modify
-        if (!StringUtils.isEmpty(sortby) && !"last_modify".equals(sortby)) {
-            sortBy = sortby;
-        }
         checkNonNegativeIntegerArg("pageOffset", pageOffset);
         checkNonNegativeIntegerArg("pageSize", pageSize);
         List<String> statuses = Lists.newArrayList();
diff --git a/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java b/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java
index a2ed9db17d..d027f6bad3 100644
--- a/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java
+++ b/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java
@@ -33,7 +33,6 @@ import org.apache.kylin.rest.response.ExecutableResponse;
 import org.apache.kylin.rest.service.JobService;
 import org.apache.kylin.rest.util.AclEvaluate;
 import org.apache.kylin.rest.util.AclUtil;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InjectMocks;
@@ -206,4 +205,44 @@ public class JobControllerV2Test extends NLocalFileMetadataTestCase {
 
     }
 
+    @Test
+    public void testGetJobsException_pageOffset_pageSize() throws Exception {
+        List<ExecutableResponse> jobs = new ArrayList<>();
+        List<String> jobNames = Lists.newArrayList();
+        JobFilter jobFilter = new JobFilter(Lists.newArrayList("NEW"), jobNames, 4, "", "", "default", "job_name",
+                false);
+        Mockito.when(jobService.listJobs(jobFilter)).thenReturn(jobs);
+        mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON)
+                .param("projectName", "default").param("pageOffset", "a").param("pageSize", "10")
+                .param("timeFilter", "1").param("jobName", "").param("status", "0")
+                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON)))
+                .andExpect(MockMvcResultMatchers.status().isBadRequest());
+
+        mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON)
+                .param("projectName", "default").param("pageOffset", "-1").param("pageSize", "10")
+                .param("timeFilter", "1").param("jobName", "").param("status", "0")
+                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON)))
+                .andExpect(MockMvcResultMatchers.status().is5xxServerError());
+
+        mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON)
+                .param("projectName", "default").param("pageOffset", "1").param("pageSize", "-1")
+                .param("timeFilter", "1").param("jobName", "").param("status", "0")
+                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON)))
+                .andExpect(MockMvcResultMatchers.status().is5xxServerError());
+
+        mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON)
+                .param("projectName", "default").param("pageOffset", "1").param("pageSize", "a")
+                .param("timeFilter", "1").param("jobName", "").param("status", "0")
+                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON)))
+                .andExpect(MockMvcResultMatchers.status().isBadRequest());
+
+        mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON)
+                .param("projectName", "default").param("pageOffset", "1").param("pageSize", "10")
+                .param("timeFilter", "1").param("jobName", "").param("status", "0")
+                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON)))
+                .andExpect(MockMvcResultMatchers.status().isOk());
+
+
+    }
+
 }