diff --git a/jkube-kit/helm/pom.xml b/jkube-kit/helm/pom.xml
index d1e608ee9f..3846160273 100644
--- a/jkube-kit/helm/pom.xml
+++ b/jkube-kit/helm/pom.xml
@@ -87,5 +87,9 @@
io.fabric8
openshift-server-mock
+
+ io.fabric8
+ kube-api-test
+
diff --git a/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceInstallIT.java b/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceInstallIT.java
index 7ad4fa9d8b..de75862c55 100644
--- a/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceInstallIT.java
+++ b/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceInstallIT.java
@@ -14,9 +14,11 @@
package org.eclipse.jkube.kit.resource.helm;
import com.marcnuri.helm.Helm;
+import io.fabric8.kubeapitest.junit.EnableKubeAPIServer;
+import io.fabric8.kubeapitest.junit.KubeConfig;
+import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.kubernetes.client.KubernetesClientBuilder;
import io.fabric8.openshift.api.model.Template;
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.common.JavaProject;
@@ -24,9 +26,12 @@
import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.util.Serialization;
import org.eclipse.jkube.kit.config.resource.ResourceServiceConfig;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
import org.junit.jupiter.api.io.TempDir;
import java.io.File;
@@ -36,26 +41,34 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Objects;
+import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
-import static org.eclipse.jkube.kit.common.util.KubernetesMockServerUtil.prepareMockWebServerExpectationsForAggregatedDiscoveryEndpoints;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@DisplayName("HelmService.install")
-@EnableKubernetesMockClient(crud = true)
+@EnableKubeAPIServer
+@EnabledForJreRange(min = JRE.JAVA_11)
class HelmServiceInstallIT {
+
+ @KubeConfig
+ static String kubeConfigYaml;
@TempDir
private Path tempDir;
+ private KubernetesClient kubernetesClient;
private HelmConfig helmConfig;
private HelmService helmService;
private KitLogger kitLogger;
- private KubernetesClient kubernetesClient;
- private KubernetesMockServer server;
@BeforeEach
void setUp() throws URISyntaxException, IOException {
+ kubernetesClient = new KubernetesClientBuilder().withConfig(Config.fromKubeconfig(kubeConfigYaml)).build();
+ kubernetesClient.apps().deployments().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.pods().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.configMaps().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.secrets().withTimeout(1, TimeUnit.SECONDS).delete();
kitLogger = spy(new KitLogger.SilentLogger());
Template helmParameterTemplates = Serialization.unmarshal(HelmServiceInstallIT.class.getResource("/it/sources/global-template.yml"), Template.class);
Path outputDir = tempDir.resolve("output");
@@ -75,8 +88,6 @@ void setUp() throws URISyntaxException, IOException {
HelmParameter.builder().name("annotation.from.config.dotted").value("{{ .Chart.Name }}").build(),
HelmParameter.builder().name("deployment.replicas").value(1).build()))
.build();
- // Remove after https://github.com/fabric8io/kubernetes-client/issues/6062 is fixed
- prepareMockWebServerExpectationsForAggregatedDiscoveryEndpoints(server);
helmService = new HelmService(JKubeConfiguration.builder()
.project(JavaProject.builder()
.buildDirectory(tempDir.resolve("target").toFile())
@@ -85,6 +96,11 @@ void setUp() throws URISyntaxException, IOException {
.build(), new ResourceServiceConfig(), kitLogger);
}
+ @AfterEach
+ void tearDown() {
+ kubernetesClient.close();
+ }
+
@Test
@DisplayName("when valid chart provided, then log installation details after install")
void validChart_thenLogInstalledChartDetails() throws IOException {
diff --git a/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceTestIT.java b/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceTestIT.java
index 05caae4b32..1c0f889842 100644
--- a/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceTestIT.java
+++ b/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceTestIT.java
@@ -14,18 +14,13 @@
package org.eclipse.jkube.kit.resource.helm;
import com.marcnuri.helm.Helm;
+import io.fabric8.kubeapitest.junit.EnableKubeAPIServer;
+import io.fabric8.kubeapitest.junit.KubeConfig;
import io.fabric8.kubernetes.api.model.PodBuilder;
-import io.fabric8.kubernetes.api.model.Secret;
-import io.fabric8.kubernetes.api.model.SecretListBuilder;
+import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
-import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
-import io.fabric8.mockwebserver.Context;
-import io.fabric8.mockwebserver.ServerRequest;
-import io.fabric8.mockwebserver.ServerResponse;
-import okhttp3.mockwebserver.MockWebServer;
+import io.fabric8.kubernetes.client.KubernetesClientBuilder;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.common.JavaProject;
import org.eclipse.jkube.kit.common.KitLogger;
@@ -37,30 +32,31 @@
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
import org.junit.jupiter.api.io.TempDir;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
import java.util.Objects;
-import java.util.Queue;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
-import static org.eclipse.jkube.kit.common.util.KubernetesMockServerUtil.prepareMockWebServerExpectationsForAggregatedDiscoveryEndpoints;
@DisplayName("HelmService.test")
+@EnableKubeAPIServer
+@EnabledForJreRange(min = JRE.JAVA_11)
class HelmServiceTestIT {
+
+ @KubeConfig
+ static String kubeConfigYaml;
@TempDir
private Path tempDir;
- private KubernetesMockServer server;
private KubernetesClient kubernetesClient;
private ByteArrayOutputStream logOutput;
private HelmService helmService;
@@ -68,12 +64,11 @@ class HelmServiceTestIT {
@BeforeEach
void setUp() throws Exception {
- final Map> responses = new HashMap<>();
- server = new KubernetesMockServer(new Context(), new MockWebServer(), responses, new KubernetesMixedDispatcher(responses), true);
- server.init();
- // Remove after https://github.com/fabric8io/kubernetes-client/issues/6062 is fixed
- prepareMockWebServerExpectationsForAggregatedDiscoveryEndpoints(server);
- kubernetesClient = server.createClient();
+ kubernetesClient = new KubernetesClientBuilder().withConfig(Config.fromKubeconfig(kubeConfigYaml)).build();
+ kubernetesClient.apps().deployments().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.pods().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.configMaps().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.secrets().withTimeout(1, TimeUnit.SECONDS).delete();
logOutput = new ByteArrayOutputStream();
Helm.create().withDir(tempDir).withName("test-project").call();
Path helmChartOutputDir = tempDir.resolve("output").resolve("jkube").resolve("helm");
@@ -99,29 +94,14 @@ void setUp() throws Exception {
@AfterEach
void stopKubernetesServer() {
kubernetesClient.close();
- server.destroy();
}
@Nested
class WithChartInstalled {
@BeforeEach
- void setUp() throws Exception {
- // OpenAPI validation endpoints required by helm test
- server.expect().get().withPath("/openapi/v3?timeout=32s")
- .andReturn(200, IOUtils.toString(Objects.requireNonNull(HelmServiceTestIT.class.getResourceAsStream("/it/helm-service-test/kubernetes-openapi-v3-schema.json")), StandardCharsets.UTF_8))
- .always();
- server.expect().get().withPath("/openapi/v3/api/v1?timeout=32s")
- .andReturn(200, IOUtils.toString(Objects.requireNonNull(HelmServiceTestIT.class.getResourceAsStream("/it/helm-service-test/kubernetes-openapi-v3-api-v1-schema-pod.json")), StandardCharsets.UTF_8))
- .always();
- // Chart is installed
+ void installChart() {
helmService.install(helmConfig);
- Secret secret = kubernetesClient.secrets().withName("sh.helm.release.v1.test-project.v1").get();
- server.expect().get().withPath("/api/v1/namespaces/test/secrets?labelSelector=name%3Dtest-project%2Cowner%3Dhelm")
- .andReturn(200, new SecretListBuilder()
- .addToItems(secret)
- .build())
- .once();
}
@Test
diff --git a/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUninstallIT.java b/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUninstallIT.java
index 520fd8357c..1cb5341b7c 100644
--- a/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUninstallIT.java
+++ b/jkube-kit/helm/src/test/java/org/eclipse/jkube/kit/resource/helm/HelmServiceUninstallIT.java
@@ -13,11 +13,11 @@
*/
package org.eclipse.jkube.kit.resource.helm;
-import io.fabric8.kubernetes.api.model.Secret;
-import io.fabric8.kubernetes.api.model.SecretListBuilder;
+import io.fabric8.kubeapitest.junit.EnableKubeAPIServer;
+import io.fabric8.kubeapitest.junit.KubeConfig;
+import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.kubernetes.client.KubernetesClientBuilder;
import io.fabric8.openshift.api.model.Template;
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.common.JavaProject;
@@ -25,9 +25,12 @@
import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.util.Serialization;
import org.eclipse.jkube.kit.config.resource.ResourceServiceConfig;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
import org.junit.jupiter.api.io.TempDir;
import java.io.File;
@@ -37,26 +40,34 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Objects;
+import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
-import static org.eclipse.jkube.kit.common.util.KubernetesMockServerUtil.prepareMockWebServerExpectationsForAggregatedDiscoveryEndpoints;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@DisplayName("HelmService.uninstall")
-@EnableKubernetesMockClient(crud = true)
+@EnableKubeAPIServer
+@EnabledForJreRange(min = JRE.JAVA_11)
class HelmServiceUninstallIT {
+
+ @KubeConfig
+ static String kubeConfigYaml;
@TempDir
private Path tempDir;
+ private KubernetesClient kubernetesClient;
private HelmConfig helmConfig;
private HelmService helmService;
private KitLogger kitLogger;
- private KubernetesClient kubernetesClient;
- private KubernetesMockServer server;
@BeforeEach
void setUp() throws URISyntaxException, IOException {
+ kubernetesClient = new KubernetesClientBuilder().withConfig(Config.fromKubeconfig(kubeConfigYaml)).build();
+ kubernetesClient.apps().deployments().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.pods().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.configMaps().withTimeout(1, TimeUnit.SECONDS).delete();
+ kubernetesClient.secrets().withTimeout(1, TimeUnit.SECONDS).delete();
kitLogger = spy(new KitLogger.SilentLogger());
Template helmParameterTemplates = Serialization.unmarshal(HelmServiceUninstallIT.class.getResource("/it/sources/global-template.yml"), Template.class);
Path outputDir = tempDir.resolve("output");
@@ -76,8 +87,6 @@ void setUp() throws URISyntaxException, IOException {
HelmParameter.builder().name("annotation.from.config.dotted").value("{{ .Chart.Name }}").build(),
HelmParameter.builder().name("deployment.replicas").value(1).build()))
.build();
- // Remove after https://github.com/fabric8io/kubernetes-client/issues/6062 is fixed
- prepareMockWebServerExpectationsForAggregatedDiscoveryEndpoints(server);
helmService = new HelmService(JKubeConfiguration.builder()
.project(JavaProject.builder()
.buildDirectory(tempDir.resolve("target").toFile())
@@ -86,18 +95,17 @@ void setUp() throws URISyntaxException, IOException {
.build(), new ResourceServiceConfig(), kitLogger);
}
+ @AfterEach
+ void tearDown() {
+ kubernetesClient.close();
+ }
+
@Test
@DisplayName("uninstall invoked, then log uninstallation details after uninstall")
void uninstall_thenLogUninstalledChartDetails() throws IOException {
// Given
helmService.generateHelmCharts(helmConfig);
helmService.install(helmConfig);
- Secret secret = kubernetesClient.secrets().withName("sh.helm.release.v1.test-project.v1").get();
- server.expect().get().withPath("/api/v1/namespaces/test/secrets?labelSelector=name%3Dtest-project%2Cowner%3Dhelm")
- .andReturn(200, new SecretListBuilder()
- .addToItems(secret)
- .build())
- .once();
// When
helmService.uninstall(helmConfig);
// Then
diff --git a/jkube-kit/helm/src/test/resources/it/expected/kubernetes/templates/kubernetes.yaml b/jkube-kit/helm/src/test/resources/it/expected/kubernetes/templates/kubernetes.yaml
index e110adca10..67bed1ce14 100644
--- a/jkube-kit/helm/src/test/resources/it/expected/kubernetes/templates/kubernetes.yaml
+++ b/jkube-kit/helm/src/test/resources/it/expected/kubernetes/templates/kubernetes.yaml
@@ -35,7 +35,7 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
name: test
spec:
ports:
@@ -46,7 +46,7 @@ items:
selector:
app: test
provider: jkube
- version: 1337
+ version: v1337
type: NodePort
- apiVersion: apps/v1
kind: Deployment
@@ -60,16 +60,16 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
name: test
spec:
replicas: {{ .Values.deployment.replicas }}
revisionHistoryLimit: 2
selector:
matchLabels:
- app: spring-boot-yaml
+ app: test
provider: jkube
- group: org.eclipse.jkube.quickstarts.maven
+ version: v1337
template:
metadata:
annotations:
@@ -79,7 +79,7 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
spec:
containers:
- env:
diff --git a/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/openshift.yaml b/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/openshift.yaml
index ea9641ca3a..e7da518c2c 100644
--- a/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/openshift.yaml
+++ b/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/openshift.yaml
@@ -30,7 +30,7 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
helm-variable: {{ required "A valid .Values.GLOBAL_TEMPLATE_ENV_VAR entry required!" .Values.GLOBAL_TEMPLATE_ENV_VAR }}
escape-test: "{{"{{"}} {{"}}"}} should be escaped to prevent helm errors"
name: test
diff --git a/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/test-pod.yaml b/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/test-pod.yaml
index 2632abd69c..90a49a9011 100644
--- a/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/test-pod.yaml
+++ b/jkube-kit/helm/src/test/resources/it/expected/openshift/templates/test-pod.yaml
@@ -19,7 +19,7 @@ metadata:
labels:
app: test
provider: jkube
- version: "1337"
+ version: "v1337"
helm-variable: {{ required "A valid .Values.GLOBAL_TEMPLATE_ENV_VAR entry required!" .Values.GLOBAL_TEMPLATE_ENV_VAR }}
name: test
spec:
diff --git a/jkube-kit/helm/src/test/resources/it/sources/kubernetes/kubernetes.yml b/jkube-kit/helm/src/test/resources/it/sources/kubernetes/kubernetes.yml
index 54d8b1a139..522508caa5 100644
--- a/jkube-kit/helm/src/test/resources/it/sources/kubernetes/kubernetes.yml
+++ b/jkube-kit/helm/src/test/resources/it/sources/kubernetes/kubernetes.yml
@@ -35,7 +35,7 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
name: test
spec:
ports:
@@ -46,7 +46,7 @@ items:
selector:
app: test
provider: jkube
- version: 1337
+ version: v1337
type: NodePort
- apiVersion: apps/v1
kind: Deployment
@@ -60,16 +60,16 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
name: test
spec:
replicas: ${deployment.replicas}
revisionHistoryLimit: 2
selector:
matchLabels:
- app: spring-boot-yaml
+ app: test
provider: jkube
- group: org.eclipse.jkube.quickstarts.maven
+ version: v1337
template:
metadata:
annotations:
@@ -79,7 +79,7 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
spec:
containers:
- env:
diff --git a/jkube-kit/helm/src/test/resources/it/sources/openshift/openshift.yml b/jkube-kit/helm/src/test/resources/it/sources/openshift/openshift.yml
index cd9f8955e8..92719ee63e 100644
--- a/jkube-kit/helm/src/test/resources/it/sources/openshift/openshift.yml
+++ b/jkube-kit/helm/src/test/resources/it/sources/openshift/openshift.yml
@@ -30,7 +30,7 @@ items:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
helm-variable: ${GLOBAL_TEMPLATE_ENV_VAR}
escape-test: "{{ }} should be escaped to prevent helm errors"
name: test
diff --git a/jkube-kit/helm/src/test/resources/it/sources/openshift/some-template.yml b/jkube-kit/helm/src/test/resources/it/sources/openshift/some-template.yml
index 5a15584f14..f68f72ad23 100644
--- a/jkube-kit/helm/src/test/resources/it/sources/openshift/some-template.yml
+++ b/jkube-kit/helm/src/test/resources/it/sources/openshift/some-template.yml
@@ -18,7 +18,7 @@ metadata:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
name: test
objects:
- apiVersion: v1
@@ -27,7 +27,7 @@ objects:
labels:
app: test
provider: jkube
- version: 1337
+ version: v1337
helm-variable: ${GLOBAL_TEMPLATE_ENV_VAR}
name: test
spec:
@@ -57,4 +57,4 @@ objects:
parameters:
- description: Parameter to replace environment variable value
name: SAMPLE_ENV_VAR
- value: This is a sample
\ No newline at end of file
+ value: This is a sample
diff --git a/jkube-kit/parent/pom.xml b/jkube-kit/parent/pom.xml
index 553ac603a3..97e665745b 100644
--- a/jkube-kit/parent/pom.xml
+++ b/jkube-kit/parent/pom.xml
@@ -778,6 +778,12 @@
+
+ io.fabric8
+ kube-api-test
+ ${version.kubernetes-client}
+ test
+
org.asciidoctor