Repository: kylin Updated Branches: refs/heads/master 22826adc3 -> 1c57bd40e
fix a small bug in CubeDescTest Signed-off-by: Li Yang <liy...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1c57bd40 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1c57bd40 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1c57bd40 Branch: refs/heads/master Commit: 1c57bd40e9bd5e4ce248fdf23ad96a9fa97bde55 Parents: 22826ad Author: xiefan46 <958034...@qq.com> Authored: Tue Nov 15 17:03:07 2016 +0800 Committer: Li Yang <liy...@apache.org> Committed: Tue Nov 15 17:18:05 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/cube/model/CubeDesc.java | 33 +++++++++++++------- .../org/apache/kylin/cube/CubeDescTest.java | 26 ++++++++++----- .../kylin/dict/TrieDictionaryForestTest.java | 2 ++ 3 files changed, 42 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/1c57bd40/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java index 94b41a3..3160085 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java @@ -34,13 +34,12 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.TreeSet; -import java.util.Map.Entry; import javax.annotation.Nullable; -import com.google.common.collect.Iterables; import org.apache.commons.codec.binary.Base64; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.ArrayUtils; @@ -70,12 +69,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.core.JsonProcessingException; import com.google.common.base.Function; import com.google.common.collect.Collections2; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -607,8 +607,9 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware { notIncluded.add(dim); } } + Collections.sort(notIncluded); logger.error("Aggregation group " + index + " Include dimensions not containing all the used dimensions"); - throw new IllegalStateException("Aggregation group " + index + " 'includes' dimensions not include all the dimensions:" + notIncluded.toString()); + throw new IllegalStateException("Aggregation group " + index + " 'includes' dimensions not include all the dimensions:" + notIncluded.toString()); } Set<String> normalDims = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); @@ -627,15 +628,15 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware { } if (CollectionUtils.containsAny(mandatoryDims, hierarchyDims)) { - logger.warn("Aggregation group " + index + " mandatory dimensions overlap with hierarchy dimensions: " + CollectionUtils.intersection(mandatoryDims, hierarchyDims)); + logger.warn("Aggregation group " + index + " mandatory dimensions overlap with hierarchy dimensions: " + ensureOrder(CollectionUtils.intersection(mandatoryDims, hierarchyDims))); } if (CollectionUtils.containsAny(mandatoryDims, jointDims)) { - logger.warn("Aggregation group " + index + " mandatory dimensions overlap with joint dimensions: " + CollectionUtils.intersection(mandatoryDims, jointDims)); + logger.warn("Aggregation group " + index + " mandatory dimensions overlap with joint dimensions: " + ensureOrder(CollectionUtils.intersection(mandatoryDims, jointDims))); } if (CollectionUtils.containsAny(hierarchyDims, jointDims)) { logger.error("Aggregation group " + index + " hierarchy dimensions overlap with joint dimensions"); - throw new IllegalStateException("Aggregation group " + index + " hierarchy dimensions overlap with joint dimensions: " + CollectionUtils.intersection(hierarchyDims, jointDims)); + throw new IllegalStateException("Aggregation group " + index + " hierarchy dimensions overlap with joint dimensions: " + ensureOrder(CollectionUtils.intersection(hierarchyDims, jointDims))); } if (hasSingle(hierarchyDimsList)) { @@ -649,14 +650,14 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware { Pair<Boolean, Set<String>> overlap = hasOverlap(hierarchyDimsList, hierarchyDims); if (overlap.getFirst() == true) { - logger.error("Aggregation group " + index + " a dimension exist in more than one hierarchy: " + overlap.getSecond()); - throw new IllegalStateException("Aggregation group " + index + " a dimension exist in more than one hierarchy: " + overlap.getSecond()); + logger.error("Aggregation group " + index + " a dimension exist in more than one hierarchy: " + ensureOrder(overlap.getSecond())); + throw new IllegalStateException("Aggregation group " + index + " a dimension exist in more than one hierarchy: " + ensureOrder(overlap.getSecond())); } overlap = hasOverlap(jointDimsList, jointDims); if (overlap.getFirst() == true) { - logger.error("Aggregation group " + index + " a dimension exist in more than one joint: " + overlap.getSecond()); - throw new IllegalStateException("Aggregation group " + index + " a dimension exist in more than one joint: " + overlap.getSecond()); + logger.error("Aggregation group " + index + " a dimension exist in more than one joint: " + ensureOrder(overlap.getSecond())); + throw new IllegalStateException("Aggregation group " + index + " a dimension exist in more than one joint: " + ensureOrder(overlap.getSecond())); } index++; @@ -700,7 +701,7 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware { Set<String> overlap = new HashSet<>(); for (Set<String> dims : dimsList) { if (CollectionUtils.containsAny(existing, dims)) { - overlap.addAll(CollectionUtils.intersection(existing, dims)); + overlap.addAll(ensureOrder(CollectionUtils.intersection(existing, dims))); } existing.addAll(dims); } @@ -1105,4 +1106,12 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware { return newCubeDesc; } + + private Collection ensureOrder(Collection c){ + TreeSet set = new TreeSet(); + for(Object o : c) + set.add(o.toString()); + //System.out.println("set:"+set); + return set; + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/1c57bd40/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 417ad46..9ad6427 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,11 @@ package org.apache.kylin.cube; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.common.util.LocalFileMetadataTestCase; @@ -86,8 +89,7 @@ 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:[SELLER_ID, META_CATEG_NAME, LSTG_FORMAT_NAME, LSTG_SITE_ID, SLR_SEGMENT_CD]"); - + 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"); String[] temp = Arrays.asList(cubeDesc.getAggregationGroups().get(0).getIncludes()).subList(0, 3).toArray(new String[3]); cubeDesc.getAggregationGroups().get(0).setIncludes(temp); @@ -138,8 +140,9 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testBadInit8() throws Exception { + 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: [CATEG_LVL2_NAME, META_CATEG_NAME]"); + 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" } }; @@ -149,9 +152,9 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testBadInit9() throws Exception { + 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: [lstg_format_name, META_CATEG_NAME]"); - + 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" } }; @@ -161,8 +164,9 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testBadInit10() throws Exception { + 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: [lstg_format_name, lstg_site_id]"); + 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" } }; @@ -183,8 +187,9 @@ public class CubeDescTest extends LocalFileMetadataTestCase { @Test public void testBadInit12() throws Exception { + 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: [CATEG_LVL2_NAME, META_CATEG_NAME]"); + 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" } }; @@ -224,4 +229,11 @@ public class CubeDescTest extends LocalFileMetadataTestCase { } + private Collection<String> sortStrs(String[] strs) { + Set<String> set = new TreeSet<>(); + for (String str : strs) + set.add(str); + return set; + } + } http://git-wip-us.apache.org/repos/asf/kylin/blob/1c57bd40/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java ---------------------------------------------------------------------- diff --git a/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java b/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java index 624d6ba..81cba64 100755 --- a/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java +++ b/core-dictionary/src/test/java/org/apache/kylin/dict/TrieDictionaryForestTest.java @@ -21,6 +21,7 @@ package org.apache.kylin.dict; import org.apache.kylin.common.util.MemoryBudgetController; +import org.junit.Ignore; import org.junit.Test; import java.io.*; @@ -223,6 +224,7 @@ public class TrieDictionaryForestTest { } @Test + @Ignore public void categoryNamesTest() throws Exception { InputStream is = new FileInputStream("src/test/resources/dict/dw_category_grouping_names.dat"); ArrayList<String> str = loadStrings(is);