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

chufenggao 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 325bfa821f [TEST] increase cov of logger service (#15870)
325bfa821f is described below

commit 325bfa821f9cd82ee15b681e8a5ae30d4976f8f1
Author: Evan Sun <[email protected]>
AuthorDate: Thu Apr 18 20:40:05 2024 +0800

    [TEST] increase cov of logger service (#15870)
    
    Co-authored-by: abzymeinsjtu <[email protected]>
    Co-authored-by: Eric Gao <[email protected]>
---
 .../api/service/impl/LoggerServiceImpl.java        |  3 +-
 .../api/service/LoggerServiceTest.java             | 62 +++++++++++++++++++++-
 .../api/utils/ServiceTestUtil.java                 | 18 +++++++
 3 files changed, 79 insertions(+), 4 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java
index 0663b88374..c0ecb0e9b5 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/LoggerServiceImpl.java
@@ -237,7 +237,7 @@ public class LoggerServiceImpl extends BaseServiceImpl 
implements LoggerService
                 host,
                 
Constants.SYSTEM_LINE_SEPARATOR).getBytes(StandardCharsets.UTF_8);
 
-        byte[] logBytes = new byte[0];
+        byte[] logBytes;
 
         ILogService iLogService =
                 
SingletonJdkDynamicRpcClientProxyFactory.getProxyClient(taskInstance.getHost(), 
ILogService.class);
@@ -251,6 +251,5 @@ public class LoggerServiceImpl extends BaseServiceImpl 
implements LoggerService
             log.error("Download TaskInstance: {} Log Error", 
taskInstance.getName(), ex);
             throw new 
ServiceException(Status.DOWNLOAD_TASK_INSTANCE_LOG_FILE_ERROR);
         }
-
     }
 }
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
index 2c4de2ab7e..4861e1004e 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
@@ -18,8 +18,10 @@
 package org.apache.dolphinscheduler.api.service;
 
 import static 
org.apache.dolphinscheduler.api.AssertionsHelper.assertDoesNotThrow;
+import static 
org.apache.dolphinscheduler.api.AssertionsHelper.assertThrowsServiceException;
 import static 
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.DOWNLOAD_LOG;
 import static 
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.VIEW_LOG;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.when;
@@ -109,11 +111,25 @@ public class LoggerServiceTest {
 
             @Override
             public TaskInstanceLogFileDownloadResponse 
getTaskInstanceWholeLogFileBytes(TaskInstanceLogFileDownloadRequest 
taskInstanceLogFileDownloadRequest) {
-                return new TaskInstanceLogFileDownloadResponse(new byte[0]);
+                if (taskInstanceLogFileDownloadRequest.getTaskInstanceId() == 
1) {
+                    return new TaskInstanceLogFileDownloadResponse(new 
byte[0]);
+                } else if 
(taskInstanceLogFileDownloadRequest.getTaskInstanceId() == 10) {
+                    return new TaskInstanceLogFileDownloadResponse("log 
content".getBytes());
+                }
+
+                throw new ServiceException("download error");
             }
 
             @Override
             public TaskInstanceLogPageQueryResponse 
pageQueryTaskInstanceLog(TaskInstanceLogPageQueryRequest 
taskInstanceLogPageQueryRequest) {
+                if (taskInstanceLogPageQueryRequest.getTaskInstanceId() != 
null) {
+                    if (taskInstanceLogPageQueryRequest.getTaskInstanceId() == 
100) {
+                        throw new ServiceException("query log error");
+                    } else if 
(taskInstanceLogPageQueryRequest.getTaskInstanceId() == 10) {
+                        return new TaskInstanceLogPageQueryResponse("log 
content");
+                    }
+                }
+
                 return new TaskInstanceLogPageQueryResponse();
             }
 
@@ -177,6 +193,13 @@ public class LoggerServiceTest {
         when(taskInstanceDao.queryById(1)).thenReturn(taskInstance);
         result = loggerService.queryLog(loginUser, 1, 1, 1);
         Assertions.assertEquals(Status.SUCCESS.getCode(), 
result.getCode().intValue());
+
+        result = loggerService.queryLog(loginUser, 1, 0, 1);
+        Assertions.assertEquals(Status.SUCCESS.getCode(), 
result.getCode().intValue());
+
+        taskInstance.setLogPath("");
+        assertThrowsServiceException(Status.QUERY_TASK_INSTANCE_LOG_ERROR,
+                () -> loggerService.queryLog(loginUser, 1, 1, 1));
     }
 
     @Test
@@ -237,9 +260,15 @@ public class LoggerServiceTest {
         loginUser.setUserType(UserType.GENERAL_USER);
         TaskInstance taskInstance = new TaskInstance();
         when(taskInstanceDao.queryById(1)).thenReturn(taskInstance);
+        when(taskInstanceDao.queryById(10)).thenReturn(null);
+
+        assertThrowsServiceException(Status.TASK_INSTANCE_NOT_FOUND,
+                () -> loggerService.queryLog(loginUser, projectCode, 10, 1, 
1));
+
         TaskDefinition taskDefinition = new TaskDefinition();
         taskDefinition.setProjectCode(projectCode);
         taskDefinition.setCode(1L);
+
         // SUCCESS
         taskInstance.setTaskCode(1L);
         taskInstance.setId(1);
@@ -249,13 +278,27 @@ public class LoggerServiceTest {
         when(taskInstanceDao.queryById(1)).thenReturn(taskInstance);
         
when(taskDefinitionMapper.queryByCode(taskInstance.getTaskCode())).thenReturn(taskDefinition);
         assertDoesNotThrow(() -> loggerService.queryLog(loginUser, 
projectCode, 1, 1, 1));
+
+        taskDefinition.setProjectCode(10);
+        assertThrowsServiceException(Status.TASK_INSTANCE_NOT_FOUND,
+                () -> loggerService.queryLog(loginUser, projectCode, 1, 1, 1));
+
+        taskDefinition.setProjectCode(1);
+        taskInstance.setId(10);
+        when(taskInstanceDao.queryById(10)).thenReturn(taskInstance);
+        String result = loggerService.queryLog(loginUser, projectCode, 10, 1, 
1);
+        assertEquals("log content", result);
+
+        taskInstance.setId(100);
+        when(taskInstanceDao.queryById(100)).thenReturn(taskInstance);
+        assertThrowsServiceException(Status.QUERY_TASK_INSTANCE_LOG_ERROR,
+                () -> loggerService.queryLog(loginUser, projectCode, 10, 1, 
1));
     }
 
     @Test
     public void testGetLogBytesInSpecifiedProject() {
         long projectCode = 1L;
         
when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
-        Project project = getProject(projectCode);
 
         User loginUser = new User();
         loginUser.setId(-1);
@@ -272,9 +315,24 @@ public class LoggerServiceTest {
         taskInstance.setHost("127.0.0.1:" + nettyServerPort);
         taskInstance.setLogPath("/temp/log");
         
doNothing().when(projectService).checkProjectAndAuthThrowException(loginUser, 
projectCode, DOWNLOAD_LOG);
+
+        when(taskInstanceDao.queryById(1)).thenReturn(null);
+        assertThrowsServiceException(
+                Status.INTERNAL_SERVER_ERROR_ARGS, () -> 
loggerService.getLogBytes(loginUser, projectCode, 1));
+
         when(taskInstanceDao.queryById(1)).thenReturn(taskInstance);
         
when(taskDefinitionMapper.queryByCode(taskInstance.getTaskCode())).thenReturn(taskDefinition);
         assertDoesNotThrow(() -> loggerService.getLogBytes(loginUser, 
projectCode, 1));
+
+        taskDefinition.setProjectCode(2L);
+        assertThrowsServiceException(Status.INTERNAL_SERVER_ERROR_ARGS,
+                () -> loggerService.getLogBytes(loginUser, projectCode, 1));
+
+        taskDefinition.setProjectCode(1L);
+        taskInstance.setId(100);
+        when(taskInstanceDao.queryById(100)).thenReturn(taskInstance);
+        
assertThrowsServiceException(Status.DOWNLOAD_TASK_INSTANCE_LOG_FILE_ERROR,
+                () -> loggerService.getLogBytes(loginUser, projectCode, 100));
     }
 
     /**
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/ServiceTestUtil.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/ServiceTestUtil.java
index 0dc71841b4..f33571d309 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/ServiceTestUtil.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/ServiceTestUtil.java
@@ -17,6 +17,9 @@
 
 package org.apache.dolphinscheduler.api.utils;
 
+import org.apache.dolphinscheduler.common.enums.UserType;
+import org.apache.dolphinscheduler.dao.entity.User;
+
 import java.nio.charset.StandardCharsets;
 import java.util.Random;
 
@@ -27,4 +30,19 @@ public class ServiceTestUtil {
         new Random().nextBytes(bitArray);
         return new String(bitArray, StandardCharsets.UTF_8);
     }
+
+    private static User getUser(Integer userId, String userName, UserType 
userType) {
+        User user = new User();
+        user.setUserType(userType);
+        user.setId(userId);
+        user.setUserName(userName);
+        return user;
+    }
+
+    public static User getAdminUser() {
+        return getUser(1, "admin", UserType.ADMIN_USER);
+    }
+    public static User getGeneralUser() {
+        return getUser(10, "user", UserType.GENERAL_USER);
+    }
 }

Reply via email to