You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/09/03 12:46:04 UTC
[10/50] [abbrv] kylin git commit: KYLIN-1904 fix DictionaryRuleTest
KYLIN-1904 fix DictionaryRuleTest
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/57a259a9
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/57a259a9
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/57a259a9
Branch: refs/heads/1.5.x-CDH5.7
Commit: 57a259a9d28484b3494fc62385a8d284c1052209
Parents: 579dfcf
Author: Li Yang <li...@apache.org>
Authored: Thu Aug 25 12:01:46 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Aug 25 12:01:46 2016 +0800
----------------------------------------------------------------------
.../model/validation/rule/DictionaryRule.java | 12 ++++++++++-
.../validation/rule/DictionaryRuleTest.java | 22 ++++++++++++++------
2 files changed, 27 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/57a259a9/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java
index 9e6b600..d06c816 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java
@@ -48,16 +48,26 @@ public class DictionaryRule implements IValidatorRule<CubeDesc> {
context.addResult(ResultLevel.ERROR, "Some column in dictionaries not found");
return;
}
+ String builder = dictDesc.getBuilderClass();
TblColRef reuseCol = dictDesc.getResuseColumnRef();
if (reuseCol == null) {
+ if (builder == null || builder.isEmpty()) {
+ context.addResult(ResultLevel.ERROR, "Column " + dictCol + " cannot have builder and reuse column both empty");
+ return;
+ }
+
// Make sure the same column associate with same builder class
- String builder = dictDesc.getBuilderClass();
String oldBuilder = colToBuilderMap.put(dictCol, builder);
if (oldBuilder != null && !oldBuilder.equals(builder)) {
context.addResult(ResultLevel.ERROR, "Column " + dictCol + " has inconsistent builders " + builder + " and " + oldBuilder);
return;
}
} else {
+ if (builder != null && !builder.isEmpty()) {
+ context.addResult(ResultLevel.ERROR, "Column " + dictCol + " cannot have builder and reuse column both");
+ return;
+ }
+
// Make sure one column only reuse another one column
TblColRef oldReuseCol = colToReuseColMap.put(dictCol, reuseCol);
if (oldReuseCol != null && !reuseCol.equals(oldReuseCol)) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/57a259a9/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java b/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java
index e5afe48..fdbbb2c 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java
@@ -72,20 +72,25 @@ public class DictionaryRuleTest extends LocalFileMetadataTestCase {
@Test
public void testBadDesc() throws IOException {
- testBadDictionaryDesc("Column EDW.TEST_SITES.SITE_NAME has inconsistent builders " + "FakeBuilderClass and org.apache.kylin.dict.GlobalDictionaryBuilder", DictionaryDesc.create("SITE_NAME", null, "FakeBuilderClass"));
+ testDictionaryDesc("Column EDW.TEST_SITES.SITE_NAME has inconsistent builders " + "FakeBuilderClass and org.apache.kylin.dict.GlobalDictionaryBuilder", DictionaryDesc.create("SITE_NAME", null, "FakeBuilderClass"));
}
@Test
public void testBadDesc2() throws IOException {
- testBadDictionaryDesc("Column EDW.TEST_SITES.SITE_NAME has inconsistent builders " + "FakeBuilderClass and org.apache.kylin.dict.GlobalDictionaryBuilder", DictionaryDesc.create("lstg_site_id", "SITE_NAME", "FakeBuilderClass"));
+ testDictionaryDesc("Column DEFAULT.TEST_KYLIN_FACT.LSTG_SITE_ID cannot have builder and reuse column both", DictionaryDesc.create("lstg_site_id", "SITE_NAME", "FakeBuilderClass"));
}
@Test
public void testBadDesc3() throws IOException {
- testBadDictionaryDesc("Column DEFAULT.TEST_KYLIN_FACT.LSTG_SITE_ID used as dimension and conflict with GlobalDictBuilder", DictionaryDesc.create("lstg_site_id", null, GlobalDictionaryBuilder.class.getName()));
+ testDictionaryDesc("Column DEFAULT.TEST_KYLIN_FACT.LSTG_SITE_ID cannot have builder and reuse column both empty", DictionaryDesc.create("lstg_site_id", null, null));
+ }
+
+ @Test
+ public void testGoodDesc2() throws IOException {
+ testDictionaryDesc(null, DictionaryDesc.create("lstg_site_id", null, GlobalDictionaryBuilder.class.getName()));
}
- private void testBadDictionaryDesc(String expectMessage, DictionaryDesc... descs) throws IOException {
+ private void testDictionaryDesc(String expectMessage, DictionaryDesc... descs) throws IOException {
DictionaryRule rule = new DictionaryRule();
File f = new File(LocalFileMetadataTestCase.LOCALMETA_TEST_DATA + "/cube_desc/test_kylin_cube_without_slr_left_join_desc.json");
CubeDesc desc = JsonUtil.readValue(new FileInputStream(f), CubeDesc.class);
@@ -98,7 +103,12 @@ public class DictionaryRuleTest extends LocalFileMetadataTestCase {
ValidateContext vContext = new ValidateContext();
rule.validate(desc, vContext);
vContext.print(System.out);
- assertTrue(vContext.getResults().length >= 1);
- assertEquals(expectMessage, vContext.getResults()[0].getMessage());
+
+ if (expectMessage == null) {
+ assertTrue(vContext.getResults().length == 0);
+ } else {
+ assertTrue(vContext.getResults().length >= 1);
+ assertEquals(expectMessage, vContext.getResults()[0].getMessage());
+ }
}
}
\ No newline at end of file