|
1 | 1 | package io.javaoperatorsdk.operator;
|
2 | 2 |
|
3 | 3 | import java.time.Duration;
|
4 |
| -import java.util.stream.IntStream; |
5 | 4 |
|
6 | 5 | import org.junit.jupiter.api.Test;
|
7 | 6 | import org.junit.jupiter.api.extension.RegisterExtension;
|
8 | 7 |
|
9 | 8 | import io.fabric8.kubernetes.api.model.ConfigMap;
|
10 | 9 | import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
|
11 | 10 | import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
|
12 |
| -import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceConfigMap; |
13 | 11 | import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceCustomResource;
|
14 | 12 | import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceReconciler;
|
| 13 | +import io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceSpec; |
| 14 | +import io.javaoperatorsdk.operator.sample.multipledrsametypenodiscriminator.*; |
15 | 15 |
|
| 16 | +import static io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceConfigMap.DATA_KEY; |
| 17 | +import static io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceConfigMap.getConfigMapName; |
| 18 | +import static io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceReconciler.FIRST_CONFIG_MAP_ID; |
| 19 | +import static io.javaoperatorsdk.operator.sample.multipledependentresource.MultipleDependentResourceReconciler.SECOND_CONFIG_MAP_ID; |
16 | 20 | import static org.assertj.core.api.Assertions.assertThat;
|
17 | 21 | import static org.awaitility.Awaitility.await;
|
18 | 22 |
|
19 |
| -class MultipleDependentResourceIT { |
| 23 | +public class MultipleDependentResourceIT { |
| 24 | + |
| 25 | + public static final String CHANGED_VALUE = "changed value"; |
| 26 | + public static final String INITIAL_VALUE = "initial value"; |
20 | 27 |
|
21 |
| - public static final String TEST_RESOURCE_NAME = "multipledependentresource-testresource"; |
22 | 28 | @RegisterExtension
|
23 |
| - LocallyRunOperatorExtension operator = |
| 29 | + LocallyRunOperatorExtension extension = |
24 | 30 | LocallyRunOperatorExtension.builder()
|
25 |
| - .withReconciler(MultipleDependentResourceReconciler.class) |
26 |
| - .waitForNamespaceDeletion(true) |
| 31 | + .withReconciler(new MultipleDependentResourceReconciler()) |
27 | 32 | .build();
|
28 | 33 |
|
29 | 34 | @Test
|
30 |
| - void twoConfigMapsHaveBeenCreated() { |
31 |
| - MultipleDependentResourceCustomResource customResource = createTestCustomResource(); |
32 |
| - operator.create(customResource); |
33 |
| - |
34 |
| - var reconciler = operator.getReconcilerOfType(MultipleDependentResourceReconciler.class); |
35 |
| - |
36 |
| - await().pollDelay(Duration.ofMillis(300)) |
37 |
| - .until(() -> reconciler.getNumberOfExecutions() <= 1); |
38 |
| - |
39 |
| - IntStream.of(MultipleDependentResourceReconciler.FIRST_CONFIG_MAP_ID, |
40 |
| - MultipleDependentResourceReconciler.SECOND_CONFIG_MAP_ID).forEach(configMapId -> { |
41 |
| - ConfigMap configMap = |
42 |
| - operator.get(ConfigMap.class, customResource.getConfigMapName(configMapId)); |
43 |
| - assertThat(configMap).isNotNull(); |
44 |
| - assertThat(configMap.getMetadata().getName()) |
45 |
| - .isEqualTo(customResource.getConfigMapName(configMapId)); |
46 |
| - assertThat(configMap.getData().get(MultipleDependentResourceConfigMap.DATA_KEY)) |
47 |
| - .isEqualTo(String.valueOf(configMapId)); |
48 |
| - }); |
49 |
| - } |
| 35 | + void handlesCRUDOperations() { |
| 36 | + var res = extension.create(testResource()); |
| 37 | + |
| 38 | + await().untilAsserted(() -> { |
| 39 | + var cm1 = extension.get(ConfigMap.class, getConfigMapName(FIRST_CONFIG_MAP_ID)); |
| 40 | + var cm2 = extension.get(ConfigMap.class, getConfigMapName(SECOND_CONFIG_MAP_ID)); |
| 41 | + |
| 42 | + assertThat(cm1).isNotNull(); |
| 43 | + assertThat(cm2).isNotNull(); |
| 44 | + assertThat(cm1.getData()).containsEntry(DATA_KEY, INITIAL_VALUE); |
| 45 | + assertThat(cm2.getData()).containsEntry(DATA_KEY, INITIAL_VALUE); |
| 46 | + }); |
| 47 | + |
| 48 | + res.getSpec().setValue(CHANGED_VALUE); |
| 49 | + res = extension.replace(res); |
| 50 | + |
| 51 | + await().untilAsserted(() -> { |
| 52 | + var cm1 = extension.get(ConfigMap.class, getConfigMapName(FIRST_CONFIG_MAP_ID)); |
| 53 | + var cm2 = extension.get(ConfigMap.class, getConfigMapName(SECOND_CONFIG_MAP_ID)); |
50 | 54 |
|
51 |
| - public MultipleDependentResourceCustomResource createTestCustomResource() { |
52 |
| - MultipleDependentResourceCustomResource resource = |
53 |
| - new MultipleDependentResourceCustomResource(); |
54 |
| - resource.setMetadata( |
55 |
| - new ObjectMetaBuilder() |
56 |
| - .withName(TEST_RESOURCE_NAME) |
57 |
| - .withNamespace(operator.getNamespace()) |
58 |
| - .build()); |
59 |
| - return resource; |
| 55 | + assertThat(cm1.getData()).containsEntry(DATA_KEY, CHANGED_VALUE); |
| 56 | + assertThat(cm2.getData()).containsEntry(DATA_KEY, CHANGED_VALUE); |
| 57 | + }); |
| 58 | + |
| 59 | + extension.delete(res); |
| 60 | + |
| 61 | + await().timeout(Duration.ofSeconds(120)).untilAsserted(() -> { |
| 62 | + var cm1 = extension.get(ConfigMap.class, getConfigMapName(FIRST_CONFIG_MAP_ID)); |
| 63 | + var cm2 = extension.get(ConfigMap.class, getConfigMapName(SECOND_CONFIG_MAP_ID)); |
| 64 | + |
| 65 | + assertThat(cm1).isNull(); |
| 66 | + assertThat(cm2).isNull(); |
| 67 | + }); |
60 | 68 | }
|
61 | 69 |
|
| 70 | + MultipleDependentResourceCustomResource testResource() { |
| 71 | + var res = new MultipleDependentResourceCustomResource(); |
| 72 | + res.setMetadata(new ObjectMetaBuilder() |
| 73 | + .withName("test1") |
| 74 | + .build()); |
| 75 | + res.setSpec(new MultipleDependentResourceSpec()); |
| 76 | + res.getSpec().setValue(INITIAL_VALUE); |
| 77 | + |
| 78 | + return res; |
| 79 | + } |
62 | 80 | }
|
0 commit comments