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
......@@ -2,6 +2,7 @@ package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes;
import com.google.common.collect.Sets;
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.gitlab.GitLabManager;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.DefaultKClusterValidator;
......@@ -69,6 +70,7 @@ public class KubernetesManagerTest {
private final KubernetesClusterIngressManager ingressManager = mock(KubernetesClusterIngressManager.class);
private final GitLabManager gitLabManager = mock(GitLabManager.class);
private final JanitorService janitorService = mock(JanitorService.class);
private final RemoteClusterManager remoteClusterManager = mock(RemoteClusterManager.class);
private static final Identifier DEPLOYMENT_ID = Identifier.newInstance("deploymentId");
......@@ -82,7 +84,8 @@ public class KubernetesManagerTest {
ingressResourceManager,
ingressManager,
gitLabManager,
janitorService
janitorService,
remoteClusterManager
);
@BeforeEach
......
......@@ -57,7 +57,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
null, false).asString(),
null, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO));
assertThat(
HelmInstallCommand.commandWithRepo(
......@@ -66,7 +66,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
CHART_VERSION, false).asString(),
CHART_VERSION, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO_WITH_VERSION));
}
......@@ -79,7 +79,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
null, false).asString(),
null, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_FOR_v3_USING_CHART_FROM_REPO));
assertThat(
HelmInstallCommand.commandWithRepo(
......@@ -88,7 +88,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
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));
}
......@@ -101,7 +101,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
null, true).asString(),
null, true, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO + TLS));
assertThat(
HelmInstallCommand.commandWithRepo(
......@@ -110,7 +110,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
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));
}
......@@ -127,7 +127,7 @@ public class HelmCommandPreparationTest {
arguments,
CHART_NAME_WITH_REPO,
CHART_VERSION,
false).asString(),
false, null).asString(),
allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART),
containsString("testPersistenceName"),
containsString("testStorageClass"))
......@@ -147,7 +147,7 @@ public class HelmCommandPreparationTest {
arguments,
CHART_NAME_WITH_REPO,
CHART_VERSION,
true).asString(),
true, null).asString(),
allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART),
containsString("testPersistenceName"),
containsString("testStorageClass"),
......
......@@ -5,6 +5,11 @@ import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManag
import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterNamespaceService;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressCertificateConfigOption;
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.entities.KubernetesNmServiceInfo;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.entities.KubernetesTemplate;
......@@ -18,6 +23,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import java.time.OffsetDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
......@@ -119,7 +125,8 @@ public class HelmKServiceManagerTest {
eq("namespace"),
eq("descriptiveDeploymentId"),
k8sTemplateArg.capture(),
argumentsArg.capture(), null
argumentsArg.capture(),
eq(null)
);
assertThat(argumentsArg.getValue()).isNotEmpty();
assertThat(argumentsArg.getValue().size()).isEqualTo(11);
......@@ -142,8 +149,9 @@ public class HelmKServiceManagerTest {
verify(helmCommandExecutor, times(1)).executeHelmInstallCommand(
eq("namespace"),
eq("descriptiveDeploymentId"),
any(),
any(), null
any(KubernetesTemplate.class),
any(Map.class),
eq(null)
);
}
......@@ -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