Skip to content

Commit 1253093

Browse files
committed
ITs
Signed-off-by: Attila Mészáros <csviri@gmail.com>
1 parent 04f1bad commit 1253093

File tree

5 files changed

+127
-48
lines changed

5 files changed

+127
-48
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
4+
import io.javaoperatorsdk.operator.sample.patchresourcewithssa.PatchResourceAndStatusWithSSAReconciler;
5+
6+
public class PatchResourceAndStatusWithSSAIT extends PatchWithSSAITBase {
7+
8+
@Override
9+
protected Reconciler<?> reconciler() {
10+
return new PatchResourceAndStatusWithSSAReconciler();
11+
}
12+
13+
}
Lines changed: 5 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,15 @@
11
package io.javaoperatorsdk.operator;
22

3-
import org.junit.jupiter.api.Test;
4-
import org.junit.jupiter.api.extension.RegisterExtension;
53

6-
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
7-
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
8-
import io.javaoperatorsdk.operator.sample.patchresourcewithssa.PatchResourceWithSSACustomResource;
4+
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
95
import io.javaoperatorsdk.operator.sample.patchresourcewithssa.PatchResourceWithSSAReconciler;
10-
import io.javaoperatorsdk.operator.sample.patchresourcewithssa.PatchResourceWithSSASpec;
116

12-
import static org.assertj.core.api.Assertions.assertThat;
13-
import static org.awaitility.Awaitility.await;
147

15-
public class PatchResourceWithSSAIT {
8+
public class PatchResourceWithSSAIT extends PatchWithSSAITBase {
169

17-
public static final String RESOURCE_NAME = "test1";
18-
public static final String INIT_VALUE = "init value";
19-
20-
@RegisterExtension
21-
LocallyRunOperatorExtension extension =
22-
LocallyRunOperatorExtension.builder()
23-
.withReconciler(new PatchResourceWithSSAReconciler())
24-
.build();
25-
26-
@Test
27-
void reconcilerPatchesResourceWithSSA() {
28-
extension.create(testResource());
29-
30-
await().untilAsserted(() -> {
31-
var actualResource = extension.get(PatchResourceWithSSACustomResource.class, RESOURCE_NAME);
32-
33-
assertThat(actualResource.getSpec().getInitValue()).isEqualTo(INIT_VALUE);
34-
assertThat(actualResource.getSpec().getControllerManagedValue())
35-
.isEqualTo(PatchResourceWithSSAReconciler.ADDED_VALUE);
36-
// finalizer is added to the SSA patch in the background by the framework
37-
assertThat(actualResource.getMetadata().getFinalizers()).isNotEmpty();
38-
assertThat(actualResource.getStatus().isSuccessfullyReconciled()).isTrue();
39-
});
10+
@Override
11+
protected Reconciler<?> reconciler() {
12+
return new PatchResourceWithSSAReconciler();
4013
}
4114

42-
PatchResourceWithSSACustomResource testResource() {
43-
var res = new PatchResourceWithSSACustomResource();
44-
res.setMetadata(new ObjectMetaBuilder()
45-
.withName(RESOURCE_NAME)
46-
.build());
47-
res.setSpec(new PatchResourceWithSSASpec());
48-
res.getSpec().setInitValue(INIT_VALUE);
49-
return res;
50-
}
5115
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.extension.RegisterExtension;
5+
6+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
7+
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
8+
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
9+
import io.javaoperatorsdk.operator.sample.patchresourcewithssa.PatchResourceWithSSACustomResource;
10+
import io.javaoperatorsdk.operator.sample.patchresourcewithssa.PatchResourceWithSSAReconciler;
11+
import io.javaoperatorsdk.operator.sample.patchresourcewithssa.PatchResourceWithSSASpec;
12+
13+
import static org.assertj.core.api.Assertions.assertThat;
14+
import static org.awaitility.Awaitility.await;
15+
16+
public abstract class PatchWithSSAITBase {
17+
18+
public static final String RESOURCE_NAME = "test1";
19+
public static final String INIT_VALUE = "init value";
20+
21+
@RegisterExtension
22+
LocallyRunOperatorExtension extension =
23+
LocallyRunOperatorExtension.builder()
24+
.withReconciler(reconciler())
25+
.build();
26+
27+
@Test
28+
void reconcilerPatchesResourceWithSSA() {
29+
extension.create(testResource());
30+
31+
await().untilAsserted(() -> {
32+
var actualResource = extension.get(PatchResourceWithSSACustomResource.class, RESOURCE_NAME);
33+
34+
assertThat(actualResource.getSpec().getInitValue()).isEqualTo(INIT_VALUE);
35+
assertThat(actualResource.getSpec().getControllerManagedValue())
36+
.isEqualTo(PatchResourceWithSSAReconciler.ADDED_VALUE);
37+
// finalizer is added to the SSA patch in the background by the framework
38+
assertThat(actualResource.getMetadata().getFinalizers()).isNotEmpty();
39+
assertThat(actualResource.getStatus().isSuccessfullyReconciled()).isTrue();
40+
// one for resource, one for subresource
41+
assertThat(actualResource.getMetadata().getManagedFields().stream()
42+
.filter(mf -> mf.getManager()
43+
.equals(reconciler().getClass().getSimpleName().toLowerCase()))
44+
.toList()).hasSize(2);
45+
});
46+
}
47+
48+
protected abstract Reconciler<?> reconciler();
49+
50+
PatchResourceWithSSACustomResource testResource() {
51+
var res = new PatchResourceWithSSACustomResource();
52+
res.setMetadata(new ObjectMetaBuilder()
53+
.withName(RESOURCE_NAME)
54+
.build());
55+
res.setSpec(new PatchResourceWithSSASpec());
56+
res.getSpec().setInitValue(INIT_VALUE);
57+
return res;
58+
}
59+
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.slf4j.Logger;
77
import org.slf4j.LoggerFactory;
88

9+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
910
import io.javaoperatorsdk.operator.api.reconciler.Context;
1011
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
1112
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
@@ -28,13 +29,18 @@ public UpdateControl<DoubleUpdateTestCustomResource> reconcile(
2829
numberOfExecutions.addAndGet(1);
2930

3031
log.info("Value: " + resource.getSpec().getValue());
31-
32-
resource.getMetadata().setAnnotations(new HashMap<>());
33-
resource.getMetadata().getAnnotations().put(TEST_ANNOTATION, TEST_ANNOTATION_VALUE);
34-
ensureStatusExists(resource);
35-
resource.getStatus().setState(DoubleUpdateTestCustomResourceStatus.State.SUCCESS);
36-
37-
return UpdateControl.patchResourceAndStatus(resource);
32+
DoubleUpdateTestCustomResource res = new DoubleUpdateTestCustomResource();
33+
res.setMetadata(new ObjectMetaBuilder()
34+
.withName(resource.getMetadata().getName())
35+
.withNamespace(resource.getMetadata().getNamespace())
36+
.build());
37+
38+
res.getMetadata().setAnnotations(new HashMap<>());
39+
res.getMetadata().getAnnotations().put(TEST_ANNOTATION, TEST_ANNOTATION_VALUE);
40+
ensureStatusExists(res);
41+
res.getStatus().setState(DoubleUpdateTestCustomResourceStatus.State.SUCCESS);
42+
43+
return UpdateControl.patchResourceAndStatus(res);
3844
}
3945

4046
private void ensureStatusExists(DoubleUpdateTestCustomResource resource) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package io.javaoperatorsdk.operator.sample.patchresourcewithssa;
2+
3+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
4+
import io.javaoperatorsdk.operator.api.reconciler.*;
5+
6+
@ControllerConfiguration
7+
public class PatchResourceAndStatusWithSSAReconciler
8+
implements Reconciler<PatchResourceWithSSACustomResource>,
9+
Cleaner<PatchResourceWithSSACustomResource> {
10+
11+
public static final String ADDED_VALUE = "Added Value";
12+
13+
@Override
14+
public UpdateControl<PatchResourceWithSSACustomResource> reconcile(
15+
PatchResourceWithSSACustomResource resource,
16+
Context<PatchResourceWithSSACustomResource> context) {
17+
18+
var res = new PatchResourceWithSSACustomResource();
19+
res.setMetadata(new ObjectMetaBuilder()
20+
.withName(resource.getMetadata().getName())
21+
.withNamespace(resource.getMetadata().getNamespace())
22+
.build());
23+
24+
res.setSpec(new PatchResourceWithSSASpec());
25+
res.getSpec().setControllerManagedValue(ADDED_VALUE);
26+
res.setStatus(new PatchResourceWithSSAStatus());
27+
res.getStatus().setSuccessfullyReconciled(true);
28+
29+
return UpdateControl.patchResourceAndStatus(res);
30+
}
31+
32+
@Override
33+
public DeleteControl cleanup(PatchResourceWithSSACustomResource resource,
34+
Context<PatchResourceWithSSACustomResource> context) {
35+
return DeleteControl.defaultDelete();
36+
}
37+
}

0 commit comments

Comments
 (0)