diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/LoggerService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/LoggerService.java
index 3a9ff11fc3..056af8eff5 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/LoggerService.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/LoggerService.java
@@ -84,6 +84,7 @@ public class LoggerService {
if (taskInstance == null){
throw new RuntimeException("task instance is null");
}
+
String host = taskInstance.getHost();
LogClientService logClient = new LogClientService(host, Constants.RPC_PORT);
return logClient.getLogBytes(taskInstance.getLogPath());
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 798e064d79..c6ab6f8e74 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
@@ -16,37 +16,83 @@
*/
package org.apache.dolphinscheduler.api.service;
-import org.apache.dolphinscheduler.api.ApiApplicationServer;
import org.apache.dolphinscheduler.api.enums.Status;
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.Test;
import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.powermock.core.classloader.annotations.PrepareForTest;
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(MockitoJUnitRunner.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;
- @Test
- public void queryDataSourceList(){
- 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(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 (RuntimeException e){
+ Assert.assertTrue(true);
+ logger.error("testGetLogBytes error: {}","task instance is null");
+ }
+
+ //task instance host is null
+ try{
+ loggerService.getLogBytes(1);
+ }catch (RuntimeException e){
+ Assert.assertTrue(true);
+ logger.error("testGetLogBytes error: {}","task instance host is null");
+ }
+
+ //success
+ taskInstance.setHost("127.0.0.1");
+ taskInstance.setLogPath("/temp/log");
+ //if use @RunWith(PowerMockRunner.class) mock object,sonarcloud will not calculate the coverage,
+ // so no assert will be added here
+ loggerService.getLogBytes(1);
+
}
+
}
\ No newline at end of file
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
index ccbbc36ea4..3e9dcb026e 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
@@ -27,6 +27,7 @@ import org.apache.dolphinscheduler.common.enums.*;
import org.apache.dolphinscheduler.common.utils.DateUtils;
import org.apache.dolphinscheduler.common.utils.FileUtils;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
+import org.apache.dolphinscheduler.dao.ProcessDao;
import org.apache.dolphinscheduler.dao.entity.*;
import org.apache.dolphinscheduler.dao.mapper.*;
import org.apache.dolphinscheduler.service.process.ProcessService;
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java
index e0cea1d7e0..aa8d44fa42 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java
@@ -15,7 +15,6 @@
* limitations under the License.
*/
package org.apache.dolphinscheduler.common.utils;
-
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.model.Server;
@@ -135,14 +134,15 @@ public class ResInfo {
* @return heartbeat info to Server
*/
public static Server parseHeartbeatForZKInfo(String heartBeatInfo){
- Server masterServer = null;
+ if (StringUtils.isEmpty(heartBeatInfo)) {
+ return null;
+ }
String[] masterArray = heartBeatInfo.split(Constants.COMMA);
- if(masterArray == null ||
- masterArray.length != Constants.HEARTBEAT_FOR_ZOOKEEPER_INFO_LENGTH){
- return masterServer;
+ if(masterArray.length != Constants.HEARTBEAT_FOR_ZOOKEEPER_INFO_LENGTH){
+ return null;
}
- masterServer = new Server();
+ Server masterServer = new Server();
masterServer.setHost(masterArray[0]);
masterServer.setPort(Integer.parseInt(masterArray[1]));
masterServer.setResInfo(getResInfoJson(Double.parseDouble(masterArray[2]),
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ArrayUtils.java b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/ResInfoTest.java
similarity index 54%
rename from dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ArrayUtils.java
rename to dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/ResInfoTest.java
index 163c56bbcc..e4318965b7 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ArrayUtils.java
+++ b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/ResInfoTest.java
@@ -14,13 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.dolphinscheduler.common.utils;
+import org.junit.Assert;
+import org.junit.Test;
+import java.util.Date;
+import org.apache.dolphinscheduler.common.model.Server;
+
+public class ResInfoTest {
+ @Test
+ public void testGetHeartBeatInfo() {
+ String info = ResInfo.getHeartBeatInfo(new Date());
+ Assert.assertEquals(7, info.split(",").length);
+ }
-public class ArrayUtils {
+ @Test
+ public void testParseHeartbeatForZKInfo() {
+ //normal info
+ String info = ResInfo.getHeartBeatInfo(new Date());
+ Server s = ResInfo.parseHeartbeatForZKInfo(info);
+ Assert.assertNotNull(s);
+ Assert.assertNotNull(s.getResInfo());
- public static boolean isEmpty(final int[] array) {
- return array == null || array.length == 0;
- }
+ //null param
+ s = ResInfo.parseHeartbeatForZKInfo(null);
+ Assert.assertNull(s);
+ }
}
diff --git a/pom.xml b/pom.xml
index 23f4a24bf2..a036aa0ec5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -705,6 +705,7 @@
**/api/service/ExecutorService2Test.java
**/api/service/BaseServiceTest.java
**/api/service/BaseDAGServiceTest.java
+ **/api/service/LoggerServiceTest.java
**/alert/utils/ExcelUtilsTest.java
**/alert/utils/FuncUtilsTest.java
**/alert/utils/JSONUtilsTest.java