From 3e3bb8a67918acfa42c97116d08ac98795d7d310 Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 27 Jun 2023 15:52:31 +0200 Subject: [PATCH 1/2] change ITS to kind testcontainer --- operator-framework/pom.xml | 18 +++++++++++----- .../operator/InformerRelatedBehaviorITS.java | 21 +++++++++++++------ 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/operator-framework/pom.xml b/operator-framework/pom.xml index 7fe42fff63..284ca5c706 100644 --- a/operator-framework/pom.xml +++ b/operator-framework/pom.xml @@ -12,7 +12,20 @@ operator-framework Operator SDK - Framework - Plain Java + + + + com.dajudge.kindcontainer + kindcontainer + 1.4.2 + test + + + com.fasterxml.jackson.core + jackson-annotations + 2.15.2 + io.javaoperatorsdk operator-framework-core @@ -81,11 +94,6 @@ ${project.version} test - - io.javaoperatorsdk - jenvtest - test - diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java index 36e4fd23f6..89288313e1 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerRelatedBehaviorITS.java @@ -14,11 +14,11 @@ import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding; import io.fabric8.kubernetes.api.model.rbac.Role; import io.fabric8.kubernetes.api.model.rbac.RoleBinding; +import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.fabric8.kubernetes.client.utils.KubernetesResourceUtil; -import io.javaoperatorsdk.jenvtest.junit.EnableKubeAPIServer; import io.javaoperatorsdk.operator.health.InformerHealthIndicator; import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension; import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource; @@ -26,6 +26,8 @@ import io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestCustomResource; import io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestReconciler; +import com.dajudge.kindcontainer.ApiServerContainer; + import static io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestReconciler.CONFIG_MAP_DEPENDENT_RESOURCE; import static io.javaoperatorsdk.operator.sample.informerrelatedbehavior.InformerRelatedBehaviorTestReconciler.INFORMER_RELATED_BEHAVIOR_TEST_RECONCILER; import static org.assertj.core.api.Assertions.assertThat; @@ -46,7 +48,8 @@ * The test ends with "ITS" (Special) since it needs to run separately from other ITs *

*/ -@EnableKubeAPIServer(apiServerFlags = {"--min-request-timeout", "1"}, updateKubeConfigFile = true) +// @EnableKubeAPIServer(apiServerFlags = {"--min-request-timeout", "1"}, updateKubeConfigFile = +// true) class InformerRelatedBehaviorITS { private static final Logger log = LoggerFactory.getLogger(InformerRelatedBehaviorITS.class); @@ -54,15 +57,21 @@ class InformerRelatedBehaviorITS { public static final String TEST_RESOURCE_NAME = "test1"; public static final String ADDITIONAL_NAMESPACE_SUFFIX = "-additional"; - KubernetesClient adminClient = new KubernetesClientBuilder().build(); + KubernetesClient adminClient; InformerRelatedBehaviorTestReconciler reconciler; String actualNamespace; String additionalNamespace; Operator operator; + ApiServerContainer apiServerContainer = new ApiServerContainer<>(); volatile boolean replacementStopHandlerCalled = false; @BeforeEach void beforeEach(TestInfo testInfo) { + apiServerContainer.start(); + + adminClient = new KubernetesClientBuilder() + .withConfig(Config.fromKubeconfig(apiServerContainer.getKubeconfig())) + .build(); LocallyRunOperatorExtension.applyCrd(InformerRelatedBehaviorTestCustomResource.class, adminClient); testInfo.getTestMethod().ifPresent(method -> { @@ -81,6 +90,7 @@ void cleanup() { } adminClient.resource(dependentConfigMap()).delete(); adminClient.resource(testCustomResource()).delete(); + apiServerContainer.stop(); } @Test @@ -299,13 +309,12 @@ private void assertRuntimeInfoForSecondaryPermission(Operator operator) { } KubernetesClient clientUsingServiceAccount() { - KubernetesClient client = new KubernetesClientBuilder() - .withConfig(new ConfigBuilder() + return new KubernetesClientBuilder() + .withConfig(new ConfigBuilder(Config.fromKubeconfig(apiServerContainer.getKubeconfig())) .withImpersonateUsername("rbac-test-user") .withNamespace(actualNamespace) .build()) .build(); - return client; } Operator startOperator(boolean stopOnInformerErrorDuringStartup) { From 55bf8073cd52ee912e4490d44f7c9b6449e88f2e Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 28 Jun 2023 10:04:49 +0200 Subject: [PATCH 2/2] feat: try test containers for ITS --- operator-framework/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/operator-framework/pom.xml b/operator-framework/pom.xml index 284ca5c706..40ec6c9d20 100644 --- a/operator-framework/pom.xml +++ b/operator-framework/pom.xml @@ -21,6 +21,7 @@ 1.4.2 test + com.fasterxml.jackson.core jackson-annotations