You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by gy...@apache.org on 2022/06/27 10:34:08 UTC
[flink-kubernetes-operator] 01/03: [hotfix] Add Ingress lifecycle test
This is an automated email from the ASF dual-hosted git repository.
gyfora pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-kubernetes-operator.git
commit a8226e76fed5ace4434c81e3147eff7f0b4e3e0c
Author: Matyas Orhidi <ma...@apple.com>
AuthorDate: Tue Jun 21 15:00:41 2022 +0200
[hotfix] Add Ingress lifecycle test
---
.../controller/FlinkDeploymentControllerTest.java | 71 ++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/controller/FlinkDeploymentControllerTest.java b/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/controller/FlinkDeploymentControllerTest.java
index 22ec612..482ba76 100644
--- a/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/controller/FlinkDeploymentControllerTest.java
+++ b/flink-kubernetes-operator/src/test/java/org/apache/flink/kubernetes/operator/controller/FlinkDeploymentControllerTest.java
@@ -27,6 +27,7 @@ import org.apache.flink.kubernetes.operator.config.FlinkConfigManager;
import org.apache.flink.kubernetes.operator.crd.FlinkDeployment;
import org.apache.flink.kubernetes.operator.crd.spec.FlinkDeploymentSpec;
import org.apache.flink.kubernetes.operator.crd.spec.FlinkVersion;
+import org.apache.flink.kubernetes.operator.crd.spec.IngressSpec;
import org.apache.flink.kubernetes.operator.crd.spec.JobState;
import org.apache.flink.kubernetes.operator.crd.spec.UpgradeMode;
import org.apache.flink.kubernetes.operator.crd.status.JobManagerDeploymentStatus;
@@ -35,14 +36,18 @@ import org.apache.flink.kubernetes.operator.crd.status.ReconciliationStatus;
import org.apache.flink.kubernetes.operator.crd.status.TaskManagerInfo;
import org.apache.flink.kubernetes.operator.exception.DeploymentFailedException;
import org.apache.flink.kubernetes.operator.reconciler.ReconciliationUtils;
+import org.apache.flink.kubernetes.operator.utils.IngressUtils;
import org.apache.flink.runtime.client.JobStatusMessage;
import io.fabric8.kubernetes.api.model.EventBuilder;
+import io.fabric8.kubernetes.api.model.networking.v1.Ingress;
+import io.fabric8.kubernetes.api.model.networking.v1.IngressRule;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
import io.javaoperatorsdk.operator.api.reconciler.Context;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
@@ -693,6 +698,72 @@ public class FlinkDeploymentControllerTest {
assertNotNull(deleteControl);
}
+ @Test
+ public void testIngressLifeCycle() throws Exception {
+ FlinkDeployment appNoIngress = TestUtils.buildApplicationCluster();
+ testController.reconcile(appNoIngress, context);
+ // deploy without ingress
+ assertNull(
+ kubernetesClient
+ .network()
+ .v1()
+ .ingresses()
+ .inNamespace(appNoIngress.getMetadata().getNamespace())
+ .withName(appNoIngress.getMetadata().getName())
+ .get());
+
+ // deploy with ingress
+ FlinkDeployment appWithIngress = TestUtils.buildApplicationCluster();
+ IngressSpec.IngressSpecBuilder builder = IngressSpec.builder();
+ builder.template("{{name}}.{{namespace}}.example.com");
+ IngressSpec ingressSpec = builder.build();
+ appWithIngress.getSpec().setIngress(ingressSpec);
+ testController.reconcile(appWithIngress, context);
+ testController.reconcile(appWithIngress, context);
+ Ingress ingress =
+ kubernetesClient
+ .network()
+ .v1()
+ .ingresses()
+ .inNamespace(appWithIngress.getMetadata().getNamespace())
+ .withName(appWithIngress.getMetadata().getName())
+ .get();
+ Assertions.assertNotNull(ingress);
+ IngressRule ingressRule = ingress.getSpec().getRules().stream().findFirst().get();
+ Assertions.assertEquals(
+ ingressRule.getHost(),
+ IngressUtils.getIngressUrl(
+ "{{name}}.{{namespace}}.example.com",
+ appWithIngress.getMetadata().getName(),
+ appWithIngress.getMetadata().getNamespace())
+ .getHost());
+
+ // upgrade with new ingress
+ builder.template("http://{{name}}.{{namespace}}.foo.bar");
+ ingressSpec = builder.build();
+ appWithIngress.getSpec().setIngress(ingressSpec);
+ testController.reconcile(appWithIngress, context);
+ testController.reconcile(appWithIngress, context);
+ ingress =
+ kubernetesClient
+ .network()
+ .v1()
+ .ingresses()
+ .inNamespace(appWithIngress.getMetadata().getNamespace())
+ .withName(appWithIngress.getMetadata().getName())
+ .get();
+ Assertions.assertNotNull(ingress);
+ ingressRule = ingress.getSpec().getRules().stream().findFirst().get();
+ Assertions.assertNotNull(ingressRule);
+ Assertions.assertEquals(
+ ingressRule.getHost(),
+ IngressUtils.getIngressUrl(
+ "{{name}}.{{namespace}}.foo.bar",
+ appWithIngress.getMetadata().getName(),
+ appWithIngress.getMetadata().getNamespace())
+ .getHost());
+ }
+
private static Stream<Arguments> applicationTestParams() {
List<Arguments> args = new ArrayList<>();
for (FlinkVersion version : FlinkVersion.values()) {