minor, refactor AggregationGroup.calculateCuboidCombination()
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/873f903f Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/873f903f Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/873f903f Branch: refs/heads/KYLIN-1875 Commit: 873f903f3d95afa2cec5e1d6d3027f1b62f3ec54 Parents: 798f03e Author: Li Yang <liy...@apache.org> Authored: Thu Nov 24 13:00:42 2016 +0800 Committer: Li Yang <liy...@apache.org> Committed: Thu Nov 24 13:00:42 2016 +0800 ---------------------------------------------------------------------- .../common/util/LocalFileMetadataTestCase.java | 4 +- .../kylin/cube/model/AggregationGroup.java | 88 ++++++++++++++---- .../validation/rule/AggregationGroupRule.java | 12 +-- .../kylin/cube/AggregationGroupRuleTest.java | 3 - .../org/apache/kylin/cube/CubeDescTest.java | 97 +++++++++++++------- .../kylin/cube/cuboid/CuboidSchedulerTest.java | 5 +- 6 files changed, 141 insertions(+), 68 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/873f903f/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java ---------------------------------------------------------------------- diff --git a/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java b/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java index d351041..26e1e86 100644 --- a/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java +++ b/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java @@ -46,7 +46,7 @@ public class LocalFileMetadataTestCase extends AbstractKylinTestCase { public static void staticCreateTestMetadata(String testDataFolder) { KylinConfig.destroyInstance(); - String tempTestMetadataUrl = "../examples/test_metadata"; + String tempTestMetadataUrl = LOCALMETA_TEMP_DATA; try { FileUtils.deleteDirectory(new File(tempTestMetadataUrl)); FileUtils.copyDirectory(new File(testDataFolder), new File(tempTestMetadataUrl)); @@ -61,7 +61,7 @@ public class LocalFileMetadataTestCase extends AbstractKylinTestCase { } public static void cleanAfterClass() { - String tempTestMetadataUrl = "../examples/test_metadata"; + String tempTestMetadataUrl = LOCALMETA_TEMP_DATA; try { FileUtils.deleteDirectory(new File(tempTestMetadataUrl)); } catch (IOException e) { http://git-wip-us.apache.org/repos/asf/kylin/blob/873f903f/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java b/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java index ab63c00..12c0574 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java @@ -19,9 +19,12 @@ package org.apache.kylin.cube.model; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.TreeSet; -import org.apache.kylin.common.util.StringUtil; import org.apache.kylin.cube.cuboid.Cuboid; import org.apache.kylin.metadata.model.TblColRef; @@ -34,9 +37,9 @@ import com.google.common.collect.Lists; @JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE) public class AggregationGroup { public static class HierarchyMask { - public long fullMask;// 00000111 - public long[] allMasks;// 00000100,00000110,00000111 - public long[] dims;// 00000100,00000010,00000001 + public long fullMask; // 00000111 + public long[] allMasks; // 00000100,00000110,00000111 + public long[] dims; // 00000100,00000010,00000001 } @JsonProperty("includes") @@ -64,7 +67,7 @@ public class AggregationGroup { throw new IllegalStateException("AggregationGroup incomplete"); } - columnNamesToUpperCase(); + normalizeColumnNames(); buildPartialCubeFullMask(rowKeyDesc); buildMandatoryColumnMask(rowKeyDesc); @@ -76,19 +79,41 @@ public class AggregationGroup { } - private void columnNamesToUpperCase() { - StringUtil.toUpperCaseArray(includes, includes); - StringUtil.toUpperCaseArray(selectRule.mandatory_dims, selectRule.mandatory_dims); - if (selectRule.hierarchy_dims != null) { - for (String[] cols : selectRule.hierarchy_dims) { - StringUtil.toUpperCaseArray(cols, cols); - } + private void normalizeColumnNames() { + Preconditions.checkNotNull(includes); + normalizeColumnNames(includes); + + Preconditions.checkNotNull(selectRule.mandatory_dims); + normalizeColumnNames(selectRule.mandatory_dims); + + if (selectRule.hierarchy_dims == null) + selectRule.hierarchy_dims = new String[0][]; + for (String[] cols : selectRule.hierarchy_dims) { + Preconditions.checkNotNull(cols); + normalizeColumnNames(cols); } - if (selectRule.joint_dims != null) { - for (String[] cols : selectRule.joint_dims) { - StringUtil.toUpperCaseArray(cols, cols); - } + + if (selectRule.joint_dims == null) + selectRule.joint_dims = new String[0][]; + for (String[] cols : selectRule.joint_dims) { + Preconditions.checkNotNull(cols); + normalizeColumnNames(cols); + } + } + + private void normalizeColumnNames(String[] names) { + if (names == null) + return; + + for (int i = 0; i < names.length; i++) { + TblColRef col = cubeDesc.getModel().findColumn(names[i]); + names[i] = col.getTableAlias() + "." + col.getName(); } + + // check no dup + Set<String> set = new HashSet<>(Arrays.asList(names)); + if (set.size() < names.length) + throw new IllegalStateException("Columns in aggrgroup must not contain duplication: " + Arrays.asList(names)); } private void buildPartialCubeFullMask(RowKeyDesc rowKeyDesc) { @@ -250,6 +275,36 @@ public class AggregationGroup { return ret; } + /** Compute cuboid combination for aggregation group */ + public long calculateCuboidCombination() { + long combination = 1; + + Set<String> includeDims = new TreeSet<>(Arrays.asList(includes)); + Set<String> mandatoryDims = new TreeSet<>(Arrays.asList(selectRule.mandatory_dims)); + + Set<String> hierarchyDims = new TreeSet<>(); + for (String[] ss : selectRule.hierarchy_dims) { + hierarchyDims.addAll(Arrays.asList(ss)); + combination = combination * (ss.length + 1); + } + + Set<String> jointDims = new TreeSet<>(); + for (String[] ss : selectRule.joint_dims) { + jointDims.addAll(Arrays.asList(ss)); + combination = combination * 2; + } + + Set<String> normalDims = new TreeSet<>(); + normalDims.addAll(includeDims); + normalDims.removeAll(mandatoryDims); + normalDims.removeAll(hierarchyDims); + normalDims.removeAll(jointDims); + + combination = combination * (1L << normalDims.size()); + + return combination; + } + public void setIncludes(String[] includes) { this.includes = includes; } @@ -297,4 +352,5 @@ public class AggregationGroup { public CubeDesc getCubeDesc() { return cubeDesc; } + } http://git-wip-us.apache.org/repos/asf/kylin/blob/873f903f/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java index c73f5ca..3f865ea 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java @@ -62,7 +62,6 @@ public class AggregationGroupRule implements IValidatorRule<CubeDesc> { continue; } - long combination = 1; Set<String> includeDims = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); if (agg.getIncludes() != null) { for (String include : agg.getIncludes()) { @@ -83,7 +82,6 @@ public class AggregationGroupRule implements IValidatorRule<CubeDesc> { for (String s : ss) { hierarchyDims.add(s); } - combination = combination * (ss.length + 1); } } @@ -93,7 +91,6 @@ public class AggregationGroupRule implements IValidatorRule<CubeDesc> { for (String s : ss) { jointDims.add(s); } - combination = combination * 2; } } @@ -109,14 +106,6 @@ public class AggregationGroupRule implements IValidatorRule<CubeDesc> { continue; } - Set<String> normalDims = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); - normalDims.addAll(includeDims); - normalDims.removeAll(mandatoryDims); - normalDims.removeAll(hierarchyDims); - normalDims.removeAll(jointDims); - - combination = combination * (1L << normalDims.size()); - if (CollectionUtils.containsAny(mandatoryDims, hierarchyDims)) { Set<String> intersection = new HashSet<>(mandatoryDims); intersection.retainAll(hierarchyDims); @@ -186,6 +175,7 @@ public class AggregationGroupRule implements IValidatorRule<CubeDesc> { } } + long combination = agg.calculateCuboidCombination(); if (combination > getMaxCombinations(cube)) { String msg = "Aggregation group " + index + " has too many combinations, current combination is " + combination + ", max allowed combination is " + getMaxCombinations(cube) + "; use 'mandatory'/'hierarchy'/'joint' to optimize; or update 'kylin.cube.aggrgroup.max-combination' to a bigger value."; context.addResult(ResultLevel.ERROR, msg); http://git-wip-us.apache.org/repos/asf/kylin/blob/873f903f/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java ---------------------------------------------------------------------- diff --git a/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java b/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java index 3deeb34..9bb5aea 100644 --- a/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java +++ b/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java @@ -23,7 +23,6 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; @@ -111,8 +110,6 @@ public class AggregationGroupRuleTest extends LocalFileMetadataTestCase { IValidatorRule<CubeDesc> rule = getAggregationGroupRule(); rule.validate(desc, vContext); vContext.print(System.out); - // System.out.println(vContext.getResults().length); - // System.out.println(vContext.getResults()[0].getMessage()); assertEquals(1, vContext.getResults().length); assertEquals("Aggregation group 0 'includes' dimensions not include all the dimensions:[seller_id, META_CATEG_NAME, lstg_format_name, lstg_site_id, slr_segment_cd]", (vContext.getResults()[0].getMessage())); } http://git-wip-us.apache.org/repos/asf/kylin/blob/873f903f/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java ---------------------------------------------------------------------- diff --git a/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java b/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java index 840d11f..27c154b 100644 --- a/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java +++ b/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java @@ -19,8 +19,6 @@ package org.apache.kylin.cube; import java.io.File; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -30,6 +28,7 @@ import java.util.TreeSet; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.common.util.LocalFileMetadataTestCase; +import org.apache.kylin.cube.model.AggregationGroup; import org.apache.kylin.cube.model.CubeDesc; import org.apache.kylin.cube.model.SelectRule; import org.junit.After; @@ -46,12 +45,42 @@ import com.google.common.collect.Maps; */ public class CubeDescTest extends LocalFileMetadataTestCase { + private static final String CUBE_WITH_SLR_DESC = "test_kylin_cube_with_slr_desc"; + + private String SELLER_ID; + private String SLR_SEGMENT_CD; + private String LSTG_FORMAT_NAME; + private String LSTG_SITE_ID; + private String META_CATEG_NAME; + private String CATEG_LVL2_NAME; + private String CATEG_LVL3_NAME; + private String LEAF_CATEG_ID; + @Rule public ExpectedException thrown = ExpectedException.none(); @Before public void setUp() throws Exception { this.createTestMetadata(); + + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + AggregationGroup g = cubeDesc.getAggregationGroups().get(0); + SELLER_ID = getColInAggrGroup(g, "SELLER_ID"); + SLR_SEGMENT_CD = getColInAggrGroup(g, "SLR_SEGMENT_CD"); + LSTG_FORMAT_NAME = getColInAggrGroup(g, "LSTG_FORMAT_NAME"); + LSTG_SITE_ID = getColInAggrGroup(g, "LSTG_SITE_ID"); + META_CATEG_NAME = getColInAggrGroup(g, "META_CATEG_NAME"); + CATEG_LVL2_NAME = getColInAggrGroup(g, "CATEG_LVL2_NAME"); + CATEG_LVL3_NAME = getColInAggrGroup(g, "CATEG_LVL3_NAME"); + LEAF_CATEG_ID = getColInAggrGroup(g, "LEAF_CATEG_ID"); + } + + private String getColInAggrGroup(AggregationGroup g, String name) { + for (String c : g.getIncludes()) { + if (c.toLowerCase().contains(name.toLowerCase())) + return c; + } + throw new IllegalStateException(); } @After @@ -61,7 +90,7 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testGoodInit() throws Exception { - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); cubeDesc.init(getTestConfig()); } @@ -70,7 +99,7 @@ public class CubeDescTest extends LocalFileMetadataTestCase { thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 includes field not set"); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); String[] temp = null; cubeDesc.getAggregationGroups().get(0).setIncludes(temp); @@ -82,7 +111,7 @@ public class CubeDescTest extends LocalFileMetadataTestCase { thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 select rule field not set"); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); SelectRule temp = null; cubeDesc.getAggregationGroups().get(0).setSelectRule(temp); @@ -92,8 +121,8 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testBadInit3() throws Exception { thrown.expect(IllegalStateException.class); - thrown.expectMessage("Aggregation group 0 'includes' dimensions not include all the dimensions:" + sortStrs(new String[] { "SELLER_ID", "META_CATEG_NAME", "LSTG_FORMAT_NAME", "LSTG_SITE_ID", "SLR_SEGMENT_CD" })); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); + thrown.expectMessage("Aggregation group 0 'includes' dimensions not include all the dimensions:"); + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); String[] temp = Arrays.asList(cubeDesc.getAggregationGroups().get(0).getIncludes()).subList(0, 3).toArray(new String[3]); cubeDesc.getAggregationGroups().get(0).setIncludes(temp); @@ -105,7 +134,7 @@ public class CubeDescTest extends LocalFileMetadataTestCase { thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 has too many combinations, use 'mandatory'/'hierarchy'/'joint' to optimize; or update 'kylin.cube.aggrgroup.max-combination' to a bigger value."); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); try { System.setProperty("kylin.cube.aggrgroup.max-combination", "8"); cubeDesc.validateAggregationGroups(); @@ -116,16 +145,16 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testBadInit5() throws Exception { - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().mandatory_dims = new String[] { "seller_id", "META_CATEG_NAME" }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().mandatory_dims = new String[] { SELLER_ID, META_CATEG_NAME }; cubeDesc.init(getTestConfig()); } @Test public void testBadInit6() throws Exception { - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().mandatory_dims = new String[] { "seller_id", "lstg_format_name" }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().mandatory_dims = new String[] { SELLER_ID, LSTG_FORMAT_NAME }; cubeDesc.init(getTestConfig()); } @@ -135,44 +164,44 @@ public class CubeDescTest extends LocalFileMetadataTestCase { thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 require at least 2 dimensions in a joint"); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { "lstg_format_name" } }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { LSTG_FORMAT_NAME } }; cubeDesc.init(getTestConfig()); } @Test public void testBadInit8() throws Exception { - String[] strs = new String[] { "CATEG_LVL2_NAME", "META_CATEG_NAME" }; + String[] strs = new String[] { CATEG_LVL2_NAME, META_CATEG_NAME }; thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 hierarchy dimensions overlap with joint dimensions: " + sortStrs(strs)); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { "META_CATEG_NAME", "CATEG_LVL2_NAME" } }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { META_CATEG_NAME, CATEG_LVL2_NAME } }; cubeDesc.init(getTestConfig()); } @Test public void testBadInit9() throws Exception { - String[] strs = new String[] { "lstg_format_name", "META_CATEG_NAME" }; + String[] strs = new String[] { LSTG_FORMAT_NAME, META_CATEG_NAME }; thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 hierarchy dimensions overlap with joint dimensions: " + sortStrs(strs)); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().hierarchy_dims = new String[][] { new String[] { "META_CATEG_NAME", "CATEG_LVL2_NAME", "CATEG_LVL3_NAME" }, new String[] { "lstg_format_name", "lstg_site_id" } }; - cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { "META_CATEG_NAME", "lstg_format_name" } }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().hierarchy_dims = new String[][] { new String[] { META_CATEG_NAME, CATEG_LVL2_NAME, CATEG_LVL3_NAME }, new String[] { LSTG_FORMAT_NAME, LSTG_SITE_ID } }; + cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { META_CATEG_NAME, LSTG_FORMAT_NAME } }; cubeDesc.init(getTestConfig()); } @Test public void testBadInit10() throws Exception { - String[] strs = new String[] { "lstg_format_name", "lstg_site_id" }; + String[] strs = new String[] { LSTG_FORMAT_NAME, LSTG_SITE_ID }; thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 a dimension exist in more than one joint: " + sortStrs(strs)); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { "lstg_format_name", "lstg_site_id", "slr_segment_cd" }, new String[] { "lstg_format_name", "lstg_site_id", "leaf_categ_id" } }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().joint_dims = new String[][] { new String[] { LSTG_FORMAT_NAME, LSTG_SITE_ID, SLR_SEGMENT_CD }, new String[] { LSTG_FORMAT_NAME, LSTG_SITE_ID, LEAF_CATEG_ID } }; cubeDesc.init(getTestConfig()); } @@ -182,42 +211,42 @@ public class CubeDescTest extends LocalFileMetadataTestCase { thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 require at least 2 dimensions in a hierarchy."); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().hierarchy_dims = new String[][] { new String[] { "META_CATEG_NAME" } }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().hierarchy_dims = new String[][] { new String[] { META_CATEG_NAME } }; cubeDesc.init(getTestConfig()); } @Test public void testBadInit12() throws Exception { - String[] strs = new String[] { "CATEG_LVL2_NAME", "META_CATEG_NAME" }; + String[] strs = new String[] { CATEG_LVL2_NAME, META_CATEG_NAME }; thrown.expect(IllegalStateException.class); thrown.expectMessage("Aggregation group 0 a dimension exist in more than one hierarchy: " + sortStrs(strs)); - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); - cubeDesc.getAggregationGroups().get(0).getSelectRule().hierarchy_dims = new String[][] { new String[] { "META_CATEG_NAME", "CATEG_LVL2_NAME", "CATEG_LVL3_NAME" }, new String[] { "META_CATEG_NAME", "CATEG_LVL2_NAME" } }; + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); + cubeDesc.getAggregationGroups().get(0).getSelectRule().hierarchy_dims = new String[][] { new String[] { META_CATEG_NAME, CATEG_LVL2_NAME, CATEG_LVL3_NAME }, new String[] { META_CATEG_NAME, CATEG_LVL2_NAME } }; cubeDesc.init(getTestConfig()); } @Test public void testCombinationIntOverflow() throws Exception { - for (File f : new File(LocalFileMetadataTestCase.LOCALMETA_TEMP_DATA + "/cube_desc/").listFiles()) { - if (f.getName().endsWith("bad")) { + for (File f : new File(LocalFileMetadataTestCase.LOCALMETA_TEMP_DATA, "cube_desc").listFiles()) { + if (f.getName().endsWith(".bad")) { String path = f.getPath(); f.renameTo(new File(path.substring(0, path.length() - 4))); } } thrown.expect(IllegalStateException.class); - getTestConfig(); + CubeDescManager.clearCache(); CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("ut_cube_desc_combination_int_overflow"); cubeDesc.init(getTestConfig()); } @Test public void testSerialize() throws Exception { - CubeDesc desc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); + CubeDesc desc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); String str = JsonUtil.writeValueAsIndentString(desc); System.out.println(str); @SuppressWarnings("unused") @@ -226,7 +255,7 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testGetCubeDesc() throws Exception { - CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc"); + CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc(CUBE_WITH_SLR_DESC); Assert.assertNotNull(cubeDesc); } http://git-wip-us.apache.org/repos/asf/kylin/blob/873f903f/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 63a8211..7db616e 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 @@ -287,12 +287,13 @@ public class CuboidSchedulerTest extends LocalFileMetadataTestCase { @Test public void testCuboid_onlyBaseCuboid() { - for (File f : new File(LocalFileMetadataTestCase.LOCALMETA_TEMP_DATA + "/cube_desc/").listFiles()) { - if (f.getName().endsWith("bad")) { + for (File f : new File(LocalFileMetadataTestCase.LOCALMETA_TEMP_DATA, "cube_desc").listFiles()) { + if (f.getName().endsWith(".bad")) { String path = f.getPath(); f.renameTo(new File(path.substring(0, path.length() - 4))); } } + CubeDescManager.clearCache(); CubeDesc cube = getCubeDescManager().getCubeDesc("ut_large_dimension_number"); CuboidScheduler scheduler = new CuboidScheduler(cube);