You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by zi...@apache.org on 2026/05/02 10:40:01 UTC
(dolphinscheduler) branch dev updated: [Chore] Fix UT will be skip at CI (#18205)
This is an automated email from the ASF dual-hosted git repository.
SbloodyS 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 9563c66627 [Chore] Fix UT will be skip at CI (#18205)
9563c66627 is described below
commit 9563c66627c8d62b0225bd45cd7174d6d4381786
Author: Wenjun Ruan <we...@apache.org>
AuthorDate: Sat May 2 18:39:55 2026 +0800
[Chore] Fix UT will be skip at CI (#18205)
Co-authored-by: SbloodyS <46...@qq.com>
---
.github/workflows/unit-test.yml | 2 --
.../api/service/WorkflowLineageService.java | 12 -------
.../BackfillWorkflowExecutorDelegateTest.java | 22 ++++++-------
.../api/service/DataSourceServiceTest.java | 5 +++
.../api/service/K8SNamespaceServiceTest.java | 4 +++
.../api/service/ProjectServiceTest.java | 7 ++++
.../api/service/TaskDefinitionLogServiceTest.java | 6 ++++
.../api/service/UsersServiceTest.java | 11 +++++++
.../api/service/WorkflowDefinitionServiceTest.java | 37 ++++++++++++++++++++++
.../api/service/impl/ClusterServiceTest.java | 4 +++
.../impl/WorkflowLineageServiceImplTest.java | 4 +--
.../master/metrics/WorkflowInstanceMetrics.java | 10 ------
.../master/AbstractMasterIntegrationTestCase.java | 19 +++++++++++
.../cases/WorkflowInstanceMetricsTestCase.java | 25 +++------------
.../plugin/task/flink/FlinkArgsUtilsTest.java | 10 +++---
15 files changed, 116 insertions(+), 62 deletions(-)
diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 8e0f309dc3..0afb995a98 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -134,9 +134,7 @@ jobs:
./mvnw verify -B \
-pl "${{ matrix.module }}" \
-am \
- -DskipTests=true \
-Dmaven.test.skip=false \
- -pl "${{ matrix.module }}" \
-Dspotless.skip=true \
-DskipUT=false \
-Danalyze.skip=true
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowLineageService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowLineageService.java
index 547b8072fd..676c78863e 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowLineageService.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowLineageService.java
@@ -50,18 +50,6 @@ public interface WorkflowLineageService {
* <li>{@code allLevelDependent == true}: transitive dependents (BFS over direct dependents), skipping the root
* when it reappears as an edge target (cycle back to root).</li>
* </ul>
- *
- * @param rootWorkflowDefinitionCode workflow to start from (not included in the result)
- * @param allLevelDependent {@code true} for transitive closure, {@code false} for one hop only
- * @return ordered distinct downstream workflow definitions (stable order: BFS / insertion order)
- */
- default List<WorkflowDefinition> resolveDownstreamWorkflowDefinitionCodes(long rootWorkflowDefinitionCode,
- boolean allLevelDependent) {
- return resolveDownstreamWorkflowDefinitionCodes(rootWorkflowDefinitionCode, allLevelDependent, false);
- }
-
- /**
- * Resolve downstream workflow definitions and optionally filter offline workflows.
* When {@code filterOfflineWorkflow} is true, offline workflow definitions are excluded from the result and are
* not expanded further during transitive traversal.
*
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/executor/workflow/BackfillWorkflowExecutorDelegateTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/executor/workflow/BackfillWorkflowExecutorDelegateTest.java
index e94669f937..e1268e1490 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/executor/workflow/BackfillWorkflowExecutorDelegateTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/executor/workflow/BackfillWorkflowExecutorDelegateTest.java
@@ -76,7 +76,7 @@ public class BackfillWorkflowExecutorDelegateTest {
WorkflowDefinition.builder().code(upstreamCode).releaseState(ReleaseState.ONLINE).build();
WorkflowDefinition downstreamWorkflow =
WorkflowDefinition.builder().code(downstreamCode).releaseState(ReleaseState.ONLINE).build();
- when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(false)))
+ when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(false), eq(true)))
.thenReturn(Collections.singletonList(downstreamWorkflow));
User loginUser = new User();
loginUser.setId(1);
@@ -121,7 +121,7 @@ public class BackfillWorkflowExecutorDelegateTest {
WorkflowDefinition.builder().code(upstreamCode).releaseState(ReleaseState.ONLINE).build();
WorkflowDefinition downstreamWorkflow =
WorkflowDefinition.builder().code(downstreamCode).releaseState(ReleaseState.ONLINE).build();
- when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(false)))
+ when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(false), eq(true)))
.thenReturn(Collections.singletonList(downstreamWorkflow));
User loginUser = new User();
loginUser.setId(1);
@@ -163,7 +163,7 @@ public class BackfillWorkflowExecutorDelegateTest {
WorkflowDefinition.builder().code(upstreamCode).releaseState(ReleaseState.ONLINE).build();
WorkflowDefinition downstreamWorkflow =
WorkflowDefinition.builder().code(downstreamCode).releaseState(ReleaseState.ONLINE).build();
- when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(false)))
+ when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(false), eq(true)))
.thenReturn(Collections.singletonList(downstreamWorkflow));
User loginUser = new User();
loginUser.setId(1);
@@ -203,7 +203,7 @@ public class BackfillWorkflowExecutorDelegateTest {
WorkflowDefinition.builder().code(codeA).releaseState(ReleaseState.ONLINE).build();
WorkflowDefinition workflowB =
WorkflowDefinition.builder().code(codeB).releaseState(ReleaseState.ONLINE).build();
- when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(codeA), eq(true)))
+ when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(codeA), eq(true), eq(true)))
.thenReturn(Collections.singletonList(workflowB));
User loginUser = new User();
loginUser.setId(1);
@@ -245,7 +245,7 @@ public class BackfillWorkflowExecutorDelegateTest {
WorkflowDefinition workflowC =
WorkflowDefinition.builder().code(codeC).releaseState(ReleaseState.ONLINE).build();
- when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(codeA), eq(true)))
+ when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(codeA), eq(true), eq(true)))
.thenReturn(Arrays.asList(workflowB, workflowC));
User loginUser = new User();
loginUser.setId(1);
@@ -293,7 +293,7 @@ public class BackfillWorkflowExecutorDelegateTest {
WorkflowDefinition workflowC =
WorkflowDefinition.builder().code(codeC).releaseState(ReleaseState.ONLINE).build();
- when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(codeA), eq(true)))
+ when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(codeA), eq(true), eq(true)))
.thenReturn(Arrays.asList(workflowB, workflowC));
User loginUser = new User();
@@ -347,13 +347,13 @@ public class BackfillWorkflowExecutorDelegateTest {
@Test
public void testOfflineOrMissingDownstream_skipped() {
- long upstreamCode = 1L, offlineCode = 2L, missingCode = 3L;
+ long upstreamCode = 1L;
WorkflowDefinition upstreamWorkflow =
WorkflowDefinition.builder().code(upstreamCode).releaseState(ReleaseState.ONLINE).build();
- WorkflowDefinition offlineWorkflow =
- WorkflowDefinition.builder().code(offlineCode).releaseState(ReleaseState.OFFLINE).build();
- when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(true)))
- .thenReturn(Collections.singletonList(offlineWorkflow));
+ // Service is asked to filter offline workflows (filterOfflineWorkflow=true) and returns an
+ // empty list when only offline/missing downstreams exist; the executor must then trigger upstream only.
+ when(workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(eq(upstreamCode), eq(true), eq(true)))
+ .thenReturn(Collections.emptyList());
User loginUser = new User();
loginUser.setId(1);
BackfillWorkflowDTO.BackfillParamsDTO params = BackfillWorkflowDTO.BackfillParamsDTO.builder()
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataSourceServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataSourceServiceTest.java
index 784dbae1e8..6b33238bdf 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataSourceServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataSourceServiceTest.java
@@ -34,6 +34,7 @@ import org.apache.dolphinscheduler.common.utils.PropertyUtils;
import org.apache.dolphinscheduler.dao.entity.DataSource;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.DataSourceMapper;
+import org.apache.dolphinscheduler.dao.mapper.DataSourceUserMapper;
import org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceConstants;
import org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
@@ -89,6 +90,9 @@ public class DataSourceServiceTest {
@Mock
private DataSourceMapper dataSourceMapper;
+ @Mock
+ private DataSourceUserMapper datasourceUserMapper;
+
@Mock
private ResourcePermissionCheckService resourcePermissionCheckService;
@@ -310,6 +314,7 @@ public class DataSourceServiceTest {
passResourcePermissionCheckService();
when(dataSourceMapper.selectById(dataSourceId)).thenReturn(dataSource);
assertDoesNotThrow(() -> dataSourceService.delete(loginUser, dataSourceId));
+ Mockito.verify(datasourceUserMapper).deleteByDatasourceId(dataSourceId);
}
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java
index 19241f1912..ee852ff7da 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java
@@ -20,6 +20,7 @@ package org.apache.dolphinscheduler.api.service;
import static org.apache.dolphinscheduler.api.AssertionsHelper.assertThrowsServiceException;
import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.k8s.K8sClientService;
import org.apache.dolphinscheduler.api.service.impl.K8SNamespaceServiceImpl;
import org.apache.dolphinscheduler.api.utils.PageInfo;
import org.apache.dolphinscheduler.api.utils.Result;
@@ -68,6 +69,9 @@ public class K8SNamespaceServiceTest {
@Mock
private ClusterMapper clusterMapper;
+ @Mock
+ private K8sClientService k8sClientService;
+
private String namespace = "default";
private Long clusterCode = 100L;
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
index 8a6feab74a..3f7a1ba242 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
@@ -37,6 +37,7 @@ import org.apache.dolphinscheduler.dao.entity.Project;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.entity.WorkflowDefinition;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
+import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
import org.apache.dolphinscheduler.dao.mapper.WorkflowDefinitionMapper;
@@ -81,6 +82,12 @@ public class ProjectServiceTest {
@Mock
private ProjectMapper projectMapper;
+ @Mock
+ private ProjectUserMapper projectUserMapper;
+
+ @Mock
+ private TaskGroupService taskGroupService;
+
@Mock
private WorkflowDefinitionMapper workflowDefinitionMapper;
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionLogServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionLogServiceTest.java
index d1bb66918f..031966a751 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionLogServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionLogServiceTest.java
@@ -22,6 +22,7 @@ import static org.mockito.Mockito.when;
import org.apache.dolphinscheduler.api.service.impl.TaskDefinitionLogServiceImpl;
import org.apache.dolphinscheduler.dao.entity.WorkflowTaskRelationLog;
+import org.apache.dolphinscheduler.dao.repository.TaskDefinitionLogDao;
import org.apache.dolphinscheduler.dao.repository.WorkflowTaskRelationLogDao;
import java.util.Arrays;
@@ -32,6 +33,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
@@ -46,6 +48,9 @@ public class TaskDefinitionLogServiceTest {
@Mock
private WorkflowTaskRelationLogDao workflowTaskRelationLogDao;
+ @Mock
+ private TaskDefinitionLogDao taskDefinitionLogDao;
+
private List<WorkflowTaskRelationLog> getProcessTaskRelationList() {
WorkflowTaskRelationLog processTaskRelationLog1 = new WorkflowTaskRelationLog();
processTaskRelationLog1.setPreTaskCode(0L);
@@ -70,5 +75,6 @@ public class TaskDefinitionLogServiceTest {
when(workflowTaskRelationLogDao.queryByWorkflowDefinitionCode(2L)).thenReturn(getProcessTaskRelationList());
assertDoesNotThrow(() -> taskDefinitionLogService.deleteTaskByWorkflowDefinitionCode(2L));
+ Mockito.verify(taskDefinitionLogDao).deleteByTaskDefinitionCodes(Mockito.anySet());
}
}
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
index 58d301a85e..a972c25678 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
@@ -38,10 +38,12 @@ import org.apache.dolphinscheduler.dao.entity.AlertGroup;
import org.apache.dolphinscheduler.dao.entity.Project;
import org.apache.dolphinscheduler.dao.entity.Tenant;
import org.apache.dolphinscheduler.dao.entity.User;
+import org.apache.dolphinscheduler.dao.mapper.AccessTokenMapper;
import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper;
import org.apache.dolphinscheduler.dao.mapper.DataSourceUserMapper;
import org.apache.dolphinscheduler.dao.mapper.K8sNamespaceUserMapper;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
+import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
@@ -79,9 +81,15 @@ public class UsersServiceTest {
@Mock
private UserMapper userMapper;
+ @Mock
+ private AccessTokenMapper accessTokenMapper;
+
@Mock
private TenantMapper tenantMapper;
+ @Mock
+ private ProjectUserMapper projectUserMapper;
+
@Mock
private AlertGroupMapper alertGroupMapper;
@@ -97,6 +105,9 @@ public class UsersServiceTest {
@Mock
private ResourcePermissionCheckService resourcePermissionCheckService;
+ @Mock
+ private SessionService sessionService;
+
private String queueName = "UsersServiceTestQueue";
private static final Logger serviceLogger = LoggerFactory.getLogger(BaseServiceImpl.class);
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java
index e29860855d..6b674b5044 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java
@@ -40,6 +40,7 @@ import org.apache.dolphinscheduler.api.exceptions.ServiceException;
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
import org.apache.dolphinscheduler.api.service.impl.WorkflowDefinitionServiceImpl;
import org.apache.dolphinscheduler.api.utils.PageInfo;
+import org.apache.dolphinscheduler.api.validator.GlobalParamsValidator;
import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.FailureStrategy;
import org.apache.dolphinscheduler.common.enums.Priority;
@@ -61,12 +62,18 @@ import org.apache.dolphinscheduler.dao.entity.WorkflowDefinition;
import org.apache.dolphinscheduler.dao.entity.WorkflowTaskRelation;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
+import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper;
+import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
+import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
+import org.apache.dolphinscheduler.dao.mapper.WorkflowDefinitionLogMapper;
import org.apache.dolphinscheduler.dao.mapper.WorkflowDefinitionMapper;
+import org.apache.dolphinscheduler.dao.mapper.WorkflowTaskRelationLogMapper;
import org.apache.dolphinscheduler.dao.mapper.WorkflowTaskRelationMapper;
import org.apache.dolphinscheduler.dao.model.PageListingResult;
import org.apache.dolphinscheduler.dao.repository.TaskDefinitionLogDao;
import org.apache.dolphinscheduler.dao.repository.WorkflowDefinitionDao;
+import org.apache.dolphinscheduler.dao.repository.WorkflowDefinitionLogDao;
import org.apache.dolphinscheduler.dao.utils.WorkerGroupUtils;
import org.apache.dolphinscheduler.plugin.task.api.model.ConditionDependentItem;
import org.apache.dolphinscheduler.plugin.task.api.model.ConditionDependentTaskModel;
@@ -140,9 +147,18 @@ public class WorkflowDefinitionServiceTest extends BaseServiceTestTool {
@Mock
private WorkflowDefinitionDao workflowDefinitionDao;
+ @Mock
+ private WorkflowDefinitionLogDao workflowDefinitionLogDao;
+
+ @Mock
+ private WorkflowDefinitionLogMapper workflowDefinitionLogMapper;
+
@Mock
private WorkflowTaskRelationMapper workflowTaskRelationMapper;
+ @Mock
+ private WorkflowTaskRelationLogMapper workflowTaskRelationLogMapper;
+
@Mock
private ProjectMapper projectMapper;
@@ -158,12 +174,33 @@ public class WorkflowDefinitionServiceTest extends BaseServiceTestTool {
@Mock
private ProcessService processService;
+ @Mock
+ private WorkflowInstanceService workflowInstanceService;
+
+ @Mock
+ private TaskInstanceMapper taskInstanceMapper;
+
@Mock
private TaskDefinitionLogDao taskDefinitionLogDao;
+ @Mock
+ private TaskDefinitionLogMapper taskDefinitionLogMapper;
+
+ @Mock
+ private TaskDefinitionService taskDefinitionService;
+
+ @Mock
+ private TaskDefinitionLogService taskDefinitionLogService;
+
+ @Mock
+ private TaskDefinitionMapper taskDefinitionMapper;
+
@Mock
private WorkflowLineageService workflowLineageService;
+ @Mock
+ private GlobalParamsValidator globalParamsValidator;
+
@Mock
private UserMapper userMapper;
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java
index 0df81b32b1..068b2ed15e 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/ClusterServiceTest.java
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.when;
import org.apache.dolphinscheduler.api.dto.ClusterDto;
import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.k8s.K8sManager;
import org.apache.dolphinscheduler.api.utils.PageInfo;
import org.apache.dolphinscheduler.common.enums.UserType;
import org.apache.dolphinscheduler.dao.entity.Cluster;
@@ -63,6 +64,9 @@ public class ClusterServiceTest {
@Mock
private ClusterMapper clusterMapper;
+ @Mock
+ private K8sManager k8sManager;
+
@Mock
private K8sNamespaceMapper k8sNamespaceMapper;
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImplTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImplTest.java
index c6cf2364f3..42a554561f 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImplTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImplTest.java
@@ -162,7 +162,7 @@ class WorkflowLineageServiceImplTest {
.thenReturn(Collections.singletonList(WorkflowDefinition.builder().code(child).version(1).build()));
List<WorkflowDefinition> result =
- workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(root, false);
+ workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(root, false, false);
assertThat(result).extracting(WorkflowDefinition::getCode).containsExactly(child);
}
@@ -201,7 +201,7 @@ class WorkflowLineageServiceImplTest {
.thenReturn(Collections.singletonList(workflowC));
List<WorkflowDefinition> result =
- workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(codeA, true);
+ workflowLineageService.resolveDownstreamWorkflowDefinitionCodes(codeA, true, false);
assertThat(result).extracting(WorkflowDefinition::getCode).containsExactly(codeB, codeC);
}
diff --git a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/metrics/WorkflowInstanceMetrics.java b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/metrics/WorkflowInstanceMetrics.java
index a0b0787d7a..d2cccfbb8a 100644
--- a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/metrics/WorkflowInstanceMetrics.java
+++ b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/metrics/WorkflowInstanceMetrics.java
@@ -122,14 +122,4 @@ public class WorkflowInstanceMetrics {
String.valueOf(workflowDefinitionCode));
}
- public void cleanUpWorkflowInstanceCountMetricsByDefinitionCode(final Long workflowDefinitionCode) {
- for (final String state : workflowInstanceStates) {
- final Counter counter = Metrics.globalRegistry.counter(
- "ds.workflow.instance.count",
- "state", state,
- "workflow.definition.code", String.valueOf(workflowDefinitionCode));
- Metrics.globalRegistry.remove(counter);
- }
- }
-
}
diff --git a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/AbstractMasterIntegrationTestCase.java b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/AbstractMasterIntegrationTestCase.java
index d6fdfb0c80..e5e6bb336d 100644
--- a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/AbstractMasterIntegrationTestCase.java
+++ b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/AbstractMasterIntegrationTestCase.java
@@ -27,10 +27,14 @@ import org.apache.dolphinscheduler.server.master.integration.WorkflowTestCaseCon
import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.AfterEach;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
+import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.Metrics;
+
/**
* The abstract class for master integration test.
* <p> Used to create a text environment to test master server.
@@ -60,4 +64,19 @@ public abstract class AbstractMasterIntegrationTestCase {
@Autowired
protected MasterConfig masterConfig;
+
+ @Autowired
+ private MeterRegistry meterRegistry;
+
+ /**
+ * Unbind this test method's {@link MeterRegistry} from {@link Metrics#globalRegistry}.
+ * <p>
+ * Spring's metrics auto-configuration adds the per-context registry to {@code globalRegistry}
+ * but does not remove it on teardown, so {@code @DirtiesContext} would otherwise leave dangling
+ * child registries that pollute counter reads in later test methods.
+ */
+ @AfterEach
+ public void unbindMeterRegistryFromGlobal() {
+ Metrics.globalRegistry.remove(meterRegistry);
+ }
}
diff --git a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowInstanceMetricsTestCase.java b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowInstanceMetricsTestCase.java
index def08e537d..6423ce9a6b 100644
--- a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowInstanceMetricsTestCase.java
+++ b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowInstanceMetricsTestCase.java
@@ -27,7 +27,6 @@ import org.apache.dolphinscheduler.extract.master.command.RunWorkflowCommandPara
import org.apache.dolphinscheduler.server.master.AbstractMasterIntegrationTestCase;
import org.apache.dolphinscheduler.server.master.integration.WorkflowOperator;
import org.apache.dolphinscheduler.server.master.integration.WorkflowTestCaseContext;
-import org.apache.dolphinscheduler.server.master.metrics.WorkflowInstanceMetrics;
import java.time.Duration;
@@ -46,12 +45,6 @@ public class WorkflowInstanceMetricsTestCase extends AbstractMasterIntegrationTe
final WorkflowTestCaseContext context = workflowTestCaseContextFactory.initializeContextFromYaml(yaml);
final WorkflowDefinition workflow = context.getOneWorkflow();
final long workflowDefinitionCode = workflow.getCode();
- WorkflowInstanceMetrics.cleanUpWorkflowInstanceCountMetricsByDefinitionCode(workflowDefinitionCode);
-
- final double submitBefore = workflowInstanceCount(WorkflowExecutionStatus.SUBMITTED_SUCCESS.name(),
- workflowDefinitionCode);
- final double successBefore = workflowInstanceCount(WorkflowExecutionStatus.SUCCESS.name(),
- workflowDefinitionCode);
final WorkflowOperator.WorkflowTriggerDTO workflowTriggerDTO = WorkflowOperator.WorkflowTriggerDTO.builder()
.workflowDefinition(workflow)
@@ -65,9 +58,9 @@ public class WorkflowInstanceMetricsTestCase extends AbstractMasterIntegrationTe
assertThat(repository.queryWorkflowInstance(workflowInstanceId).getState())
.isEqualTo(WorkflowExecutionStatus.SUCCESS);
assertThat(workflowInstanceCount(WorkflowExecutionStatus.SUBMITTED_SUCCESS.name(),
- workflowDefinitionCode)).isEqualTo(submitBefore + 1.0d);
+ workflowDefinitionCode)).isEqualTo(1.0d);
assertThat(workflowInstanceCount(WorkflowExecutionStatus.SUCCESS.name(), workflowDefinitionCode))
- .isEqualTo(successBefore + 1.0d);
+ .isEqualTo(1.0d);
});
masterContainer.assertAllResourceReleased();
@@ -80,14 +73,6 @@ public class WorkflowInstanceMetricsTestCase extends AbstractMasterIntegrationTe
final WorkflowTestCaseContext context = workflowTestCaseContextFactory.initializeContextFromYaml(yaml);
final WorkflowDefinition workflow = context.getOneWorkflow();
final long workflowDefinitionCode = workflow.getCode();
- WorkflowInstanceMetrics.cleanUpWorkflowInstanceCountMetricsByDefinitionCode(workflowDefinitionCode);
-
- final double submitBefore = workflowInstanceCount(WorkflowExecutionStatus.SUBMITTED_SUCCESS.name(),
- workflowDefinitionCode);
- final double successBefore = workflowInstanceCount(WorkflowExecutionStatus.SUCCESS.name(),
- workflowDefinitionCode);
- final double stopBefore = workflowInstanceCount(WorkflowExecutionStatus.STOP.name(),
- workflowDefinitionCode);
final WorkflowOperator.WorkflowTriggerDTO workflowTriggerDTO = WorkflowOperator.WorkflowTriggerDTO.builder()
.workflowDefinition(workflow)
@@ -108,11 +93,11 @@ public class WorkflowInstanceMetricsTestCase extends AbstractMasterIntegrationTe
assertThat(workflowInstance3.getState()).isEqualTo(WorkflowExecutionStatus.STOP);
assertThat(workflowInstanceCount(WorkflowExecutionStatus.SUBMITTED_SUCCESS.name(),
- workflowDefinitionCode)).isEqualTo(submitBefore + 1.0d);
+ workflowDefinitionCode)).isEqualTo(1.0d);
assertThat(workflowInstanceCount(WorkflowExecutionStatus.SUCCESS.name(), workflowDefinitionCode))
- .isEqualTo(successBefore + 1.0d);
+ .isEqualTo(1.0d);
assertThat(workflowInstanceCount(WorkflowExecutionStatus.STOP.name(), workflowDefinitionCode))
- .isEqualTo(stopBefore + 2.0d);
+ .isEqualTo(2.0d);
});
masterContainer.assertAllResourceReleased();
diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-flink-stream/src/test/java/org/apache/dolphinscheduler/plugin/task/flink/FlinkArgsUtilsTest.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-flink-stream/src/test/java/org/apache/dolphinscheduler/plugin/task/flink/FlinkArgsUtilsTest.java
index 1d116b8b8e..ddfb6eeaf5 100644
--- a/dolphinscheduler-task-plugin/dolphinscheduler-task-flink-stream/src/test/java/org/apache/dolphinscheduler/plugin/task/flink/FlinkArgsUtilsTest.java
+++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-flink-stream/src/test/java/org/apache/dolphinscheduler/plugin/task/flink/FlinkArgsUtilsTest.java
@@ -69,7 +69,7 @@ public class FlinkArgsUtilsTest {
List<String> commandLine = FlinkArgsUtils.buildRunCommandLine(buildTestTaskExecutionContext(), flinkParameters);
Assertions.assertEquals(
- "${FLINK_HOME}/bin/flink run-application -t yarn-application -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -sae -c org.example.Main /opt/job.jar",
+ "${FLINK_HOME}/bin/flink run-application -t yarn-application -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -c org.example.Main /opt/job.jar",
joinStringListWithSpace(commandLine));
}
@@ -81,7 +81,7 @@ public class FlinkArgsUtilsTest {
FlinkArgsUtils.buildRunCommandLine(buildTestTaskExecutionContext(), flinkParameters);
Assertions.assertEquals(
- "${FLINK_HOME}/bin/flink run -m yarn-cluster -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -sae -c org.example.Main /opt/job.jar",
+ "${FLINK_HOME}/bin/flink run -m yarn-cluster -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -c org.example.Main /opt/job.jar",
joinStringListWithSpace(commandLine1));
flinkParameters.setFlinkVersion("<1.10");
@@ -89,7 +89,7 @@ public class FlinkArgsUtilsTest {
FlinkArgsUtils.buildRunCommandLine(buildTestTaskExecutionContext(), flinkParameters);
Assertions.assertEquals(
- "${FLINK_HOME}/bin/flink run -m yarn-cluster -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -sae -c org.example.Main /opt/job.jar",
+ "${FLINK_HOME}/bin/flink run -m yarn-cluster -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -c org.example.Main /opt/job.jar",
joinStringListWithSpace(commandLine2));
flinkParameters.setFlinkVersion(">=1.12");
@@ -97,7 +97,7 @@ public class FlinkArgsUtilsTest {
FlinkArgsUtils.buildRunCommandLine(buildTestTaskExecutionContext(), flinkParameters);
Assertions.assertEquals(
- "${FLINK_HOME}/bin/flink run -t yarn-per-job -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -sae -c org.example.Main /opt/job.jar",
+ "${FLINK_HOME}/bin/flink run -t yarn-per-job -ys 4 -ynm demo-app-name -yjm 1024m -ytm 1024m -p 4 -c org.example.Main /opt/job.jar",
joinStringListWithSpace(commandLine3));
}
@@ -107,7 +107,7 @@ public class FlinkArgsUtilsTest {
List<String> commandLine = FlinkArgsUtils.buildRunCommandLine(buildTestTaskExecutionContext(), flinkParameters);
Assertions.assertEquals(
- "${FLINK_HOME}/bin/flink run -p 4 -sae -c org.example.Main /opt/job.jar",
+ "${FLINK_HOME}/bin/flink run -p 4 -c org.example.Main /opt/job.jar",
joinStringListWithSpace(commandLine));
}