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

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

commit e622dea5d15f635997564e38d8d85282769dd608
Author: Zhiting Guo <zhiting....@kyligence.io>
AuthorDate: Tue Jul 18 18:35:25 2023 +0800

    KYLIN-5639 Refine kylin-it dependency
---
 pom.xml                                            |  11 ++
 src/common-server/pom.xml                          |   4 -
 src/common-service/pom.xml                         |   4 +
 src/core-common/pom.xml                            |   9 -
 src/core-job/pom.xml                               |   5 -
 src/core-storage/pom.xml                           |  12 +-
 src/job-service/pom.xml                            |   6 -
 src/kylin-it/pom.xml                               |  44 +----
 .../org/apache/kylin/newten/TimeZoneQueryTest.java |   2 +-
 .../routing/TableIndexAnswerSelectStarTest.java    |  59 ++-----
 .../apache/kylin/server/NQueryControllerTest.java  | 190 ---------------------
 src/{kylin-it => kylin-server-it}/pom.xml          |  73 ++------
 .../org/apache/kylin/event/HAMetadataTest.java     |   0
 .../apache/kylin/event/ITStorageCleanerTest.java   |   0
 .../org/apache/kylin/event/ModelSemanticTest.java  |   0
 .../org/apache/kylin/event/SchemaChangeTest.java   |   0
 .../kylin/rest/broadcaster/BroadcasterTest.java    |   2 +-
 .../rest/controller/NBuildAndQueryMetricsTest.java |   0
 .../rest/controller/NModelControllerTest.java      |   0
 .../rest/controller/NProjectControllerTest.java    |   0
 .../rest/controller/NQueryControllerTest.java      |   5 +-
 .../kylin/rest/controller/NUserControllerTest.java |   0
 .../server/AbstractMVCIntegrationTestCase.java     |   0
 .../org/apache/kylin/server/IntegrationConfig.java |   0
 .../NModelControllerWithRealServiceTest.java       |   0
 .../src/test/resources/query/sql_pushdown.sql      |  30 ++++
 .../springframework/conf/applicationContext.xml    |   0
 .../springframework/conf/kylinSecurity.xml         |   0
 src/metadata-server/pom.xml                        |   6 -
 src/modeling-service/pom.xml                       |   6 -
 .../kylin/rest/service/IndexPlanService.java       |   4 +-
 src/query-server/pom.xml                           |   6 -
 src/query-service/pom.xml                          |  16 +-
 .../kylin/rest/service/DashboardService.java       |   2 +-
 .../apache/kylin/rest/service/QueryService.java    |   2 +-
 .../org/apache/kylin/rest/util/QueryUtils.java     |   1 +
 .../apache/kylin/query}/util/PrepareSQLUtils.java  |   2 +-
 .../kylin/query/util/PrepareSQLUtilsTest.java      |  98 +++++++++++
 src/second-storage/clickhouse-it/pom.xml           |  17 ++
 src/server/pom.xml                                 |  11 +-
 src/spark-project/engine-build-sdk/pom.xml         |  10 --
 .../engine/spark/application/SparkApplication.java |   5 +-
 src/spark-project/source-jdbc/pom.xml              |   4 -
 .../kylin/query/runtime/plan/TableScanPlan.scala   |   6 +-
 src/spark-project/spark-common/pom.xml             |   5 -
 src/streaming-service/pom.xml                      |  19 ---
 src/tool/pom.xml                                   |  10 --
 .../org/apache/kylin/helper/HelperConstants.java   |   0
 .../apache/kylin/helper/MetadataToolHelper.java    |   0
 .../org/apache/kylin/helper/RoutineToolHelper.java |   0
 .../kylin/helper/UpdateUserAclToolHelper.java      |   0
 .../org/apache/kylin/tool/HDFSMetadataTool.java    |   0
 .../apache/kylin/tool/constant/DiagTypeEnum.java   |   0
 .../org/apache/kylin/tool/constant/StageEnum.java  |   0
 .../org/apache/kylin/tool/daemon/CheckResult.java  |   0
 .../apache/kylin/tool/daemon/CheckStateEnum.java   |   0
 .../apache/kylin/tool/daemon/HealthChecker.java    |   0
 .../kylin/tool/daemon/KapGuardianHATask.java       |   0
 .../kylin/tool/daemon/ServiceOpLevelEnum.java      |   0
 .../java/org/apache/kylin/tool/daemon/Worker.java  |   0
 .../tool/daemon/checker/AbstractHealthChecker.java |   0
 .../tool/daemon/checker/FullGCDurationChecker.java |   0
 .../tool/daemon/checker/KEProcessChecker.java      |   0
 .../kylin/tool/daemon/checker/KEStatusChecker.java |   0
 .../kylin/tool/garbage/ExecutableCleaner.java      |   0
 .../apache/kylin/tool/garbage/GarbageCleaner.java  |   0
 .../apache/kylin/tool/garbage/IndexCleaner.java    |   0
 .../apache/kylin/tool/garbage/MetadataCleaner.java |   0
 .../apache/kylin/tool/garbage/SnapshotCleaner.java |   0
 .../kylin/tool/garbage/SourceUsageCleaner.java     |   0
 .../apache/kylin/tool/garbage/StorageCleaner.java  |   0
 .../tool/kerberos/DelegationTokenManager.java      |   0
 .../kylin/tool/kerberos/KerberosLoginUtil.java     |  21 +--
 .../java/org/apache/kylin/tool/util/LdapUtils.java |   0
 .../util/ProjectTemporaryTableCleanerHelper.java   |   0
 .../java/org/apache/kylin/tool/util/ToolUtil.java  |   0
 .../ProjectTemporaryTableCleanerHelperTest.java    |   0
 .../org/apache/kylin/tool/util/ToolUtilTest.java   |   0
 78 files changed, 238 insertions(+), 469 deletions(-)

diff --git a/pom.xml b/pom.xml
index a53b5cf2a1..3f0f3922f2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -406,6 +406,7 @@
         <module>src/job-service</module>
         <module>src/streaming-service</module>
         <module>src/kylin-it</module>
+        <module>src/kylin-server-it</module>
 
         <!-- controller  -->
         <module>src/common-server</module>
@@ -763,6 +764,12 @@
                 <version>${project.version}</version>
                 <type>test-jar</type>
             </dependency>
+            <dependency>
+                <groupId>org.apache.kylin</groupId>
+                <artifactId>kylin-server-it</artifactId>
+                <version>${project.version}</version>
+                <type>test-jar</type>
+            </dependency>
             <dependency>
                 <groupId>org.apache.kylin</groupId>
                 <artifactId>kylin-core-common</artifactId>
@@ -1327,6 +1334,10 @@
                     </exclusion>
                     <exclusion>
                         <groupId>com.twitter</groupId>
+                         <artifactId>parquet-hadoop-bundle</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.apache.parquet</groupId>
                         <artifactId>parquet-hadoop-bundle</artifactId>
                     </exclusion>
                     <exclusion>
diff --git a/src/common-server/pom.xml b/src/common-server/pom.xml
index b3dc4ed315..5f80b3ea9c 100644
--- a/src/common-server/pom.xml
+++ b/src/common-server/pom.xml
@@ -42,10 +42,6 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-metadata</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-datasource-service</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-data-loading-service</artifactId>
diff --git a/src/common-service/pom.xml b/src/common-service/pom.xml
index 219eaa1c87..017809b732 100644
--- a/src/common-service/pom.xml
+++ b/src/common-service/pom.xml
@@ -35,6 +35,10 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-streaming</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-tool</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-aop</artifactId>
diff --git a/src/core-common/pom.xml b/src/core-common/pom.xml
index dc79cdb746..480d4dda89 100644
--- a/src/core-common/pom.xml
+++ b/src/core-common/pom.xml
@@ -76,10 +76,6 @@
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-1.2-api</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-        </dependency>
         <dependency>
             <groupId>javax.validation</groupId>
             <artifactId>validation-api</artifactId>
@@ -175,11 +171,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.powermock</groupId>
             <artifactId>powermock-api-mockito2</artifactId>
diff --git a/src/core-job/pom.xml b/src/core-job/pom.xml
index 7cb9a8615e..29f77bd4cf 100644
--- a/src/core-job/pom.xml
+++ b/src/core-job/pom.xml
@@ -72,11 +72,6 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-external-curator-test</artifactId>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>
diff --git a/src/core-storage/pom.xml b/src/core-storage/pom.xml
index 78be4d11da..214dc9e643 100644
--- a/src/core-storage/pom.xml
+++ b/src/core-storage/pom.xml
@@ -39,14 +39,22 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-metadata</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-core-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.hadoop</groupId>
             <artifactId>hadoop-common</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/src/job-service/pom.xml b/src/job-service/pom.xml
index d2b30a8418..e1b81cadc1 100644
--- a/src/job-service/pom.xml
+++ b/src/job-service/pom.xml
@@ -24,7 +24,6 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <name>Kylin - Job Service</name>
-    <groupId>org.apache.kylin</groupId>
     <artifactId>kylin-job-service</artifactId>
 
     <properties>
@@ -39,11 +38,6 @@
         </dependency>
 
         <!-- test -->
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-core-metadata</artifactId>
-            <type>test-jar</type>
-        </dependency>
         <dependency>
             <groupId>org.junit.vintage</groupId>
             <artifactId>junit-vintage-engine</artifactId>
diff --git a/src/kylin-it/pom.xml b/src/kylin-it/pom.xml
index 2ed10dc0ff..355e2180ab 100644
--- a/src/kylin-it/pom.xml
+++ b/src/kylin-it/pom.xml
@@ -48,38 +48,18 @@
             <artifactId>commons-io</artifactId>
             <scope>compile</scope>
         </dependency>
-        <!--yinglong-->
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-query-server</artifactId>
-            <exclusions>
-                <exclusion>
-                    <artifactId>spring-boot-starter-validation</artifactId>
-                    <groupId>org.springframework.boot</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-metadata-server</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-common-server</artifactId>
-        </dependency>
+
         <!--KAP-->
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-metadata</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-query</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-sparder</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-engine-spark</artifactId>
@@ -92,10 +72,6 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-storage</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-source-hive</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-streaming</artifactId>
@@ -230,20 +206,14 @@
         </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-core-storage</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-sparder</artifactId>
+            <artifactId>kylin-streaming</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-streaming</artifactId>
-            <type>test-jar</type>
+            <groupId>org.apache.parquet</groupId>
+            <artifactId>parquet-hadoop-bundle</artifactId>
+            <version>${parquet.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/newten/TimeZoneQueryTest.java 
b/src/kylin-it/src/test/java/org/apache/kylin/newten/TimeZoneQueryTest.java
index 26eca957d8..3a867b4ace 100644
--- a/src/kylin-it/src/test/java/org/apache/kylin/newten/TimeZoneQueryTest.java
+++ b/src/kylin-it/src/test/java/org/apache/kylin/newten/TimeZoneQueryTest.java
@@ -44,7 +44,7 @@ import org.apache.kylin.metadata.cube.model.NDataflowManager;
 import org.apache.kylin.metadata.model.SegmentRange;
 import org.apache.kylin.query.engine.PrepareSqlStateParam;
 import org.apache.kylin.query.pushdown.SparkSqlClient;
-import org.apache.kylin.rest.util.PrepareSQLUtils;
+import org.apache.kylin.query.util.PrepareSQLUtils;
 import org.apache.kylin.util.ExecAndComp;
 import org.apache.spark.SparkConf;
 import org.apache.spark.sql.Row;
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/query/routing/TableIndexAnswerSelectStarTest.java
 
b/src/kylin-it/src/test/java/org/apache/kylin/query/routing/TableIndexAnswerSelectStarTest.java
index cf46cf7eb0..c228f87579 100644
--- 
a/src/kylin-it/src/test/java/org/apache/kylin/query/routing/TableIndexAnswerSelectStarTest.java
+++ 
b/src/kylin-it/src/test/java/org/apache/kylin/query/routing/TableIndexAnswerSelectStarTest.java
@@ -19,6 +19,7 @@
 package org.apache.kylin.query.routing;
 
 import java.lang.reflect.Field;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
@@ -29,13 +30,16 @@ import org.apache.kylin.common.util.RandomUtil;
 import org.apache.kylin.common.util.TempMetadataBuilder;
 import org.apache.kylin.common.util.Unsafe;
 import org.apache.kylin.engine.spark.NLocalWithSparkSessionTest;
-import org.apache.kylin.job.engine.JobEngineConfig;
-import org.apache.kylin.job.impl.threadpool.NDefaultScheduler;
+import org.apache.kylin.guava30.shaded.common.collect.Lists;
+import org.apache.kylin.guava30.shaded.common.collect.Sets;
 import org.apache.kylin.metadata.cube.cuboid.NLayoutCandidate;
+import org.apache.kylin.metadata.cube.model.IndexPlan;
+import org.apache.kylin.metadata.cube.model.LayoutEntity;
 import org.apache.kylin.metadata.cube.model.NDataLayout;
 import org.apache.kylin.metadata.cube.model.NDataflow;
 import org.apache.kylin.metadata.cube.model.NDataflowManager;
 import org.apache.kylin.metadata.cube.model.NDataflowUpdate;
+import org.apache.kylin.metadata.cube.model.NIndexPlanManager;
 import org.apache.kylin.metadata.model.ComputedColumnDesc;
 import org.apache.kylin.metadata.model.NDataModel;
 import org.apache.kylin.metadata.model.NDataModelManager;
@@ -43,12 +47,6 @@ import org.apache.kylin.metadata.model.TblColRef;
 import org.apache.kylin.metadata.realization.RealizationStatusEnum;
 import org.apache.kylin.query.engine.SchemaMetaData;
 import org.apache.kylin.query.relnode.OLAPContext;
-import org.apache.kylin.rest.constant.Constant;
-import org.apache.kylin.rest.request.CreateBaseIndexRequest;
-import org.apache.kylin.rest.service.IndexPlanService;
-import org.apache.kylin.rest.service.ModelService;
-import org.apache.kylin.rest.util.AclEvaluate;
-import org.apache.kylin.rest.util.AclUtil;
 import org.apache.kylin.util.OlapContextUtil;
 import org.apache.spark.SparkConf;
 import org.apache.spark.sql.SparderEnv;
@@ -59,27 +57,9 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.authentication.TestingAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.test.util.ReflectionTestUtils;
 
 public class TableIndexAnswerSelectStarTest extends NLocalWithSparkSessionTest 
{
 
-    @InjectMocks
-    private final IndexPlanService indexPlanService = Mockito.spy(new 
IndexPlanService());
-
-    @Mock
-    private AclEvaluate aclEvaluate = Mockito.spy(AclEvaluate.class);
-
-    @Mock
-    private AclUtil aclUtil = Mockito.spy(AclUtil.class);
-
-    @InjectMocks
-    private final ModelService modelService = Mockito.spy(new ModelService());
-
     @BeforeClass
     public static void initSpark() {
         if (Shell.MAC)
@@ -108,21 +88,10 @@ public class TableIndexAnswerSelectStarTest extends 
NLocalWithSparkSessionTest {
     public void setup() throws Exception {
         overwriteSystemProp("kylin.job.scheduler.poll-interval-second", "1");
         
this.createTestMetadata("src/test/resources/ut_meta/tableindex_answer_selectstart");
-        ReflectionTestUtils.setField(aclEvaluate, "aclUtil", aclUtil);
-        ReflectionTestUtils.setField(indexPlanService, "aclEvaluate", 
aclEvaluate);
-        ReflectionTestUtils.setField(modelService, "aclEvaluate", aclEvaluate);
-        TestingAuthenticationToken auth = new 
TestingAuthenticationToken("ADMIN", "ADMIN", Constant.ROLE_ADMIN);
-        SecurityContextHolder.getContext().setAuthentication(auth);
-        NDefaultScheduler scheduler = 
NDefaultScheduler.getInstance(getProject());
-        scheduler.init(new JobEngineConfig(KylinConfig.getInstanceFromEnv()));
-        if (!scheduler.hasStarted()) {
-            throw new RuntimeException("scheduler has not been started");
-        }
     }
 
     @After
     public void after() throws Exception {
-        NDefaultScheduler.destroyInstance();
         cleanupTestMetadata();
     }
 
@@ -186,10 +155,16 @@ public class TableIndexAnswerSelectStarTest extends 
NLocalWithSparkSessionTest {
             copyForWrite.getAllNamedColumns().add(newCol);
         });
 
-        CreateBaseIndexRequest request = new CreateBaseIndexRequest();
-        request.setProject(getProject());
-        request.setModelId(modelId);
-        indexPlanService.updateBaseIndex(getProject(), request, false, false, 
false);
+        NIndexPlanManager indexPlanManager = 
NIndexPlanManager.getInstance(KylinConfig.getInstanceFromEnv(), getProject());
+        IndexPlan indexPlan = indexPlanManager.getIndexPlan(modelId);
+        Long oldBaseAggLayout = indexPlan.getBaseAggLayoutId();
+        indexPlanManager.updateIndexPlan(indexPlan.getUuid(), copyForWrite -> 
copyForWrite
+                .markWhiteIndexToBeDelete(indexPlan.getUuid(), 
Sets.newHashSet(oldBaseAggLayout), new HashMap<>()));
+        NDataModel model = modelManager.getDataModelDesc(modelId);
+        LayoutEntity newBaseAggLayout = indexPlan.createBaseAggIndex(model);
+        indexPlanManager.updateIndexPlan(indexPlan.getUuid(),
+                copyForWrite -> 
copyForWrite.createAndAddBaseIndex(Lists.newArrayList(newBaseAggLayout)));
+
         NDataflow dataflow = dataflowManager.getDataflow(modelId);
         String segId = "87d65498-b922-225c-1db7-13de001beba8";
         NDataLayout baseAggLayout = dataflow.getSegment(segId).getLayout(1L);
@@ -224,4 +199,4 @@ public class TableIndexAnswerSelectStarTest extends 
NLocalWithSparkSessionTest {
         return "tableindex_answer_selectstart";
     }
 
-}
\ No newline at end of file
+}
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/server/NQueryControllerTest.java 
b/src/kylin-it/src/test/java/org/apache/kylin/server/NQueryControllerTest.java
deleted file mode 100644
index 28d61f04f6..0000000000
--- 
a/src/kylin-it/src/test/java/org/apache/kylin/server/NQueryControllerTest.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.kylin.server;
-
-import static 
org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLIN_JSON;
-import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.Arrays;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.kylin.common.QueryContext;
-import org.apache.kylin.common.util.JsonUtil;
-import org.apache.kylin.metadata.model.ComputedColumnDesc;
-import org.apache.kylin.metadata.user.ManagedUser;
-import org.apache.kylin.query.KylinTestBase;
-import org.apache.kylin.rest.request.PrepareSqlRequest;
-import org.apache.kylin.rest.service.UserGrantedAuthority;
-import org.apache.kylin.rest.service.UserService;
-import org.apache.kylin.source.jdbc.H2Database;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MvcResult;
-import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
-import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
-import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.jayway.jsonpath.JsonPath;
-
-import lombok.val;
-
-public class NQueryControllerTest extends AbstractMVCIntegrationTestCase {
-
-    @Autowired
-    protected UserService userService;
-
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        userService.createUser(
-                new ManagedUser("ADMIN", "KYLIN", false, Arrays.asList(new 
UserGrantedAuthority("ROLE_ADMIN"))));
-    }
-
-    @Test
-    public void testQuery() throws Exception {
-        final PrepareSqlRequest sqlRequest = new PrepareSqlRequest();
-        sqlRequest.setProject("default");
-        sqlRequest.setSql("-- This is comment" + '\n' + "SELECT * FROM 
TEST_KYLIN_FACT");
-        sqlRequest.setUser_defined_tag("user_tag");
-        overwriteSystemProp("kylin.query.pushdown-enabled", "false");
-
-        final MvcResult result = mockMvc
-                
.perform(MockMvcRequestBuilders.post("/api/query").contentType(MediaType.APPLICATION_JSON)
-                        .content(JsonUtil.writeValueAsString(sqlRequest))
-                        .header("User-Agent", "Chrome/89.0.4389.82 
Safari/537.36")
-                        
.accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_JSON)))
-                .andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
-
-        final boolean isException = JsonPath.compile("$.data.isException")
-                .read(result.getResponse().getContentAsString());
-        Assert.assertTrue(isException);
-
-        final String exceptionMsg = JsonPath.compile("$.data.exceptionMessage")
-                .read(result.getResponse().getContentAsString());
-        Assert.assertTrue(StringUtils.contains(exceptionMsg, "No realization 
found for OLAPContext"));
-    }
-
-    @Ignore("TODO: remove or adapt")
-    public void testUserTagExceedLimitation() throws Exception {
-        final PrepareSqlRequest sqlRequest = new PrepareSqlRequest();
-        sqlRequest.setProject("default");
-        sqlRequest.setSql("-- This is comment" + '\n' + "SELECT * FROM 
TEST_KYLIN_FACT");
-        StringBuilder builder = new StringBuilder();
-        for (int i = 0; i <= 256; i++) {
-            builder.append('a');
-        }
-        sqlRequest.setUser_defined_tag(builder.toString());
-        
mockMvc.perform(MockMvcRequestBuilders.post("/api/query").contentType(MediaType.APPLICATION_JSON)
-                .content(JsonUtil.writeValueAsString(sqlRequest))
-                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_JSON)))
-                
.andExpect(MockMvcResultMatchers.status().isBadRequest()).andExpect(jsonPath("$.code").value("999"))
-                .andExpect(jsonPath("$.msg").value(
-                        "Can’t add the tag, as the length exceeds the maximum 
256 characters. Please modify it."));
-    }
-
-    @Test
-    public void testPushDownQuery() throws Exception {
-        overwriteSystemProp("kylin.query.pushdown.runner-class-name",
-                "org.apache.kylin.query.pushdown.PushDownRunnerJdbcImpl");
-        overwriteSystemProp("kylin.query.pushdown-enabled", "true");
-        overwriteSystemProp("kylin.query.pushdown.cache-enabled", "true");
-        overwriteSystemProp("kylin.query.cache-threshold-duration", "0");
-
-        // Load H2 Tables (inner join)
-        Connection h2Connection = 
DriverManager.getConnection("jdbc:h2:mem:db_default", "sa", "");
-        H2Database h2DB = new H2Database(h2Connection, getTestConfig(), 
"default");
-        h2DB.loadAllTables();
-
-        overwriteSystemProp("kylin.query.pushdown.jdbc.url", 
"jdbc:h2:mem:db_default;SCHEMA=DEFAULT");
-        overwriteSystemProp("kylin.query.pushdown.jdbc.driver", 
"org.h2.Driver");
-        overwriteSystemProp("kylin.query.pushdown.jdbc.username", "sa");
-        overwriteSystemProp("kylin.query.pushdown.jdbc.password", "");
-
-        final PrepareSqlRequest sqlRequest = new PrepareSqlRequest();
-        sqlRequest.setProject("default");
-
-        String queryFileName = 
"src/test/resources/query/sql_pushdown/query04.sql";
-        File sqlFile = new File(queryFileName);
-        String sql = KylinTestBase.getTextFromFile(sqlFile);
-        sqlRequest.setSql(sql);
-
-        // get h2 query result for comparison
-        Statement statement = h2Connection.createStatement();
-        ResultSet resultSet = statement.executeQuery(sql);
-
-        
mockMvc.perform(MockMvcRequestBuilders.post("/api/query").contentType(MediaType.APPLICATION_JSON)
-                .content(JsonUtil.writeValueAsString(sqlRequest))
-                .header("User-Agent", "Chrome/89.0.4389.82 Safari/537.36")
-                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_JSON)))
-                .andExpect(MockMvcResultMatchers.status().isOk())
-                
.andExpect(MockMvcResultMatchers.jsonPath("$.data.results[0].length()")
-                        .value(resultSet.getMetaData().getColumnCount()))
-                
.andExpect(MockMvcResultMatchers.jsonPath("$.data.pushDown").value(true))
-                .andDo(MockMvcResultHandlers.print()).andReturn();
-
-        // push down can not hit cache because the cache is expired by default
-        
mockMvc.perform(MockMvcRequestBuilders.post("/api/query").contentType(MediaType.APPLICATION_JSON)
-                .content(JsonUtil.writeValueAsString(sqlRequest))
-                .header("User-Agent", "Chrome/89.0.4389.82 Safari/537.36")
-                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_JSON)))
-                .andExpect(MockMvcResultMatchers.status().isOk())
-                
.andExpect(MockMvcResultMatchers.jsonPath("$.data.results[0].length()")
-                        .value(resultSet.getMetaData().getColumnCount()))
-                
.andExpect(MockMvcResultMatchers.jsonPath("$.data.pushDown").value(true))
-                
.andExpect(MockMvcResultMatchers.jsonPath("$.data.engineType").value(QueryContext.PUSHDOWN_RDBMS))
-                
.andExpect(MockMvcResultMatchers.jsonPath("$.data.storageCacheUsed").value(false))
-                .andDo(MockMvcResultHandlers.print()).andReturn();
-
-        h2Connection.close();
-    }
-
-    @Test
-    public void testPrepareQuery() throws Exception {
-        final PrepareSqlRequest sqlRequest = new PrepareSqlRequest();
-        sqlRequest.setProject("default");
-        sqlRequest.setSql("SELECT * FROM test_country");
-
-        
mockMvc.perform(MockMvcRequestBuilders.post("/api/query/prestate").contentType(MediaType.APPLICATION_JSON)
-                .content(JsonUtil.writeValueAsString(sqlRequest))
-                .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_JSON)))
-                
.andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print());
-
-    }
-
-    @Test
-    public void testGetMetadata() throws Exception {
-        final val mvcResult = mockMvc
-                
.perform(MockMvcRequestBuilders.get("/api/query/tables_and_columns").param("project",
 "default")
-                        
.accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_JSON)))
-                .andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
-        final JsonNode jsonNode = 
JsonUtil.readValueAsTree(mvcResult.getResponse().getContentAsString());
-        final JsonNode data = jsonNode.get("data");
-        
Assert.assertTrue(!data.toString().contains(ComputedColumnDesc.getComputedColumnInternalNamePrefix()));
-    }
-}
diff --git a/src/kylin-it/pom.xml b/src/kylin-server-it/pom.xml
similarity index 80%
copy from src/kylin-it/pom.xml
copy to src/kylin-server-it/pom.xml
index 2ed10dc0ff..3f3a2dae77 100644
--- a/src/kylin-it/pom.xml
+++ b/src/kylin-server-it/pom.xml
@@ -1,21 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
@@ -24,8 +10,8 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>kylin-it</artifactId>
-    <name>Kylin - Integration Test</name>
+    <artifactId>kylin-server-it</artifactId>
+    <name>Kylin - Server Integration Test</name>
 
     <properties>
         <beanutils.version>1.9.4</beanutils.version>
@@ -49,6 +35,11 @@
             <scope>compile</scope>
         </dependency>
         <!--yinglong-->
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-it</artifactId>
+            <type>test-jar</type>
+        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-query-server</artifactId>
@@ -72,14 +63,6 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-metadata</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-query</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-sparder</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-engine-spark</artifactId>
@@ -88,18 +71,6 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-common</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-core-storage</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-source-hive</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-streaming</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-tool</artifactId>
@@ -216,36 +187,12 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-query</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-engine-spark</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-core-storage</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-sparder</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-streaming</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-model</artifactId>
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/event/HAMetadataTest.java 
b/src/kylin-server-it/src/test/java/org/apache/kylin/event/HAMetadataTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/event/HAMetadataTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/event/HAMetadataTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/event/ITStorageCleanerTest.java 
b/src/kylin-server-it/src/test/java/org/apache/kylin/event/ITStorageCleanerTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/event/ITStorageCleanerTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/event/ITStorageCleanerTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/event/ModelSemanticTest.java 
b/src/kylin-server-it/src/test/java/org/apache/kylin/event/ModelSemanticTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/event/ModelSemanticTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/event/ModelSemanticTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/event/SchemaChangeTest.java 
b/src/kylin-server-it/src/test/java/org/apache/kylin/event/SchemaChangeTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/event/SchemaChangeTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/event/SchemaChangeTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/broadcaster/BroadcasterTest.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/broadcaster/BroadcasterTest.java
similarity index 98%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/rest/broadcaster/BroadcasterTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/rest/broadcaster/BroadcasterTest.java
index 61fb0132b3..d9c4af48d9 100644
--- 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/broadcaster/BroadcasterTest.java
+++ 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/broadcaster/BroadcasterTest.java
@@ -115,7 +115,7 @@ class BroadcasterTest {
     void testBroadcastAddS3Conf() throws Exception {
         BroadcastListener broadcastListener = new BroadcastListener();
         broadcastListener.handle(new 
AddS3CredentialToSparkBroadcastEventNotifier("aa", "bb", "cc"));
-        assert 
SparderEnv.getSparkSession().conf().contains(String.format("fs.s3a.bucket.%s.assumed.role.arn",
 "aa"));
+        
Assert.assertTrue(SparderEnv.getSparkSession().conf().contains(String.format("fs.s3a.bucket.%s.assumed.role.arn",
 "aa")));
     }
 
     @Test
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NBuildAndQueryMetricsTest.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NBuildAndQueryMetricsTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NBuildAndQueryMetricsTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NBuildAndQueryMetricsTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NModelControllerTest.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NModelControllerTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NModelControllerTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NModelControllerTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NProjectControllerTest.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NProjectControllerTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NProjectControllerTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NProjectControllerTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NQueryControllerTest.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NQueryControllerTest.java
similarity index 98%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NQueryControllerTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NQueryControllerTest.java
index fa238c4de5..46ba562c7d 100644
--- 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NQueryControllerTest.java
+++ 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NQueryControllerTest.java
@@ -76,7 +76,8 @@ public class NQueryControllerTest extends 
AbstractMVCIntegrationTestCase {
     public void testQuery() throws Exception {
         final PrepareSqlRequest sqlRequest = new PrepareSqlRequest();
         sqlRequest.setProject("DEFAULT");
-        sqlRequest.setSql("SELECT * FROM TEST_KYLIN_FACT");
+        sqlRequest.setSql("-- This is comment" + '\n' + "SELECT * FROM 
TEST_KYLIN_FACT");
+        sqlRequest.setUser_defined_tag("user_tag");
         overwriteSystemProp("kylin.query.pushdown-enabled", "false");
 
         final MvcResult result = mockMvc
@@ -117,7 +118,7 @@ public class NQueryControllerTest extends 
AbstractMVCIntegrationTestCase {
         final PrepareSqlRequest sqlRequest = new PrepareSqlRequest();
         sqlRequest.setProject("Default");
 
-        String queryFileName = 
"src/test/resources/query/sql_pushdown/query04.sql";
+        String queryFileName = "src/test/resources/query/sql_pushdown.sql";
         File sqlFile = new File(queryFileName);
         String sql = KylinTestBase.getTextFromFile(sqlFile);
         sqlRequest.setSql(sql);
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NUserControllerTest.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NUserControllerTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/rest/controller/NUserControllerTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/rest/controller/NUserControllerTest.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/server/AbstractMVCIntegrationTestCase.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/server/AbstractMVCIntegrationTestCase.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/server/AbstractMVCIntegrationTestCase.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/server/AbstractMVCIntegrationTestCase.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/server/IntegrationConfig.java 
b/src/kylin-server-it/src/test/java/org/apache/kylin/server/IntegrationConfig.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/server/IntegrationConfig.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/server/IntegrationConfig.java
diff --git 
a/src/kylin-it/src/test/java/org/apache/kylin/server/NModelControllerWithRealServiceTest.java
 
b/src/kylin-server-it/src/test/java/org/apache/kylin/server/NModelControllerWithRealServiceTest.java
similarity index 100%
rename from 
src/kylin-it/src/test/java/org/apache/kylin/server/NModelControllerWithRealServiceTest.java
rename to 
src/kylin-server-it/src/test/java/org/apache/kylin/server/NModelControllerWithRealServiceTest.java
diff --git a/src/kylin-server-it/src/test/resources/query/sql_pushdown.sql 
b/src/kylin-server-it/src/test/resources/query/sql_pushdown.sql
new file mode 100644
index 0000000000..c1b70d4abb
--- /dev/null
+++ b/src/kylin-server-it/src/test/resources/query/sql_pushdown.sql
@@ -0,0 +1,30 @@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements.  See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership.  The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+select meta_categ_name, count(1) as cnt, sum(price) as GMV
+
+ from test_kylin_fact
+ inner JOIN edw.test_cal_dt as test_cal_dt
+ ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt
+ left JOIN test_category_groupings
+ ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id
+ left JOIN edw.test_sites as test_sites
+ ON test_kylin_fact.lstg_site_id = test_sites.site_id
+
+ where not ( meta_categ_name not in ('', 'a','Computers') or meta_categ_name 
not in ('Crafts','Computers'))
+ group by meta_categ_name
diff --git 
a/src/kylin-it/src/test/resources/springframework/conf/applicationContext.xml 
b/src/kylin-server-it/src/test/resources/springframework/conf/applicationContext.xml
similarity index 100%
rename from 
src/kylin-it/src/test/resources/springframework/conf/applicationContext.xml
rename to 
src/kylin-server-it/src/test/resources/springframework/conf/applicationContext.xml
diff --git 
a/src/kylin-it/src/test/resources/springframework/conf/kylinSecurity.xml 
b/src/kylin-server-it/src/test/resources/springframework/conf/kylinSecurity.xml
similarity index 100%
rename from 
src/kylin-it/src/test/resources/springframework/conf/kylinSecurity.xml
rename to 
src/kylin-server-it/src/test/resources/springframework/conf/kylinSecurity.xml
diff --git a/src/metadata-server/pom.xml b/src/metadata-server/pom.xml
index 38ff80c59b..42bbb48a9b 100644
--- a/src/metadata-server/pom.xml
+++ b/src/metadata-server/pom.xml
@@ -69,12 +69,6 @@
             <artifactId>spring-test</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-common-service</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
diff --git a/src/modeling-service/pom.xml b/src/modeling-service/pom.xml
index c6c5a996f0..838a96531c 100644
--- a/src/modeling-service/pom.xml
+++ b/src/modeling-service/pom.xml
@@ -65,12 +65,6 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-datasource-service</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-common-service</artifactId>
diff --git 
a/src/modeling-service/src/main/java/org/apache/kylin/rest/service/IndexPlanService.java
 
b/src/modeling-service/src/main/java/org/apache/kylin/rest/service/IndexPlanService.java
index e1e50e1dc9..aa7b481bbb 100644
--- 
a/src/modeling-service/src/main/java/org/apache/kylin/rest/service/IndexPlanService.java
+++ 
b/src/modeling-service/src/main/java/org/apache/kylin/rest/service/IndexPlanService.java
@@ -1108,10 +1108,10 @@ public class IndexPlanService extends BasicService 
implements TableIndexPlanSupp
 
     @Transaction(project = 0)
     public BuildBaseIndexResponse updateBaseIndex(String project, 
CreateBaseIndexRequest request,
-            boolean createIfNotExistTableLayout, boolean 
createIfNotExistAggLayout, boolean isAuo) {
+            boolean createIfNotExistTableLayout, boolean 
createIfNotExistAggLayout, boolean isAuto) {
         aclEvaluate.checkProjectOperationDesignPermission(project);
         // update = delete + create
-        Set<Long> needDelete = checkNeedUpdateBaseIndex(project, request, 
isAuo);
+        Set<Long> needDelete = checkNeedUpdateBaseIndex(project, request, 
isAuto);
         List<LayoutEntity> needRetainAggLayout = 
getNeedRetainAggLayout(project, request, needDelete);
         deleteOrMarkTobeDelete(project, request.getModelId(), needDelete);
         removeFromBlackList(project, request, needDelete, needRetainAggLayout);
diff --git a/src/query-server/pom.xml b/src/query-server/pom.xml
index c1045d9614..371c054a11 100644
--- a/src/query-server/pom.xml
+++ b/src/query-server/pom.xml
@@ -25,7 +25,6 @@
     <modelVersion>4.0.0</modelVersion>
 
     <name>Kylin - Query Server</name>
-    <groupId>org.apache.kylin</groupId>
     <artifactId>kylin-query-server</artifactId>
 
     <properties>
@@ -50,11 +49,6 @@
             <artifactId>kylin-data-loading-service</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-job-service</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-common</artifactId>
diff --git a/src/query-service/pom.xml b/src/query-service/pom.xml
index 7f3301d207..d01b18c6fa 100644
--- a/src/query-service/pom.xml
+++ b/src/query-service/pom.xml
@@ -44,6 +44,10 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-query</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-core-metadata</artifactId>
+        </dependency>
 
         <!-- hadoop -->
         <dependency>
@@ -93,14 +97,6 @@
         </dependency>
 
         <!-- Test & Env -->
-
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-core-metadata</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-modeling-service</artifactId>
@@ -109,13 +105,13 @@
         </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-common-service</artifactId>
+            <artifactId>kylin-core-metadata</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-datasource-service</artifactId>
+            <artifactId>kylin-common-service</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
diff --git 
a/src/query-service/src/main/java/org/apache/kylin/rest/service/DashboardService.java
 
b/src/query-service/src/main/java/org/apache/kylin/rest/service/DashboardService.java
index 07c1511f93..1d70199234 100644
--- 
a/src/query-service/src/main/java/org/apache/kylin/rest/service/DashboardService.java
+++ 
b/src/query-service/src/main/java/org/apache/kylin/rest/service/DashboardService.java
@@ -20,7 +20,7 @@ package org.apache.kylin.rest.service;
 
 import lombok.extern.slf4j.Slf4j;
 import org.apache.kylin.common.response.MetricsResponse;
-import org.apache.kylin.metadata.cube.realization.HybridRealization;
+import org.apache.kylin.metadata.realization.HybridRealization;
 import org.apache.kylin.metadata.project.ProjectInstance;
 import org.apache.kylin.query.exception.UnsupportedQueryException;
 import org.apache.kylin.rest.constant.Constant;
diff --git 
a/src/query-service/src/main/java/org/apache/kylin/rest/service/QueryService.java
 
b/src/query-service/src/main/java/org/apache/kylin/rest/service/QueryService.java
index 3896737392..333dc2857b 100644
--- 
a/src/query-service/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ 
b/src/query-service/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -153,7 +153,7 @@ import 
org.apache.kylin.rest.response.TableMetaCacheResultV2;
 import org.apache.kylin.rest.security.MutableAclRecord;
 import org.apache.kylin.rest.util.AclEvaluate;
 import org.apache.kylin.rest.util.AclPermissionUtil;
-import org.apache.kylin.rest.util.PrepareSQLUtils;
+import org.apache.kylin.query.util.PrepareSQLUtils;
 import org.apache.kylin.rest.util.QueryCacheSignatureUtil;
 import org.apache.kylin.rest.util.QueryRequestLimits;
 import org.apache.kylin.rest.util.QueryUtils;
diff --git 
a/src/query-service/src/main/java/org/apache/kylin/rest/util/QueryUtils.java 
b/src/query-service/src/main/java/org/apache/kylin/rest/util/QueryUtils.java
index 0c922b603e..c9c782f8aa 100644
--- a/src/query-service/src/main/java/org/apache/kylin/rest/util/QueryUtils.java
+++ b/src/query-service/src/main/java/org/apache/kylin/rest/util/QueryUtils.java
@@ -25,6 +25,7 @@ import org.apache.kylin.common.util.Pair;
 import org.apache.kylin.metadata.project.NProjectManager;
 import org.apache.kylin.query.engine.PrepareSqlStateParam;
 import org.apache.kylin.query.engine.QueryExec;
+import org.apache.kylin.query.util.PrepareSQLUtils;
 import org.apache.kylin.query.util.QueryParams;
 import org.apache.kylin.query.util.QueryUtil;
 import org.apache.kylin.query.util.TempStatementUtil;
diff --git 
a/src/query-service/src/main/java/org/apache/kylin/rest/util/PrepareSQLUtils.java
 b/src/query/src/main/java/org/apache/kylin/query/util/PrepareSQLUtils.java
similarity index 99%
rename from 
src/query-service/src/main/java/org/apache/kylin/rest/util/PrepareSQLUtils.java
rename to 
src/query/src/main/java/org/apache/kylin/query/util/PrepareSQLUtils.java
index 2a91e79db4..e9de9e66e3 100644
--- 
a/src/query-service/src/main/java/org/apache/kylin/rest/util/PrepareSQLUtils.java
+++ b/src/query/src/main/java/org/apache/kylin/query/util/PrepareSQLUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.kylin.rest.util;
+package org.apache.kylin.query.util;
 
 import java.math.BigDecimal;
 import java.sql.Date;
diff --git 
a/src/query/src/test/java/org/apache/kylin/query/util/PrepareSQLUtilsTest.java 
b/src/query/src/test/java/org/apache/kylin/query/util/PrepareSQLUtilsTest.java
new file mode 100644
index 0000000000..bf98cee2d1
--- /dev/null
+++ 
b/src/query/src/test/java/org/apache/kylin/query/util/PrepareSQLUtilsTest.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.kylin.query.util;
+
+import org.apache.kylin.common.util.NLocalFileMetadataTestCase;
+import org.apache.kylin.query.engine.PrepareSqlStateParam;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PrepareSQLUtilsTest extends NLocalFileMetadataTestCase {
+
+    @Before
+    public void setUp() throws Exception {
+        this.createTestMetadata();
+    }
+
+    @After
+    public void after() throws Exception {
+        this.cleanupTestMetadata();
+    }
+
+    @Test
+    public void testFillInParams() {
+        testCase(String.class, "value1", "\'value1\'");
+        testCase(Integer.class, "1", "1");
+        testCase(Short.class, "1", "1");
+        testCase(Long.class, "1", "1");
+        testCase(Double.class, "1", "1.0");
+        testCase(Float.class, "1", "1.0");
+        testCase(Boolean.class, "true", "true");
+        testCase(Byte.class, "1", "1");
+        testCase(java.util.Date.class, "2023-04-19", "date\'2023-04-19\'");
+        testCase(java.sql.Date.class, "2023-04-19", "date\'2023-04-19\'");
+        testCase(java.sql.Time.class, "01:02:03", "01:02:03"); // it's a bug, 
fix it later
+        testCase(java.sql.Timestamp.class, "2023-04-19 01:02:03", 
"timestamp\'2023-04-19 01:02:03.000\'");
+    }
+
+    @Test
+    public void testFillInEmptyParams() {
+        testCase(String.class, "", "\'\'");
+        testCase(Integer.class, "", "0");
+        testCase(Short.class, "", "0");
+        testCase(Long.class, "", "0");
+        testCase(Double.class, "", "0.0");
+        testCase(Float.class, "", "0.0");
+        testCase(Boolean.class, "", "false");
+        testCase(Byte.class, "", "0");
+        testCase(java.util.Date.class, "", "NULL");
+        testCase(java.sql.Date.class, "", "NULL");
+        testCase(java.sql.Time.class, "", "NULL");
+        testCase(java.sql.Timestamp.class, "", "NULL");
+    }
+
+    @Test
+    public void testFillInNullParams() {
+        testCase(String.class, null, "NULL");
+        testCase(Integer.class, null, "0");
+        testCase(Short.class, null, "0");
+        testCase(Long.class, null, "0");
+        testCase(Double.class, null, "0.0");
+        testCase(Float.class, null, "0.0");
+        testCase(Boolean.class, null, "false");
+        testCase(Byte.class, null, "0");
+        testCase(java.util.Date.class, null, "NULL");
+        testCase(java.sql.Date.class, null, "NULL");
+        testCase(java.sql.Time.class, null, "NULL");
+        testCase(java.sql.Timestamp.class, null, "NULL");
+    }
+
+    private static final String SQL_PATTERN = "select * from mock_table where 
filter_value = ";
+    private static final String PLACE_HOLDER = "?";
+
+    private void testCase(Class typeClass, String value, String expected) {
+        String originalSql = SQL_PATTERN + PLACE_HOLDER;
+        String expectedSql = SQL_PATTERN + expected;
+        PrepareSqlStateParam param = new 
PrepareSqlStateParam(typeClass.getCanonicalName(), value);
+        String preparedSql = PrepareSQLUtils.fillInParams(originalSql, new 
PrepareSqlStateParam[] {param});
+        Assert.assertEquals(expectedSql, preparedSql);
+    }
+}
diff --git a/src/second-storage/clickhouse-it/pom.xml 
b/src/second-storage/clickhouse-it/pom.xml
index bf2a5cd262..6f85d66608 100644
--- a/src/second-storage/clickhouse-it/pom.xml
+++ b/src/second-storage/clickhouse-it/pom.xml
@@ -50,6 +50,13 @@
             <artifactId>kap-second-storage-clickhouse</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-core-metadata</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-engine-spark</artifactId>
@@ -246,6 +253,16 @@
             <artifactId>kylin-data-loading-server</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-query-server</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-metadata-server</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/server/pom.xml b/src/server/pom.xml
index 1b24a133b6..006020503c 100644
--- a/src/server/pom.xml
+++ b/src/server/pom.xml
@@ -75,6 +75,12 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>distributed-lock-ext</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.kylin</groupId>
+            <artifactId>kylin-core-metadata</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
 
         <!-- 
https://mvnrepository.com/artifact/org.scala-lang.modules/scala-xml -->
         <dependency>
@@ -346,11 +352,6 @@
             <artifactId>hive-common</artifactId>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.hive</groupId>
-            <artifactId>hive-exec</artifactId>
-            <scope>compile</scope>
-        </dependency>
 
         <dependency>
             <groupId>org.powermock</groupId>
diff --git a/src/spark-project/engine-build-sdk/pom.xml 
b/src/spark-project/engine-build-sdk/pom.xml
index 3eba2238dc..285a7cff5b 100644
--- a/src/spark-project/engine-build-sdk/pom.xml
+++ b/src/spark-project/engine-build-sdk/pom.xml
@@ -36,16 +36,6 @@
             <groupId>org.apache.spark</groupId>
             <artifactId>spark-sql_2.12</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-spark-common</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-common</artifactId>
diff --git 
a/src/spark-project/engine-spark/src/main/java/org/apache/kylin/engine/spark/application/SparkApplication.java
 
b/src/spark-project/engine-spark/src/main/java/org/apache/kylin/engine/spark/application/SparkApplication.java
index 9de5b85f8a..b087d758df 100644
--- 
a/src/spark-project/engine-spark/src/main/java/org/apache/kylin/engine/spark/application/SparkApplication.java
+++ 
b/src/spark-project/engine-spark/src/main/java/org/apache/kylin/engine/spark/application/SparkApplication.java
@@ -68,6 +68,7 @@ import org.apache.kylin.engine.spark.job.NSparkCubingUtil;
 import org.apache.kylin.engine.spark.job.ParamsConstants;
 import org.apache.kylin.engine.spark.job.ResourceDetect;
 import org.apache.kylin.engine.spark.job.RestfulJobProgressReport;
+import org.apache.kylin.engine.spark.job.SegmentBuildJob;
 import org.apache.kylin.engine.spark.job.SparkJobConstants;
 import org.apache.kylin.engine.spark.job.UdfManager;
 import org.apache.kylin.engine.spark.scheduler.ClusterMonitor;
@@ -105,10 +106,6 @@ import org.apache.spark.util.Utils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.kylin.guava30.shaded.common.annotations.VisibleForTesting;
-import org.apache.kylin.guava30.shaded.common.collect.Maps;
-
-import org.apache.kylin.engine.spark.job.SegmentBuildJob;
 import lombok.val;
 import scala.runtime.AbstractFunction1;
 import scala.runtime.BoxedUnit;
diff --git a/src/spark-project/source-jdbc/pom.xml 
b/src/spark-project/source-jdbc/pom.xml
index 0130a9cda2..7ed673707d 100644
--- a/src/spark-project/source-jdbc/pom.xml
+++ b/src/spark-project/source-jdbc/pom.xml
@@ -39,10 +39,6 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-datasource-sdk</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-core-job</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-spark-common</artifactId>
diff --git 
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
 
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
index ae2ab230ff..95ade3ef1d 100644
--- 
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
+++ 
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
@@ -27,17 +27,17 @@ import 
org.apache.kylin.guava30.shaded.common.collect.{Lists, Sets}
 import org.apache.kylin.metadata.cube.cuboid.NLayoutCandidate
 import org.apache.kylin.metadata.cube.gridtable.NLayoutToGridTableMapping
 import org.apache.kylin.metadata.cube.model.{LayoutEntity, NDataSegment, 
NDataflow}
-import org.apache.kylin.metadata.model._
+import org.apache.kylin.metadata.model.{DeriveInfo, FunctionDesc, 
NTableMetadataManager, ParameterDesc, TblColRef}
 import org.apache.kylin.metadata.realization.{HybridRealization, IRealization}
 import org.apache.kylin.metadata.tuple.TupleInfo
 import org.apache.kylin.query.implicits.sessionToQueryContext
 import org.apache.kylin.query.relnode.{KapRel, OLAPContext}
 import org.apache.kylin.query.util.{RuntimeHelper, SparderDerivedUtil}
-import org.apache.spark.sql._
+import org.apache.spark.sql.{Column, DataFrame, Row, SparderEnv, 
SparkOperation, SparkSession}
 import org.apache.spark.sql.execution.utils.SchemaProcessor
 import org.apache.spark.sql.functions.col
 import org.apache.spark.sql.manager.SparderLookupManager
-import org.apache.spark.sql.types._
+import org.apache.spark.sql.types.{ArrayType, DataTypes, DoubleType, 
StringType, StructField, StructType}
 import org.apache.spark.sql.util.SparderTypeUtil
 
 import scala.collection.JavaConverters._
diff --git a/src/spark-project/spark-common/pom.xml 
b/src/spark-project/spark-common/pom.xml
index 98cf5f29cd..798df45452 100644
--- a/src/spark-project/spark-common/pom.xml
+++ b/src/spark-project/spark-common/pom.xml
@@ -145,11 +145,6 @@
             <artifactId>awaitility</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-soft-affinity-cache</artifactId>
-            <type>test-jar</type>
-        </dependency>
         <dependency>
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-core-common</artifactId>
diff --git a/src/streaming-service/pom.xml b/src/streaming-service/pom.xml
index 766f0ae85f..759061c30d 100644
--- a/src/streaming-service/pom.xml
+++ b/src/streaming-service/pom.xml
@@ -24,7 +24,6 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <name>Kylin - Streaming Service</name>
-    <groupId>org.apache.kylin</groupId>
     <artifactId>kylin-streaming-service</artifactId>
 
     <properties>
@@ -58,24 +57,6 @@
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-data-loading-service</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-job-service</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-query-service</artifactId>
-            <scope>test</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>
diff --git a/src/tool/pom.xml b/src/tool/pom.xml
index e71b03e843..ef48efb4b7 100644
--- a/src/tool/pom.xml
+++ b/src/tool/pom.xml
@@ -40,10 +40,6 @@
             <groupId>org.apache.kylin</groupId>
             <artifactId>kylin-streaming</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-common-service</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>org.springframework.security</groupId>
@@ -135,12 +131,6 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.kylin</groupId>
-            <artifactId>kylin-common-service</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/helper/HelperConstants.java 
b/src/tool/src/main/java/org/apache/kylin/helper/HelperConstants.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/helper/HelperConstants.java
rename to src/tool/src/main/java/org/apache/kylin/helper/HelperConstants.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/helper/MetadataToolHelper.java
 b/src/tool/src/main/java/org/apache/kylin/helper/MetadataToolHelper.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/helper/MetadataToolHelper.java
rename to src/tool/src/main/java/org/apache/kylin/helper/MetadataToolHelper.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/helper/RoutineToolHelper.java
 b/src/tool/src/main/java/org/apache/kylin/helper/RoutineToolHelper.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/helper/RoutineToolHelper.java
rename to src/tool/src/main/java/org/apache/kylin/helper/RoutineToolHelper.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/helper/UpdateUserAclToolHelper.java
 b/src/tool/src/main/java/org/apache/kylin/helper/UpdateUserAclToolHelper.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/helper/UpdateUserAclToolHelper.java
rename to 
src/tool/src/main/java/org/apache/kylin/helper/UpdateUserAclToolHelper.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/HDFSMetadataTool.java 
b/src/tool/src/main/java/org/apache/kylin/tool/HDFSMetadataTool.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/HDFSMetadataTool.java
rename to src/tool/src/main/java/org/apache/kylin/tool/HDFSMetadataTool.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/constant/DiagTypeEnum.java
 b/src/tool/src/main/java/org/apache/kylin/tool/constant/DiagTypeEnum.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/constant/DiagTypeEnum.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/constant/DiagTypeEnum.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/constant/StageEnum.java
 b/src/tool/src/main/java/org/apache/kylin/tool/constant/StageEnum.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/constant/StageEnum.java
rename to src/tool/src/main/java/org/apache/kylin/tool/constant/StageEnum.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/CheckResult.java
 b/src/tool/src/main/java/org/apache/kylin/tool/daemon/CheckResult.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/CheckResult.java
rename to src/tool/src/main/java/org/apache/kylin/tool/daemon/CheckResult.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/CheckStateEnum.java
 b/src/tool/src/main/java/org/apache/kylin/tool/daemon/CheckStateEnum.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/CheckStateEnum.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/daemon/CheckStateEnum.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/HealthChecker.java
 b/src/tool/src/main/java/org/apache/kylin/tool/daemon/HealthChecker.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/HealthChecker.java
rename to src/tool/src/main/java/org/apache/kylin/tool/daemon/HealthChecker.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/KapGuardianHATask.java
 b/src/tool/src/main/java/org/apache/kylin/tool/daemon/KapGuardianHATask.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/KapGuardianHATask.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/daemon/KapGuardianHATask.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/ServiceOpLevelEnum.java
 b/src/tool/src/main/java/org/apache/kylin/tool/daemon/ServiceOpLevelEnum.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/ServiceOpLevelEnum.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/daemon/ServiceOpLevelEnum.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/Worker.java 
b/src/tool/src/main/java/org/apache/kylin/tool/daemon/Worker.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/Worker.java
rename to src/tool/src/main/java/org/apache/kylin/tool/daemon/Worker.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/AbstractHealthChecker.java
 
b/src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/AbstractHealthChecker.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/AbstractHealthChecker.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/AbstractHealthChecker.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/FullGCDurationChecker.java
 
b/src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/FullGCDurationChecker.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/FullGCDurationChecker.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/FullGCDurationChecker.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/KEProcessChecker.java
 
b/src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/KEProcessChecker.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/KEProcessChecker.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/KEProcessChecker.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/KEStatusChecker.java
 
b/src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/KEStatusChecker.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/daemon/checker/KEStatusChecker.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/daemon/checker/KEStatusChecker.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/garbage/ExecutableCleaner.java
 b/src/tool/src/main/java/org/apache/kylin/tool/garbage/ExecutableCleaner.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/garbage/ExecutableCleaner.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/garbage/ExecutableCleaner.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/garbage/GarbageCleaner.java
 b/src/tool/src/main/java/org/apache/kylin/tool/garbage/GarbageCleaner.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/garbage/GarbageCleaner.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/garbage/GarbageCleaner.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/garbage/IndexCleaner.java
 b/src/tool/src/main/java/org/apache/kylin/tool/garbage/IndexCleaner.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/garbage/IndexCleaner.java
rename to src/tool/src/main/java/org/apache/kylin/tool/garbage/IndexCleaner.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/garbage/MetadataCleaner.java
 b/src/tool/src/main/java/org/apache/kylin/tool/garbage/MetadataCleaner.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/garbage/MetadataCleaner.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/garbage/MetadataCleaner.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/garbage/SnapshotCleaner.java
 b/src/tool/src/main/java/org/apache/kylin/tool/garbage/SnapshotCleaner.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/garbage/SnapshotCleaner.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/garbage/SnapshotCleaner.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/garbage/SourceUsageCleaner.java
 b/src/tool/src/main/java/org/apache/kylin/tool/garbage/SourceUsageCleaner.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/garbage/SourceUsageCleaner.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/garbage/SourceUsageCleaner.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/garbage/StorageCleaner.java
 b/src/tool/src/main/java/org/apache/kylin/tool/garbage/StorageCleaner.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/garbage/StorageCleaner.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/garbage/StorageCleaner.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/kerberos/DelegationTokenManager.java
 
b/src/tool/src/main/java/org/apache/kylin/tool/kerberos/DelegationTokenManager.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/kerberos/DelegationTokenManager.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/kerberos/DelegationTokenManager.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java
 b/src/tool/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java
similarity index 96%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java
index 4b8ef3e211..1272ebc777 100644
--- 
a/src/common-service/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java
+++ 
b/src/tool/src/main/java/org/apache/kylin/tool/kerberos/KerberosLoginUtil.java
@@ -34,6 +34,7 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.authentication.util.KerberosUtil;
 import org.apache.kylin.common.util.Unsafe;
+import org.apache.kylin.guava30.shaded.common.base.Preconditions;
 import org.apache.log4j.Logger;
 
 import sun.security.krb5.internal.ktab.KeyTab;
@@ -202,20 +203,12 @@ public class KerberosLoginUtil {
     }
 
     public static void setJaasConf(String loginContextName, String principal, 
String keytabFile) throws IOException {
-        if ((loginContextName == null) || (loginContextName.length() <= 0)) {
-            LOG.error("input loginContextName is invalid.");
-            throw new IOException("input loginContextName is invalid.");
-        }
-
-        if ((principal == null) || (principal.length() <= 0)) {
-            LOG.error("input principal is invalid.");
-            throw new IOException("input principal is invalid.");
-        }
-
-        if ((keytabFile == null) || (keytabFile.length() <= 0)) {
-            LOG.error("input keytabFile is invalid.");
-            throw new IOException("input keytabFile is invalid.");
-        }
+        Preconditions.checkArgument((loginContextName == null) || 
(loginContextName.length() <= 0),
+                "input loginContextName is invalid.");
+        Preconditions.checkArgument((principal == null) || (principal.length() 
<= 0),
+                "input principal is invalid.");
+        Preconditions.checkArgument((keytabFile == null) || 
(keytabFile.length() <= 0),
+                "input keytabFile is invalid.");
 
         File userKeytabFile = new File(keytabFile);
         if (!userKeytabFile.exists()) {
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/util/LdapUtils.java 
b/src/tool/src/main/java/org/apache/kylin/tool/util/LdapUtils.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/util/LdapUtils.java
rename to src/tool/src/main/java/org/apache/kylin/tool/util/LdapUtils.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelper.java
 
b/src/tool/src/main/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelper.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelper.java
rename to 
src/tool/src/main/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelper.java
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/tool/util/ToolUtil.java 
b/src/tool/src/main/java/org/apache/kylin/tool/util/ToolUtil.java
similarity index 100%
rename from 
src/common-service/src/main/java/org/apache/kylin/tool/util/ToolUtil.java
rename to src/tool/src/main/java/org/apache/kylin/tool/util/ToolUtil.java
diff --git 
a/src/common-service/src/test/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelperTest.java
 
b/src/tool/src/test/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelperTest.java
similarity index 100%
rename from 
src/common-service/src/test/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelperTest.java
rename to 
src/tool/src/test/java/org/apache/kylin/tool/util/ProjectTemporaryTableCleanerHelperTest.java
diff --git 
a/src/common-service/src/test/java/org/apache/kylin/tool/util/ToolUtilTest.java 
b/src/tool/src/test/java/org/apache/kylin/tool/util/ToolUtilTest.java
similarity index 100%
rename from 
src/common-service/src/test/java/org/apache/kylin/tool/util/ToolUtilTest.java
rename to src/tool/src/test/java/org/apache/kylin/tool/util/ToolUtilTest.java

Reply via email to