X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=webapp-backend%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fric%2Fportal%2Fdashboard%2Fconfig%2FA1MediatorMockConfiguration.java;h=877f0976fa5f3e87eebfce6c574c613f943400f3;hb=662cc613e80c4079fdf5a54ce3135652cb9ad9a1;hp=aef5bc4ccace08f46379c982902557856a34744e;hpb=3f812ea25d352ec33d07f5ffa4c2aa2a77e8e793;p=portal%2Fric-dashboard.git diff --git a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/A1MediatorMockConfiguration.java b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/A1MediatorMockConfiguration.java index aef5bc4c..877f0976 100644 --- a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/A1MediatorMockConfiguration.java +++ b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/A1MediatorMockConfiguration.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * O-RAN-SC * %% - * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * Copyright (C) 2019 AT&T Intellectual Property * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,8 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.lang.invoke.MethodHandles; +import java.util.HashMap; +import java.util.Map; import org.oransc.ric.a1med.client.api.A1MediatorApi; import org.oransc.ric.a1med.client.invoker.ApiClient; @@ -36,21 +38,40 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.http.HttpStatus; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; + /** * Creates a mock implementation of the A1 mediator client API. */ -@Profile("test") @Configuration +@Profile("test") public class A1MediatorMockConfiguration { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + // A "control" is an element in the XApp descriptor + public static final String AC_CONTROL_NAME = "admission_control_policy"; + // Simulate remote method delay for UI testing @Value("${mock.config.delay:0}") private int delayMs; + private final Map appPolicyMap; + public A1MediatorMockConfiguration() { logger.info("Configuring mock A1 Mediator"); + appPolicyMap = new HashMap<>(); + // Define a mock AC policy + ObjectMapper mapper = new ObjectMapper(); + ObjectNode node = mapper.createObjectNode(); + // These fields are defined in the ACAdmissionIntervalControl + // Typescript interface, but are otherwise unknown to this backend. + node.put("enforce", Boolean.TRUE); + node.put("window_length", 0); + node.put("blocking_rate", 0); + node.put("trigger_threshold", 0); + appPolicyMap.put(AC_CONTROL_NAME, node.toString()); } private ApiClient apiClient() { @@ -70,13 +91,17 @@ public class A1MediatorMockConfiguration { logger.debug("a1ControllerGetHandler sleeping {}", delayMs); Thread.sleep(delayMs); } - return null; + String appName = inv.getArgument(0); + return appPolicyMap.get(appName); }).when(mockApi).a1ControllerGetHandler(any(String.class)); doAnswer(inv -> { if (delayMs > 0) { logger.debug("a1ControllerPutHandler sleeping {}", delayMs); Thread.sleep(delayMs); } + String appName = inv.getArgument(0); + String policy = inv.getArgument(1); + appPolicyMap.put(appName, policy); return null; }).when(mockApi).a1ControllerPutHandler(any(String.class), any(Object.class)); return mockApi;