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