Skip to content

Commit

Permalink
test:refactor: replaced deprecated i.f.k.c.s.mock.KubernetesServer wi…
Browse files Browse the repository at this point in the history
…th KubernetesMockServer
  • Loading branch information
manusa authored and vinokurig committed Mar 5, 2025
1 parent 494796b commit b9d3cc6
Show file tree
Hide file tree
Showing 15 changed files with 304 additions and 162 deletions.
4 changes: 2 additions & 2 deletions core/che-core-metrics-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
<artifactId>okhttp</artifactId>
<exclusions>
<exclusion>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>okio</artifactId>
<groupId>com.squareup.okio</groupId>
</exclusion>
</exclusions>
</dependency>
Expand Down
26 changes: 0 additions & 26 deletions infrastructures/kubernetes/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,6 @@
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
Expand Down Expand Up @@ -239,21 +234,6 @@
<artifactId>che-core-sql-schema</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.core</artifactId>
Expand All @@ -268,12 +248,6 @@
<groupId>org.everrest</groupId>
<artifactId>everrest-assured</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>jetty-util</artifactId>
<groupId>org.eclipse.jetty</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.everrest</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2023 Red Hat, Inc.
* Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
Expand Down Expand Up @@ -69,13 +69,21 @@
import io.fabric8.kubernetes.client.dsl.Resource;
import io.fabric8.kubernetes.client.dsl.RollableScalableResource;
import io.fabric8.kubernetes.client.dsl.V1APIGroupDSL;
import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
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.MockWebServer;
import io.fabric8.mockwebserver.ServerRequest;
import io.fabric8.mockwebserver.ServerResponse;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Queue;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
Expand All @@ -90,6 +98,7 @@
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
Expand Down Expand Up @@ -146,7 +155,7 @@ public class KubernetesDeploymentsTest {
@Mock private V1APIGroupDSL v1APIGroupDSL;

private KubernetesDeployments kubernetesDeployments;
private KubernetesServer serverMock;
private KubernetesMockServer kubernetesMockServer;

@BeforeMethod
public void setUp() throws Exception {
Expand Down Expand Up @@ -194,8 +203,20 @@ public void setUp() throws Exception {

kubernetesDeployments =
new KubernetesDeployments("namespace", "workspace123", clientFactory, executor);
serverMock = new KubernetesServer(true, true);
serverMock.before();
final Map<ServerRequest, Queue<ServerResponse>> responses = new HashMap<>();
kubernetesMockServer =
new KubernetesMockServer(
new Context(),
new MockWebServer(),
responses,
new KubernetesMixedDispatcher(responses),
true);
kubernetesMockServer.init();
}

@AfterMethod
public void cleanUp() {
kubernetesMockServer.destroy();
}

@Test
Expand Down Expand Up @@ -696,7 +717,8 @@ public void shouldHandleEventWithEmptyLastTimestampAndFirstTimestamp() throws Ex

@Test
public void deploymentShouldHaveImagePullSecretsOfSAAndSelf() throws InfrastructureException {
doReturn(serverMock.getClient()).when(clientFactory).create(anyString());
final var client = kubernetesMockServer.createClient();
doReturn(client).when(clientFactory).create(anyString());

final String serviceAccountName = "workspace-sa";
LocalObjectReference pullSecretOfSA =
Expand All @@ -715,11 +737,7 @@ public void deploymentShouldHaveImagePullSecretsOfSAAndSelf() throws Infrastruct
.build())
.withImagePullSecrets(pullSecretOfSA)
.build();
serverMock
.getClient()
.serviceAccounts()
.inNamespace(kubernetesDeployments.namespace)
.create(serviceAccount);
client.serviceAccounts().inNamespace(kubernetesDeployments.namespace).create(serviceAccount);

ObjectMeta objectMeta =
new ObjectMetaBuilder()
Expand Down Expand Up @@ -756,7 +774,7 @@ public void deploymentShouldHaveImagePullSecretsOfSAAndSelf() throws Infrastruct
@Test
public void deploymentShouldHavePullSecretsOnlyOfSelfWithNonexistentSA()
throws InfrastructureException {
doReturn(serverMock.getClient()).when(clientFactory).create(anyString());
doReturn(kubernetesMockServer.createClient()).when(clientFactory).create(anyString());

LocalObjectReference pullSecretOfPod =
new LocalObjectReferenceBuilder().withName("pullsecret-pod").build();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2023 Red Hat, Inc.
* Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
Expand Down Expand Up @@ -62,13 +62,19 @@
import io.fabric8.kubernetes.client.dsl.MixedOperation;
import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation;
import io.fabric8.kubernetes.client.dsl.Resource;
import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
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.MockWebServer;
import io.fabric8.mockwebserver.ServerRequest;
import io.fabric8.mockwebserver.ServerResponse;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Queue;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand Down Expand Up @@ -135,7 +141,7 @@ public class KubernetesNamespaceFactoryTest {

@Mock private Resource<Namespace> namespaceResource;

private KubernetesServer serverMock;
private KubernetesMockServer kubernetesMockServer;

private KubernetesNamespaceFactory namespaceFactory;

Expand All @@ -147,9 +153,16 @@ public class KubernetesNamespaceFactoryTest {

@BeforeMethod
public void setUp() throws Exception {
serverMock = new KubernetesServer(true, true);
serverMock.before();
k8sClient = spy(serverMock.getClient());
final Map<ServerRequest, Queue<ServerResponse>> responses = new HashMap<>();
kubernetesMockServer =
new KubernetesMockServer(
new Context(),
new MockWebServer(),
responses,
new KubernetesMixedDispatcher(responses),
true);
kubernetesMockServer.init();
k8sClient = spy(kubernetesMockServer.createClient());
lenient().when(cheServerKubernetesClientFactory.create()).thenReturn(k8sClient);
lenient().when(k8sClient.namespaces()).thenReturn(namespaceOperation);

Expand All @@ -167,7 +180,7 @@ public void setUp() throws Exception {
@AfterMethod
public void tearDown() {
EnvironmentContext.reset();
serverMock.after();
kubernetesMockServer.destroy();
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2021 Red Hat, Inc.
* Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
Expand Down Expand Up @@ -32,14 +32,23 @@
import io.fabric8.kubernetes.api.model.rbac.RoleBuilder;
import io.fabric8.kubernetes.api.model.rbac.RoleList;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
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.MockWebServer;
import io.fabric8.mockwebserver.ServerRequest;
import io.fabric8.mockwebserver.ServerResponse;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Queue;
import java.util.Set;
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
Expand All @@ -54,7 +63,7 @@ public class KubernetesWorkspaceServiceAccountTest {

@Mock private KubernetesClientFactory clientFactory;
private KubernetesClient k8sClient;
private KubernetesServer serverMock;
private KubernetesMockServer kubernetesMockServer;
private KubernetesWorkspaceServiceAccount serviceAccount;

@BeforeMethod
Expand All @@ -63,13 +72,25 @@ public void setUp() throws Exception {
new KubernetesWorkspaceServiceAccount(
WORKSPACE_ID, NAMESPACE, SA_NAME, ROLE_NAMES, clientFactory);

serverMock = new KubernetesServer(true, true);
serverMock.before();

k8sClient = serverMock.getClient();
final Map<ServerRequest, Queue<ServerResponse>> responses = new HashMap<>();
kubernetesMockServer =
new KubernetesMockServer(
new Context(),
new MockWebServer(),
responses,
new KubernetesMixedDispatcher(responses),
true);
kubernetesMockServer.init();

k8sClient = kubernetesMockServer.createClient();
when(clientFactory.create(anyString())).thenReturn(k8sClient);
}

@AfterMethod
public void tearDown() {
kubernetesMockServer.destroy();
}

@Test
public void shouldProvisionSARolesEvenIfItAlreadyExists() throws Exception {
ServiceAccountBuilder serviceAccountBuilder =
Expand Down Expand Up @@ -100,7 +121,7 @@ public void shouldProvisionSARolesEvenIfItAlreadyExists() throws Exception {

@Test
public void shouldCreateMetricsRoleIfAPIEnabledOnServer() throws Exception {
KubernetesClient localK8sClient = spy(serverMock.getClient());
KubernetesClient localK8sClient = spy(k8sClient);
when(localK8sClient.supportsApiPath(eq("/apis/metrics.k8s.io"))).thenReturn(true);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);

Expand All @@ -121,7 +142,7 @@ public void shouldCreateMetricsRoleIfAPIEnabledOnServer() throws Exception {

@Test
public void shouldNotCreateMetricsRoleIfAPINotEnabledOnServer() throws Exception {
KubernetesClient localK8sClient = spy(serverMock.getClient());
KubernetesClient localK8sClient = spy(k8sClient);
when(localK8sClient.supportsApiPath(eq("/apis/metrics.k8s.io"))).thenReturn(false);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);

Expand All @@ -142,7 +163,7 @@ public void shouldNotCreateMetricsRoleIfAPINotEnabledOnServer() throws Exception

@Test
public void shouldCreateCredentialsSecretRole() throws Exception {
KubernetesClient localK8sClient = spy(serverMock.getClient());
KubernetesClient localK8sClient = spy(k8sClient);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);

// when
Expand All @@ -169,7 +190,7 @@ public void shouldCreateCredentialsSecretRole() throws Exception {

@Test
public void shouldCreatePreferencesConfigmapRole() throws Exception {
KubernetesClient localK8sClient = spy(serverMock.getClient());
KubernetesClient localK8sClient = spy(k8sClient);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);

// when
Expand Down
Loading

0 comments on commit b9d3cc6

Please sign in to comment.