KYLIN-2672 Add UT

Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/50990664
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/50990664
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/50990664

Branch: refs/heads/master
Commit: 509906641dc819ecc03bb1050bcdc33e1236e6cf
Parents: 5cecbce
Author: kangkaisen <kangkai...@meituan.com>
Authored: Fri Feb 9 15:53:02 2018 +0800
Committer: Billy Liu <billy...@apache.org>
Committed: Fri Feb 9 21:20:03 2018 +0800

----------------------------------------------------------------------
 .../rest/controller/CacheControllerTest.java    | 54 +++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/50990664/server/src/test/java/org/apache/kylin/rest/controller/CacheControllerTest.java
----------------------------------------------------------------------
diff --git 
a/server/src/test/java/org/apache/kylin/rest/controller/CacheControllerTest.java
 
b/server/src/test/java/org/apache/kylin/rest/controller/CacheControllerTest.java
index c2e21cc..3466a36 100644
--- 
a/server/src/test/java/org/apache/kylin/rest/controller/CacheControllerTest.java
+++ 
b/server/src/test/java/org/apache/kylin/rest/controller/CacheControllerTest.java
@@ -19,7 +19,17 @@
 package org.apache.kylin.rest.controller;
 
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
+import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.persistence.JsonSerializer;
+import org.apache.kylin.common.persistence.Serializer;
+import org.apache.kylin.cube.CubeDescManager;
+import org.apache.kylin.cube.model.CubeDesc;
+import org.apache.kylin.metadata.model.DataModelDesc;
+import org.apache.kylin.metadata.model.TableRef;
+import org.apache.kylin.rest.request.CubeMigrationRequest;
 import org.apache.kylin.rest.service.CacheService;
 import org.apache.kylin.rest.service.ServiceTestBase;
 import org.junit.Before;
@@ -27,6 +37,9 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
 /**
  * @author shaoshi
  */
@@ -48,7 +61,46 @@ public class CacheControllerTest extends ServiceTestBase {
 
     @Test
     public void testBasics() throws IOException {
-
         cacheController.wipeCache("cube_desc", "drop", 
"test_kylin_cube_with_slr_desc");
     }
+
+    @Test
+    public void testClearCacheForCubeMigration() throws IOException {
+        KylinConfig config = KylinConfig.getInstanceFromEnv();
+        String CUBENAME = "test_kylin_cube_without_slr_desc";
+
+        CubeDescManager cubeDescManager = CubeDescManager.getInstance(config);
+        CubeDesc cubeDesc = cubeDescManager.getCubeDesc(CUBENAME);
+        DataModelDesc modelDesc = cubeDesc.getModel();
+        Map<String, String> tableToProjects = new HashMap<>();
+        for (TableRef tableRef : modelDesc.getAllTables()) {
+            tableToProjects.put(tableRef.getTableIdentity(), 
tableRef.getTableDesc().getProject());
+        }
+
+        String uuid = cubeDesc.getUuid();
+        String signature = cubeDesc.getSignature();
+
+        assertEquals(cubeDesc.getRetentionRange(), 0);
+
+        //update cubeDesc
+        cubeDesc.setRetentionRange(2018);
+        cubeDesc.updateRandomUuid();
+
+        //directly update metadata in store to simulate cube migration
+        Serializer<CubeDesc> cubeDescSerializer = new 
JsonSerializer<CubeDesc>(CubeDesc.class);
+        getStore().putResource(cubeDesc.getResourcePath(), cubeDesc, 
cubeDescSerializer);
+
+        CubeMigrationRequest request = new CubeMigrationRequest();
+        request.setCube(cubeDesc.getName());
+        request.setModel(modelDesc.getName());
+        request.setProject(modelDesc.getProject());
+        request.setTableToProjects(tableToProjects);
+
+        cacheController.clearCacheForCubeMigration(request);
+
+        assertEquals(2018, 
cubeDescManager.getCubeDesc(CUBENAME).getRetentionRange());
+        assertEquals(signature, 
cubeDescManager.getCubeDesc(CUBENAME).getSignature());
+        assertNotEquals(uuid, cubeDescManager.getCubeDesc(CUBENAME).getUuid());
+    }
+
 }

Reply via email to