Skip to content
Snippets Groups Projects
Commit a30f767b authored by kbeyro's avatar kbeyro
Browse files

add test

parent 644da20d
No related branches found
No related tags found
2 merge requests!273Release 1.8.0 update,!213Resolve "Support deployment of applications on remote clusters"
Pipeline #94406 failed
This commit is part of merge request !213. Comments created here will be created in the context of that merge request.
...@@ -2,6 +2,7 @@ package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes; ...@@ -2,6 +2,7 @@ package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager; import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager;
import net.geant.nmaas.externalservices.kubernetes.RemoteClusterManager;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressControllerConfigOption; import net.geant.nmaas.externalservices.kubernetes.entities.IngressControllerConfigOption;
import net.geant.nmaas.gitlab.GitLabManager; import net.geant.nmaas.gitlab.GitLabManager;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.DefaultKClusterValidator; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.DefaultKClusterValidator;
...@@ -69,6 +70,7 @@ public class KubernetesManagerTest { ...@@ -69,6 +70,7 @@ public class KubernetesManagerTest {
private final KubernetesClusterIngressManager ingressManager = mock(KubernetesClusterIngressManager.class); private final KubernetesClusterIngressManager ingressManager = mock(KubernetesClusterIngressManager.class);
private final GitLabManager gitLabManager = mock(GitLabManager.class); private final GitLabManager gitLabManager = mock(GitLabManager.class);
private final JanitorService janitorService = mock(JanitorService.class); private final JanitorService janitorService = mock(JanitorService.class);
private final RemoteClusterManager remoteClusterManager = mock(RemoteClusterManager.class);
private static final Identifier DEPLOYMENT_ID = Identifier.newInstance("deploymentId"); private static final Identifier DEPLOYMENT_ID = Identifier.newInstance("deploymentId");
...@@ -82,7 +84,8 @@ public class KubernetesManagerTest { ...@@ -82,7 +84,8 @@ public class KubernetesManagerTest {
ingressResourceManager, ingressResourceManager,
ingressManager, ingressManager,
gitLabManager, gitLabManager,
janitorService janitorService,
remoteClusterManager
); );
@BeforeEach @BeforeEach
......
...@@ -57,7 +57,7 @@ public class HelmCommandPreparationTest { ...@@ -57,7 +57,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME, RELEASE_NAME,
null, null,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
null, false).asString(), null, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO)); equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO));
assertThat( assertThat(
HelmInstallCommand.commandWithRepo( HelmInstallCommand.commandWithRepo(
...@@ -66,7 +66,7 @@ public class HelmCommandPreparationTest { ...@@ -66,7 +66,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME, RELEASE_NAME,
null, null,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
CHART_VERSION, false).asString(), CHART_VERSION, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO_WITH_VERSION)); equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO_WITH_VERSION));
} }
...@@ -79,7 +79,7 @@ public class HelmCommandPreparationTest { ...@@ -79,7 +79,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME, RELEASE_NAME,
null, null,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
null, false).asString(), null, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_FOR_v3_USING_CHART_FROM_REPO)); equalTo(CORRECT_HELM_INSTALL_COMMAND_FOR_v3_USING_CHART_FROM_REPO));
assertThat( assertThat(
HelmInstallCommand.commandWithRepo( HelmInstallCommand.commandWithRepo(
...@@ -88,7 +88,7 @@ public class HelmCommandPreparationTest { ...@@ -88,7 +88,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME, RELEASE_NAME,
null, null,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
CHART_VERSION, false).asString(), CHART_VERSION, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_FOR_V3_USING_CHART_FROM_REPO_WITH_VERSION)); equalTo(CORRECT_HELM_INSTALL_COMMAND_FOR_V3_USING_CHART_FROM_REPO_WITH_VERSION));
} }
...@@ -101,7 +101,7 @@ public class HelmCommandPreparationTest { ...@@ -101,7 +101,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME, RELEASE_NAME,
null, null,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
null, true).asString(), null, true, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO + TLS)); equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO + TLS));
assertThat( assertThat(
HelmInstallCommand.commandWithRepo( HelmInstallCommand.commandWithRepo(
...@@ -110,7 +110,7 @@ public class HelmCommandPreparationTest { ...@@ -110,7 +110,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME, RELEASE_NAME,
null, null,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
CHART_VERSION, true).asString(), CHART_VERSION, true, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO_WITH_VERSION + TLS)); equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO_WITH_VERSION + TLS));
} }
...@@ -127,7 +127,7 @@ public class HelmCommandPreparationTest { ...@@ -127,7 +127,7 @@ public class HelmCommandPreparationTest {
arguments, arguments,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
CHART_VERSION, CHART_VERSION,
false).asString(), false, null).asString(),
allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART), allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART),
containsString("testPersistenceName"), containsString("testPersistenceName"),
containsString("testStorageClass")) containsString("testStorageClass"))
...@@ -147,7 +147,7 @@ public class HelmCommandPreparationTest { ...@@ -147,7 +147,7 @@ public class HelmCommandPreparationTest {
arguments, arguments,
CHART_NAME_WITH_REPO, CHART_NAME_WITH_REPO,
CHART_VERSION, CHART_VERSION,
true).asString(), true, null).asString(),
allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART), allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART),
containsString("testPersistenceName"), containsString("testPersistenceName"),
containsString("testStorageClass"), containsString("testStorageClass"),
......
...@@ -5,6 +5,11 @@ import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManag ...@@ -5,6 +5,11 @@ import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManag
import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterNamespaceService; import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterNamespaceService;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressCertificateConfigOption; import net.geant.nmaas.externalservices.kubernetes.entities.IngressCertificateConfigOption;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressResourceConfigOption; import net.geant.nmaas.externalservices.kubernetes.entities.IngressResourceConfigOption;
import net.geant.nmaas.externalservices.kubernetes.entities.KCluster;
import net.geant.nmaas.externalservices.kubernetes.entities.KClusterDeployment;
import net.geant.nmaas.externalservices.kubernetes.entities.KClusterIngress;
import net.geant.nmaas.externalservices.kubernetes.entities.KClusterState;
import net.geant.nmaas.externalservices.kubernetes.entities.NamespaceConfigOption;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.KubernetesRepositoryManager; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.KubernetesRepositoryManager;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.entities.KubernetesNmServiceInfo; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.entities.KubernetesNmServiceInfo;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.entities.KubernetesTemplate; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.entities.KubernetesTemplate;
...@@ -18,6 +23,7 @@ import org.junit.jupiter.api.BeforeEach; ...@@ -18,6 +23,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import java.time.OffsetDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
...@@ -119,7 +125,8 @@ public class HelmKServiceManagerTest { ...@@ -119,7 +125,8 @@ public class HelmKServiceManagerTest {
eq("namespace"), eq("namespace"),
eq("descriptiveDeploymentId"), eq("descriptiveDeploymentId"),
k8sTemplateArg.capture(), k8sTemplateArg.capture(),
argumentsArg.capture(), null argumentsArg.capture(),
eq(null)
); );
assertThat(argumentsArg.getValue()).isNotEmpty(); assertThat(argumentsArg.getValue()).isNotEmpty();
assertThat(argumentsArg.getValue().size()).isEqualTo(11); assertThat(argumentsArg.getValue().size()).isEqualTo(11);
...@@ -142,8 +149,9 @@ public class HelmKServiceManagerTest { ...@@ -142,8 +149,9 @@ public class HelmKServiceManagerTest {
verify(helmCommandExecutor, times(1)).executeHelmInstallCommand( verify(helmCommandExecutor, times(1)).executeHelmInstallCommand(
eq("namespace"), eq("namespace"),
eq("descriptiveDeploymentId"), eq("descriptiveDeploymentId"),
any(), any(KubernetesTemplate.class),
any(), null any(Map.class),
eq(null)
); );
} }
...@@ -228,4 +236,63 @@ public class HelmKServiceManagerTest { ...@@ -228,4 +236,63 @@ public class HelmKServiceManagerTest {
); );
} }
@Test
void shouldDeployServiceWithKubeconfigPath() {
when(namespaceService.namespace("domain")).thenReturn("namespace");
when(ingressManager.getResourceConfigOption()).thenReturn(IngressResourceConfigOption.DEPLOY_FROM_CHART);
when(ingressManager.getIngressPerDomain()).thenReturn(false);
when(ingressManager.getSupportedIngressClass()).thenReturn("testIngressClass");
when(ingressManager.getTlsSupported()).thenReturn(true);
when(ingressManager.getIssuerOrWildcardName()).thenReturn("testIssuerName");
when(ingressManager.getCertificateConfigOption()).thenReturn(IngressCertificateConfigOption.USE_LETSENCRYPT);
KClusterDeployment mockDeployment = KClusterDeployment.builder()
.namespaceConfigOption(NamespaceConfigOption.CREATE_NAMESPACE)
.defaultNamespace("default-namespace")
.defaultStorageClass("default-storage-class")
.smtpServerHostname("smtp.example.com")
.smtpServerPort(587)
.smtpServerUsername("user@example.com")
.smtpServerPassword("password")
.smtpFromDefaultDomain("example.com")
.forceDedicatedWorkers(true)
.build();
KClusterIngress mockIngress = KClusterIngress.builder().resourceConfigOption(IngressResourceConfigOption.NOT_USED).build();
KCluster mockCluster = KCluster.builder()
.id(1L)
.name("TestCluster")
.codename("test-cluster")
.description("Mocked Kubernetes Cluster")
.creationDate(OffsetDateTime.now())
.modificationDate(OffsetDateTime.now())
.clusterConfigFile("mock-cluster-config")
.pathConfigFile("mock/path/to/kubeconfig")
.state(KClusterState.UNKNOWN)
.currentStateSince(OffsetDateTime.now())
.contactEmail("test@example.com")
.deployment(mockDeployment)
.ingress(mockIngress)
.build();
KubernetesNmServiceInfo service = repositoryManager.loadService(deploymentId);
service.setRemoteCluster(mockCluster);
when(repositoryManager.loadService(deploymentId)).thenReturn(service);
manager.deployService(deploymentId);
ArgumentCaptor<String> kubeconfigPathArg = ArgumentCaptor.forClass(String.class);
verify(helmCommandExecutor, times(1)).executeHelmInstallCommand(
eq("namespace"),
eq("descriptiveDeploymentId"),
any(KubernetesTemplate.class),
any(Map.class),
kubeconfigPathArg.capture()
);
assertThat(kubeconfigPathArg.getValue()).isEqualTo("mock/path/to/kubeconfig");
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment