Skip to content

Commit ae57d10

Browse files
committed
refactor: introduce AbstractMultipleDependentResourceIT
1 parent a69ea1f commit ae57d10

File tree

2 files changed

+67
-54
lines changed

2 files changed

+67
-54
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
import java.time.Duration;
4+
import java.util.stream.IntStream;
5+
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.extension.RegisterExtension;
8+
9+
import io.fabric8.kubernetes.api.model.ConfigMap;
10+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
11+
import io.javaoperatorsdk.operator.junit.LocalOperatorExtension;
12+
import io.javaoperatorsdk.operator.sample.AbstractExecutionNumberRecordingReconciler;
13+
import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceConfigMap;
14+
import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceCustomResource;
15+
import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceReconciler;
16+
17+
import static org.assertj.core.api.Assertions.assertThat;
18+
import static org.awaitility.Awaitility.await;
19+
20+
public abstract class AbstractMultipleDependentResourceIT<ReconcilerClass extends AbstractExecutionNumberRecordingReconciler<MultipleDependentResourceCustomResource>> {
21+
22+
public static final String TEST_RESOURCE_NAME = "multipledependentresource-testresource";
23+
@RegisterExtension
24+
LocalOperatorExtension operator =
25+
LocalOperatorExtension.builder().withReconciler(getReconcilerClass())
26+
.waitForNamespaceDeletion(true)
27+
.build();
28+
29+
protected abstract Class<ReconcilerClass> getReconcilerClass();
30+
31+
@Test
32+
void twoConfigMapsHaveBeenCreated() {
33+
var customResource = createTestCustomResource();
34+
operator.create(MultipleDependentResourceCustomResource.class, customResource);
35+
36+
var reconciler = operator.getReconcilerOfType(getReconcilerClass());
37+
38+
await().pollDelay(Duration.ofMillis(300))
39+
.until(() -> reconciler.getNumberOfExecutions() <= 1);
40+
41+
IntStream.of(MultipleDependentResourceReconciler.FIRST_CONFIG_MAP_ID,
42+
MultipleDependentResourceReconciler.SECOND_CONFIG_MAP_ID).forEach(configMapId -> {
43+
ConfigMap configMap =
44+
operator.get(ConfigMap.class, customResource.getConfigMapName(configMapId));
45+
assertThat(configMap).isNotNull();
46+
assertThat(configMap.getMetadata().getName())
47+
.isEqualTo(customResource.getConfigMapName(configMapId));
48+
assertThat(configMap.getData().get(MultipleDependentResourceConfigMap.DATA_KEY))
49+
.isEqualTo(String.valueOf(configMapId));
50+
});
51+
}
52+
53+
public MultipleDependentResourceCustomResource createTestCustomResource() {
54+
var resource = new MultipleDependentResourceCustomResource();
55+
resource.setMetadata(
56+
new ObjectMetaBuilder()
57+
.withName(TEST_RESOURCE_NAME)
58+
.withNamespace(operator.getNamespace())
59+
.build());
60+
return resource;
61+
}
62+
}
Lines changed: 5 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,12 @@
11
package io.javaoperatorsdk.operator;
22

3-
import java.time.Duration;
4-
import java.util.stream.IntStream;
5-
6-
import org.junit.jupiter.api.Test;
7-
import org.junit.jupiter.api.extension.RegisterExtension;
8-
9-
import io.fabric8.kubernetes.api.model.ConfigMap;
10-
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
11-
import io.javaoperatorsdk.operator.junit.LocalOperatorExtension;
12-
import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceConfigMap;
13-
import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceCustomResource;
143
import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceReconciler;
154

16-
import static org.assertj.core.api.Assertions.assertThat;
17-
import static org.awaitility.Awaitility.await;
18-
19-
class MultipleDependentResourceIT {
20-
21-
public static final String TEST_RESOURCE_NAME = "multipledependentresource-testresource";
22-
@RegisterExtension
23-
LocalOperatorExtension operator =
24-
LocalOperatorExtension.builder().withReconciler(MultipleDependentResourceReconciler.class)
25-
.waitForNamespaceDeletion(true)
26-
.build();
27-
28-
@Test
29-
void twoConfigMapsHaveBeenCreated() {
30-
MultipleDependentResourceCustomResource customResource = createTestCustomResource();
31-
operator.create(MultipleDependentResourceCustomResource.class, customResource);
5+
class MultipleDependentResourceIT
6+
extends AbstractMultipleDependentResourceIT<MultipleDependentResourceReconciler> {
327

33-
var reconciler = operator.getReconcilerOfType(MultipleDependentResourceReconciler.class);
34-
35-
await().pollDelay(Duration.ofMillis(300))
36-
.until(() -> reconciler.getNumberOfExecutions() <= 1);
37-
38-
IntStream.of(MultipleDependentResourceReconciler.FIRST_CONFIG_MAP_ID,
39-
MultipleDependentResourceReconciler.SECOND_CONFIG_MAP_ID).forEach(configMapId -> {
40-
ConfigMap configMap =
41-
operator.get(ConfigMap.class, customResource.getConfigMapName(configMapId));
42-
assertThat(configMap).isNotNull();
43-
assertThat(configMap.getMetadata().getName())
44-
.isEqualTo(customResource.getConfigMapName(configMapId));
45-
assertThat(configMap.getData().get(MultipleDependentResourceConfigMap.DATA_KEY))
46-
.isEqualTo(String.valueOf(configMapId));
47-
});
8+
@Override
9+
protected Class<MultipleDependentResourceReconciler> getReconcilerClass() {
10+
return MultipleDependentResourceReconciler.class;
4811
}
49-
50-
public MultipleDependentResourceCustomResource createTestCustomResource() {
51-
MultipleDependentResourceCustomResource resource =
52-
new MultipleDependentResourceCustomResource();
53-
resource.setMetadata(
54-
new ObjectMetaBuilder()
55-
.withName(TEST_RESOURCE_NAME)
56-
.withNamespace(operator.getNamespace())
57-
.build());
58-
return resource;
59-
}
60-
6112
}

0 commit comments

Comments
 (0)