aboutsummaryrefslogtreecommitdiffstats
path: root/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2021-09-01 17:16:53 -0400
committerJim Hahn <jrh3@att.com>2021-09-01 18:02:18 -0400
commitf1a24cb3c4514092fde0a9f114ffa43d637ce175 (patch)
tree663837e4872edc80dda2f70b47050f9b760f2efe /participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes
parent83b5318e545fbc72e3612c4300c4d738b0b577de (diff)
Fix sonars in clamp
Fixed some sonars: - no assertion in test case - unused fields - unthrown exception - define a constant - use boolean instead of Boolean - remove unused parameter Fixed some eclipse warnings: - unused imports - unused methods - suppress warnings - add type parameter Renamed directory from "org.onap.policy..." to "org/onap/policy/...". Issue-ID: POLICY-3200 Change-Id: I76f7cd4a508ac421c37e457fdca6894e6100c802 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes')
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/handler/ControlLoopElementHandlerTest.java140
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/HelmClientTest.java131
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/PodStatusValidatorTest.java108
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/CommonTestData.java152
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/ParticipantK8sParametersTest.java88
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/rest/ChartControllerTest.java231
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartServiceTest.java147
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartStoreTest.java174
-rw-r--r--participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/utils/TestUtils.java43
9 files changed, 0 insertions, 1214 deletions
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/handler/ControlLoopElementHandlerTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/handler/ControlLoopElementHandlerTest.java
deleted file mode 100644
index 03d5b31f8..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/handler/ControlLoopElementHandlerTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.handler;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doThrow;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.Spy;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
-import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.exception.ServiceException;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartInfo;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartList;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.service.ChartService;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.utils.TestUtils;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-
-@ExtendWith(SpringExtension.class)
-class ControlLoopElementHandlerTest {
-
- private static final Coder CODER = new StandardCoder();
- private static final String CHART_INFO_YAML = "src/test/resources/ChartList.json";
- private static final String KEY_NAME = "org.onap.domain.database.HelloWorld_K8SMicroserviceControlLoopElement";
- private static List<ChartInfo> charts;
- private static ToscaServiceTemplate toscaServiceTemplate;
- private static final String K8S_CONTROL_LOOP_ELEMENT =
- "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement";
-
-
- @InjectMocks
- @Spy
- private ControlLoopElementHandler controlLoopElementHandler = new ControlLoopElementHandler();
-
- @Mock
- private ChartService chartService;
-
- @Mock
- private ParticipantIntermediaryApi participantIntermediaryApi;
-
- @BeforeAll
- static void init() throws CoderException {
- charts = CODER.decode(new File(CHART_INFO_YAML), ChartList.class).getCharts();
- toscaServiceTemplate = TestUtils.testControlLoopRead();
- }
-
-
- @Test
- void test_ControlLoopElementStateChange() throws ServiceException {
- UUID controlLoopElementId1 = UUID.randomUUID();
- UUID controlLoopElementId2 = UUID.randomUUID();
-
- controlLoopElementHandler.getChartMap().put(controlLoopElementId1, charts.get(0));
- controlLoopElementHandler.getChartMap().put(controlLoopElementId2, charts.get(1));
-
- doNothing().when(chartService).uninstallChart(charts.get(0));
-
- controlLoopElementHandler.controlLoopElementStateChange(controlLoopElementId1, ControlLoopState.PASSIVE,
- ControlLoopOrderedState.UNINITIALISED);
-
- doThrow(new ServiceException("Error uninstalling the chart")).when(chartService)
- .uninstallChart(charts.get(0));
-
- assertDoesNotThrow(() -> controlLoopElementHandler
- .controlLoopElementStateChange(controlLoopElementId1, ControlLoopState.PASSIVE,
- ControlLoopOrderedState.UNINITIALISED));
-
- assertDoesNotThrow(() -> controlLoopElementHandler
- .controlLoopElementStateChange(controlLoopElementId1, ControlLoopState.PASSIVE,
- ControlLoopOrderedState.RUNNING));
-
- }
-
- @Test
- void test_ControlLoopElementUpdate() throws PfModelException, IOException, ServiceException {
- doNothing().when(controlLoopElementHandler).checkPodStatus(any(), anyInt(), anyInt());
- UUID elementId1 = UUID.randomUUID();
- ControlLoopElement element = new ControlLoopElement();
- element.setId(elementId1);
- element.setDefinition(new ToscaConceptIdentifier(KEY_NAME, "1.0.1"));
- element.setOrderedState(ControlLoopOrderedState.PASSIVE);
-
- Map<String, ToscaNodeTemplate> nodeTemplatesMap =
- toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates();
- controlLoopElementHandler.controlLoopElementUpdate(element, nodeTemplatesMap.get(K8S_CONTROL_LOOP_ELEMENT));
-
- assertThat(controlLoopElementHandler.getChartMap()).hasSize(1).containsKey(elementId1);
-
- doThrow(new ServiceException("Error installing the chart")).when(chartService)
- .installChart(Mockito.any());
-
- UUID elementId2 = UUID.randomUUID();
- element.setId(elementId2);
- controlLoopElementHandler.controlLoopElementUpdate(element, nodeTemplatesMap.get(K8S_CONTROL_LOOP_ELEMENT));
-
- assertThat(controlLoopElementHandler.getChartMap().containsKey(elementId2)).isFalse();
- }
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/HelmClientTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/HelmClientTest.java
deleted file mode 100644
index 370bfa6ce..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/HelmClientTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.helm;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertNull;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mockStatic;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.List;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.MockedStatic;
-import org.mockito.Mockito;
-import org.mockito.Spy;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.exception.ServiceException;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartInfo;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartList;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.service.ChartStore;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-import org.springframework.util.FileSystemUtils;
-
-
-@ExtendWith(SpringExtension.class)
-class HelmClientTest {
-
- private static final Coder CODER = new StandardCoder();
- private static final String CHART_INFO_YAML = "src/test/resources/ChartList.json";
- private static List<ChartInfo> charts;
-
- @InjectMocks
- @Spy
- private HelmClient helmClient = new HelmClient();
-
- @Mock
- ChartStore chartStore;
-
- private static MockedStatic<HelmClient> mockedClient;
-
- @BeforeAll
- static void init() throws CoderException {
- charts = CODER.decode(new File(CHART_INFO_YAML), ChartList.class).getCharts();
- //Mock static method for bash command execution
- mockedClient = mockStatic(HelmClient.class);
- }
-
- @AfterAll
- public static void close() throws IOException {
- mockedClient.close();
- FileSystemUtils.deleteRecursively(Path.of("target/tmp"));
- }
-
- @Test
- void test_installChart() throws IOException {
- mockedClient.when(() -> HelmClient.executeCommand(any()))
- .thenReturn("success");
- doReturn(new File("/target/tmp/override.yaml")).when(chartStore)
- .getOverrideFile(any());
- assertDoesNotThrow(() -> helmClient.installChart(charts.get(0)));
- }
-
- @Test
- void test_findChartRepository() throws IOException, ServiceException {
- String tmpPath = "target/tmp/dummyChart/1.0/";
- mockedClient.when(() -> HelmClient.executeCommand(Mockito.any()))
- .thenReturn("nginx-stable/nginx-ingress\t0.9.3\t1.11.3"
- + " \tNGINX Ingress Controller");
- String configuredRepo = helmClient.findChartRepository(charts.get(1));
- assertThat(configuredRepo).isEqualTo("nginx-stable");
-
- File tmpFile = new File(tmpPath + charts.get(1).getChartId().getName());
- tmpFile.mkdirs();
- doReturn(Path.of(tmpPath)).when(chartStore).getAppPath(charts.get(1).getChartId());
-
- doReturn(null).when(helmClient).verifyConfiguredRepo(charts.get(1));
-
- String localRepoName = helmClient.findChartRepository(charts.get(1));
- assertNotNull(localRepoName);
- assertThat(localRepoName).endsWith(charts.get(0).getChartId().getVersion());
- }
-
- @Test
- void test_uninstallChart() throws ServiceException {
- helmClient.uninstallChart(charts.get(0));
- mockedClient.when(() -> HelmClient.executeCommand(any())).thenThrow(new ServiceException("error in execution"));
-
- assertThatThrownBy(() -> helmClient.uninstallChart(charts.get(0)))
- .isInstanceOf(ServiceException.class);
- }
-
- @Test
- void test_verifyConfiguredRepoForInvalidChart() throws IOException, ServiceException {
- mockedClient.when(() -> HelmClient.executeCommand(Mockito.any()))
- .thenReturn("");
- String configuredRepo = helmClient.verifyConfiguredRepo(charts.get(1));
- assertNull(configuredRepo);
- }
-
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/PodStatusValidatorTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/PodStatusValidatorTest.java
deleted file mode 100644
index f72a53403..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/helm/PodStatusValidatorTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.helm;
-
-
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mockStatic;
-
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.MockedStatic;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.exception.ServiceException;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.handler.ControlLoopElementHandler;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartInfo;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartList;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-@ExtendWith(SpringExtension.class)
-class PodStatusValidatorTest {
-
-
- private static final Coder CODER = new StandardCoder();
- private static final String CHART_INFO_YAML = "src/test/resources/ChartList.json";
- private static List<ChartInfo> charts;
- private static int timeout = 60;
- private static int statusCheckInterval = 30;
-
-
- @InjectMocks
- private static PodStatusValidator podStatusValidator;
-
- private static MockedStatic<HelmClient> mockedClient;
-
-
- @BeforeAll
- static void init() throws CoderException {
- charts = CODER.decode(new File(CHART_INFO_YAML), ChartList.class).getCharts();
- mockedClient = mockStatic(HelmClient.class);
- podStatusValidator = new PodStatusValidator(charts.get(0), timeout, statusCheckInterval);
- }
-
- @AfterEach
- void clearPodStatusMap() {
- ControlLoopElementHandler.getPodStatusMap().clear();
- }
-
- @AfterAll
- public static void close() {
- mockedClient.close();
- }
-
-
- @Test
- void test_RunningPodState() {
- String runningPod = "NAME\tREADY\tSTATUS\tRESTARTS\tAGE\r\nHelloWorld-54777df9f8-qpzqr\t1/1\tRunning\t0\t9h";
- mockedClient.when(() -> HelmClient.executeCommand(any()))
- .thenReturn(runningPod);
- assertDoesNotThrow(() -> podStatusValidator.run());
- assertThat(ControlLoopElementHandler.getPodStatusMap()).hasSize(1);
- assertThat(ControlLoopElementHandler.getPodStatusMap()).containsKey(charts.get(0).getReleaseName());
- assertThat(ControlLoopElementHandler.getPodStatusMap())
- .containsValue(Map.of("HelloWorld-54777df9f8-qpzqr", "Running"));
- }
-
-
- @Test
- void test_InvalidPodState() {
- String invalidPod = "NAME\tREADY\tSTATUS\tRESTARTS\tAGE\nhellofromdocker-54777df9f8-qpzqr\t1/1\tInit\t0\t9h";
- mockedClient.when(() -> HelmClient.executeCommand(any()))
- .thenReturn(invalidPod);
- assertThatThrownBy(() -> podStatusValidator.run())
- .isInstanceOf(ServiceException.class).hasMessage("Error verifying the status of the pod. Exiting");
- assertThat(ControlLoopElementHandler.getPodStatusMap()).isEmpty();
- }
-
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/CommonTestData.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/CommonTestData.java
deleted file mode 100644
index 9255ee6dc..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/CommonTestData.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.parameters;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import org.onap.policy.common.endpoints.parameters.TopicParameters;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-public class CommonTestData {
-
- public static final String PARTICIPANT_GROUP_NAME = "ControlLoopParticipantGroup";
- public static final String DESCRIPTION = "Participant description";
- public static final long TIME_INTERVAL = 2000;
- public static final List<TopicParameters> TOPIC_PARAMS = Arrays.asList(getTopicParams());
- public static final Coder CODER = new StandardCoder();
-
-
- /**
- * Get ParticipantK8sParameters.
- *
- * @return ParticipantK8sParameters
- */
- public ParticipantK8sParameters getParticipantK8sParameters() {
- try {
- return CODER.convert(getParticipantK8sParametersMap(PARTICIPANT_GROUP_NAME),
- ParticipantK8sParameters.class);
- } catch (final CoderException e) {
- throw new RuntimeException("cannot create ParticipantK8sParameters from map", e);
- }
- }
-
- /**
- * Returns a property map for a ParticipantK8sParameters map for test cases.
- *
- * @param name name of the parameters
- *
- * @return a property map suitable for constructing an object
- */
- public Map<String, Object> getParticipantK8sParametersMap(final String name) {
- final Map<String, Object> map = new TreeMap<>();
-
- map.put("name", name);
- map.put("intermediaryParameters", getIntermediaryParametersMap(false));
- map.put("localChartDirectory", getLocalChartDir());
- map.put("infoFileName", getInfoFileName());
- return map;
- }
-
-
- /**
- * Returns string value of local chart Directory.
- * @return a string value
- */
- public String getLocalChartDir() {
- return "/var/helm-manager/local-charts";
- }
-
- /**
- * Returns string value of Info file name.
- * @return string value
- */
- public String getInfoFileName() {
- return "CHART-INFO.json";
- }
-
-
-
- /**
- * Returns a property map for a intermediaryParameters map for test cases.
- *
- * @param isEmpty boolean value to represent that object created should be empty or not
- * @return a property map suitable for constructing an object
- */
- public Map<String, Object> getIntermediaryParametersMap(final boolean isEmpty) {
- final Map<String, Object> map = new TreeMap<>();
- if (!isEmpty) {
- map.put("name", "Participant parameters");
- map.put("reportingTimeIntervalMs", TIME_INTERVAL);
- map.put("description", DESCRIPTION);
- map.put("participantId", getParticipantId());
- map.put("participantType", getParticipantId());
- map.put("clampControlLoopTopics", getTopicParametersMap(false));
- }
-
- return map;
- }
-
- /**
- * Returns participantId for test cases.
- *
- * @return participant Id
- */
- public static ToscaConceptIdentifier getParticipantId() {
- final ToscaConceptIdentifier participantId = new ToscaConceptIdentifier();
- participantId.setName("K8sParticipant0");
- participantId.setVersion("1.0.0");
- return participantId;
- }
-
-
- /**
- * Returns a property map for a TopicParameters map for test cases.
- *
- * @param isEmpty boolean value to represent that object created should be empty or not
- * @return a property map suitable for constructing an object
- */
- public Map<String, Object> getTopicParametersMap(final boolean isEmpty) {
- final Map<String, Object> map = new TreeMap<>();
- if (!isEmpty) {
- map.put("topicSources", TOPIC_PARAMS);
- map.put("topicSinks", TOPIC_PARAMS);
- }
- return map;
- }
-
- /**
- * Returns topic parameters for test cases.
- *
- * @return topic parameters
- */
- public static TopicParameters getTopicParams() {
- final TopicParameters topicParams = new TopicParameters();
- topicParams.setTopic("POLICY-CLRUNTIME-PARTICIPANT");
- topicParams.setTopicCommInfrastructure("dmaap");
- topicParams.setServers(Arrays.asList("localhost"));
- return topicParams;
- }
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/ParticipantK8sParametersTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/ParticipantK8sParametersTest.java
deleted file mode 100644
index 177d7bc23..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/parameters/ParticipantK8sParametersTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.parameters;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Set;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.ValidatorFactory;
-import org.junit.jupiter.api.Test;
-
-class ParticipantK8sParametersTest {
-
- private CommonTestData commonTestData = new CommonTestData();
- private ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
-
- @Test
- void testParticipantPolicyParameters() {
- final ParticipantK8sParameters participantParameters = commonTestData.getParticipantK8sParameters();
- assertThat(validatorFactory.getValidator().validate(participantParameters)).isNullOrEmpty();
- }
-
- @Test
- void testParticipantK8sParameters_NullTopicSinks() {
- final ParticipantK8sParameters participantParameters = commonTestData.getParticipantK8sParameters();
- participantParameters.getIntermediaryParameters().getClampControlLoopTopics().setTopicSinks(null);
- assertThat(validatorFactory.getValidator().validate(participantParameters)).isNotEmpty();
- }
-
- @Test
- void testParticipantK8sParameters_NullTopicSources() {
- final ParticipantK8sParameters participantParameters = commonTestData.getParticipantK8sParameters();
- participantParameters.getIntermediaryParameters().getClampControlLoopTopics().setTopicSources(null);
- assertThat(validatorFactory.getValidator().validate(participantParameters)).isNotEmpty();
- }
-
- @Test
- void testParticipantK8sParameters_BlankLocalChartDirParameter() {
- final ParticipantK8sParameters participantParameters = commonTestData.getParticipantK8sParameters();
- participantParameters.setLocalChartDirectory(" ");
- Set<ConstraintViolation<ParticipantK8sParameters>> violations = validatorFactory.getValidator()
- .validate(participantParameters);
- assertThat(violations.size()).isEqualTo(1);
- }
-
- @Test
- void testParticipantK8sParameters_BlankInfoFileParameter() {
- final ParticipantK8sParameters participantParameters = commonTestData.getParticipantK8sParameters();
- participantParameters.setInfoFileName("");
- Set<ConstraintViolation<ParticipantK8sParameters>> violations = validatorFactory.getValidator()
- .validate(participantParameters);
- assertThat(violations.size()).isEqualTo(1);
- }
-
- @Test
- void testNoIntermediaryParameters() {
- final ParticipantK8sParameters participantParameters = commonTestData.getParticipantK8sParameters();
- participantParameters.setIntermediaryParameters(null);
- assertThat(validatorFactory.getValidator().validate(participantParameters)).isNotEmpty();
- }
-
- @Test
- void testNoParticipantId() {
- final ParticipantK8sParameters participantParameters = commonTestData.getParticipantK8sParameters();
- participantParameters.getIntermediaryParameters().setParticipantId(null);
- assertThat(validatorFactory.getValidator().validate(participantParameters)).isNotEmpty();
- }
-
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/rest/ChartControllerTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/rest/ChartControllerTest.java
deleted file mode 100644
index a28fd9ebe..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/rest/ChartControllerTest.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.rest;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.when;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-import java.io.File;
-import java.util.List;
-import org.json.JSONObject;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.controller.ChartController;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartInfo;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartList;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.parameters.ParticipantK8sParameters;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.service.ChartService;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.MediaType;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.RequestBuilder;
-import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-
-@ExtendWith(SpringExtension.class)
-@WebMvcTest(value = ChartController.class)
-@EnableConfigurationProperties(value = ParticipantK8sParameters.class)
-class ChartControllerTest {
-
- private static final Coder CODER = new StandardCoder();
- private static final String CHART_INFO_YAML = "src/test/resources/ChartList.json";
- private static List<ChartInfo> charts;
- private static String DEFAULT_CHART_URL = "/helm/charts";
- private static String INSTALL_CHART_URL = "/helm/install";
- private static String UNINSTALL_CHART_URL = "/helm/uninstall/";
-
- @Autowired
- private MockMvc mockMvc;
-
- @MockBean
- private ChartService chartService;
-
- @Autowired
- private WebApplicationContext context;
-
- /**
- * Read input chart info json.
- * @throws Exception incase of error.
- */
- @BeforeAll
- static void setupParams() throws CoderException {
- charts = CODER.decode(new File(CHART_INFO_YAML), ChartList.class).getCharts();
- }
-
- /**
- * Mock service layer in Controller.
- * @throws Exception incase of error.
- */
- @BeforeEach
- void mockServiceClass() {
- when(chartService.getAllCharts()).thenReturn(charts);
- when(chartService.getChart(charts.get(0).getChartId().getName(), charts.get(0).getChartId().getVersion()))
- .thenReturn(charts.get(0));
-
- this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).build();
- }
-
- /**
- * Test endpoint for retrieving all charts.
- * @throws Exception incase of error.
- */
- @Test
- void retrieveAllCharts() throws Exception {
- RequestBuilder requestBuilder;
- requestBuilder = MockMvcRequestBuilders.get(DEFAULT_CHART_URL).accept(MediaType.APPLICATION_JSON_VALUE);
-
- mockMvc.perform(requestBuilder).andExpect(status().isOk())
- .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
- .andExpect(jsonPath("$.charts.[0].chartId.name", is("HelloWorld")));
- }
-
- /**
- * Test endpoint for installing a chart.
- * @throws Exception incase of error.
- */
- @Test
- void installChart() throws Exception {
- RequestBuilder requestBuilder;
-
- //Mocking successful installation for void install method
- doNothing().when(chartService).installChart(charts.get(0));
-
- requestBuilder = MockMvcRequestBuilders.post(INSTALL_CHART_URL).accept(MediaType.APPLICATION_JSON_VALUE)
- .content(getInstallationJson(charts.get(0).getChartId().getName(), charts.get(0).getChartId().getVersion()))
- .contentType(MediaType.APPLICATION_JSON_VALUE);
-
- mockMvc.perform(requestBuilder).andExpect(status().isCreated());
-
- //Install Invalid chart, expects HTTP status NOT_FOUND
- requestBuilder = MockMvcRequestBuilders.post(INSTALL_CHART_URL).accept(MediaType.APPLICATION_JSON_VALUE)
- .content(getInstallationJson("invalidName", "invalidVersion"))
- .contentType(MediaType.APPLICATION_JSON_VALUE);
-
- mockMvc.perform(requestBuilder).andExpect(status().isNotFound());
- }
-
- /**
- * Test endpoint for uninstalling a chart.
- * @throws Exception incase of error.
- */
- @Test
- void uninstallChart() throws Exception {
- RequestBuilder requestBuilder;
-
- //Mocking successful scenario for void uninstall method
- doNothing().when(chartService).uninstallChart(charts.get(0));
-
- requestBuilder = MockMvcRequestBuilders.delete(UNINSTALL_CHART_URL + charts.get(0)
- .getChartId().getName() + "/" + charts.get(0).getChartId().getVersion())
- .accept(MediaType.APPLICATION_JSON_VALUE).contentType(MediaType.APPLICATION_JSON_VALUE);
-
- mockMvc.perform(requestBuilder).andExpect(status().isNoContent());
-
- //Invalid chart
- requestBuilder = MockMvcRequestBuilders.delete(UNINSTALL_CHART_URL + "invalidName"
- + "/" + "invalidVersion").accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE);
-
- mockMvc.perform(requestBuilder).andExpect(status().isNotFound());
- }
-
- /**
- * Test endpoint for chart onboarding.
- * @throws Exception incase of error.
- */
- @Test
- void onboardChart() throws Exception {
- RequestBuilder requestBuilder;
- MockMultipartFile chartFile = new MockMultipartFile("chart", "hello.tgz",
- MediaType.TEXT_PLAIN_VALUE, "Dummy data".getBytes());
-
- MockMultipartFile overrideFile = new MockMultipartFile("values", "values.yaml",
- MediaType.TEXT_PLAIN_VALUE, "Dummy data".getBytes());
-
- //Mocking successful scenario for void uninstall method
- when(chartService.saveChart(charts.get(0), chartFile, null)).thenReturn(charts.get(0));
-
- requestBuilder = MockMvcRequestBuilders.multipart(DEFAULT_CHART_URL)
- .file(chartFile).file(overrideFile).param("info", getChartInfoJson());
-
- mockMvc.perform(requestBuilder).andExpect(status().isOk());
- }
-
- /**
- * Test endpoint for deleting a chart.
- * @throws Exception incase of error.
- */
- @Test
- void deleteChart() throws Exception {
- RequestBuilder requestBuilder;
-
- //Mocking successful scenario for void uninstall method
- doNothing().when(chartService).deleteChart(charts.get(0));
-
- requestBuilder = MockMvcRequestBuilders.delete(DEFAULT_CHART_URL + "/" + charts.get(0)
- .getChartId().getName() + "/" + charts.get(0).getChartId().getVersion())
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE);
-
- mockMvc.perform(requestBuilder).andExpect(status().isNoContent());
- //Invalid chart
- requestBuilder = MockMvcRequestBuilders.delete(UNINSTALL_CHART_URL + "invalidName"
- + "/" + "invalidVersion").accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE);
-
- mockMvc.perform(requestBuilder).andExpect(status().isNotFound());
-
- }
-
- private String getInstallationJson(String name, String version) {
- JSONObject jsonObj = new JSONObject();
- jsonObj.put("name", name);
- jsonObj.put("version", version);
- return jsonObj.toString();
- }
-
- private String getChartInfoJson() {
- JSONObject jsonObj = new JSONObject();
- jsonObj.put("chartName", charts.get(0).getChartId().getName());
- jsonObj.put("version", charts.get(0).getChartId().getVersion());
- jsonObj.put("namespace", charts.get(0).getNamespace());
- jsonObj.put("repository", charts.get(0).getRepository());
- jsonObj.put("releaseName", charts.get(0).getReleaseName());
- return jsonObj.toString();
- }
-
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartServiceTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartServiceTest.java
deleted file mode 100644
index 8e7943410..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartServiceTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.service;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.exception.ServiceException;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.helm.HelmClient;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartInfo;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartList;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-@ExtendWith(SpringExtension.class)
-class ChartServiceTest {
-
- private static final Coder CODER = new StandardCoder();
- private static final String CHART_INFO_YAML = "src/test/resources/ChartList.json";
- private static List<ChartInfo> charts;
-
- @InjectMocks
- @Spy
- private ChartService chartService = new ChartService();
-
- @Mock
- private ChartStore chartStore;
-
- @Mock
- private HelmClient helmClient;
-
- @BeforeAll
- static void init() throws CoderException {
- charts = CODER.decode(new File(CHART_INFO_YAML), ChartList.class).getCharts();
- }
-
- @Test
- void test_getAllCharts() {
- assertThat(chartService.getAllCharts()).isEmpty();
-
- doReturn(charts).when(chartStore).getAllCharts();
- Collection<ChartInfo> result = chartService.getAllCharts();
- assertNotNull(result);
- assertThat(result).containsAll(charts);
- }
-
- @Test
- void test_getChart() {
- assertNull(chartService.getChart("dummyName", "dummyversion"));
-
- doReturn(charts.get(0)).when(chartStore).getChart(any(), any());
- ChartInfo chart = chartService.getChart(charts.get(0).getChartId().getName(),
- charts.get(0).getChartId().getVersion());
- assertNotNull(chart);
- assertThat(chart.getNamespace()).isEqualTo(charts.get(0).getNamespace());
- }
-
- @Test
- void test_saveChart() throws IOException, ServiceException {
- doThrow(IOException.class).when(chartStore).saveChart(charts.get(0), null, null);
- assertThatThrownBy(() -> chartService.saveChart(charts.get(0), null, null))
- .isInstanceOf(IOException.class);
-
- MockMultipartFile mockChartFile = new MockMultipartFile("chart", "dummy".getBytes());
- MockMultipartFile mockOverrideFile = new MockMultipartFile("override", "dummy".getBytes());
-
- doReturn(charts.get(0)).when(chartStore).saveChart(any(), any(), any());
-
- ChartInfo chart = chartService.saveChart(charts.get(0), mockChartFile, mockOverrideFile);
- assertNotNull(chart);
- assertThat(chart.getChartId().getName()).isEqualTo(charts.get(0).getChartId().getName());
-
- }
-
- @Test
- void test_installChart() throws IOException, ServiceException {
- assertDoesNotThrow(() -> chartService.installChart(charts.get(0)));
- doThrow(ServiceException.class).when(helmClient).installChart(any());
- assertThatThrownBy(() -> chartService.installChart(charts.get(0))).isInstanceOf(ServiceException.class);
-
- doReturn("dummyRepoName").when(chartService).findChartRepo(any());
- doNothing().when(helmClient).installChart(any());
- chartService.installChart(charts.get(1));
- assertEquals("dummyRepoName", charts.get(1).getRepository());
-
- ChartInfo testChart = charts.get(1);
- testChart.setRepository(null);
- doReturn(null).when(chartService).findChartRepo(any());
- chartService.installChart(charts.get(1));
- }
-
- @Test
- void test_UninstallChart() throws ServiceException {
- assertDoesNotThrow(() -> chartService.uninstallChart(charts.get(0)));
- doThrow(ServiceException.class).when(helmClient).uninstallChart(any());
- assertThatThrownBy(() -> chartService.uninstallChart(charts.get(0))).isInstanceOf(ServiceException.class);
- }
-
- @Test
- void test_findChartRepo() throws IOException, ServiceException {
- assertDoesNotThrow(() -> chartService.findChartRepo(charts.get(0)));
- doReturn("dummyRepoName").when(helmClient).findChartRepository(any());
- assertEquals("dummyRepoName", chartService.findChartRepo(charts.get(1)));
-
- doThrow(ServiceException.class).when(helmClient).findChartRepository(any());
- assertThatThrownBy(() -> chartService.findChartRepo(charts.get(0))).isInstanceOf(ServiceException.class);
- }
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartStoreTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartStoreTest.java
deleted file mode 100644
index eb4e7a173..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/service/ChartStoreTest.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.service;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertNull;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.List;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.mockito.junit.jupiter.MockitoSettings;
-import org.mockito.quality.Strictness;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.exception.ServiceException;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartInfo;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.models.ChartList;
-import org.onap.policy.clamp.controlloop.participant.kubernetes.parameters.ParticipantK8sParameters;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.util.FileSystemUtils;
-
-
-@ExtendWith(MockitoExtension.class)
-@MockitoSettings(strictness = Strictness.LENIENT)
-class ChartStoreTest {
-
- private static final Coder CODER = new StandardCoder();
- private static final String CHART_INFO_YAML = "src/test/resources/ChartList.json";
- private static List<ChartInfo> charts;
-
- @Mock
- private ParticipantK8sParameters parameters;
-
- private ChartStore chartStore;
-
-
- @BeforeAll
- static void init() throws CoderException {
- charts = CODER.decode(new File(CHART_INFO_YAML), ChartList.class).getCharts();
- }
-
- //Overriding the local chart dir parameter to a temp folder under target for testing java FILE IO operations.
- @BeforeEach
- void setup() {
- Mockito.doReturn("target/tmp/").when(parameters).getLocalChartDirectory();
- Mockito.doReturn("info.json").when(parameters).getInfoFileName();
- chartStore = new ChartStore(parameters);
- }
-
- //Clean up the 'tmp' dir after each test case.
- @AfterEach
- void cleanUp() throws IOException {
- FileSystemUtils.deleteRecursively(Path.of(parameters.getLocalChartDirectory()));
- chartStore.getLocalChartMap().clear();
- }
-
- @Test
- void test_getHelmChartFile() {
- File file = chartStore.getHelmChartFile(charts.get(0));
- assertNotNull(file);
- assertThat(file.getPath()).endsWith(charts.get(0).getChartId().getName());
- }
-
- @Test
- void test_getOverrideFile() {
- File file = chartStore.getOverrideFile(charts.get(0));
- assertNotNull(file);
- assertThat(file.getPath()).endsWith("values.yaml");
- }
-
- @Test
- void test_saveChart() throws IOException, ServiceException {
- MockMultipartFile mockChartFile = new MockMultipartFile("chart", "dummy".getBytes());
- MockMultipartFile mockOverrideFile = new MockMultipartFile("override", "dummy".getBytes());
- ChartInfo testChart = charts.get(0);
- testChart.setChartId(new ToscaConceptIdentifier("testChart", "1.0.0"));
- ChartInfo result = chartStore.saveChart(charts.get(0), mockChartFile, mockOverrideFile);
-
- assertThat(result.getChartId().getName()).isEqualTo("testChart");
- assertThat(chartStore.getLocalChartMap()).hasSize(1);
-
- assertThatThrownBy(() -> chartStore.saveChart(charts.get(0), mockChartFile, mockOverrideFile))
- .isInstanceOf(ServiceException.class);
- }
-
-
- @Test
- void test_getChart() {
- assertNull(chartStore.getChart(charts.get(0).getChartId().getName(), charts.get(0).getChartId().getVersion()));
- chartStore.getLocalChartMap().put(charts.get(0).getChartId().getName() + "_" + charts.get(0).getChartId()
- .getVersion(), charts.get(0));
- ChartInfo chart = chartStore.getChart(charts.get(0).getChartId().getName(),
- charts.get(0).getChartId().getVersion());
- assertThat(chart.getChartId().getName()).isEqualTo(charts.get(0).getChartId().getName());
- }
-
- @Test
- void test_getAllChart() {
- // When the chart store is empty before adding any charts
- assertThat(chartStore.getAllCharts()).isEmpty();
-
- for (ChartInfo chart : charts) {
- chartStore.getLocalChartMap().put(chart.getChartId().getName() + "_" + chart.getChartId().getVersion(),
- chart);
- }
- List<ChartInfo> retrievedChartList = chartStore.getAllCharts();
- assertThat(retrievedChartList).isNotEmpty();
- assertThat(retrievedChartList.size()).isEqualTo(charts.size());
- }
-
- @Test
- void test_deleteChart() {
- chartStore.getLocalChartMap().put(charts.get(0).getChartId().getName() + "_" + charts.get(0).getChartId()
- .getVersion(), charts.get(0));
- assertThat(chartStore.getLocalChartMap()).hasSize(1);
- chartStore.deleteChart(charts.get(0));
- assertThat(chartStore.getLocalChartMap()).isEmpty();
- }
-
- @Test
- void test_getAppPath() {
- Path path = chartStore.getAppPath(charts.get(0).getChartId());
- assertNotNull(path);
- assertThat(path.toString()).endsWith(charts.get(0).getChartId().getVersion());
- assertThat(path.toString()).startsWith("target");
- }
-
- @Test
- void test_chartSoreInstantiationWithExistingChartFiles() throws IOException, ServiceException {
- MockMultipartFile mockChartFile = new MockMultipartFile("HelmChartFile", "dummyData".getBytes());
- MockMultipartFile mockOverrideFile = new MockMultipartFile("overrideFile.yaml", "dummyData".getBytes());
- ChartInfo testChart = charts.get(0);
- testChart.setChartId(new ToscaConceptIdentifier("dummyChart", "1.0.0"));
-
- //Creating a dummy chart in local dir.
- chartStore.saveChart(charts.get(0), mockChartFile, mockOverrideFile);
-
- //Instantiating a new chartStore object with pre available chart in local.
- ChartStore chartStore2 = new ChartStore(parameters);
- assertThat(chartStore2.getLocalChartMap()).hasSize(1).containsKey("dummyChart_" + charts.get(0).getChartId()
- .getVersion());
- }
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/utils/TestUtils.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/utils/TestUtils.java
deleted file mode 100644
index 8585e9d11..000000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org.onap.policy.clamp.controlloop.participant.kubernetes/utils/TestUtils.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.participant.kubernetes.utils;
-
-import org.onap.policy.common.utils.coder.YamlJsonTranslator;
-import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-
-public class TestUtils {
-
- private static final YamlJsonTranslator yamlTranslator = new YamlJsonTranslator();
- private static final String TOSCA_TEMPLATE_YAML = "src/test/resources/servicetemplates/KubernetesHelm.yaml";
-
-
- public static ToscaServiceTemplate testControlLoopRead() {
- return testControlLoopYamlSerialization(TOSCA_TEMPLATE_YAML);
- }
-
-
- private static ToscaServiceTemplate testControlLoopYamlSerialization(String controlLoopFilePath) {
- String controlLoopString = ResourceUtils.getResourceAsString(controlLoopFilePath);
- ToscaServiceTemplate serviceTemplate = yamlTranslator.fromYaml(controlLoopString, ToscaServiceTemplate.class);
- return serviceTemplate;
- }
-}