diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java index c9107a4266..0eb176f3aa 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java @@ -22,7 +22,7 @@ public class WorkflowBuilder

{ public WorkflowBuilder

addDependentResource(DependentResource dependentResource) { currentNode = new DependentResourceNode<>(dependentResource); - isCleaner = dependentResource.isDeletable(); + isCleaner = isCleaner || dependentResource.isDeletable(); final var name = currentNode.getName(); dependentResourceNodes.put(name, currentNode); return this; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java index 467820940d..e8b26184c4 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java @@ -22,6 +22,7 @@ public class AbstractWorkflowExecutorTest { protected TestDeleterDependent drDeleter = new TestDeleterDependent("DR_DELETER"); protected TestErrorDependent drError = new TestErrorDependent("ERROR_1"); protected TestErrorDeleterDependent errorDD = new TestErrorDeleterDependent("ERROR_DELETER"); + protected GarbageCollectedDeleter gcDeleter = new GarbageCollectedDeleter("GC_DELETER"); @SuppressWarnings("rawtypes") protected final Condition noMetDeletePostCondition = (primary, secondary, context) -> false; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilderTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilderTest.java new file mode 100644 index 0000000000..9a61931a61 --- /dev/null +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilderTest.java @@ -0,0 +1,27 @@ +package io.javaoperatorsdk.operator.processing.dependent.workflow; + +import org.junit.jupiter.api.Test; + +import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; +import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +class WorkflowBuilderTest { + + @Test + void workflowIsCleanerIfAtLeastOneDRIsCleaner() { + var dr = mock(DependentResource.class); + var deleter = mock(DependentResource.class); + when(deleter.isDeletable()).thenReturn(true); + + var workflow = new WorkflowBuilder() + .addDependentResource(deleter) + .addDependentResource(dr) + .build(); + + assertThat(workflow.hasCleaner()).isTrue(); + } + +}