Skip to content

Commit 0fed7d2

Browse files
committed
improved test
1 parent 7e40be3 commit 0fed7d2

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,38 @@
1313

1414
class PerResourcePollingEventSourceIT {
1515

16+
public static final String NAME_1 = "name1";
17+
public static final String NAME_2 = "name2";
18+
1619
@RegisterExtension
1720
LocallyRunOperatorExtension operator =
1821
LocallyRunOperatorExtension.builder()
1922
.withReconciler(new PerResourcePollingEventSourceTestReconciler())
2023
.build();
2124

25+
/**
26+
* This is kinda some test to verify that the implementation of PerResourcePollingEventSource
27+
* works with the underling mechanisms in event source manager and other parts of the system.
28+
**/
2229
@Test
23-
void managedDependentsAreReconciledInOrder() {
24-
operator.create(PerResourceEventSourceCustomResource.class, resource());
30+
void fetchedAndReconciledMultipleTimes() {
31+
operator.create(PerResourceEventSourceCustomResource.class, resource(NAME_1));
32+
operator.create(PerResourceEventSourceCustomResource.class, resource(NAME_2));
2533

2634
var reconciler =
2735
operator.getReconcilerOfType(PerResourcePollingEventSourceTestReconciler.class);
2836
await().untilAsserted(() -> {
29-
assertThat(reconciler.getNumberOfExecutions()).isGreaterThan(2);
30-
assertThat(reconciler.getNumberOfFetchExecution()).isGreaterThan(2);
37+
assertThat(reconciler.getNumberOfExecutions(NAME_1)).isGreaterThan(2);
38+
assertThat(reconciler.getNumberOfFetchExecution(NAME_1)).isGreaterThan(2);
39+
assertThat(reconciler.getNumberOfExecutions(NAME_2)).isGreaterThan(2);
40+
assertThat(reconciler.getNumberOfFetchExecution(NAME_2)).isGreaterThan(2);
3141
});
3242
}
3343

34-
private PerResourceEventSourceCustomResource resource() {
44+
private PerResourceEventSourceCustomResource resource(String name) {
3545
var res = new PerResourceEventSourceCustomResource();
3646
res.setMetadata(new ObjectMetaBuilder()
37-
.withName("test1")
47+
.withName(name)
3848
.build());
3949
return res;
4050
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/perresourceeventsource/PerResourcePollingEventSourceTestReconciler.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.Map;
44
import java.util.Set;
55
import java.util.UUID;
6-
import java.util.concurrent.atomic.AtomicInteger;
6+
import java.util.concurrent.ConcurrentHashMap;
77

88
import io.fabric8.kubernetes.client.KubernetesClient;
99
import io.javaoperatorsdk.operator.api.reconciler.*;
@@ -18,8 +18,8 @@ public class PerResourcePollingEventSourceTestReconciler
1818
KubernetesClientAware {
1919

2020
public static final int POLL_PERIOD = 100;
21-
private final AtomicInteger numberOfExecutions = new AtomicInteger(0);
22-
private final AtomicInteger numberOfFetchExecutions = new AtomicInteger(0);
21+
private final Map<String, Integer> numberOfExecutions = new ConcurrentHashMap<>();
22+
private final Map<String, Integer> numberOfFetchExecutions = new ConcurrentHashMap<>();
2323

2424
private KubernetesClient client;
2525
private PerResourcePollingEventSource<String, PerResourceEventSourceCustomResource> eventSource;
@@ -28,16 +28,18 @@ public class PerResourcePollingEventSourceTestReconciler
2828
public UpdateControl<PerResourceEventSourceCustomResource> reconcile(
2929
PerResourceEventSourceCustomResource resource,
3030
Context<PerResourceEventSourceCustomResource> context) throws Exception {
31-
numberOfExecutions.addAndGet(1);
31+
numberOfExecutions.putIfAbsent(resource.getMetadata().getName(), 0);
32+
numberOfExecutions.compute(resource.getMetadata().getName(), (s, v) -> v + 1);
3233
return UpdateControl.noUpdate();
3334
}
3435

3536
@Override
3637
public Map<String, EventSource> prepareEventSources(
3738
EventSourceContext<PerResourceEventSourceCustomResource> context) {
3839
this.eventSource =
39-
new PerResourcePollingEventSource<>(primaryResource -> {
40-
numberOfFetchExecutions.addAndGet(1);
40+
new PerResourcePollingEventSource<>(resource -> {
41+
numberOfFetchExecutions.putIfAbsent(resource.getMetadata().getName(), 0);
42+
numberOfFetchExecutions.compute(resource.getMetadata().getName(), (s, v) -> v + 1);
4143
return Set.of(UUID.randomUUID().toString());
4244
},
4345
context.getPrimaryCache(), POLL_PERIOD, String.class);
@@ -54,12 +56,12 @@ public void setKubernetesClient(KubernetesClient kubernetesClient) {
5456
this.client = kubernetesClient;
5557
}
5658

57-
public int getNumberOfExecutions() {
58-
return numberOfExecutions.get();
59+
public int getNumberOfExecutions(String name) {
60+
return numberOfExecutions.get(name);
5961
}
6062

61-
public int getNumberOfFetchExecution() {
62-
return numberOfFetchExecutions.get();
63+
public int getNumberOfFetchExecution(String name) {
64+
return numberOfFetchExecutions.get(name);
6365
}
6466

6567
}

0 commit comments

Comments
 (0)