Repository: kylin Updated Branches: refs/heads/master 29b912896 -> 31b16c333
APACHE-KYLIN-2725: refine unit test Signed-off-by: lidongsjtu <lid...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/31b16c33 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/31b16c33 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/31b16c33 Branch: refs/heads/master Commit: 31b16c333e62ac5074c2a715905e2ee3f91b2a2f Parents: 5c8e4d8 Author: Zhong <nju_y...@apache.org> Authored: Thu Nov 2 16:51:38 2017 +0800 Committer: lidongsjtu <lid...@apache.org> Committed: Thu Nov 2 17:36:02 2017 +0800 ---------------------------------------------------------------------- .../tool/metrics/systemcube/SCCreatorTest.java | 69 ++++++++++++++++---- 1 file changed, 57 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/31b16c33/tool/src/test/java/org/apache/kylin/tool/metrics/systemcube/SCCreatorTest.java ---------------------------------------------------------------------- diff --git a/tool/src/test/java/org/apache/kylin/tool/metrics/systemcube/SCCreatorTest.java b/tool/src/test/java/org/apache/kylin/tool/metrics/systemcube/SCCreatorTest.java index 623a883..ee553ab 100644 --- a/tool/src/test/java/org/apache/kylin/tool/metrics/systemcube/SCCreatorTest.java +++ b/tool/src/test/java/org/apache/kylin/tool/metrics/systemcube/SCCreatorTest.java @@ -18,17 +18,28 @@ package org.apache.kylin.tool.metrics.systemcube; +import static org.junit.Assert.assertEquals; + import java.io.BufferedInputStream; import java.io.BufferedOutputStream; +import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.io.FileUtils; +import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.util.LocalFileMetadataTestCase; +import org.apache.kylin.cube.CubeInstance; +import org.apache.kylin.cube.CubeManager; +import org.apache.kylin.metadata.realization.RealizationStatusEnum; +import org.apache.kylin.metrics.lib.SinkTool; import org.apache.kylin.tool.metrics.systemcube.util.HiveSinkTool; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -38,23 +49,46 @@ import com.google.common.collect.Sets; public class SCCreatorTest extends LocalFileMetadataTestCase { + private File tempMetadataDir; + @Before public void setUp() throws Exception { this.createTestMetadata(); + + File tempDir = File.createTempFile(getClass().getName(), "system"); + FileUtils.forceDelete(tempDir); + tempMetadataDir = new File(tempDir, "meta"); } @After public void after() throws Exception { - this.cleanupTestMetadata(); + if (tempMetadataDir != null && tempMetadataDir.exists()) { + FileUtils.forceDelete(tempMetadataDir.getParentFile()); + } + staticCleanupTestMetadata(); } @Test public void testExecute() throws Exception { - String outputPath = "../examples/system"; + String metadataPath = tempMetadataDir.getPath(); + String inputPath = "src/main/resources/SCSinkTools.json"; SCCreator cli = new SCCreator(); - cli.execute("ADMIN", outputPath, inputPath); + cli.execute("ADMIN", metadataPath, inputPath); + Assert.assertTrue(tempMetadataDir.isDirectory()); + + KylinConfig local = KylinConfig.createKylinConfig(KylinConfig.getInstanceFromEnv()); + local.setMetadataUrl(metadataPath); + + CubeManager cubeManager = CubeManager.getInstance(local); + List<CubeInstance> cubeList = cubeManager.listAllCubes(); + System.out.println("System cubes: " + cubeList); + assertEquals(cubeList.size(), 5); + + for (CubeInstance cube : cubeList) { + Assert.assertTrue(cube.getStatus() != RealizationStatusEnum.DESCBROKEN); + } } @Test @@ -65,25 +99,36 @@ public class SCCreatorTest extends LocalFileMetadataTestCase { HiveSinkTool hiveSinkTool = new HiveSinkTool(); hiveSinkTool.setCubeDescOverrideProperties(cubeDescOverrideProperties); - try (BufferedOutputStream os = new BufferedOutputStream( - new FileOutputStream("src/test/resources/SCSinkTools.json"))) { + String outputPath = "src/test/resources/SCSinkTools.json"; + try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(outputPath))) { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); mapper.writeValue(os, Sets.newHashSet(hiveSinkTool)); } + + Set<SinkTool> sinkToolSet = readSinkToolsJson(outputPath); + for (SinkTool entry : sinkToolSet) { + Map<String, String> props = entry.getCubeDescOverrideProperties(); + for (String key : cubeDescOverrideProperties.keySet()) { + assertEquals(props.get(key), cubeDescOverrideProperties.get(key)); + } + } } @Test public void testReadSinkToolsJson() throws Exception { - try (BufferedInputStream is = new BufferedInputStream( - new FileInputStream("src/main/resources/SCSinkTools.json"))) { + Set<SinkTool> sinkToolSet = readSinkToolsJson("src/main/resources/SCSinkTools.json"); + for (SinkTool entry : sinkToolSet) { + Map<String, String> props = entry.getCubeDescOverrideProperties(); + assertEquals(props.get("kylin.cube.algorithm"), "INMEM"); + } + } + + private Set<SinkTool> readSinkToolsJson(String jsonPath) throws Exception { + try (BufferedInputStream is = new BufferedInputStream(new FileInputStream(jsonPath))) { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); - Set<HiveSinkTool> sinkToolSet = mapper.readValue(is, HashSet.class); - for (HiveSinkTool entry : sinkToolSet) { - System.out.println(entry.getCubeDescOverrideProperties()); - } + return mapper.readValue(is, HashSet.class); } } - } \ No newline at end of file