Skip to content

Commit c1bdd27

Browse files
authored
test: Cleanup reschedule IT (#1808)
1 parent b6425b4 commit c1bdd27

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

operator-framework/src/test/java/io/javaoperatorsdk/operator/CleanerForReconcilerIT.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ class CleanerForReconcilerIT {
2323

2424
@Test
2525
void addsFinalizerAndCallsCleanupIfCleanerImplemented() {
26+
CleanerForReconcilerTestReconciler reconciler =
27+
operator.getReconcilerOfType(CleanerForReconcilerTestReconciler.class);
28+
reconciler.setReScheduleCleanup(false);
29+
2630
var testResource = createTestResource();
2731
operator.create(testResource);
2832

@@ -34,12 +38,32 @@ void addsFinalizerAndCallsCleanupIfCleanerImplemented() {
3438
await().until(
3539
() -> operator.get(CleanerForReconcilerCustomResource.class, TEST_RESOURCE_NAME) == null);
3640

37-
CleanerForReconcilerTestReconciler reconciler =
38-
(CleanerForReconcilerTestReconciler) operator.getFirstReconciler();
3941
assertThat(reconciler.getNumberOfExecutions()).isEqualTo(1);
4042
assertThat(reconciler.getNumberOfCleanupExecutions()).isEqualTo(1);
4143
}
4244

45+
@Test
46+
void reSchedulesCleanupIfInstructed() {
47+
CleanerForReconcilerTestReconciler reconciler =
48+
operator.getReconcilerOfType(CleanerForReconcilerTestReconciler.class);
49+
reconciler.setReScheduleCleanup(true);
50+
51+
var testResource = createTestResource();
52+
operator.create(testResource);
53+
54+
await().until(() -> !operator.get(CleanerForReconcilerCustomResource.class, TEST_RESOURCE_NAME)
55+
.getMetadata().getFinalizers().isEmpty());
56+
57+
operator.delete(testResource);
58+
59+
await().untilAsserted(
60+
() -> assertThat(reconciler.getNumberOfCleanupExecutions()).isGreaterThan(5));
61+
62+
reconciler.setReScheduleCleanup(false);
63+
await().until(
64+
() -> operator.get(CleanerForReconcilerCustomResource.class, TEST_RESOURCE_NAME) == null);
65+
}
66+
4367
private CleanerForReconcilerCustomResource createTestResource() {
4468
CleanerForReconcilerCustomResource cr = new CleanerForReconcilerCustomResource();
4569
cr.setMetadata(new ObjectMeta());

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/cleanerforreconciler/CleanerForReconcilerTestReconciler.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ public class CleanerForReconcilerTestReconciler
1111
Cleaner<CleanerForReconcilerCustomResource>,
1212
TestExecutionInfoProvider {
1313

14+
public static final int RESCHEDULE_DELAY = 150;
1415
private final AtomicInteger numberOfExecutions = new AtomicInteger(0);
1516
private final AtomicInteger numberOfCleanupExecutions = new AtomicInteger(0);
1617

18+
private volatile boolean reScheduleCleanup = false;
19+
1720
@Override
1821
public UpdateControl<CleanerForReconcilerCustomResource> reconcile(
1922
CleanerForReconcilerCustomResource resource,
@@ -33,7 +36,17 @@ public int getNumberOfCleanupExecutions() {
3336
@Override
3437
public DeleteControl cleanup(CleanerForReconcilerCustomResource resource,
3538
Context<CleanerForReconcilerCustomResource> context) {
36-
numberOfCleanupExecutions.addAndGet(1);
37-
return DeleteControl.defaultDelete();
39+
if (reScheduleCleanup) {
40+
numberOfCleanupExecutions.addAndGet(1);
41+
return DeleteControl.noFinalizerRemoval().rescheduleAfter(RESCHEDULE_DELAY);
42+
} else {
43+
numberOfCleanupExecutions.addAndGet(1);
44+
return DeleteControl.defaultDelete();
45+
}
46+
}
47+
48+
public CleanerForReconcilerTestReconciler setReScheduleCleanup(boolean reScheduleCleanup) {
49+
this.reScheduleCleanup = reScheduleCleanup;
50+
return this;
3851
}
3952
}

0 commit comments

Comments
 (0)