You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2016/03/23 10:15:12 UTC

[28/50] [abbrv] kylin git commit: fix bug and strength UT in cuboid scheduling

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 <ma...@apache.org>
Authored: Thu Mar 10 19:46:56 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
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);