diff options
4 files changed, 38 insertions, 45 deletions
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClient.java b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClient.java index f3f7d3427..a05dfbc5f 100644 --- a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClient.java +++ b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClient.java @@ -143,7 +143,7 @@ public class HelmClient { * @return string output * @throws ServiceException incase of error. */ - public static String executeCommand(ProcessBuilder processBuilder) throws ServiceException { + public String executeCommand(ProcessBuilder processBuilder) throws ServiceException { var commandStr = toString(processBuilder); try { diff --git a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/PodStatusValidator.java b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/PodStatusValidator.java index 67bdc0b40..89eb284eb 100644 --- a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/PodStatusValidator.java +++ b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/PodStatusValidator.java @@ -46,6 +46,8 @@ public class PodStatusValidator implements Runnable { private ChartInfo chart; + private HelmClient client = new HelmClient(); + /** * Constructor for PodStatusValidator. * @param chart chartInfo @@ -76,7 +78,7 @@ public class PodStatusValidator implements Runnable { long endTime = System.currentTimeMillis() + (timeout * 1000L); while (!isVerified && System.currentTimeMillis() < endTime) { - var output = HelmClient.executeCommand(verifyPodStatusCommand(chart)); + var output = client.executeCommand(verifyPodStatusCommand(chart)); var podStatusMap = mapPodStatus(output); isVerified = !podStatusMap.isEmpty() && podStatusMap.values().stream().allMatch("Running"::equals); diff --git a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClientTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClientTest.java index f5826bf3b..19106a623 100644 --- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClientTest.java +++ b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClientTest.java @@ -29,7 +29,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; import java.io.File; @@ -42,8 +42,6 @@ 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.acm.participant.kubernetes.exception.ServiceException; import org.onap.policy.clamp.acm.participant.kubernetes.models.ChartInfo; @@ -74,25 +72,20 @@ class HelmClientTest { @Mock HelmRepository repo; - 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() { - mockedClient.when(() -> HelmClient.executeCommand(any())) - .thenReturn("success"); + void test_installChart() throws ServiceException { + doReturn("success").when(helmClient).executeCommand(any()); doReturn(new File("/target/tmp/override.yaml")).when(chartStore) .getOverrideFile(any()); var chartinfo = charts.get(0); @@ -101,29 +94,28 @@ class HelmClientTest { chartinfo.setNamespace(""); assertDoesNotThrow(() -> helmClient.installChart(chartinfo)); - mockedClient.when(() -> HelmClient.executeCommand(any())).thenReturn(""); + doReturn("").when(helmClient).executeCommand(any()); assertDoesNotThrow(() -> helmClient.installChart(chartinfo)); } @Test - void test_addRepository() { - mockedClient.when(() -> HelmClient.executeCommand(any())).thenReturn(""); + void test_addRepository() throws ServiceException { + doReturn("").when(helmClient).executeCommand(any()); when(repo.getRepoName()).thenReturn("RepoName"); when(repo.getAddress()).thenReturn("http://localhost:8080"); assertDoesNotThrow(() -> helmClient.addRepository(repo)); - mockedClient.when(() -> HelmClient.executeCommand(any())) - .thenReturn("failed"); + doReturn("failed").when(helmClient).executeCommand(any()); assertDoesNotThrow(() -> helmClient.addRepository(repo)); } @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"); + doReturn("nginx-stable/nginx-ingress\t0.9.3\t1.11.3" + + " \tNGINX Ingress Controller").when(helmClient).executeCommand(any()); + String configuredRepo = helmClient.findChartRepository(charts.get(1)); assertThat(configuredRepo).isEqualTo("nginx-stable"); @@ -143,8 +135,9 @@ class HelmClientTest { @Test void test_uninstallChart() throws ServiceException { + doReturn("success").when(helmClient).executeCommand(any()); helmClient.uninstallChart(charts.get(0)); - mockedClient.when(() -> HelmClient.executeCommand(any())).thenThrow(new ServiceException("error in execution")); + doThrow(ServiceException.class).when(helmClient).executeCommand(any()); assertThatThrownBy(() -> helmClient.uninstallChart(charts.get(0))) .isInstanceOf(ServiceException.class); @@ -152,8 +145,7 @@ class HelmClientTest { @Test void test_verifyConfiguredRepoForInvalidChart() throws IOException, ServiceException { - mockedClient.when(() -> HelmClient.executeCommand(Mockito.any())) - .thenReturn(""); + doReturn("").when(helmClient).executeCommand(any()); 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/acm/participant/kubernetes/helm/PodStatusValidatorTest.java b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/PodStatusValidatorTest.java index 962744db7..6cec6056d 100644 --- a/participant/participant-impl/participant-impl-kubernetes/src/test/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/PodStatusValidatorTest.java +++ b/participant/participant-impl/participant-impl-kubernetes/src/test/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/PodStatusValidatorTest.java @@ -25,17 +25,17 @@ 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 static org.mockito.Mockito.doReturn; 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.MockedStatic; +import org.mockito.InjectMocks; +import org.mockito.Mock; import org.onap.policy.clamp.acm.participant.kubernetes.exception.ServiceException; import org.onap.policy.clamp.acm.participant.kubernetes.handler.AutomationCompositionElementHandler; import org.onap.policy.clamp.acm.participant.kubernetes.models.ChartInfo; @@ -54,12 +54,21 @@ class PodStatusValidatorTest { private static int STATUS_CHECK_INTERVAL = 1; private static List<ChartInfo> charts; - private static MockedStatic<HelmClient> mockedClient; + @InjectMocks + private PodStatusValidator podStatusValidator = new PodStatusValidator(charts.get(0), TIMEOUT, + STATUS_CHECK_INTERVAL); + + @InjectMocks + private PodStatusValidator podValidatorWithPodName = new PodStatusValidator(charts.get(2), TIMEOUT, + STATUS_CHECK_INTERVAL); + + + @Mock + private HelmClient client; @BeforeAll static void init() throws CoderException { charts = CODER.decode(new File(CHART_INFO_YAML), ChartList.class).getCharts(); - mockedClient = mockStatic(HelmClient.class); } @AfterEach @@ -67,17 +76,11 @@ class PodStatusValidatorTest { AutomationCompositionElementHandler.getPodStatusMap().clear(); } - @AfterAll - public static void close() { - mockedClient.close(); - } @Test - void test_RunningPodState() { + void test_RunningPodState() throws ServiceException { String runningPod = "NAME\tREADY\tSTATUS\tRESTARTS\tAGE\r\nHelloWorld-54777df9f8-qpzqr\t1/1\tRunning\t0\t9h"; - mockedClient.when(() -> HelmClient.executeCommand(any())) - .thenReturn(runningPod); - var podStatusValidator = new PodStatusValidator(charts.get(0), TIMEOUT, STATUS_CHECK_INTERVAL); + doReturn(runningPod).when(client).executeCommand(any()); assertDoesNotThrow(() -> podStatusValidator.run()); assertThat(AutomationCompositionElementHandler.getPodStatusMap()).hasSize(1); assertThat(AutomationCompositionElementHandler.getPodStatusMap()).containsKey(charts.get(0).getReleaseName()); @@ -86,11 +89,9 @@ class PodStatusValidatorTest { } @Test - void test_InvalidPodState() { + void test_InvalidPodState() throws ServiceException { String invalidPod = "NAME\tREADY\tSTATUS\tRESTARTS\tAGE\nhellofromdocker-54777df9f8-qpzqr\t1/1\tInit\t0\t9h"; - mockedClient.when(() -> HelmClient.executeCommand(any())) - .thenReturn(invalidPod); - var podStatusValidator = new PodStatusValidator(charts.get(1), TIMEOUT, STATUS_CHECK_INTERVAL); + doReturn(invalidPod).when(client).executeCommand(any()); assertThatThrownBy(() -> podStatusValidator.run()) .isInstanceOf(ServiceException.class).hasMessage("Error verifying the status of the pod. Exiting"); assertThat(AutomationCompositionElementHandler.getPodStatusMap()).isEmpty(); @@ -98,12 +99,10 @@ class PodStatusValidatorTest { // Use case scenario: Hard coded pod name @Test - void test_RunningPodStateWhitPodName() { + void test_RunningPodStateWithPodName() throws ServiceException { String runningPod = "NAME\tREADY\tSTATUS\tRESTARTS\tAGE\r\nhelloallworld-54777df9f8-qpzqr\t1/1\tRunning\t0\t9h"; - mockedClient.when(() -> HelmClient.executeCommand(any())) - .thenReturn(runningPod); - var podStatusValidator = new PodStatusValidator(charts.get(2), TIMEOUT, STATUS_CHECK_INTERVAL); - assertDoesNotThrow(() -> podStatusValidator.run()); + doReturn(runningPod).when(client).executeCommand(any()); + assertDoesNotThrow(() -> podValidatorWithPodName.run()); assertThat(AutomationCompositionElementHandler.getPodStatusMap()).hasSize(1); assertThat(AutomationCompositionElementHandler.getPodStatusMap()).containsKey(charts.get(2).getReleaseName()); assertThat(AutomationCompositionElementHandler.getPodStatusMap()) |