fix bug and strength UT in cuboid scheduling
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ea4a42c6 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ea4a42c6 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ea4a42c6 Branch: refs/heads/1.5.x-HBase1.1.3 Commit: ea4a42c63af0669c0b964eb7bb20ca7dcc52fa56 Parents: 8590b2d Author: Hongbin Ma <[email protected]> Authored: Thu Mar 10 19:46:56 2016 +0800 Committer: Hongbin Ma <[email protected]> Committed: Thu Mar 10 19:47:02 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/cube/cuboid/Cuboid.java | 1 - .../org/apache/kylin/cube/cuboid/CuboidCLI.java | 32 ++++++++++++++++++++ .../kylin/cube/cuboid/CuboidSchedulerTest.java | 10 ++++++ 3 files changed, 42 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/ea4a42c6/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java index c4e373b..16b0287 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java @@ -235,7 +235,6 @@ public class Cuboid implements Comparable<Cuboid> { for (HierarchyMask hierarchyMasks : hierarchyMaskList) { long result = cuboidID & hierarchyMasks.fullMask; if (result > 0) { - // if match one of the hierarchy constrains, return true; for (long mask : hierarchyMasks.allMasks) { if (result == mask) { continue hier; http://git-wip-us.apache.org/repos/asf/kylin/blob/ea4a42c6/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java index 49382bd..d5918aa 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java @@ -57,7 +57,9 @@ public class CuboidCLI { if (!notfound) { throw new IllegalStateException("Find duplicate spanning cuboid " + sc + " from cuboid " + cuboid); } + cuboidQueue.push(sc); + } } @@ -68,6 +70,36 @@ public class CuboidCLI { if (enumCuboids.equals(cuboidSet) == false) { throw new IllegalStateException("Expected cuboid set " + enumCuboids + "; but actual cuboid set " + cuboidSet); } + + //check all valid and invalid + for (long i = 0; i < baseCuboid; ++i) { + if (cuboidSet.contains(i)) { + if (!Cuboid.isValid(cubeDesc, i)) { + throw new RuntimeException(); + } + + if (Cuboid.translateToValidCuboid(cubeDesc, i) != i) { + throw new RuntimeException(); + } + } else { + if (Cuboid.isValid(cubeDesc, i)) { + throw new RuntimeException(); + } + + long corrected = Cuboid.translateToValidCuboid(cubeDesc, i); + if (corrected == i) { + throw new RuntimeException(); + } + + if (!Cuboid.isValid(cubeDesc, corrected)) { + throw new RuntimeException(); + } + + if (Cuboid.translateToValidCuboid(cubeDesc, corrected) != corrected) { + throw new RuntimeException(); + } + } + } } return cuboidSet.size(); http://git-wip-us.apache.org/repos/asf/kylin/blob/ea4a42c6/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java ---------------------------------------------------------------------- diff --git a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java index 0711d6e..02c01b8 100644 --- a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java +++ b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java @@ -88,6 +88,10 @@ public class CuboidSchedulerTest extends LocalFileMetadataTestCase { private CubeDesc getStreamingCubeDesc() { return getCubeDescManager().getCubeDesc("test_streaming_table_cube_desc"); } + + private CubeDesc getSSBCubeDesc() { + return getCubeDescManager().getCubeDesc("ssb"); + } private void testSpanningAndGetParent(CuboidScheduler scheduler, CubeDesc cube, long[] cuboidIds) { for (long cuboidId : cuboidIds) { @@ -209,6 +213,12 @@ public class CuboidSchedulerTest extends LocalFileMetadataTestCase { } @Test + public void testCuboidGeneration6() { + CubeDesc cube = getSSBCubeDesc(); + CuboidCLI.simulateCuboidGeneration(cube, true); + } + + @Test public void testCuboidCounts1() { CubeDesc cube = getTestKylinCubeWithoutSeller(); CuboidScheduler cuboidScheduler = new CuboidScheduler(cube);
