Skip to content

Commit 714f42c

Browse files
csvirimetacosm
authored andcommitted
additionl IT
1 parent da8541e commit 714f42c

8 files changed

+112
-16
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
import org.junit.jupiter.api.extension.RegisterExtension;
4+
5+
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
6+
import io.javaoperatorsdk.operator.sample.bulkdependent.ManagedDeleterBulkReconciler;
7+
8+
public class BulkDependentDeleterIT extends BulkDependentTestBase {
9+
10+
@RegisterExtension
11+
LocallyRunOperatorExtension extension =
12+
LocallyRunOperatorExtension.builder().withReconciler(new ManagedDeleterBulkReconciler())
13+
.build();
14+
15+
@Override
16+
LocallyRunOperatorExtension extension() {
17+
return extension;
18+
}
19+
}

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

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,19 @@
88
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
99
import io.javaoperatorsdk.operator.sample.bulkdependent.BulkDependentTestCustomResource;
1010
import io.javaoperatorsdk.operator.sample.bulkdependent.BulkDependentTestSpec;
11+
import io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapDeleterBulkDependentResource;
1112

12-
import static io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapBulkDependentResource.LABEL_KEY;
13-
import static io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapBulkDependentResource.LABEL_VALUE;
13+
import static io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapDeleterBulkDependentResource.LABEL_KEY;
14+
import static io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapDeleterBulkDependentResource.LABEL_VALUE;
1415
import static org.assertj.core.api.Assertions.assertThat;
1516
import static org.awaitility.Awaitility.await;
1617

1718
public abstract class BulkDependentTestBase {
1819

1920
public static final String TEST_RESOURCE_NAME = "test";
2021
public static final int INITIAL_NUMBER_OF_CONFIG_MAPS = 3;
22+
public static final String INITIAL_ADDITIONAL_DATA = "initialData";
23+
public static final String NEW_VERSION_OF_ADDITIONAL_DATA = "newVersionOfAdditionalData";
2124

2225
@Test
2326
public void managesBulkConfigMaps() {
@@ -34,6 +37,16 @@ public void managesBulkConfigMaps() {
3437
assertNumberOfConfigMaps(0);
3538
}
3639

40+
@Test
41+
public void updatesData() {
42+
extension().create(testResource());
43+
assertNumberOfConfigMaps(3);
44+
assertAdditionalDataOnConfigMaps(INITIAL_ADDITIONAL_DATA);
45+
46+
updateSpecWithNewAdditionalData(NEW_VERSION_OF_ADDITIONAL_DATA);
47+
assertAdditionalDataOnConfigMaps(NEW_VERSION_OF_ADDITIONAL_DATA);
48+
}
49+
3750
private void assertNumberOfConfigMaps(int n) {
3851
// this test was failing with a lower timeout on GitHub, probably the garbage collection was
3952
// slower there.
@@ -48,15 +61,35 @@ private void assertNumberOfConfigMaps(int n) {
4861
});
4962
}
5063

64+
private void assertAdditionalDataOnConfigMaps(String expectedValue) {
65+
await().atMost(Duration.ofSeconds(30))
66+
.untilAsserted(() -> {
67+
var cms =
68+
extension().getKubernetesClient().configMaps().inNamespace(extension().getNamespace())
69+
.withLabel(LABEL_KEY, LABEL_VALUE)
70+
.list().getItems();
71+
cms.forEach(cm -> {
72+
assertThat(cm.getData().get(ConfigMapDeleterBulkDependentResource.ADDITIONAL_DATA_KEY))
73+
.isEqualTo(expectedValue);
74+
});
75+
});
76+
}
77+
5178
private BulkDependentTestCustomResource testResource() {
5279
BulkDependentTestCustomResource cr = new BulkDependentTestCustomResource();
5380
cr.setMetadata(new ObjectMeta());
5481
cr.getMetadata().setName(TEST_RESOURCE_NAME);
5582
cr.setSpec(new BulkDependentTestSpec());
5683
cr.getSpec().setNumberOfResources(INITIAL_NUMBER_OF_CONFIG_MAPS);
84+
cr.getSpec().setAdditionalData(INITIAL_ADDITIONAL_DATA);
5785
return cr;
5886
}
5987

88+
private void updateSpecWithNewAdditionalData(String data) {
89+
var resource = testResource();
90+
resource.getSpec().setAdditionalData(data);
91+
extension().replace(resource);
92+
}
6093

6194
private void updateSpecWithNumber(int n) {
6295
var resource = testResource();

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/BulkDependentTestSpec.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
public class BulkDependentTestSpec {
44

55
private Integer numberOfResources;
6+
private String additionalData;
67

78
public Integer getNumberOfResources() {
89
return numberOfResources;
@@ -12,4 +13,13 @@ public BulkDependentTestSpec setNumberOfResources(Integer numberOfResources) {
1213
this.numberOfResources = numberOfResources;
1314
return this;
1415
}
16+
17+
public BulkDependentTestSpec setAdditionalData(String additionalData) {
18+
this.additionalData = additionalData;
19+
return this;
20+
}
21+
22+
public String getAdditionalData() {
23+
return additionalData;
24+
}
1525
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.javaoperatorsdk.operator.sample.bulkdependent;
2+
3+
import io.javaoperatorsdk.operator.api.reconciler.dependent.GarbageCollected;
4+
5+
public class CRUDConfigMapBulkDependentResource extends ConfigMapDeleterBulkDependentResource
6+
implements GarbageCollected<BulkDependentTestCustomResource> {
7+
}
Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,31 @@
44
import java.util.Optional;
55
import java.util.stream.Collectors;
66

7-
import org.slf4j.Logger;
8-
import org.slf4j.LoggerFactory;
9-
107
import io.fabric8.kubernetes.api.model.ConfigMap;
118
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
129
import io.javaoperatorsdk.operator.api.reconciler.Context;
10+
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
1311
import io.javaoperatorsdk.operator.processing.dependent.BulkDependentResource;
1412
import io.javaoperatorsdk.operator.processing.dependent.BulkResourceDiscriminatorFactory;
13+
import io.javaoperatorsdk.operator.processing.dependent.Creator;
14+
import io.javaoperatorsdk.operator.processing.dependent.Updater;
1515
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
16+
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource;
1617

17-
public class ConfigMapBulkDependentResource
18-
extends CRUDKubernetesDependentResource<ConfigMap, BulkDependentTestCustomResource>
19-
implements BulkDependentResource<ConfigMap, BulkDependentTestCustomResource> {
20-
21-
private final static Logger log = LoggerFactory.getLogger(ConfigMapBulkDependentResource.class);
18+
/**
19+
* Not using CRUDKubernetesDependentResource so the delete functionality can be tested.
20+
*/
21+
public class ConfigMapDeleterBulkDependentResource
22+
extends
23+
KubernetesDependentResource<ConfigMap, BulkDependentTestCustomResource>
24+
implements Creator<ConfigMap, BulkDependentTestCustomResource>,
25+
Updater<ConfigMap, BulkDependentTestCustomResource>,
26+
Deleter<BulkDependentTestCustomResource>,
27+
BulkDependentResource<ConfigMap, BulkDependentTestCustomResource> {
2228

2329
public static final String LABEL_KEY = "bulk";
2430
public static final String LABEL_VALUE = "true";
31+
public static final String ADDITIONAL_DATA_KEY = "additionalData";
2532
private BulkResourceDiscriminatorFactory<ConfigMap, BulkDependentTestCustomResource> factory =
2633
index -> (resource, primary, context) -> {
2734
var resources = context.getSecondaryResources(resource).stream()
@@ -36,7 +43,7 @@ public class ConfigMapBulkDependentResource
3643
}
3744
};
3845

39-
public ConfigMapBulkDependentResource() {
46+
public ConfigMapDeleterBulkDependentResource() {
4047
super(ConfigMap.class);
4148
}
4249

@@ -49,7 +56,8 @@ public ConfigMap desired(BulkDependentTestCustomResource primary,
4956
.withNamespace(primary.getMetadata().getNamespace())
5057
.withLabels(Map.of(LABEL_KEY, LABEL_VALUE))
5158
.build());
52-
configMap.setData(Map.of("number", "" + index));
59+
configMap.setData(
60+
Map.of("number", "" + index, ADDITIONAL_DATA_KEY, primary.getSpec().getAdditionalData()));
5361
return configMap;
5462
}
5563

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/ManagedBulkDependentReconciler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
99
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
1010

11-
@ControllerConfiguration(dependents = @Dependent(type = ConfigMapBulkDependentResource.class))
11+
@ControllerConfiguration(dependents = @Dependent(type = CRUDConfigMapBulkDependentResource.class))
1212
public class ManagedBulkDependentReconciler
1313
implements Reconciler<BulkDependentTestCustomResource> {
1414

@@ -20,7 +20,6 @@ public UpdateControl<BulkDependentTestCustomResource> reconcile(
2020
Context<BulkDependentTestCustomResource> context) throws Exception {
2121

2222
numberOfExecutions.addAndGet(1);
23-
2423
return UpdateControl.noUpdate();
2524
}
2625
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.javaoperatorsdk.operator.sample.bulkdependent;
2+
3+
import io.javaoperatorsdk.operator.api.reconciler.Context;
4+
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
5+
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
6+
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
7+
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
8+
9+
@ControllerConfiguration(
10+
dependents = @Dependent(type = ConfigMapDeleterBulkDependentResource.class))
11+
public class ManagedDeleterBulkReconciler implements Reconciler<BulkDependentTestCustomResource> {
12+
@Override
13+
public UpdateControl<BulkDependentTestCustomResource> reconcile(
14+
BulkDependentTestCustomResource resource,
15+
Context<BulkDependentTestCustomResource> context)
16+
throws Exception {
17+
18+
return UpdateControl.noUpdate();
19+
}
20+
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/StandaloneBulkDependentReconciler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ public class StandaloneBulkDependentReconciler
1616

1717
private final AtomicInteger numberOfExecutions = new AtomicInteger(0);
1818

19-
private ConfigMapBulkDependentResource dependent;
19+
private ConfigMapDeleterBulkDependentResource dependent;
2020
private KubernetesClient kubernetesClient;
2121

2222
public StandaloneBulkDependentReconciler() {
23-
dependent = new ConfigMapBulkDependentResource();
23+
dependent = new CRUDConfigMapBulkDependentResource();
2424
}
2525

2626
@Override

0 commit comments

Comments
 (0)