This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 927fcaf56933be0cee4b60927d2010620d5ca540 Author: xiang.li <447399...@qq.com> AuthorDate: Fri Apr 14 17:36:49 2023 +0800 KYLIN-5608 [FOLLOW UP] add UT --- .../kylin/rest/service/FusionIndexServiceTest.java | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/FusionIndexServiceTest.java b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/FusionIndexServiceTest.java index 4684c0fcdb..674692a341 100644 --- a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/FusionIndexServiceTest.java +++ b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/FusionIndexServiceTest.java @@ -21,7 +21,12 @@ import static org.hamcrest.Matchers.is; import java.util.Arrays; import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import org.apache.commons.lang3.ArrayUtils; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.exception.KylinException; import org.apache.kylin.common.exception.ServerErrorCode; @@ -864,6 +869,45 @@ public class FusionIndexServiceTest extends SourceTestCase { Assert.assertEquals(64, indexResponses2.size()); } + private Integer[] toIntegerArray(Map<String, Integer> dimMap, String[] dimensions) { + return Arrays.stream(dimensions).map(dimMap::get).toArray(Integer[]::new); + } + + private void testDimsOrder(OpenUpdateRuleBasedCuboidRequest open, UpdateRuleBasedCuboidRequest internal, + NDataModel model) { + List<OpenUpdateRuleBasedCuboidRequest.OpenAggGroupRequest> openGroups = open.getAggregationGroups(); + int from = internal.getAggregationGroups().size() - openGroups.size(); + int to = internal.getAggregationGroups().size(); + List<NAggregationGroup> internalGroups = internal.getAggregationGroups().subList(from, to); + val dimMap = model.getEffectiveDimensions().entrySet().stream().collect(Collectors + .toMap(e -> e.getValue().getAliasDotName(), Map.Entry::getKey, (u, v) -> v, LinkedHashMap::new)); + for (int i = 0; i < openGroups.size(); i++) { + val openGroup = openGroups.get(i); + val internalGroup = internalGroups.get(i); + Assert.assertArrayEquals(toIntegerArray(dimMap, openGroup.getDimensions()), internalGroup.getIncludes()); + if (openGroup.getMandatoryDims() != null) { + Assert.assertArrayEquals(toIntegerArray(dimMap, openGroup.getMandatoryDims()), + internalGroup.getSelectRule().getMandatoryDims()); + } + if (!ArrayUtils.isEmpty(openGroup.getJointDims())) { + for (int j = 0; j < openGroup.getJointDims().length; j++) { + if (!ArrayUtils.isEmpty(openGroup.getJointDims()[j])) { + Assert.assertArrayEquals(toIntegerArray(dimMap, openGroup.getJointDims()[j]), + internalGroup.getSelectRule().getJointDims()[j]); + } + } + } + if (!ArrayUtils.isEmpty(openGroup.getHierarchyDims())) { + for (int j = 0; j < openGroup.getHierarchyDims().length; j++) { + if (!ArrayUtils.isEmpty(openGroup.getHierarchyDims()[j])) { + Assert.assertArrayEquals(toIntegerArray(dimMap, openGroup.getHierarchyDims()[j]), + internalGroup.getSelectRule().getHierarchyDims()[j]); + } + } + } + } + } + @Test public void testNormalConvertOpenToInternal() { OpenUpdateRuleBasedCuboidRequest request = new OpenUpdateRuleBasedCuboidRequest(); @@ -881,6 +925,7 @@ public class FusionIndexServiceTest extends SourceTestCase { aggGroup.setJointDims(jointDims); UpdateRuleBasedCuboidRequest internal = fusionIndexService.convertOpenToInternal(request, model); Assert.assertEquals(2, internal.getAggregationGroups().size()); + testDimsOrder(request, internal, model); } { @@ -892,6 +937,7 @@ public class FusionIndexServiceTest extends SourceTestCase { aggGroup.setJointDims(jointDims); UpdateRuleBasedCuboidRequest internal = fusionIndexService.convertOpenToInternal(request, model); Assert.assertEquals(2, internal.getAggregationGroups().size()); + testDimsOrder(request, internal, model); } { @@ -902,6 +948,7 @@ public class FusionIndexServiceTest extends SourceTestCase { aggGroup.setMandatoryDims(new String[] {"TEST_BANK_INCOME.NAME"}); UpdateRuleBasedCuboidRequest internal = fusionIndexService.convertOpenToInternal(request, model); Assert.assertEquals(2, internal.getAggregationGroups().size()); + testDimsOrder(request, internal, model); } }