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

zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new e18ed376ac Fix CommandDaoImplTest might failed (#16175)
e18ed376ac is described below

commit e18ed376aca4e5089ce659a0ba3f0acb37f417a2
Author: Wenjun Ruan <[email protected]>
AuthorDate: Wed Jun 19 15:09:01 2024 +0800

    Fix CommandDaoImplTest might failed (#16175)
---
 .../dao/repository/impl/CommandDaoImplTest.java    | 57 ++++++++++++++--------
 1 file changed, 38 insertions(+), 19 deletions(-)

diff --git 
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/repository/impl/CommandDaoImplTest.java
 
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/repository/impl/CommandDaoImplTest.java
index 85867ef3b5..7743a8b8a1 100644
--- 
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/repository/impl/CommandDaoImplTest.java
+++ 
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/repository/impl/CommandDaoImplTest.java
@@ -18,6 +18,7 @@
 package org.apache.dolphinscheduler.dao.repository.impl;
 
 import static com.google.common.truth.Truth.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import org.apache.dolphinscheduler.common.constants.Constants;
 import org.apache.dolphinscheduler.common.enums.CommandType;
@@ -28,45 +29,63 @@ import org.apache.dolphinscheduler.common.enums.WarningType;
 import org.apache.dolphinscheduler.common.utils.DateUtils;
 import org.apache.dolphinscheduler.dao.BaseDaoTest;
 import org.apache.dolphinscheduler.dao.entity.Command;
+import org.apache.dolphinscheduler.dao.mapper.CommandMapper;
 import org.apache.dolphinscheduler.dao.repository.CommandDao;
 
 import org.apache.commons.lang3.RandomUtils;
 
 import java.util.List;
 
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.RepeatedTest;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
 class CommandDaoImplTest extends BaseDaoTest {
 
     @Autowired
     private CommandDao commandDao;
 
-    @Test
+    @Autowired
+    private CommandMapper commandMapper;
+
+    @RepeatedTest(value = 100)
     void fetchCommandByIdSlot() {
-        int commandSize = RandomUtils.nextInt(1, 1000);
-        for (int i = 0; i < commandSize; i++) {
-            createCommand(CommandType.START_PROCESS, 0);
-        }
+        // clear all commands
+        commandMapper.delete(new QueryWrapper<Command>().ge("id", -1));
+
         int totalSlot = RandomUtils.nextInt(1, 10);
         int currentSlotIndex = RandomUtils.nextInt(0, totalSlot);
         int fetchSize = RandomUtils.nextInt(10, 100);
-        for (int i = 1; i < 5; i++) {
-            int idStep = i;
-            List<Command> commands = 
commandDao.queryCommandByIdSlot(currentSlotIndex, totalSlot, idStep, fetchSize);
-            assertThat(commands.size()).isGreaterThan(0);
-            assertThat(commands.size())
-                    .isEqualTo(commandDao.queryAll()
-                            .stream()
-                            .filter(command -> (command.getId() / idStep) % 
totalSlot == currentSlotIndex)
-                            .limit(fetchSize)
-                            .count());
-
+        int idStep = RandomUtils.nextInt(1, 5);
+        int commandSize = RandomUtils.nextInt(currentSlotIndex, 1000);
+        // Generate commandSize commands
+        int id = 0;
+        for (int j = 0; j < commandSize; j++) {
+            Command command = generateCommand(CommandType.START_PROCESS, 0);
+            command.setId(id);
+            id += idStep;
+            commandDao.insert(command);
         }
 
+        List<Command> commands = 
commandDao.queryCommandByIdSlot(currentSlotIndex, totalSlot, idStep, fetchSize);
+        assertFalse(commands.isEmpty(),
+                "Commands should not be empty, currentSlotIndex: " + 
currentSlotIndex +
+                        ", totalSlot: " + totalSlot +
+                        ", idStep: " + idStep +
+                        ", fetchSize: " + fetchSize +
+                        ", total command size: " + commandSize +
+                        ", total commands: " + commandDao.queryAll());
+        assertThat(commands.size())
+                .isEqualTo(commandDao.queryAll()
+                        .stream()
+                        .filter(command -> (command.getId() / idStep) % 
totalSlot == currentSlotIndex)
+                        .limit(fetchSize)
+                        .count());
+
     }
 
-    private void createCommand(CommandType commandType, int 
processDefinitionCode) {
+    private Command generateCommand(CommandType commandType, int 
processDefinitionCode) {
         Command command = new Command();
         command.setCommandType(commandType);
         command.setProcessDefinitionCode(processDefinitionCode);
@@ -83,6 +102,6 @@ class CommandDaoImplTest extends BaseDaoTest {
         command.setWorkerGroup(Constants.DEFAULT_WORKER_GROUP);
         command.setProcessInstanceId(0);
         command.setProcessDefinitionVersion(0);
-        commandDao.insert(command);
+        return command;
     }
 }

Reply via email to