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;fp=webapp-backend%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fric%2Fportal%2Fdashboard%2Fconfig%2FCaasIngressMockConfiguration.java;h=c7535229d3a8937e8a1cd0ff27bc1ef9232feb77;hb=55472d9367cf229b2b87a625a8aa1dfb822cbaad;hp=0000000000000000000000000000000000000000;hpb=63691d3d9377a0cf86923be38202ccbf87872bcd;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 new file mode 100644 index 00000000..c7535229 --- /dev/null +++ b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/CaasIngressMockConfiguration.java @@ -0,0 +1,102 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * 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. + * ========================LICENSE_END=================================== + */ +package org.oransc.ric.portal.dashboard.config; + +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.lang.invoke.MethodHandles; + +import org.oransc.ric.portal.dashboard.k8sapi.SimpleKubernetesClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +/** + * Creates mock implementations of Kubernetes clients that answer requests with + * sample data read from the filesystem. + */ +@Profile("test") +@Configuration +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(); + } + + @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 { + SimpleKubernetesClient mockClient = mock(SimpleKubernetesClient.class); + doAnswer(inv -> { + logger.debug("listPods for plt"); + return pltPods; + }).when(mockClient).listPods("ricplt"); + return mockClient; + } + +}