Skip to content

Commit 566c503

Browse files
committed
operator test
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 4aba900 commit 566c503

File tree

5 files changed

+78
-9
lines changed

5 files changed

+78
-9
lines changed

src/test/java/io/javaoperatorsdk/operator/glue/GlueOperatorTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.ArrayList;
55
import java.util.stream.IntStream;
66

7+
import io.javaoperatorsdk.operator.glue.reconciler.operator.GlueOperatorReconciler;
78
import org.junit.jupiter.api.BeforeEach;
89
import org.junit.jupiter.api.Test;
910

@@ -229,6 +230,40 @@ void secretCopySample() {
229230
});
230231
}
231232

233+
@Test
234+
void operatorWithBulkResource() {
235+
var go = create(TestUtils
236+
.loadGlueOperator("/glueoperator/BulkOperator.yaml"));
237+
238+
var cr = testCustomResource();
239+
cr.getSpec().setReplicas(2);
240+
var createdCR = create(cr);
241+
assertConfigMapsCreated(cr, 2);
242+
243+
createdCR.getSpec().setReplicas(3);
244+
createdCR = update(createdCR);
245+
assertConfigMapsCreated(cr, 3);
246+
247+
createdCR.getSpec().setReplicas(1);
248+
createdCR = update(createdCR);
249+
assertConfigMapsCreated(cr, 1);
250+
251+
delete(createdCR);
252+
assertConfigMapsCreated(cr, 0);
253+
await().untilAsserted(()->{
254+
var actualCR = get(TestCustomResource.class,cr.getMetadata().getName());
255+
assertThat(actualCR).isNull();
256+
});
257+
258+
delete(go);
259+
}
260+
261+
private void assertConfigMapsCreated(TestCustomResource cr, int expected) {
262+
await().untilAsserted(() -> {
263+
var configMaps = getRelatedList(ConfigMap.class, GlueOperatorReconciler.glueName(cr.getMetadata().getName(),cr.getKind()));
264+
assertThat(configMaps).hasSize(expected);
265+
});
266+
}
232267

233268
GlueOperator testWorkflowOperator() {
234269
var wo = new GlueOperator();

src/test/java/io/javaoperatorsdk/operator/glue/GlueTest.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ void simpleBulk() {
373373
var glue = createGlue("/glue/" + "SimpleBulk.yaml");
374374

375375
await().untilAsserted(() -> {
376-
var configMaps = getRelatedConfigMaps(glue.getMetadata().getName());
376+
var configMaps = getRelatedList(ConfigMap.class, glue.getMetadata().getName());
377377
assertThat(configMaps).hasSize(3);
378378
assertThat(configMaps)
379379
.allMatch(cm -> cm.getMetadata().getName().startsWith("simple-glue-configmap-"));
@@ -382,16 +382,10 @@ void simpleBulk() {
382382
delete(glue);
383383

384384
await().untilAsserted(
385-
() -> assertThat(getRelatedConfigMaps(glue.getMetadata().getName())).isEmpty());
385+
() -> assertThat(getRelatedList(ConfigMap.class, glue.getMetadata().getName()).isEmpty()));
386386
}
387387

388-
List<ConfigMap> getRelatedConfigMaps(String ownerName) {
389-
return list(ConfigMap.class).stream()
390-
.filter(cm -> !cm.getMetadata().getOwnerReferences().isEmpty()
391-
&& cm.getMetadata().getOwnerReferences()
392-
.get(0).getName().equals(ownerName))
393-
.toList();
394-
}
388+
395389

396390
private List<Glue> testWorkflowList(int num) {
397391
List<Glue> res = new ArrayList<>();

src/test/java/io/javaoperatorsdk/operator/glue/TestBase.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,14 @@ protected <T extends HasMetadata> List<T> list(Class<T> clazz) {
7575
return client.resources(clazz).inNamespace(testNamespace).list().getItems();
7676
}
7777

78+
protected <T extends HasMetadata> List<T> getRelatedList(Class<T> clazz, String ownerName) {
79+
return list(clazz).stream()
80+
.filter(cm -> !cm.getMetadata().getOwnerReferences().isEmpty()
81+
&& cm.getMetadata().getOwnerReferences()
82+
.get(0).getName().equals(ownerName))
83+
.toList();
84+
}
85+
7886
protected <T extends HasMetadata> T update(T resource) {
7987
resource.getMetadata().setResourceVersion(null);
8088
return client.resource(resource).inNamespace(testNamespace).update();

src/test/java/io/javaoperatorsdk/operator/glue/customresource/TestCustomResourceSpec.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public class TestCustomResourceSpec {
66

77
private String value;
88

9+
private Integer replicas;
10+
911
private List<String> listValues;
1012

1113
public String getValue() {
@@ -25,4 +27,13 @@ public TestCustomResourceSpec setListValues(List<String> listValues) {
2527
this.listValues = listValues;
2628
return this;
2729
}
30+
31+
32+
public Integer getReplicas() {
33+
return replicas;
34+
}
35+
36+
public void setReplicas(Integer replicas) {
37+
this.replicas = replicas;
38+
}
2839
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: io.javaoperatorsdk.operator.glue/v1beta1
2+
kind: GlueOperator
3+
metadata:
4+
name: templating-sample
5+
spec:
6+
parent:
7+
apiVersion: io.javaoperatorsdk.operator.glue/v1
8+
kind: TestCustomResource
9+
childResources:
10+
- name: configMap1
11+
bulk: true
12+
resourceTemplate: |
13+
items:
14+
{#for i in parent.spec.replicas}
15+
- apiVersion: v1
16+
kind: ConfigMap
17+
metadata:
18+
name: {parent.metadata.name}-{i}
19+
data:
20+
key: "value{i}"
21+
{/for}

0 commit comments

Comments
 (0)