You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by li...@apache.org on 2019/12/29 05:12:35 UTC

[incubator-dolphinscheduler] branch dev updated: CommandMapperTest UT modify #1465 (#1625)

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

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


The following commit(s) were added to refs/heads/dev by this push:
     new e61586c  CommandMapperTest UT modify #1465 (#1625)
e61586c is described below

commit e61586cd0665f94618d0d0489052dc87a1aea61c
Author: qiaozhanwei <qi...@outlook.com>
AuthorDate: Sun Dec 29 13:12:29 2019 +0800

    CommandMapperTest UT modify #1465 (#1625)
    
    * CommandMapperTest UT modify
---
 .../dolphinscheduler/dao/entity/Command.java       |  74 +++++-
 .../dolphinscheduler/dao/entity/CommandCount.java  |  40 +++-
 .../dao/mapper/AlertMapperTest.java                |   3 +
 .../dao/mapper/CommandMapperTest.java              | 264 ++++++++++++++-------
 pom.xml                                            |   1 +
 5 files changed, 292 insertions(+), 90 deletions(-)

diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Command.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Command.java
index a180a43..2d47b78 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Command.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Command.java
@@ -28,7 +28,6 @@ import java.util.Date;
 /**
  * command
  */
-@Data
 @TableName("t_ds_command")
 public class Command {
 
@@ -266,6 +265,79 @@ public class Command {
     }
 
     @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        Command command = (Command) o;
+
+        if (id != command.id) {
+            return false;
+        }
+        if (processDefinitionId != command.processDefinitionId) {
+            return false;
+        }
+        if (executorId != command.executorId) {
+            return false;
+        }
+        if (workerGroupId != command.workerGroupId) {
+            return false;
+        }
+        if (commandType != command.commandType) {
+            return false;
+        }
+        if (commandParam != null ? !commandParam.equals(command.commandParam) : command.commandParam != null) {
+            return false;
+        }
+        if (taskDependType != command.taskDependType) {
+            return false;
+        }
+        if (failureStrategy != command.failureStrategy) {
+            return false;
+        }
+        if (warningType != command.warningType) {
+            return false;
+        }
+        if (warningGroupId != null ? !warningGroupId.equals(command.warningGroupId) : command.warningGroupId != null) {
+            return false;
+        }
+        if (scheduleTime != null ? !scheduleTime.equals(command.scheduleTime) : command.scheduleTime != null) {
+            return false;
+        }
+        if (startTime != null ? !startTime.equals(command.startTime) : command.startTime != null) {
+            return false;
+        }
+        if (processInstancePriority != command.processInstancePriority) {
+            return false;
+        }
+        return !(updateTime != null ? !updateTime.equals(command.updateTime) : command.updateTime != null);
+
+    }
+
+    @Override
+    public int hashCode() {
+        int result = id;
+        result = 31 * result + (commandType != null ? commandType.hashCode() : 0);
+        result = 31 * result + processDefinitionId;
+        result = 31 * result + executorId;
+        result = 31 * result + (commandParam != null ? commandParam.hashCode() : 0);
+        result = 31 * result + (taskDependType != null ? taskDependType.hashCode() : 0);
+        result = 31 * result + (failureStrategy != null ? failureStrategy.hashCode() : 0);
+        result = 31 * result + (warningType != null ? warningType.hashCode() : 0);
+        result = 31 * result + (warningGroupId != null ? warningGroupId.hashCode() : 0);
+        result = 31 * result + (scheduleTime != null ? scheduleTime.hashCode() : 0);
+        result = 31 * result + (startTime != null ? startTime.hashCode() : 0);
+        result = 31 * result + (processInstancePriority != null ? processInstancePriority.hashCode() : 0);
+        result = 31 * result + (updateTime != null ? updateTime.hashCode() : 0);
+        result = 31 * result + workerGroupId;
+        return result;
+    }
+
+    @Override
     public String toString() {
         return "Command{" +
                 "id=" + id +
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CommandCount.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CommandCount.java
index 158169b..df99b54 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CommandCount.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CommandCount.java
@@ -33,13 +33,6 @@ public class CommandCount {
     private int count;
 
 
-    @Override
-    public String toString(){
-        return "command count:" +
-                " commandType: "+ commandType.toString() +
-                " count: "+ count;
-    }
-
     public CommandType getCommandType() {
         return commandType;
     }
@@ -55,4 +48,37 @@ public class CommandCount {
     public void setCount(int count) {
         this.count = count;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        CommandCount that = (CommandCount) o;
+
+        if (count != that.count) {
+            return false;
+        }
+        return commandType == that.commandType;
+
+    }
+
+    @Override
+    public int hashCode() {
+        int result = commandType != null ? commandType.hashCode() : 0;
+        result = 31 * result + count;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "CommandCount{" +
+                "commandType=" + commandType +
+                ", count=" + count +
+                '}';
+    }
 }
diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/AlertMapperTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/AlertMapperTest.java
index 5f10a75..4e298e3 100644
--- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/AlertMapperTest.java
+++ b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/AlertMapperTest.java
@@ -35,6 +35,9 @@ import java.util.*;
 import static org.hamcrest.Matchers.*;
 import static org.junit.Assert.*;
 
+/**
+ *  alert mapper test
+ */
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @Transactional
diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/CommandMapperTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/CommandMapperTest.java
index 2af4457..c35ce7e 100644
--- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/CommandMapperTest.java
+++ b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/CommandMapperTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.dolphinscheduler.dao.mapper;
 
+import org.apache.dolphinscheduler.common.utils.DateUtils;
 import org.apache.dolphinscheduler.dao.entity.Command;
 import org.apache.dolphinscheduler.dao.entity.CommandCount;
 import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
@@ -25,13 +26,25 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.Rollback;
 import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
+
+/**
+ *  command mapper test
+ */
 @RunWith(SpringRunner.class)
 @SpringBootTest
+@Transactional
+@Rollback(true)
 public class CommandMapperTest {
 
 
@@ -41,71 +54,85 @@ public class CommandMapperTest {
     @Autowired
     ProcessDefinitionMapper processDefinitionMapper;
 
+
     /**
-     * insert
-     * @return Command
+     * test insert
      */
-    private Command insertOne(){
-        //insertOne
-        Command command = new Command();
-        command.setCommandType(CommandType.START_PROCESS);
-        command.setProcessDefinitionId(1);
-        command.setExecutorId(4);
-        command.setProcessInstancePriority(Priority.MEDIUM);
-        command.setFailureStrategy(FailureStrategy.CONTINUE);
-        command.setWorkerGroupId(-1);
-        command.setWarningGroupId(1);
-        command.setUpdateTime(new Date());
-        commandMapper.insert(command);
-        return command;
+    @Test
+    public void testInsert(){
+        Command command = createCommand();
+        assertNotNull(command.getId());
+        assertThat(command.getId(),greaterThan(0));
     }
 
+
     /**
-     * test update
+     * test select by id
      */
     @Test
-    public void testUpdate(){
-        //insertOne
-        Command command = insertOne();
-        //update
-        command.setStartTime(new Date());
-        int update = commandMapper.updateById(command);
-        Assert.assertEquals(update, 1);
-        commandMapper.deleteById(command.getId());
+    public void testSelectById() {
+        Command expectedCommand = createCommand();
+        //query
+        Command actualCommand = commandMapper.selectById(expectedCommand.getId());
+
+        assertEquals(expectedCommand, actualCommand);
     }
 
     /**
-     * test delete
+     * test update
      */
     @Test
-    public void testDelete(){
+    public void testUpdate(){
+
+        Command expectedCommand = createCommand();
+
+        // update the command time if current command if recover from waiting
+        expectedCommand.setUpdateTime(DateUtils.getCurrentDate());
+
+        commandMapper.updateById(expectedCommand);
+
+        Command actualCommand = commandMapper.selectById(expectedCommand.getId());
+
+        assertEquals(expectedCommand,actualCommand);
 
-        Command Command = insertOne();
-        int delete = commandMapper.deleteById(Command.getId());
-        Assert.assertEquals(delete, 1);
     }
 
     /**
-     * test query
+     * test delete
      */
     @Test
-    public void testQuery() {
-        Command command = insertOne();
-        //query
-        List<Command> commands = commandMapper.selectList(null);
-        Assert.assertNotEquals(commands.size(), 0);
-        commandMapper.deleteById(command.getId());
+    public void testDelete(){
+        Command expectedCommand = createCommand();
+
+        commandMapper.deleteById(expectedCommand.getId());
+
+        Command actualCommand = commandMapper.selectById(expectedCommand.getId());
+
+        assertNull(actualCommand);
     }
 
+
+
     /**
      * test query all
      */
     @Test
     public void testGetAll() {
-        Command command = insertOne();
-        List<Command> commands = commandMapper.selectList(null);
-        Assert.assertNotEquals(commands.size(), 0);
-        commandMapper.deleteById(command.getId());
+        Integer count = 10;
+
+        Map<Integer, Command> commandMap = createCommandMap(count);
+
+
+        List<Command> actualCommands = commandMapper.selectList(null);
+
+        assertThat(actualCommands.size(), greaterThanOrEqualTo(count));
+
+        for (Command actualCommand : actualCommands){
+            Command expectedCommand = commandMap.get(actualCommand.getId());
+            if (expectedCommand != null){
+                assertEquals(expectedCommand,actualCommand);
+            }
+        }
     }
 
     /**
@@ -113,28 +140,14 @@ public class CommandMapperTest {
      */
     @Test
     public void testGetOneToRun() {
-        ProcessDefinition processDefinition = new ProcessDefinition();
-        processDefinition.setReleaseState(ReleaseState.ONLINE);
-        processDefinition.setName("ut test");
-        processDefinition.setProjectId(1);
-        processDefinition.setFlag(Flag.YES);
-        processDefinitionMapper.insert(processDefinition);
 
-        Command command = new Command();
-        command.setCommandType(CommandType.START_PROCESS);
-        command.setProcessDefinitionId(processDefinition.getId());
-        command.setExecutorId(4);
-        command.setProcessInstancePriority(Priority.MEDIUM);
-        command.setFailureStrategy(FailureStrategy.CONTINUE);
-        command.setWorkerGroupId(-1);
-        command.setWarningGroupId(1);
-        command.setUpdateTime(new Date());
-        commandMapper.insert(command);
+        ProcessDefinition processDefinition = createProcessDefinition();
+
+        Command expectedCommand = createCommand(CommandType.START_PROCESS,processDefinition.getId());
 
-        Command command2 = commandMapper.getOneToRun();
-        Assert.assertNotEquals(command2, null);
-        commandMapper.deleteById(command.getId());
-        processDefinitionMapper.deleteById(processDefinition.getId());
+        Command actualCommand = commandMapper.getOneToRun();
+
+        assertEquals(expectedCommand, actualCommand);
     }
 
     /**
@@ -142,35 +155,122 @@ public class CommandMapperTest {
      */
     @Test
     public void testCountCommandState() {
-        Command command = insertOne();
+        Integer count = 10;
+
+        ProcessDefinition processDefinition = createProcessDefinition();
+
+        CommandCount expectedCommandCount = createCommandMap(count, CommandType.START_PROCESS, processDefinition.getId());
+
+        Integer[] projectIdArray = {processDefinition.getProjectId()};
+
+        Date startTime = DateUtils.stringToDate("2019-12-29 00:10:00");
+
+        Date endTime = DateUtils.stringToDate("2019-12-29 23:59:59");
+
+        List<CommandCount> actualCommandCounts = commandMapper.countCommandState(0, startTime, endTime, projectIdArray);
+
+        assertThat(actualCommandCounts.size(),greaterThanOrEqualTo(1));
+
+        Boolean flag = false;
+        for (CommandCount actualCommandCount : actualCommandCounts){
+            if (actualCommandCount.getCommandType().equals(expectedCommandCount.getCommandType())){
+                assertEquals(expectedCommandCount,actualCommandCount);
+                flag = true;
+            }
+        }
+
+        assertTrue(flag);
+    }
 
-        //insertOne
+
+    /**
+     * create command map
+     * @param count map count
+     * @param commandType comman type
+     * @param processDefinitionId process definition id
+     * @return command map
+     */
+    private CommandCount createCommandMap(
+            Integer count,
+            CommandType commandType,
+            Integer processDefinitionId){
+
+        CommandCount commandCount = new CommandCount();
+
+        for (int i = 0 ;i < count ;i++){
+            createCommand(commandType,processDefinitionId);
+        }
+        commandCount.setCommandType(commandType);
+        commandCount.setCount(count);
+
+        return commandCount;
+    }
+
+    /**
+     *  create process definition
+     * @return process definition
+     */
+    private ProcessDefinition createProcessDefinition(){
         ProcessDefinition processDefinition = new ProcessDefinition();
-        processDefinition.setName("def 1");
-        processDefinition.setProjectId(1010);
-        processDefinition.setUserId(101);
-        processDefinition.setUpdateTime(new Date());
-        processDefinition.setCreateTime(new Date());
+        processDefinition.setReleaseState(ReleaseState.ONLINE);
+        processDefinition.setName("ut test");
+        processDefinition.setProjectId(1);
+        processDefinition.setFlag(Flag.YES);
+
         processDefinitionMapper.insert(processDefinition);
 
-        command.setProcessDefinitionId(processDefinition.getId());
-        commandMapper.updateById(command);
+        return processDefinition;
+    }
 
+    /**
+     * create command map
+     * @param count map count
+     * @return command map
+     */
+    private Map<Integer,Command> createCommandMap(Integer count){
+        Map<Integer,Command> commandMap = new HashMap<>();
+
+        for (int i = 0; i < count ;i++){
+            Command command = createCommand();
+            commandMap.put(command.getId(),command);
+        }
+        return commandMap;
+    }
 
-        List<CommandCount> commandCounts = commandMapper.countCommandState(
-                4, null, null, new Integer[0]
-        );
 
-        Integer[] projectIdArray = new Integer[2];
-        projectIdArray[0] = processDefinition.getProjectId();
-        projectIdArray[1] = 200;
-        List<CommandCount> commandCounts2 = commandMapper.countCommandState(
-                4, null, null, projectIdArray
-        );
+    /**
+     * create command
+     * @return
+     */
+    private Command createCommand(){
+        return createCommand(CommandType.START_PROCESS,1);
+    }
+
+    /**
+     * create command
+     * @return Command
+     */
+    private Command createCommand(CommandType commandType,Integer processDefinitionId){
+
+        Command command = new Command();
+        command.setCommandType(commandType);
+        command.setProcessDefinitionId(processDefinitionId);
+        command.setExecutorId(4);
+        command.setCommandParam("test command param");
+        command.setTaskDependType(TaskDependType.TASK_ONLY);
+        command.setFailureStrategy(FailureStrategy.CONTINUE);
+        command.setWarningType(WarningType.ALL);
+        command.setWarningGroupId(1);
+        command.setScheduleTime(DateUtils.stringToDate("2019-12-29 12:10:00"));
+        command.setProcessInstancePriority(Priority.MEDIUM);
+        command.setStartTime(DateUtils.stringToDate("2019-12-29 10:10:00"));
+        command.setUpdateTime(DateUtils.stringToDate("2019-12-29 10:10:00"));
+        command.setWorkerGroupId(-1);
+        commandMapper.insert(command);
 
-        commandMapper.deleteById(command.getId());
-        processDefinitionMapper.deleteById(processDefinition.getId());
-        Assert.assertNotEquals(commandCounts.size(), 0);
-        Assert.assertNotEquals(commandCounts2.size(), 0);
+        return command;
     }
+
+
+
 }
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 796d2b8..7936bf7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -675,6 +675,7 @@
 						<include>**/dao/mapper/AccessTokenMapperTest.java</include>
 						<include>**/dao/mapper/AlertGroupMapperTest.java</include>
 						<include>**/dao/mapper/AlertMapperTest.java</include>
+						<include>**/dao/mapper/CommandMapperTest.java</include>
 					</includes>
 					<!-- <skip>true</skip> -->
 				</configuration>