Skip to content

Commit 9e7453d

Browse files
committed
tests
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 461f0f2 commit 9e7453d

File tree

5 files changed

+67
-21
lines changed

5 files changed

+67
-21
lines changed

flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/deployment/ApplicationReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ public void deploy(
190190
status.getJobStatus().setState(org.apache.flink.api.common.JobStatus.RECONCILING);
191191
status.setJobManagerDeploymentStatus(JobManagerDeploymentStatus.DEPLOYING);
192192

193-
IngressUtils.updateIngressRules(ctx, spec, deployConfig, ctx.getKubernetesClient());
193+
IngressUtils.reconcileIngress(ctx, spec, deployConfig, ctx.getKubernetesClient());
194194
}
195195

196196
private void setJobIdIfNecessary(

flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/deployment/SessionReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void deploy(
106106
setOwnerReference(cr, deployConfig);
107107
ctx.getFlinkService().submitSessionCluster(deployConfig);
108108
cr.getStatus().setJobManagerDeploymentStatus(JobManagerDeploymentStatus.DEPLOYING);
109-
IngressUtils.updateIngressRules(ctx, spec, deployConfig, ctx.getKubernetesClient());
109+
IngressUtils.reconcileIngress(ctx, spec, deployConfig, ctx.getKubernetesClient());
110110
}
111111

112112
@Override

flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/IngressUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class IngressUtils {
6969

7070
private static final Logger LOG = LoggerFactory.getLogger(IngressUtils.class);
7171

72-
public static void updateIngressRules(
72+
public static void reconcileIngress(
7373
FlinkResourceContext<?> ctx,
7474
FlinkDeploymentSpec spec,
7575
Configuration effectiveConfig,

flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/utils/IngressUtilsTest.java

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import io.fabric8.kubernetes.api.model.networking.v1.Ingress;
3131
import io.fabric8.kubernetes.api.model.networking.v1.IngressRule;
3232
import io.fabric8.kubernetes.api.model.networking.v1.IngressTLS;
33+
import io.fabric8.kubernetes.api.model.networking.v1beta1.IngressBuilder;
3334
import io.fabric8.kubernetes.client.KubernetesClient;
3435
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
3536
import org.apache.commons.lang3.StringUtils;
@@ -40,6 +41,7 @@
4041
import java.util.List;
4142
import java.util.Map;
4243

44+
import static org.assertj.core.api.Assertions.assertThat;
4345
import static org.junit.jupiter.api.Assertions.assertEquals;
4446
import static org.junit.jupiter.api.Assertions.assertNull;
4547
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -51,10 +53,11 @@ class IngressUtilsTest {
5153

5254
KubernetesClient client;
5355

56+
TestingJosdkContext testingJosdkContext;
57+
5458
private FlinkResourceContext<?> createResourceContext(FlinkDeployment appCluster) {
55-
// todo
56-
return new FlinkDeploymentContext(
57-
appCluster, new TestingJosdkContext<>(client, Map.of()), null, null, null, null);
59+
testingJosdkContext = new TestingJosdkContext<>(client);
60+
return new FlinkDeploymentContext(appCluster, testingJosdkContext, null, null, null, null);
5861
}
5962

6063
@Test
@@ -65,7 +68,7 @@ void testIngress() {
6568
.getDeployConfig(appCluster.getMetadata(), appCluster.getSpec());
6669

6770
// no ingress when ingressDomain is empty
68-
IngressUtils.updateIngressRules(
71+
IngressUtils.reconcileIngress(
6972
createResourceContext(appCluster), appCluster.getSpec(), config, client);
7073
if (IngressUtils.ingressInNetworkingV1(client)) {
7174
assertNull(
@@ -89,7 +92,7 @@ void testIngress() {
8992
IngressSpec.IngressSpecBuilder builder = IngressSpec.builder();
9093
builder.template("{{name}}.{{namespace}}.example.com");
9194
appCluster.getSpec().setIngress(builder.build());
92-
IngressUtils.updateIngressRules(
95+
IngressUtils.reconcileIngress(
9396
createResourceContext(appCluster), appCluster.getSpec(), config, client);
9497
Ingress ingress = null;
9598
io.fabric8.kubernetes.api.model.networking.v1beta1.Ingress ingressV1beta1 = null;
@@ -138,7 +141,7 @@ void testIngress() {
138141
builder.className("nginx");
139142
builder.annotations(Map.of("nginx.ingress.kubernetes.io/rewrite-target", "/$2"));
140143
appCluster.getSpec().setIngress(builder.build());
141-
IngressUtils.updateIngressRules(
144+
IngressUtils.reconcileIngress(
142145
createResourceContext(appCluster), appCluster.getSpec(), config, client);
143146
if (IngressUtils.ingressInNetworkingV1(client)) {
144147
ingress =
@@ -195,7 +198,7 @@ void testIngress() {
195198
builder.template("example.com/{{namespace}}/{{name}}(/|$)(.*)");
196199
builder.className("nginx");
197200
appCluster.getSpec().setIngress(builder.build());
198-
IngressUtils.updateIngressRules(
201+
IngressUtils.reconcileIngress(
199202
createResourceContext(appCluster), appCluster.getSpec(), config, client);
200203
if (IngressUtils.ingressInNetworkingV1(client)) {
201204
ingress =
@@ -279,7 +282,7 @@ public void testIngressTls() {
279282
builder.template("{{name}}.{{namespace}}.example.com");
280283
builder.tls(new ArrayList<>());
281284
appCluster.getSpec().setIngress(builder.build());
282-
IngressUtils.updateIngressRules(
285+
IngressUtils.reconcileIngress(
283286
createResourceContext(appCluster), appCluster.getSpec(), config, client);
284287
Ingress ingress = null;
285288
io.fabric8.kubernetes.api.model.networking.v1beta1.Ingress ingressV1beta1 = null;
@@ -316,7 +319,7 @@ public void testIngressTls() {
316319
ingressTlsSpecSecretOnly.setSecretName("secret");
317320
builder.tls(List.of(ingressTlsSpecSecretOnly));
318321
appCluster.getSpec().setIngress(builder.build());
319-
IngressUtils.updateIngressRules(
322+
IngressUtils.reconcileIngress(
320323
createResourceContext(appCluster), appCluster.getSpec(), config, client);
321324
if (IngressUtils.ingressInNetworkingV1(client)) {
322325
ingress =
@@ -354,7 +357,7 @@ public void testIngressTls() {
354357
ingressTlsSpecHostsOnly.setHosts(List.of("example.com"));
355358
builder.tls(List.of(ingressTlsSpecHostsOnly));
356359
appCluster.getSpec().setIngress(builder.build());
357-
IngressUtils.updateIngressRules(
360+
IngressUtils.reconcileIngress(
358361
createResourceContext(appCluster), appCluster.getSpec(), config, client);
359362
if (IngressUtils.ingressInNetworkingV1(client)) {
360363
ingress =
@@ -392,7 +395,7 @@ public void testIngressTls() {
392395
new IngressTLS(List.of("example.com"), "secret");
393396
builder.tls(List.of(ingressTlsSpecSingleTLSWithHost));
394397
appCluster.getSpec().setIngress(builder.build());
395-
IngressUtils.updateIngressRules(
398+
IngressUtils.reconcileIngress(
396399
createResourceContext(appCluster), appCluster.getSpec(), config, client);
397400
if (IngressUtils.ingressInNetworkingV1(client)) {
398401
ingress =
@@ -434,7 +437,7 @@ public void testIngressTls() {
434437
new IngressTLS(List.of("example.com", "example2.com"), "secret");
435438
builder.tls(List.of(ingressTlsSpecSingleTLSWithHosts));
436439
appCluster.getSpec().setIngress(builder.build());
437-
IngressUtils.updateIngressRules(
440+
IngressUtils.reconcileIngress(
438441
createResourceContext(appCluster), appCluster.getSpec(), config, client);
439442
if (IngressUtils.ingressInNetworkingV1(client)) {
440443
ingress =
@@ -481,7 +484,7 @@ public void testIngressTls() {
481484
builder.tls(
482485
List.of(ingressTlsSpecMultipleTLSWithHosts1, ingressTlsSpecMultipleTLSWithHosts2));
483486
appCluster.getSpec().setIngress(builder.build());
484-
IngressUtils.updateIngressRules(
487+
IngressUtils.reconcileIngress(
485488
createResourceContext(appCluster), appCluster.getSpec(), config, client);
486489
if (IngressUtils.ingressInNetworkingV1(client)) {
487490
ingress =
@@ -527,4 +530,34 @@ public void testIngressTls() {
527530
assertEquals("example4.com", tlsV1beta1.get(1).getHosts().get(1));
528531
}
529532
}
533+
534+
@Test
535+
void testDeletesIngress() {
536+
FlinkDeployment appCluster = TestUtils.buildApplicationCluster();
537+
appCluster.getSpec().setIngress(null);
538+
io.fabric8.kubernetes.api.model.networking.v1beta1.Ingress ingress =
539+
new IngressBuilder()
540+
.withNewMetadata()
541+
.withName(appCluster.getMetadata().getName())
542+
.withNamespace(appCluster.getMetadata().getNamespace())
543+
.endMetadata()
544+
.build();
545+
client.network().v1beta1().ingresses().resource(ingress).create();
546+
var context = createResourceContext(appCluster);
547+
testingJosdkContext.setSecondaryResources(
548+
Map.of(
549+
io.fabric8.kubernetes.api.model.networking.v1beta1.Ingress.class,
550+
List.of(ingress)));
551+
552+
IngressUtils.reconcileIngress(context, appCluster.getSpec(), null, client);
553+
554+
var ingressV1beta1 =
555+
client.network()
556+
.v1beta1()
557+
.ingresses()
558+
.inNamespace(appCluster.getMetadata().getNamespace())
559+
.withName(appCluster.getMetadata().getName())
560+
.get();
561+
assertThat(ingressV1beta1).isNull();
562+
}
530563
}

flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/utils/TestingJosdkContext.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@
2626
import io.javaoperatorsdk.operator.api.reconciler.RetryInfo;
2727
import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedWorkflowAndDependentResourceContext;
2828
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
29+
import lombok.Setter;
2930

31+
import java.util.HashSet;
3032
import java.util.List;
3133
import java.util.Map;
3234
import java.util.Optional;
3335
import java.util.Set;
36+
import java.util.concurrent.ConcurrentHashMap;
3437
import java.util.concurrent.ExecutorService;
3538

3639
/**
@@ -40,11 +43,21 @@
4043
*/
4144
public class TestingJosdkContext<P extends HasMetadata> implements Context<P> {
4245

43-
private final KubernetesClient kubernetesClient;
44-
private final Map<Class<?>, List<Object>> secondaryResources;
46+
@Setter private KubernetesClient kubernetesClient;
47+
48+
@Setter
49+
private Map<Class<? extends HasMetadata>, List<? extends HasMetadata>> secondaryResources =
50+
new ConcurrentHashMap<>();
51+
52+
public TestingJosdkContext() {}
53+
54+
public TestingJosdkContext(KubernetesClient kubernetesClient) {
55+
this.kubernetesClient = kubernetesClient;
56+
}
4557

4658
public TestingJosdkContext(
47-
KubernetesClient kubernetesClient, Map<Class<?>, List<Object>> secondaryResources) {
59+
KubernetesClient kubernetesClient,
60+
Map<Class<? extends HasMetadata>, List<? extends HasMetadata>> secondaryResources) {
4861
this.kubernetesClient = kubernetesClient;
4962
this.secondaryResources = secondaryResources;
5063
}
@@ -60,7 +73,7 @@ public <R> Set<R> getSecondaryResources(Class<R> expectedType) {
6073
if (res == null) {
6174
return Set.of();
6275
}
63-
return (Set<R>) Set.of(res);
76+
return (Set<R>) new HashSet<>(res);
6477
}
6578

6679
@Override
@@ -92,7 +105,7 @@ public EventSourceRetriever<P> eventSourceRetriever() {
92105

93106
@Override
94107
public KubernetesClient getClient() {
95-
return null;
108+
return kubernetesClient;
96109
}
97110

98111
@Override

0 commit comments

Comments
 (0)