From 42c6891f45dce060347b3637e72daac370fbce29 Mon Sep 17 00:00:00 2001 From: "Lott, Christopher (cl778h)" Date: Thu, 15 Aug 2019 10:36:50 -0400 Subject: [PATCH] Extend Mock E2Mgr configuration to save state This supports demonstrations without a live E2Manager Change-Id: I3b9d611509c50709bd5415d3b4902bd9096c84b6 Signed-off-by: Lott, Christopher (cl778h) --- docs/release-notes.rst | 3 +- .../dashboard/controller/E2ManagerController.java | 6 +-- .../config/E2ManagerMockConfiguration.java | 34 +++++++++++---- .../controller/E2ManagerControllerTest.java | 48 ++++++++++++++-------- .../src/app/services/e2-mgr/e2-mgr.service.ts | 2 +- 5 files changed, 64 insertions(+), 29 deletions(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index a66d5d49..ce75facb 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -23,7 +23,7 @@ Version 1.2.1, ? Aug 2019 ------------------------- * Add EPSDK-FW user management and Portal security -Version 1.2.0, 13 Aug 2019 +Version 1.2.0, 15 Aug 2019 -------------------------- * Split URL properties into prefix/suffix parts * Add jacoco plugin to back-end for code coverage @@ -36,6 +36,7 @@ Version 1.2.0, 13 Aug 2019 * Update App manager client to spec version 0.1.7 * Update E2 manager client to spec version 20190813 * Add controller for page refresh of Angular routes +* Extend E2 mock configuration for demo purposes Version 1.0.5, 5 July 2019 -------------------------- diff --git a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/E2ManagerController.java b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/E2ManagerController.java index e4a5ad76..d06aeff0 100644 --- a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/E2ManagerController.java +++ b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/E2ManagerController.java @@ -70,7 +70,7 @@ public class E2ManagerController { public static final String CONTROLLER_PATH = DashboardConstants.ENDPOINT_PREFIX + "/e2mgr"; // Endpoints public static final String HEALTH_METHOD = "health"; - public static final String NODEB_METHOD = "/nodeb"; + public static final String NODEB_SHUTDOWN_METHOD = "/nodebShutdownPut"; public static final String NODEB_LIST_METHOD = "/nodeb-ids"; public static final String RAN_METHOD = "/ran"; public static final String RESET_METHOD = "/reset"; @@ -140,7 +140,7 @@ public class E2ManagerController { } @ApiOperation(value = "Get RAN by name.", response = GetNodebResponse.class) - @GetMapping(NODEB_METHOD + "/{" + PP_RANNAME + "}") + @GetMapping(NODEB_SHUTDOWN_METHOD + "/{" + PP_RANNAME + "}") @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) public GetNodebResponse getNb(@PathVariable(PP_RANNAME) String ranName) { logger.debug("getNb {}", ranName); @@ -166,7 +166,7 @@ public class E2ManagerController { } @ApiOperation(value = "Close all connections to the RANs and delete the data from the nodeb-rnib DB.") - @PutMapping(NODEB_METHOD) + @PutMapping(NODEB_SHUTDOWN_METHOD) @Secured({ DashboardConstants.ROLE_ADMIN }) public void nodebShutdownPut(HttpServletResponse response) { logger.debug("nodebShutdownPut"); diff --git a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/E2ManagerMockConfiguration.java b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/E2ManagerMockConfiguration.java index 02d7f498..02b2ba46 100644 --- a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/E2ManagerMockConfiguration.java +++ b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/E2ManagerMockConfiguration.java @@ -26,7 +26,9 @@ import static org.mockito.Mockito.when; import java.lang.invoke.MethodHandles; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.oransc.ric.e2mgr.client.api.HealthCheckApi; import org.oransc.ric.e2mgr.client.api.NodebApi; @@ -57,17 +59,21 @@ public class E2ManagerMockConfiguration { @Value("${mock.config.delay:0}") private int delayMs; + public static final String MOCK_RAN_NAME = "Mock RAN"; + private final List nodebIdList; - private final GetNodebResponse nodebResponse; + private final Map nodebResponseMap; + private final NodebIdentityGlobalNbId globalNbId; public E2ManagerMockConfiguration() { logger.info("Configuring mock E2 Manager"); - NodebIdentityGlobalNbId globalNbId = new NodebIdentityGlobalNbId().nbId("mockNbId").plmnId("mockPlmId"); - NodebIdentity nbid = new NodebIdentity().inventoryName("mockInvName").globalNbId(globalNbId); + globalNbId = new NodebIdentityGlobalNbId().nbId("mockNbId").plmnId("mockPlmId"); nodebIdList = new ArrayList<>(); - nodebIdList.add(nbid); - nodebResponse = new GetNodebResponse().connectionStatus("mockConnectionStatus").failureType("mockFailureType") - .ip("127.0.0.1").nodeType("mockNodeType").port(123).ranName("mockRanName"); + nodebResponseMap = new HashMap<>(); + nodebIdList.add(new NodebIdentity().inventoryName(MOCK_RAN_NAME).globalNbId(globalNbId)); + nodebResponseMap.put(MOCK_RAN_NAME, + new GetNodebResponse().connectionStatus("mockConnectionStatus").failureType("mockFailureType") + .ip("127.0.0.1").nodeType("mockNodeType").port(123).ranName(MOCK_RAN_NAME)); } private ApiClient apiClient() { @@ -94,9 +100,10 @@ public class E2ManagerMockConfiguration { when(mockApi.getApiClient()).thenReturn(apiClient); doAnswer(inv -> { if (delayMs > 0) { - logger.debug("nodebDelete sleeping {}", delayMs); + logger.debug("nodebShutdownPut sleeping {}", delayMs); Thread.sleep(delayMs); } + nodebIdList.clear(); return null; }).when(mockApi).nodebShutdownPut(); doAnswer(inv -> { @@ -111,7 +118,8 @@ public class E2ManagerMockConfiguration { logger.debug("getNb sleeping {}", delayMs); Thread.sleep(delayMs); } - return nodebResponse; + String invName = inv.getArgument(0); + return nodebResponseMap.get(invName); }).when(mockApi).getNb(any(String.class)); doAnswer(inv -> { if (delayMs > 0) { @@ -125,6 +133,11 @@ public class E2ManagerMockConfiguration { logger.debug("endcSetup sleeping {}", delayMs); Thread.sleep(delayMs); } + SetupRequest sr = inv.getArgument(0); + nodebIdList.add(new NodebIdentity().inventoryName(sr.getRanName()).globalNbId(globalNbId)); + nodebResponseMap.put(sr.getRanName(), + new GetNodebResponse().connectionStatus("mockConnectionStatus").failureType("mockFailureType") + .ip(sr.getRanIp()).nodeType("ENDC").port(sr.getRanPort()).ranName(sr.getRanName())); return null; }).when(mockApi).endcSetup(any(SetupRequest.class)); doAnswer(inv -> { @@ -132,6 +145,11 @@ public class E2ManagerMockConfiguration { logger.debug("x2Setup sleeping {}", delayMs); Thread.sleep(delayMs); } + SetupRequest sr = inv.getArgument(0); + nodebIdList.add(new NodebIdentity().inventoryName(sr.getRanName()).globalNbId(globalNbId)); + nodebResponseMap.put(sr.getRanName(), + new GetNodebResponse().connectionStatus("mockConnectionStatus").failureType("mockFailureType") + .ip(sr.getRanIp()).nodeType("X2").port(sr.getRanPort()).ranName(sr.getRanName())); return null; }).when(mockApi).x2Setup(any(SetupRequest.class)); return mockApi; diff --git a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/E2ManagerControllerTest.java b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/E2ManagerControllerTest.java index 33fb47d4..6161d63e 100644 --- a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/E2ManagerControllerTest.java +++ b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/E2ManagerControllerTest.java @@ -29,6 +29,7 @@ import org.oransc.ric.e2mgr.client.model.GetNodebResponse; import org.oransc.ric.e2mgr.client.model.NodebIdentity; import org.oransc.ric.e2mgr.client.model.ResetRequest; import org.oransc.ric.e2mgr.client.model.SetupRequest; +import org.oransc.ric.portal.dashboard.config.E2ManagerMockConfiguration; import org.oransc.ric.portal.dashboard.model.RanDetailsTransport; import org.oransc.ric.portal.dashboard.model.SuccessTransport; import org.slf4j.Logger; @@ -42,6 +43,22 @@ public class E2ManagerControllerTest extends AbstractControllerTest { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private ResponseEntity endcSetup() { + URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.ENDC_SETUP_METHOD); + logger.info("Invoking {}", uri); + SetupRequest setup = new SetupRequest().ranName(E2ManagerMockConfiguration.MOCK_RAN_NAME); + HttpEntity entity = new HttpEntity<>(setup); + return testRestTemplateAdminRole().exchange(uri, HttpMethod.POST, entity, Void.class); + } + + private ResponseEntity reset() { + URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.RESET_METHOD, "ignored"); + logger.info("Invoking {}", uri); + ResetRequest reset = new ResetRequest(); + HttpEntity entity = new HttpEntity<>(reset); + return testRestTemplateAdminRole().exchange(uri, HttpMethod.PUT, entity, Void.class); + } + @Test public void versionTest() { URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.VERSION_METHOD); @@ -60,58 +77,62 @@ public class E2ManagerControllerTest extends AbstractControllerTest { @Test public void ranDetailsTest() { + endcSetup(); URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.RAN_METHOD); logger.info("Invoking {}", uri); ResponseEntity> response = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET, null, new ParameterizedTypeReference>() { }); Assertions.assertFalse(response.getBody().isEmpty()); + reset(); } @Test public void nodebListTest() { + endcSetup(); URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.NODEB_LIST_METHOD); logger.info("Invoking {}", uri); ResponseEntity> response = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET, null, new ParameterizedTypeReference>() { }); Assertions.assertFalse(response.getBody().isEmpty()); + reset(); } @Test public void nodebStatusTest() { - URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.NODEB_METHOD, "nodeb"); + endcSetup(); + URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.NODEB_SHUTDOWN_METHOD, + E2ManagerMockConfiguration.MOCK_RAN_NAME); logger.info("Invoking {}", uri); GetNodebResponse response = testRestTemplateStandardRole().getForObject(uri, GetNodebResponse.class); Assertions.assertNotNull(response.getRanName()); + reset(); } @Test public void endcSetupTest() { - URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.ENDC_SETUP_METHOD); - logger.info("Invoking {}", uri); - SetupRequest setup = new SetupRequest(); - HttpEntity entity = new HttpEntity<>(setup); - ResponseEntity voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.POST, entity, - Void.class); + ResponseEntity voidResponse = endcSetup(); Assertions.assertTrue(voidResponse.getStatusCode().is2xxSuccessful()); + reset(); } @Test public void x2SetupTest() { URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.X2_SETUP_METHOD); logger.info("Invoking {}", uri); - SetupRequest setup = new SetupRequest(); + SetupRequest setup = new SetupRequest().ranName(E2ManagerMockConfiguration.MOCK_RAN_NAME); HttpEntity entity = new HttpEntity<>(setup); ResponseEntity voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.POST, entity, Void.class); Assertions.assertTrue(voidResponse.getStatusCode().is2xxSuccessful()); + reset(); } // Aka big--button test @Test - public void nodebPutTest() { - URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.NODEB_METHOD); + public void nodebShutdownPutTest() { + URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.NODEB_SHUTDOWN_METHOD); logger.info("Invoking {}", uri); ResponseEntity voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.PUT, null, Void.class); logger.debug("nodebPutTest: response {}", voidResponse); @@ -120,12 +141,7 @@ public class E2ManagerControllerTest extends AbstractControllerTest { @Test public void resetTest() { - URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.RESET_METHOD, "ranName"); - logger.info("Invoking {}", uri); - ResetRequest reset = new ResetRequest(); - HttpEntity entity = new HttpEntity<>(reset); - ResponseEntity voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.PUT, entity, - Void.class); + ResponseEntity voidResponse = reset(); logger.debug("resetTest: response {}", voidResponse); Assertions.assertTrue(voidResponse.getStatusCode().is2xxSuccessful()); } diff --git a/webapp-frontend/src/app/services/e2-mgr/e2-mgr.service.ts b/webapp-frontend/src/app/services/e2-mgr/e2-mgr.service.ts index dfee7e15..e40ee607 100644 --- a/webapp-frontend/src/app/services/e2-mgr/e2-mgr.service.ts +++ b/webapp-frontend/src/app/services/e2-mgr/e2-mgr.service.ts @@ -77,7 +77,7 @@ export class E2ManagerService { * @returns Observable with body. */ nodebPut(): Observable { - return this.httpClient.put((this.basePath + 'nodeb'), { observe: 'body' }); + return this.httpClient.put((this.basePath + 'nodebShutdownPut'), { observe: 'body' }); } } -- 2.16.6