Browse Source

modify loggerService UT by Mock

lilin 5 years ago
parent
commit
e00ef4915d

+ 5 - 0
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/LoggerService.java

@@ -84,7 +84,12 @@ public class LoggerService {
     if (taskInstance == null){
       throw new RuntimeException("task instance is null");
     }
+
     String host = taskInstance.getHost();
+    if(StringUtils.isEmpty(host)){
+      throw new RuntimeException("task instance host is null");
+    }
+
     LogClient logClient = new LogClient(host, Constants.RPC_PORT);
     return logClient.getLogBytes(taskInstance.getLogPath());
   }

+ 73 - 15
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java

@@ -16,37 +16,95 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
-import org.apache.dolphinscheduler.api.ApiApplicationServer;
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.log.LogClient;
 import org.apache.dolphinscheduler.api.utils.Result;
-import org.apache.dolphinscheduler.common.enums.UserType;
-import org.apache.dolphinscheduler.dao.entity.User;
+import org.apache.dolphinscheduler.dao.ProcessDao;
+import org.apache.dolphinscheduler.dao.entity.TaskInstance;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
 
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = ApiApplicationServer.class)
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({LoggerService.class})
 public class LoggerServiceTest {
+
     private static final Logger logger = LoggerFactory.getLogger(LoggerServiceTest.class);
 
-    @Autowired
+    @InjectMocks
     private LoggerService loggerService;
+    @Mock
+    private ProcessDao processDao;
+    @Mock
+    private LogClient logClient;
 
-    @Test
-    public void queryDataSourceList(){
+    @Before
+    public void setUp() {
+
+        try {
+            PowerMockito.whenNew(LogClient.class).withAnyArguments().thenReturn(logClient);
+        } catch (Exception e) {
+            logger.error("setUp error: {}",e.getMessage());
+        }
+    }
 
-        User loginUser = new User();
-        loginUser.setId(27);
-        loginUser.setUserType(UserType.GENERAL_USER);
+    @Test
+    public void testQueryDataSourceList(){
 
-        Result result = loggerService.queryLog(-1, 0, 100);
+        TaskInstance taskInstance = new TaskInstance();
+        Mockito.when(processDao.findTaskInstanceById(1)).thenReturn(taskInstance);
+        Result result = loggerService.queryLog(2,1,1);
+        //TASK_INSTANCE_NOT_FOUND
+        Assert.assertEquals(Status.TASK_INSTANCE_NOT_FOUND.getCode(),result.getCode().intValue());
 
+        //HOST NOT FOUND
+        result = loggerService.queryLog(1,1,1);
         Assert.assertEquals(Status.TASK_INSTANCE_NOT_FOUND.getCode(),result.getCode().intValue());
+
+        //SUCCESS
+        taskInstance.setHost("127.0.0.1");
+        taskInstance.setLogPath("/temp/log");
+        Mockito.when(logClient.rollViewLog("/temp/log",1,1 )).thenReturn("test");
+        Mockito.when(processDao.findTaskInstanceById(1)).thenReturn(taskInstance);
+        result = loggerService.queryLog(1,1,1);
+        Assert.assertEquals(Status.SUCCESS.getCode(),result.getCode().intValue());
     }
+
+    @Test
+    public void testGetLogBytes(){
+
+        TaskInstance taskInstance = new TaskInstance();
+        Mockito.when(processDao.findTaskInstanceById(1)).thenReturn(taskInstance);
+
+        //task instance is null
+        try{
+            loggerService.getLogBytes(2);
+        }catch (Exception e){
+            logger.error("testGetLogBytes error: {}","task instance is null");
+        }
+
+        //task instance host is null
+        try{
+            loggerService.getLogBytes(1);
+        }catch (Exception e){
+            logger.error("testGetLogBytes error: {}","task instance host is null");
+        }
+
+        //success
+        Mockito.when(logClient.getLogBytes("/temp/log")).thenReturn(new byte[]{});
+        taskInstance.setHost("127.0.0.1");
+        taskInstance.setLogPath("/temp/log");
+         byte []  result = loggerService.getLogBytes(1);
+         Assert.assertEquals(0,result.length);
+    }
+
 }

+ 1 - 0
pom.xml

@@ -699,6 +699,7 @@
                         <include>**/api/service/ExecutorService2Test.java</include>
                         <include>**/api/service/BaseServiceTest.java</include>
                         <include>**/api/service/BaseDAGServiceTest.java</include>
+                        <include>**/api/service/LoggerServiceTest.java</include>
                         <include>**/alert/utils/ExcelUtilsTest.java</include>
                         <include>**/alert/utils/FuncUtilsTest.java</include>
                         <include>**/alert/utils/JSONUtilsTest.java</include>