This is an automated email from the ASF dual-hosted git repository.

yhcast0 pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 7923a5ebfbafbdad4a5a802f9330f4ef9e5e5ff9
Author: Yinghao Lin <[email protected]>
AuthorDate: Tue Jun 2 10:54:05 2026 +0800

    [MINOR] Fix UT
---
 .../kylin/metadata/cube/model/RuleBasedIndex.java  |  4 ++--
 .../kylin/metadata/cube/NIndexPlanManagerTest.java |  5 +++--
 .../kylin/rest/service/IndexPlanServiceTest.java   | 19 ++++++++++-------
 .../service/ModelServiceSemanticUpdateTest.java    |  5 ++++-
 .../kylin/rest/service/TableReloadServiceTest.java |  5 ++---
 .../apache/kylin/rec/index/IndexSuggesterTest.java | 24 +++++++++++++---------
 .../engine/spark/job/NSparkExecutableTest.java     |  2 +-
 .../query/plugin/profiler/AsyncProfilingTest.scala |  2 +-
 .../BuildAsyncProfilerDriverPluginTest.scala       |  2 +-
 9 files changed, 40 insertions(+), 28 deletions(-)

diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/RuleBasedIndex.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/RuleBasedIndex.java
index d7df7ecff2..0eab1316c9 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/RuleBasedIndex.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/RuleBasedIndex.java
@@ -308,7 +308,7 @@ public class RuleBasedIndex implements Serializable {
     private Set<LayoutEntity> genCuboidLayouts(Set<LayoutEntity> 
previousLayouts, Set<LayoutEntity> needDelLayouts,
             boolean excludeDel, boolean useCostBasedList) {
 
-        Set<LayoutEntity> genLayouts = Sets.newHashSet();
+        Set<LayoutEntity> genLayouts = Sets.newLinkedHashSet();
 
         Map<LayoutEntity, Long> existLayouts = Maps.newHashMap();
         previousLayouts.forEach(layout -> existLayouts.put(layout, 
layout.getId()));
@@ -397,7 +397,7 @@ public class RuleBasedIndex implements Serializable {
     private Set<LayoutEntity> tryLayoutsOfCostBasedPlanner(boolean 
useCostBasedList, Set<LayoutEntity> genLayouts) {
         if (useCostBasedList && layoutsOfCostBasedList != null) {
             // use the recommend white list id
-            Set<LayoutEntity> result = Sets.newHashSet();
+            Set<LayoutEntity> result = Sets.newLinkedHashSet();
             genLayouts.stream().forEach(layout -> {
                 if (layoutsOfCostBasedList.contains(layout.getId())) {
                     result.add(layout);
diff --git 
a/src/core-metadata/src/test/java/org/apache/kylin/metadata/cube/NIndexPlanManagerTest.java
 
b/src/core-metadata/src/test/java/org/apache/kylin/metadata/cube/NIndexPlanManagerTest.java
index f4f102eeaa..4181926b74 100644
--- 
a/src/core-metadata/src/test/java/org/apache/kylin/metadata/cube/NIndexPlanManagerTest.java
+++ 
b/src/core-metadata/src/test/java/org/apache/kylin/metadata/cube/NIndexPlanManagerTest.java
@@ -241,8 +241,9 @@ public class NIndexPlanManagerTest {
         });
 
         val plan = manager.getIndexPlan(modelId);
-        Assert.assertEquals("[1, 1030002, 1010001, 1080002, 1070002, 1090001, 
1100001, 1020001, 1040001]",
-                
plan.getAllLayouts().stream().map(LayoutEntity::getId).collect(Collectors.toList()).toString());
+        Assert.assertEquals("[1, 1010001, 1020001, 1030002, 1040001, 1070002, 
1080002, 1090001, 1100001]",
+                plan.getAllLayouts().stream().map(LayoutEntity::getId).sorted()
+                        .collect(Collectors.toList()).toString());
     }
 
     @Test
diff --git 
a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/IndexPlanServiceTest.java
 
b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/IndexPlanServiceTest.java
index 5da71df418..b2477e3753 100644
--- 
a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/IndexPlanServiceTest.java
+++ 
b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/IndexPlanServiceTest.java
@@ -1327,13 +1327,18 @@ public class IndexPlanServiceTest extends 
SourceTestCase {
         List<LayoutEntity> ruleBaseLayouts = 
dataflowManager.getDataflow("89af4ee2-2cdb-4b07-b39e-4c29856309aa")
                 .getIndexPlan().getRuleBaseLayouts();
         Assert.assertEquals(7L, ruleBaseLayouts.size());
-        Assert.assertEquals("[1, 2, 10000]", 
ruleBaseLayouts.get(0).getColOrder().toString());
-        Assert.assertEquals("[5, 6, 7, 10000, 10001]", 
ruleBaseLayouts.get(1).getColOrder().toString());
-        Assert.assertEquals("[1, 3, 10000]", 
ruleBaseLayouts.get(2).getColOrder().toString());
-        Assert.assertEquals("[1, 4, 10000]", 
ruleBaseLayouts.get(3).getColOrder().toString());
-        Assert.assertEquals("[1, 10000]", 
ruleBaseLayouts.get(4).getColOrder().toString());
-        Assert.assertEquals("[5, 10000, 10001]", 
ruleBaseLayouts.get(5).getColOrder().toString());
-        Assert.assertEquals("[1, 2, 3, 4, 5, 6, 7, 10000, 10001]", 
ruleBaseLayouts.get(6).getColOrder().toString());
+        Set<String> actualColOrders = ruleBaseLayouts.stream()//
+                .map(l -> l.getColOrder().toString())//
+                .collect(Collectors.toSet());
+        Set<String> expectedColOrders = Sets.newHashSet(//
+                "[1, 2, 10000]", //
+                "[5, 6, 7, 10000, 10001]", //
+                "[1, 3, 10000]", //
+                "[1, 4, 10000]", //
+                "[1, 10000]", //
+                "[5, 10000, 10001]", //
+                "[1, 2, 3, 4, 5, 6, 7, 10000, 10001]");
+        Assert.assertEquals(expectedColOrders, actualColOrders);
     }
 
     @Test
diff --git 
a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceSemanticUpdateTest.java
 
b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceSemanticUpdateTest.java
index 2e52098133..d9b1ded153 100644
--- 
a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceSemanticUpdateTest.java
+++ 
b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceSemanticUpdateTest.java
@@ -1681,7 +1681,10 @@ public class ModelServiceSemanticUpdateTest extends 
NLocalFileMetadataTestCase {
         }
 
         // add layout to blacklist which is auto and manual, will not remove 
datalayout from segment
-        val blacklist4 = 
Lists.newArrayList(indexPlan.getRuleBaseLayouts().get(0).getId());
+        val whitelistIds = 
indexPlan.getWhitelistLayouts().stream().map(LayoutEntity::getId)
+                .collect(Collectors.toSet());
+        val blacklist4 = 
Lists.newArrayList(indexPlan.getRuleBaseLayouts().stream()
+                .filter(l -> 
whitelistIds.contains(l.getId())).findFirst().get().getId());
         updatedPlan = 
semanticService.addRuleBasedIndexBlackListLayouts(indexPlan, blacklist4);
         Assert.assertEquals(updatedPlan.getAllLayouts().size() + 2, 
indexPlan.getAllLayouts().size());
         val df4 = dataflowManager.getDataflow(dataflow.getId());
diff --git 
a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java
 
b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java
index 922bd0bd21..e70f7dc241 100644
--- 
a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java
+++ 
b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java
@@ -345,9 +345,8 @@ public class TableReloadServiceTest extends 
CSVSourceTestCase {
         val indexManager = NIndexPlanManager.getInstance(getTestConfig(), 
PROJECT);
         val indexPlan = indexManager.getIndexPlan(MODEL_ID);
         Assert.assertEquals(
-                Joiner.on(",")
-                        
.join(indexPlan.getAllLayouts().stream().map(LayoutEntity::getId).collect(Collectors.toList())),
-                ((NSparkCubingJob) 
executables.get(0)).getTasks().get(0).getParam("layoutIds"));
+                indexPlan.getAllLayouts().stream().map(layout -> 
String.valueOf(layout.getId())).collect(Collectors.toSet()),
+                Sets.newHashSet(((NSparkCubingJob) 
executables.get(0)).getTasks().get(0).getParam("layoutIds").split(",")));
     }
 
     @Test
diff --git 
a/src/rec-service/src/test/java/org/apache/kylin/rec/index/IndexSuggesterTest.java
 
b/src/rec-service/src/test/java/org/apache/kylin/rec/index/IndexSuggesterTest.java
index c5fa47ff18..681e6fcf99 100644
--- 
a/src/rec-service/src/test/java/org/apache/kylin/rec/index/IndexSuggesterTest.java
+++ 
b/src/rec-service/src/test/java/org/apache/kylin/rec/index/IndexSuggesterTest.java
@@ -242,17 +242,21 @@ public class IndexSuggesterTest extends 
AutoTestOnLearnKylinData {
 
         IndexPlan indexPlan = mdCtx.getTargetIndexPlan();
         List<IndexEntity> allCuboids = indexPlan.getIndexes();
-        final IndexEntity indexEntity0 = allCuboids.get(0);
-
-        Assert.assertEquals("{100000, 100005, 100006}", 
indexEntity0.getMeasureBitset().toString());
-        Assert.assertEquals(1, indexEntity0.getLayouts().size());
-        Assert.assertEquals(20001L, indexEntity0.getLayouts().get(0).getId());
+        Assert.assertEquals(2, allCuboids.size());
 
-        final IndexEntity indexEntity1 = allCuboids.get(1);
-        Assert.assertEquals("{100000, 100001, 100002, 100003, 100004, 100007, 
100008}",
-                indexEntity1.getMeasureBitset().toString());
-        Assert.assertEquals(1, indexEntity1.getLayouts().size());
-        Assert.assertEquals(40001L, indexEntity1.getLayouts().get(0).getId());
+        java.util.Set<String> measureBitsets = allCuboids.stream()
+                .map(e -> 
e.getMeasureBitset().toString()).collect(java.util.stream.Collectors.toSet());
+        Assert.assertTrue(measureBitsets.contains("{100000, 100005, 100006}"));
+        Assert.assertTrue(measureBitsets.contains("{100000, 100001, 100002, 
100003, 100004, 100007, 100008}"));
+
+        for (IndexEntity indexEntity : allCuboids) {
+            Assert.assertEquals(1, indexEntity.getLayouts().size());
+            if (indexEntity.getMeasureBitset().toString().equals("{100000, 
100005, 100006}")) {
+                Assert.assertEquals(20001L, 
indexEntity.getLayouts().get(0).getId());
+            } else {
+                Assert.assertEquals(40001L, 
indexEntity.getLayouts().get(0).getId());
+            }
+        }
     }
 
     @Test
diff --git 
a/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/job/NSparkExecutableTest.java
 
b/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/job/NSparkExecutableTest.java
index ce369a610a..897827c277 100644
--- 
a/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/job/NSparkExecutableTest.java
+++ 
b/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/job/NSparkExecutableTest.java
@@ -186,7 +186,7 @@ public class NSparkExecutableTest extends 
NLocalFileMetadataTestCase {
         }
 
         
overwriteSystemProp("kylin.engine.spark-conf.spark.driver.extraJavaOptions",
-                "'`touch /tmp/foo.bar` $(touch /tmp/foo.bar)'");
+                "`touch /tmp/foo.bar` $(touch /tmp/foo.bar)");
         {
             try {
                 val desc = sparkExecutable.getSparkAppDesc();
diff --git 
a/src/spark-project/sparder/src/test/scala/org/apache/kylin/query/plugin/profiler/AsyncProfilingTest.scala
 
b/src/spark-project/sparder/src/test/scala/org/apache/kylin/query/plugin/profiler/AsyncProfilingTest.scala
index bf3090b65d..4ad3dad6a5 100644
--- 
a/src/spark-project/sparder/src/test/scala/org/apache/kylin/query/plugin/profiler/AsyncProfilingTest.scala
+++ 
b/src/spark-project/sparder/src/test/scala/org/apache/kylin/query/plugin/profiler/AsyncProfilingTest.scala
@@ -30,7 +30,7 @@ import org.mockito.Mockito.mock
 class AsyncProfilingTest extends SparkPluginWithMeta {
 
   val sparkPluginName: String = classOf[BuildAsyncProfilerSparkPlugin].getName
-  val flagFileDir: String = System.getProperty("java.io.tmpdir") + 
"default/jobStepId/"
+  val flagFileDir: String = System.getProperty("java.io.tmpdir") + 
"/default/jobStepId/"
   val actionFilePath: String = flagFileDir + "/action"
   val statusFileName: String = flagFileDir + "/status"
   val dumpFileName: String = flagFileDir + "/dump.tar.gz"
diff --git 
a/src/spark-project/spark-common/src/test/scala/org/apache/kylin/profiler/BuildAsyncProfilerDriverPluginTest.scala
 
b/src/spark-project/spark-common/src/test/scala/org/apache/kylin/profiler/BuildAsyncProfilerDriverPluginTest.scala
index 4aaacd7902..e4e8e08175 100644
--- 
a/src/spark-project/spark-common/src/test/scala/org/apache/kylin/profiler/BuildAsyncProfilerDriverPluginTest.scala
+++ 
b/src/spark-project/spark-common/src/test/scala/org/apache/kylin/profiler/BuildAsyncProfilerDriverPluginTest.scala
@@ -34,7 +34,7 @@ class BuildAsyncProfilerDriverPluginTest extends 
SparkFunSuite with BeforeAndAft
   lazy val metaStore: NLocalFileMetadataTestCase = new 
NLocalFileMetadataTestCase
 
   val sparkPluginName: String = classOf[BuildAsyncProfilerSparkPlugin].getName
-  val flagFileDir: String = System.getProperty("java.io.tmpdir") + 
"default/jobStepId/"
+  val flagFileDir: String = System.getProperty("java.io.tmpdir") + 
"/default/jobStepId/"
   val actionFilePath: String = flagFileDir + "/action"
   val statusFileName: String = flagFileDir + "/status"
   val dumpFileName: String = flagFileDir + "/dump.tar.gz"

Reply via email to