X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=inline;f=webapp-backend%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fric%2Fportal%2Fdashboard%2Fconfig%2FCaasIngressMockConfiguration.java;h=b10dcc8300cbb150b68129a4fe47d56c3390868b;hb=refs%2Fchanges%2F58%2F2258%2F2;hp=bd94c2eb657f1485f1c54d98cd3d342bccb8a54d;hpb=662cc613e80c4079fdf5a54ce3135652cb9ad9a1;p=portal%2Fric-dashboard.git diff --git a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/CaasIngressMockConfiguration.java b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/CaasIngressMockConfiguration.java index bd94c2eb..b10dcc83 100644 --- a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/CaasIngressMockConfiguration.java +++ b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/CaasIngressMockConfiguration.java @@ -22,15 +22,16 @@ package org.oransc.ric.portal.dashboard.config; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; import java.lang.invoke.MethodHandles; +import org.oransc.ric.portal.dashboard.TestUtils; import org.oransc.ric.portal.dashboard.k8sapi.SimpleKubernetesClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -47,61 +48,45 @@ public class CaasIngressMockConfiguration { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); // Simulate remote method delay for UI testing - @Value("${mock.config.delay:0}") private int delayMs; - private final String auxPods; - private final String pltPods; - - public CaasIngressMockConfiguration() throws IOException { - logger.info("Configuring mock CAAS-Ingres clients"); - // Files in src/test/resources - auxPods = readDataFromPath("caas-ingress-ricaux-pods.json"); - pltPods = readDataFromPath("caas-ingress-ricplt-pods.json"); - } - - private String readDataFromPath(String path) throws IOException { - InputStream is = MethodHandles.lookup().lookupClass().getClassLoader().getResourceAsStream(path); - if (is == null) { - String msg = "Failed to find resource on classpath: " + path; - logger.error(msg); - throw new RuntimeException(msg); - } - InputStreamReader reader = new InputStreamReader(is, "UTF-8"); - StringBuilder sb = new StringBuilder(); - char[] buf = new char[8192]; - int i; - while ((i = reader.read(buf)) > 0) - sb.append(buf, 0, i); - reader.close(); - is.close(); - return sb.toString(); + @Autowired + public CaasIngressMockConfiguration(@Value("${mock.config.delay:0}") int delayMs) { + logger.debug("ctor: configured with delay {}", delayMs); + this.delayMs = delayMs; } - @Bean - // Use the same name as regular configuration - public SimpleKubernetesClient ciAuxApi() throws IOException { - SimpleKubernetesClient mockClient = mock(SimpleKubernetesClient.class); - doAnswer(inv -> { - logger.debug("listPods for aux"); - return auxPods; - }).when(mockClient).listPods("ricaux"); - return mockClient; - } - - @Bean - // Use the same name as regular configuration - public SimpleKubernetesClient ciPltApi() throws IOException { + private SimpleKubernetesClient simpleKubernetesClient(String instanceKey) throws IOException { + // File in src/test/resources + String podFile = RICInstanceMockConfiguration.INSTANCE_KEY_1.equals(instanceKey) + ? "caas-ingress-ricplt-pods-1.json" + : "caas-ingress-ricplt-pods-2.json"; + String pltPods = TestUtils.readDataFromPath(podFile); SimpleKubernetesClient mockClient = mock(SimpleKubernetesClient.class); doAnswer(inv -> { String ns = inv.getArgument(0); logger.debug("listPods for namespace {}", ns); + if (delayMs > 0) { + logger.debug("listPods sleeping {}", delayMs); + Thread.sleep(delayMs); + } if ("ricplt".equals(ns)) return pltPods; else - throw new Exception("Fake server failure"); + throw new IllegalArgumentException("Fake server failure"); }).when(mockClient).listPods(any(String.class)); return mockClient; } + @Bean + // The bean (method) name must be globally unique + public SimpleKubernetesClientBuilder simpleKubernetesClientBuilder() throws IOException { + final SimpleKubernetesClientBuilder mockBuilder = mock(SimpleKubernetesClientBuilder.class); + for (final String key : RICInstanceMockConfiguration.INSTANCE_KEYS) { + SimpleKubernetesClient client = simpleKubernetesClient(key); + when(mockBuilder.getSimpleKubernetesClient(key)).thenReturn(client); + } + return mockBuilder; + } + }