Skip to content

Commit 5d2b773

Browse files
author
attila.meszaros
committed
- improve tests , docs
1 parent a2dadba commit 5d2b773

File tree

5 files changed

+20
-4
lines changed

5 files changed

+20
-4
lines changed

operator-framework/src/main/java/com/github/containersolutions/operator/processing/EventDispatcher.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ public void handleEvent(CustomResourceEvent event) {
3939
return;
4040
}
4141
Context context = new DefaultContext(new RetryInfo(event.getRetryCount(), event.getRetryExecution().isLastExecution()));
42-
/* Its interesting problem if we should call delete if received event after object is marked for deletion
43-
but finalizer is not on the object. Since it can happen that there are multiple finalizers, also other events after
44-
we called delete and remove finalizers already. Delete should be also idempotent, we call it now. */
4542
if (markedForDeletion(resource) && !ControllerUtils.hasDefaultFinalizer(resource, resourceDefaultFinalizer)) {
4643
return;
4744
}

operator-framework/src/test/java/com/github/containersolutions/operator/EventSchedulerTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ public void eventsAreNotExecutedConcurrentlyForSameResource() throws Interrupted
8080
public void generationAwareSchedulingSkipsEventsWithoutIncreasedGeneration() {
8181
normalDispatcherExecution();
8282
CustomResource resource1 = sampleResource();
83+
addFinalizer(resource1);
8384
CustomResource resource2 = sampleResource();
85+
addFinalizer(resource2);
8486
resource2.getMetadata().setResourceVersion("2");
8587

8688
eventScheduler.eventReceived(Watcher.Action.MODIFIED, resource1);
@@ -93,6 +95,13 @@ public void generationAwareSchedulingSkipsEventsWithoutIncreasedGeneration() {
9395

9496
}
9597

98+
private void addFinalizer(CustomResource resource) {
99+
if (resource.getMetadata().getFinalizers() == null) {
100+
resource.getMetadata().setFinalizers(new ArrayList<>());
101+
}
102+
resource.getMetadata().getFinalizers().add(Controller.DEFAULT_FINALIZER);
103+
}
104+
96105
@Test
97106
public void notGenerationAwareSchedulingProcessesAllEventsRegardlessOfGeneration() {
98107
generationUnAwareScheduler();

operator-framework/src/test/java/com/github/containersolutions/operator/SubResourceUpdateIT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ public void updatesSubResourceStatus() {
4444
});
4545
}
4646

47+
/**
48+
* Note that we check on controller impl if there is finalizer on execution.
49+
* */
4750
@Test
4851
public void ifNoFinalizerPresentFirstAddsTheFinalizerThenExecutesControllerAgain() {
4952
initAndCleanup();
@@ -56,7 +59,7 @@ public void ifNoFinalizerPresentFirstAddsTheFinalizerThenExecutesControllerAgain
5659
// wait for sure, there are no more events
5760
waitXms(200);
5861
// there is no event on status update processed
59-
assertThat(integrationTestSupport.numberOfControllerExecutions()).isEqualTo(2);
62+
assertThat(integrationTestSupport.numberOfControllerExecutions()).isEqualTo(1);
6063
});
6164
}
6265

operator-framework/src/test/java/com/github/containersolutions/operator/sample/TestCustomResourceController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ public boolean deleteResource(TestCustomResource resource, Context<TestCustomRes
5151
public UpdateControl<TestCustomResource> createOrUpdateResource(TestCustomResource resource,
5252
Context<TestCustomResource> context) {
5353
numberOfExecutions.addAndGet(1);
54+
if (!resource.getMetadata().getFinalizers().contains(Controller.DEFAULT_FINALIZER)) {
55+
throw new IllegalStateException("Finalizer is not present.");
56+
}
57+
5458
ConfigMap existingConfigMap = kubernetesClient
5559
.configMaps().inNamespace(resource.getMetadata().getNamespace())
5660
.withName(resource.getSpec().getConfigMapName()).get();

operator-framework/src/test/java/com/github/containersolutions/operator/sample/subresource/SubResourceTestCustomResourceController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public boolean deleteResource(SubResourceTestCustomResource resource, Context<Su
2929
public UpdateControl<SubResourceTestCustomResource> createOrUpdateResource(SubResourceTestCustomResource resource,
3030
Context<SubResourceTestCustomResource> context) {
3131
numberOfExecutions.addAndGet(1);
32+
if (!resource.getMetadata().getFinalizers().contains(Controller.DEFAULT_FINALIZER)) {
33+
throw new IllegalStateException("Finalizer is not present.");
34+
}
3235
log.info("Value: " + resource.getSpec().getValue());
3336

3437
ensureStatusExists(resource);

0 commit comments

Comments
 (0)