Skip to content

Commit bf1fda2

Browse files
committed
tests
1 parent 423f3b5 commit bf1fda2

File tree

5 files changed

+74
-13
lines changed

5 files changed

+74
-13
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ public Controller(Reconciler<P> reconciler,
6464
this.metrics = Optional.ofNullable(ConfigurationServiceProvider.instance().getMetrics())
6565
.orElse(Metrics.NOOP);
6666
contextInitializer = reconciler instanceof ContextInitializer;
67-
eventSourceManager = new EventSourceManager<>(this);
6867
isCleaner = reconciler instanceof Cleaner;
6968
managedWorkflow =
7069
ManagedWorkflow.workflowFor(kubernetesClient, configuration.getDependentResources());
70+
eventSourceManager = new EventSourceManager<>(this);
7171
}
7272

7373
@Override

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceEventSource.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ public ControllerResourceEventSource(Controller<T> controller) {
3636
super(controller.getCRClient(), controller.getConfiguration());
3737
this.controller = controller;
3838

39-
BiPredicate<T, T> internalOnUpdateFilter = onUpdateFinalizerNeededAndApplied(controller)
40-
.or(onUpdateGenerationAware(controller.getConfiguration().isGenerationAware()))
41-
.or(onUpdateMarkedForDeletion());
39+
BiPredicate<T, T> internalOnUpdateFilter =
40+
(BiPredicate<T, T>) onUpdateFinalizerNeededAndApplied(controller.useFinalizer(),
41+
controller.getConfiguration().getFinalizerName())
42+
.or(onUpdateGenerationAware(controller.getConfiguration().isGenerationAware()))
43+
.or(onUpdateMarkedForDeletion());
4244

4345
legacyFilters = controller.getConfiguration().getEventFilter();
4446

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/InternalEventFilters.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
import java.util.function.BiPredicate;
44

55
import io.fabric8.kubernetes.api.model.HasMetadata;
6-
import io.javaoperatorsdk.operator.processing.Controller;
76

87
public class InternalEventFilters {
98

10-
// todo unit tests
9+
private InternalEventFilters() {}
1110

1211
static <T extends HasMetadata> BiPredicate<T, T> onUpdateMarkedForDeletion() {
1312
return (newResource, oldResource) -> newResource.isMarkedForDeletion();
@@ -26,12 +25,12 @@ static <T extends HasMetadata> BiPredicate<T, T> onUpdateGenerationAware(
2625
}
2726

2827
static <T extends HasMetadata> BiPredicate<T, T> onUpdateFinalizerNeededAndApplied(
29-
Controller<T> controller) {
28+
boolean useFinalizer,
29+
String finalizerName) {
3030
return (newResource, oldResource) -> {
31-
if (controller.useFinalizer()) {
32-
final var finalizer = controller.getConfiguration().getFinalizerName();
33-
boolean oldFinalizer = oldResource.hasFinalizer(finalizer);
34-
boolean newFinalizer = newResource.hasFinalizer(finalizer);
31+
if (useFinalizer) {
32+
boolean oldFinalizer = oldResource.hasFinalizer(finalizerName);
33+
boolean newFinalizer = newResource.hasFinalizer(finalizerName);
3534
// accepts event if old did not have finalizer, since it was just added, so the event needs
3635
// to
3736
// be published.
@@ -41,5 +40,4 @@ static <T extends HasMetadata> BiPredicate<T, T> onUpdateFinalizerNeededAndAppli
4140
}
4241
};
4342
}
44-
4543
}

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/TestUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,9 @@ public static TestCustomResource testCustomResource(ResourceID id) {
4949
return resource;
5050
}
5151

52-
public static void markForDeletion(HasMetadata customResource) {
52+
public static <T extends HasMetadata> T markForDeletion(T customResource) {
5353
customResource.getMetadata().setDeletionTimestamp("2019-8-10");
54+
return customResource;
5455
}
5556

5657
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package io.javaoperatorsdk.operator.processing.event.source.controller;
2+
3+
import java.util.List;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
import io.javaoperatorsdk.operator.TestUtils;
8+
9+
import static io.javaoperatorsdk.operator.TestUtils.markForDeletion;
10+
import static org.assertj.core.api.Assertions.assertThat;
11+
import static org.junit.jupiter.api.Assertions.*;
12+
13+
class InternalEventFiltersTest {
14+
15+
public static final String FINALIZER = "finalizer";
16+
17+
@Test
18+
void onUpdateMarkedForDeletion() {
19+
var res = markForDeletion(TestUtils.testCustomResource());
20+
assertThat(InternalEventFilters.onUpdateMarkedForDeletion().test(res, res)).isTrue();
21+
}
22+
23+
@Test
24+
void generationAware() {
25+
var res = TestUtils.testCustomResource1();
26+
var res2 = TestUtils.testCustomResource1();
27+
res2.getMetadata().setGeneration(2L);
28+
29+
assertThat(InternalEventFilters.onUpdateGenerationAware(true).test(res2, res)).isTrue();
30+
assertThat(InternalEventFilters.onUpdateGenerationAware(true).test(res, res)).isFalse();
31+
assertThat(InternalEventFilters.onUpdateGenerationAware(false).test(res, res)).isTrue();
32+
}
33+
34+
@Test
35+
void finalizerCheckedIfConfigured() {
36+
assertThat(InternalEventFilters.onUpdateFinalizerNeededAndApplied(true, FINALIZER)
37+
.test(TestUtils.testCustomResource1(), TestUtils.testCustomResource1())).isTrue();
38+
39+
var res = TestUtils.testCustomResource1();
40+
res.getMetadata().setFinalizers(List.of(FINALIZER));
41+
42+
assertThat(InternalEventFilters.onUpdateFinalizerNeededAndApplied(true, FINALIZER)
43+
.test(res, res)).isFalse();
44+
}
45+
46+
@Test
47+
void acceptsIfFinalizerWasJustAdded() {
48+
var res = TestUtils.testCustomResource1();
49+
res.getMetadata().setFinalizers(List.of(FINALIZER));
50+
51+
assertThat(InternalEventFilters.onUpdateFinalizerNeededAndApplied(true, "finalizer")
52+
.test(res, TestUtils.testCustomResource1())).isTrue();
53+
}
54+
55+
@Test
56+
void dontAcceptIfFinalizerNotUsed() {
57+
assertThat(InternalEventFilters.onUpdateFinalizerNeededAndApplied(false, FINALIZER)
58+
.test(TestUtils.testCustomResource1(), TestUtils.testCustomResource1())).isFalse();
59+
}
60+
}

0 commit comments

Comments
 (0)