This is an automated email from the ASF dual-hosted git repository. liyang pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit e824503ecaeca7f657de11bf12113ab5fd1eadb3 Author: haocheni <hao_...@qq.com> AuthorDate: Tue Aug 29 14:59:55 2023 +0800 KYLIN-5796 Support databinder auto grow collections limit --- .../kylin/rest/controller/NBasicController.java | 14 ++++++++ .../kylin/rest/aspect/InsensitiveNameAspect.java | 3 ++ .../org/apache/kylin/common/KylinConfigBase.java | 15 +++++++++ .../kylin/common/exception/ServerErrorCode.java | 1 + .../org/apache/kylin/common/msg/CnMessage.java | 10 ++++++ .../java/org/apache/kylin/common/msg/Message.java | 9 +++++ .../resources/kylin_errorcode_conf_en.properties | 1 + .../resources/kylin_errorcode_conf_zh.properties | 1 + src/metadata-server/pom.xml | 5 +++ .../controller/NProjectControllerKylinTest.java | 17 ++++------ .../rest/controller/NProjectControllerV2Test.java | 17 ++++------ .../rest/controller/NUserGroupControllerTest.java | 38 ++++++++++------------ .../controller/NUserGroupControllerV2Test.java | 22 +++++-------- .../rest/controller/OpenAclTCRControllerTest.java | 15 +++------ .../controller/open/OpenAclTCRControllerTest.java | 8 +++-- .../open/OpenUserGroupControllerTest.java | 14 ++++---- .../rest/controller/NQueryMetaControllerTest.java | 2 ++ .../rest/controller/SparkSourceControllerTest.java | 12 ++++--- 18 files changed, 127 insertions(+), 77 deletions(-) diff --git a/src/common-server/src/main/java/org/apache/kylin/rest/controller/NBasicController.java b/src/common-server/src/main/java/org/apache/kylin/rest/controller/NBasicController.java index e88ce19d72..61854b7436 100644 --- a/src/common-server/src/main/java/org/apache/kylin/rest/controller/NBasicController.java +++ b/src/common-server/src/main/java/org/apache/kylin/rest/controller/NBasicController.java @@ -24,6 +24,7 @@ import static org.apache.kylin.common.exception.ServerErrorCode.EMPTY_PROJECT_NA import static org.apache.kylin.common.exception.ServerErrorCode.FAILED_CONNECT_CATALOG; import static org.apache.kylin.common.exception.ServerErrorCode.FAILED_DOWNLOAD_FILE; import static org.apache.kylin.common.exception.ServerErrorCode.INCORRECT_PROJECT_MODE; +import static org.apache.kylin.common.exception.ServerErrorCode.INVALID_DATA_BINDER_AUTO_GROW_COLLECTION_LIMIT; import static org.apache.kylin.common.exception.ServerErrorCode.INVALID_PARAMETER; import static org.apache.kylin.common.exception.ServerErrorCode.LOW_LEVEL_LICENSE; import static org.apache.kylin.common.exception.ServerErrorCode.UNSUPPORTED_STREAMING_OPERATION; @@ -110,6 +111,7 @@ import org.apache.kylin.rest.util.PagingUtil; import org.apache.kylin.util.DataRangeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.InvalidPropertyException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpEntity; @@ -128,7 +130,9 @@ import org.springframework.transaction.CannotCreateTransactionException; import org.springframework.util.StreamUtils; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.MissingServletRequestParameterException; +import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.client.RequestCallback; @@ -184,6 +188,10 @@ public class NBasicController { if (cause instanceof CannotCreateTransactionException) { kylinException = new KylinException(FAILED_CONNECT_CATALOG, msg.getConnectDatabaseError(), false); } + if (cause instanceof InvalidPropertyException && cause.getCause() instanceof IndexOutOfBoundsException) { + kylinException = new KylinException(INVALID_DATA_BINDER_AUTO_GROW_COLLECTION_LIMIT, + msg.getInvalidDataBinderAutoGrowCollectionLimit(), false); + } if (cause instanceof KylinException) { kylinException = (KylinException) cause; } @@ -679,4 +687,10 @@ public class NBasicController { } } } + + @InitBinder + private void initBinder(WebDataBinder binder) { + int autoGrowCollectionLimit = KylinConfig.getInstanceFromEnv().getDataBinderAutoGrowCollectionLimit(); + binder.setAutoGrowCollectionLimit(autoGrowCollectionLimit); + } } diff --git a/src/common-service/src/main/java/org/apache/kylin/rest/aspect/InsensitiveNameAspect.java b/src/common-service/src/main/java/org/apache/kylin/rest/aspect/InsensitiveNameAspect.java index cfc43bf7b2..8d54a85807 100644 --- a/src/common-service/src/main/java/org/apache/kylin/rest/aspect/InsensitiveNameAspect.java +++ b/src/common-service/src/main/java/org/apache/kylin/rest/aspect/InsensitiveNameAspect.java @@ -125,6 +125,9 @@ public class InsensitiveNameAspect { for (int i = 0; i < parameterNames.length; i++) { if (parameterTypes[i] == String.class && Objects.equals("project", parameterNames[i])) { projectName = (String) args[i]; + if (StringUtils.isBlank(projectName)) { + continue; + } NProjectManager projectManager = NProjectManager.getInstance(KylinConfig.getInstanceFromEnv()); ProjectInstance projectInstance = projectManager.getProject(projectName); if (projectInstance != null) { diff --git a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index 9bce3f735a..3de55bf84e 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -53,6 +53,7 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.text.StrSubstitutor; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; @@ -3073,6 +3074,20 @@ public abstract class KylinConfigBase implements Serializable { return Boolean.parseBoolean(getOptional("kylin.web.session.jdbc-encode-enabled", FALSE)); } + public int getDataBinderAutoGrowCollectionLimit() { + String defaultValue = "256"; + String value = getOptional("kylin.web.data-binder.auto-grow-collection-limit", defaultValue); + + if (!NumberUtils.isDigits(value)) { + return Integer.parseInt(defaultValue); + } + int intValue = Integer.parseInt(value); + if (intValue <= 0) { + return Integer.parseInt(defaultValue); + } + return intValue; + } + public String getSpringStoreType() { return getOptional("spring.session.store-type", ""); } diff --git a/src/core-common/src/main/java/org/apache/kylin/common/exception/ServerErrorCode.java b/src/core-common/src/main/java/org/apache/kylin/common/exception/ServerErrorCode.java index 881a6c1f7f..68aa6bcd3f 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/exception/ServerErrorCode.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/exception/ServerErrorCode.java @@ -281,6 +281,7 @@ public enum ServerErrorCode implements ErrorCodeSupplier { SPARK_FAILURE("KE-010038002"), // CONFIG_NONEXIST_PROJECT("KE-010038003"), // CONFIG_NONEXIST_MODEL("KE-010038004"), // + INVALID_DATA_BINDER_AUTO_GROW_COLLECTION_LIMIT("KE-010038005"), // // 10039XXX jdbc source diff --git a/src/core-common/src/main/java/org/apache/kylin/common/msg/CnMessage.java b/src/core-common/src/main/java/org/apache/kylin/common/msg/CnMessage.java index 09c3925756..5d15f7042c 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/msg/CnMessage.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/msg/CnMessage.java @@ -1725,4 +1725,14 @@ public class CnMessage extends Message { public String getIllegalNegative(String parameter) { return String.format(PARAMETER_MUST_BE_POSITIVE_NUMBER, parameter); } + + @Override + public String getInvalidDataBinderAutoGrowCollectionLimit() { + return "操作失败,请调大参数 kylin.web.data-binder.auto-grow-collection-limit 的值后再试。"; + } + + @Override + public String getRedisInitFailed() { + return "Redis初始化失败"; + } } diff --git a/src/core-common/src/main/java/org/apache/kylin/common/msg/Message.java b/src/core-common/src/main/java/org/apache/kylin/common/msg/Message.java index 3dff08d642..e43eece2e5 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/msg/Message.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/msg/Message.java @@ -1628,4 +1628,13 @@ public class Message { } + public String getInvalidDataBinderAutoGrowCollectionLimit() { + return "Operation failed, please increase the value of " + + "kylin.web.data-binder.auto-grow-collection-limit and try again."; + } + + public String getRedisInitFailed() { + return "Redis init failed"; + } + } diff --git a/src/core-common/src/main/resources/kylin_errorcode_conf_en.properties b/src/core-common/src/main/resources/kylin_errorcode_conf_en.properties index b82744456d..02e3f7f830 100644 --- a/src/core-common/src/main/resources/kylin_errorcode_conf_en.properties +++ b/src/core-common/src/main/resources/kylin_errorcode_conf_en.properties @@ -273,6 +273,7 @@ KE-010038001=System Profile Abnormal Data KE-010038002=Spark Failure KE-010038003=Non Exist Project KE-010038004=Non Exist Model +KE-010038005=invalid data binder auto grow collection limit KE-010039001=Invalid Connection Info # cache diff --git a/src/core-common/src/main/resources/kylin_errorcode_conf_zh.properties b/src/core-common/src/main/resources/kylin_errorcode_conf_zh.properties index 9f04bec06f..d8fbfc42ed 100644 --- a/src/core-common/src/main/resources/kylin_errorcode_conf_zh.properties +++ b/src/core-common/src/main/resources/kylin_errorcode_conf_zh.properties @@ -271,6 +271,7 @@ KE-010038001=系统配置数据异常 KE-010038002=Spark出错 KE-010038003=不存在的项目 KE-010038004=不存在的模型 +KE-010038005=无效的表单数组自动增长限制 KE-010039001=连接信息有误 # cache diff --git a/src/metadata-server/pom.xml b/src/metadata-server/pom.xml index 151ab4df97..28a360d290 100644 --- a/src/metadata-server/pom.xml +++ b/src/metadata-server/pom.xml @@ -89,6 +89,11 @@ <artifactId>junit-vintage-engine</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <scope>test</scope> + </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerKylinTest.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerKylinTest.java index 779e79dae2..e44d8683ac 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerKylinTest.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerKylinTest.java @@ -22,15 +22,14 @@ import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLI import java.util.ArrayList; import java.util.List; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.metadata.project.ProjectInstance; import org.apache.kylin.rest.constant.Constant; import org.apache.kylin.rest.controller.v2.NProjectControllerKylin; import org.apache.kylin.rest.service.ProjectService; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -44,13 +43,11 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +@MetadataInfo(onlyProps = true) public class NProjectControllerKylinTest { private MockMvc mockMvc; - @Rule - public ExpectedException thrown = ExpectedException.none(); - @Mock private ProjectService projectService; @@ -59,7 +56,7 @@ public class NProjectControllerKylinTest { private final Authentication authentication = new TestingAuthenticationToken("ADMIN", "ADMIN", Constant.ROLE_ADMIN); - @Before + @BeforeEach public void setup() { MockitoAnnotations.initMocks(this); mockMvc = MockMvcBuilders.standaloneSetup(nProjectControllerKylin) @@ -68,7 +65,7 @@ public class NProjectControllerKylinTest { SecurityContextHolder.getContext().setAuthentication(authentication); } - @After + @AfterEach public void tearDown() { } diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerV2Test.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerV2Test.java index 2b25ca4285..28999ee180 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerV2Test.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NProjectControllerV2Test.java @@ -23,15 +23,14 @@ import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLI import java.util.ArrayList; import java.util.List; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.metadata.project.ProjectInstance; import org.apache.kylin.rest.constant.Constant; import org.apache.kylin.rest.controller.v2.NProjectControllerV2; import org.apache.kylin.rest.service.ProjectService; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -45,13 +44,11 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +@MetadataInfo(onlyProps = true) public class NProjectControllerV2Test { private MockMvc mockMvc; - @Rule - public ExpectedException thrown = ExpectedException.none(); - @Mock private ProjectService projectService; @@ -60,7 +57,7 @@ public class NProjectControllerV2Test { private final Authentication authentication = new TestingAuthenticationToken("ADMIN", "ADMIN", Constant.ROLE_ADMIN); - @Before + @BeforeEach public void setup() { MockitoAnnotations.initMocks(this); mockMvc = MockMvcBuilders.standaloneSetup(nProjectControllerV2).defaultRequest(MockMvcRequestBuilders.get("/")) @@ -69,7 +66,7 @@ public class NProjectControllerV2Test { SecurityContextHolder.getContext().setAuthentication(authentication); } - @After + @AfterEach public void tearDown() { } diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerTest.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerTest.java index 119f49253b..261c66ec82 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerTest.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerTest.java @@ -18,15 +18,17 @@ package org.apache.kylin.rest.controller; +import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLIN_JSON; import static org.apache.kylin.common.exception.code.ErrorCodeServer.REQUEST_PARAMETER_EMPTY_OR_VALUE_EMPTY; import static org.apache.kylin.rest.constant.Constant.ROLE_ADMIN; -import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLIN_JSON; import java.util.Arrays; import java.util.List; import org.apache.kylin.common.exception.KylinException; import org.apache.kylin.common.util.JsonUtil; +import org.apache.kylin.guava30.shaded.common.collect.Lists; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.rest.service.UserService; import org.apache.kylin.metadata.user.ManagedUser; import org.apache.kylin.metadata.usergroup.UserGroup; @@ -35,12 +37,11 @@ import org.apache.kylin.rest.request.UserGroupRequest; import org.apache.kylin.rest.response.UserGroupResponseKI; import org.apache.kylin.rest.service.AclTCRService; import org.apache.kylin.rest.service.NUserGroupService; -import org.junit.After; import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -61,10 +62,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ser.FilterProvider; import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; -import org.apache.kylin.guava30.shaded.common.collect.Lists; import lombok.val; +@MetadataInfo public class NUserGroupControllerTest { private MockMvc mockMvc; @@ -78,15 +79,12 @@ public class NUserGroupControllerTest { @Mock private UserService userService; - @Rule - public ExpectedException thrown = ExpectedException.none(); - @InjectMocks private NUserGroupController nUserGroupController = Mockito.spy(new NUserGroupController()); private final Authentication authentication = new TestingAuthenticationToken("ADMIN", "ADMIN", ROLE_ADMIN); - @Before + @BeforeEach public void setup() { FilterProvider filterProvider = new SimpleFilterProvider().addFilter("passwordFilter", SimpleBeanPropertyFilter.serializeAllExcept("password", "defaultPassword")); @@ -101,7 +99,7 @@ public class NUserGroupControllerTest { SecurityContextHolder.getContext().setAuthentication(authentication); } - @After + @AfterEach public void tearDown() { } @@ -155,19 +153,19 @@ public class NUserGroupControllerTest { } @Test - public void testAddEmptyGroup() throws Exception { - thrown.expect(KylinException.class); - thrown.expectMessage(REQUEST_PARAMETER_EMPTY_OR_VALUE_EMPTY.getMsg("group_name")); - UserGroupRequest request = new UserGroupRequest(); - request.setGroupName(""); - nUserGroupController.addUserGroup(request); + public void testAddEmptyGroup() { + Assertions.assertThrows(KylinException.class, () -> { + UserGroupRequest request = new UserGroupRequest(); + request.setGroupName(""); + nUserGroupController.addUserGroup(request); + }, REQUEST_PARAMETER_EMPTY_OR_VALUE_EMPTY.getMsg("group_name")); } - @Test(expected = KylinException.class) + @Test public void testAddIllegalGroupName() throws Exception { UserGroupRequest request = new UserGroupRequest(); request.setGroupName(".hhhh"); - nUserGroupController.addUserGroup(request); + Assertions.assertThrows(KylinException.class, () -> nUserGroupController.addUserGroup(request)); } @Test diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerV2Test.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerV2Test.java index 7727ea5614..40524b1949 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerV2Test.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/NUserGroupControllerV2Test.java @@ -21,15 +21,14 @@ import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLI import java.util.List; +import org.apache.kylin.guava30.shaded.common.collect.Lists; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.rest.constant.Constant; -import org.apache.kylin.metadata.user.ManagedUser; import org.apache.kylin.rest.controller.v2.NUserGroupControllerV2; import org.apache.kylin.rest.service.NUserGroupService; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -44,10 +43,10 @@ import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.accept.ContentNegotiationManager; -import org.apache.kylin.guava30.shaded.common.collect.Lists; - +import io.kyligence.kap.metadata.user.ManagedUser; import lombok.val; +@MetadataInfo(onlyProps = true) public class NUserGroupControllerV2Test { private MockMvc mockMvc; @@ -55,15 +54,12 @@ public class NUserGroupControllerV2Test { @Mock private NUserGroupService userGroupService; - @Rule - public ExpectedException thrown = ExpectedException.none(); - @InjectMocks private NUserGroupControllerV2 nUserGroupControllerV2 = Mockito.spy(new NUserGroupControllerV2()); private final Authentication authentication = new TestingAuthenticationToken("ADMIN", "ADMIN", Constant.ROLE_ADMIN); - @Before + @BeforeEach public void setup() { MockitoAnnotations.initMocks(this); ContentNegotiationManager contentNegotiationManager = new ContentNegotiationManager(); @@ -73,7 +69,7 @@ public class NUserGroupControllerV2Test { SecurityContextHolder.getContext().setAuthentication(authentication); } - @After + @AfterEach public void tearDown() { } diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/OpenAclTCRControllerTest.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/OpenAclTCRControllerTest.java index 14b227aa9c..ec29ce066e 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/OpenAclTCRControllerTest.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/OpenAclTCRControllerTest.java @@ -32,11 +32,9 @@ import org.apache.kylin.common.util.NLocalFileMetadataTestCase; import org.apache.kylin.rest.controller.open.OpenAclTCRController; import org.apache.kylin.rest.request.AclTCRRequest; import org.apache.kylin.rest.service.AclTCRService; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -73,12 +71,9 @@ public class OpenAclTCRControllerTest extends NLocalFileMetadataTestCase { @InjectMocks private OpenAclTCRController openAclTCRController = Mockito.spy(new OpenAclTCRController()); - @Rule - public ExpectedException thrown = ExpectedException.none(); - private static final String APPLICATION_JSON_PUBLIC = HTTP_VND_APACHE_KYLIN_V4_PUBLIC_JSON; - @Before + @BeforeEach public void setup() throws IOException { MockitoAnnotations.initMocks(this); mockMvc = MockMvcBuilders.standaloneSetup(openAclTCRController).defaultRequest(MockMvcRequestBuilders.get("/")) @@ -89,7 +84,7 @@ public class OpenAclTCRControllerTest extends NLocalFileMetadataTestCase { createTestMetadata(); } - @After + @AfterEach public void teardown() { cleanupTestMetadata(); } diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenAclTCRControllerTest.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenAclTCRControllerTest.java index 8b182e9f7d..1823dd91ce 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenAclTCRControllerTest.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenAclTCRControllerTest.java @@ -26,14 +26,15 @@ import java.util.List; import java.util.Map; import org.apache.kylin.common.util.JsonUtil; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.rest.constant.Constant; import org.apache.kylin.rest.service.AccessService; import org.apache.kylin.rest.service.IUserGroupService; import org.apache.kylin.rest.service.UserService; import org.apache.kylin.rest.request.AclTCRRequest; import org.apache.kylin.rest.service.AclTCRService; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -56,6 +57,7 @@ import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; /** * created by lee **/ +@MetadataInfo public class OpenAclTCRControllerTest { @Mock private UserService userService; @@ -74,7 +76,7 @@ public class OpenAclTCRControllerTest { private MockMvc mockMvc; - @Before + @BeforeEach public void setup() { FilterProvider filterProvider = new SimpleFilterProvider().addFilter("passwordFilter", SimpleBeanPropertyFilter.serializeAllExcept("password", "defaultPassword")); diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenUserGroupControllerTest.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenUserGroupControllerTest.java index f5a6e6a8ca..b3a8a7f425 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenUserGroupControllerTest.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/open/OpenUserGroupControllerTest.java @@ -25,15 +25,17 @@ import java.util.List; import org.apache.kylin.common.exception.KylinException; import org.apache.kylin.common.util.JsonUtil; +import org.apache.kylin.guava30.shaded.common.collect.Lists; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.rest.constant.Constant; -import org.apache.kylin.rest.response.DataResult; -import org.apache.kylin.rest.response.EnvelopeResponse; import org.apache.kylin.rest.controller.NUserGroupController; import org.apache.kylin.rest.request.UpdateGroupRequest; import org.apache.kylin.rest.request.UserGroupRequest; +import org.apache.kylin.rest.response.DataResult; +import org.apache.kylin.rest.response.EnvelopeResponse; import org.apache.kylin.rest.service.NUserGroupService; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -53,10 +55,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ser.FilterProvider; import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; -import org.apache.kylin.guava30.shaded.common.collect.Lists; import lombok.val; +@MetadataInfo(onlyProps = true) public class OpenUserGroupControllerTest { private MockMvc mockMvc; @@ -71,7 +73,7 @@ public class OpenUserGroupControllerTest { private final Authentication authentication = new TestingAuthenticationToken("ADMIN", "ADMIN", Constant.ROLE_ADMIN); - @Before + @BeforeEach public void setup() { FilterProvider filterProvider = new SimpleFilterProvider().addFilter("passwordFilter", SimpleBeanPropertyFilter.serializeAllExcept("password", "defaultPassword")); diff --git a/src/query-server/src/test/java/org/apache/kylin/rest/controller/NQueryMetaControllerTest.java b/src/query-server/src/test/java/org/apache/kylin/rest/controller/NQueryMetaControllerTest.java index e2d22d1087..f445a12197 100644 --- a/src/query-server/src/test/java/org/apache/kylin/rest/controller/NQueryMetaControllerTest.java +++ b/src/query-server/src/test/java/org/apache/kylin/rest/controller/NQueryMetaControllerTest.java @@ -20,6 +20,7 @@ package org.apache.kylin.rest.controller; import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLIN_EARLY_JSON; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.rest.service.QueryService; import org.apache.kylin.rest.controller.v2.NQueryMetaController; import org.junit.jupiter.api.Assertions; @@ -38,6 +39,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.apache.kylin.guava30.shaded.common.collect.Lists; +@MetadataInfo(onlyProps = true) class NQueryMetaControllerTest { private MockMvc mockMvc; diff --git a/src/query-server/src/test/java/org/apache/kylin/rest/controller/SparkSourceControllerTest.java b/src/query-server/src/test/java/org/apache/kylin/rest/controller/SparkSourceControllerTest.java index b807258079..40791a9eaa 100644 --- a/src/query-server/src/test/java/org/apache/kylin/rest/controller/SparkSourceControllerTest.java +++ b/src/query-server/src/test/java/org/apache/kylin/rest/controller/SparkSourceControllerTest.java @@ -21,13 +21,14 @@ package org.apache.kylin.rest.controller; import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLIN_JSON; import org.apache.kylin.common.util.JsonUtil; +import org.apache.kylin.junit.annotation.MetadataInfo; import org.apache.kylin.rest.constant.Constant; import org.apache.kylin.rest.request.DDLRequest; import org.apache.kylin.rest.request.ExportTableRequest; import org.apache.kylin.rest.service.SparkSourceService; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -41,6 +42,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +@MetadataInfo(onlyProps = true) public class SparkSourceControllerTest { private MockMvc mockMvc; @@ -52,7 +54,7 @@ public class SparkSourceControllerTest { private final Authentication authentication = new TestingAuthenticationToken("ADMIN", "ADMIN", Constant.ROLE_ADMIN); - @Before + @BeforeEach public void setup() { MockitoAnnotations.initMocks(this); mockMvc = MockMvcBuilders.standaloneSetup(sparkSourceController).defaultRequest(MockMvcRequestBuilders.get("/")) @@ -60,7 +62,7 @@ public class SparkSourceControllerTest { SecurityContextHolder.getContext().setAuthentication(authentication); } - @After + @AfterEach public void tearDown() { }