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