Repository: kylin Updated Branches: refs/heads/KYLIN-2672 b8105db9e -> 0b3938517
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/0b393851 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0b393851 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0b393851 Branch: refs/heads/KYLIN-2672 Commit: 0b393851718a17d3cae470e67e628d69cabf4ad8 Parents: b8105db Author: kangkaisen <kangkai...@meituan.com> Authored: Fri Feb 9 15:53:02 2018 +0800 Committer: kangkaisen <kangkai...@meituan.com> Committed: Fri Feb 9 15:53:56 2018 +0800 ---------------------------------------------------------------------- .../rest/controller/CacheControllerTest.java | 54 +++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/0b393851/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()); + } + }