Repository: kylin Updated Branches: refs/heads/2.3.x bd88a718d -> 1320de725
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/1320de72 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1320de72 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1320de72 Branch: refs/heads/2.3.x Commit: 1320de72585fb63e77835f96dd8d19e4be157910 Parents: 8add1b4 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:25:19 2018 +0800 ---------------------------------------------------------------------- .../rest/controller/CacheControllerTest.java | 54 +++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/1320de72/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()); + } + }