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);
+ }
}