Extend Mock E2Mgr configuration to save state 27/727/4
authorLott, Christopher (cl778h) <cl778h@att.com>
Thu, 15 Aug 2019 14:36:50 +0000 (10:36 -0400)
committerLott, Christopher (cl778h) <cl778h@att.com>
Thu, 15 Aug 2019 16:23:27 +0000 (12:23 -0400)
This supports demonstrations without a live E2Manager

Change-Id: I3b9d611509c50709bd5415d3b4902bd9096c84b6
Signed-off-by: Lott, Christopher (cl778h) <cl778h@att.com>
docs/release-notes.rst
webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/E2ManagerController.java
webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/E2ManagerMockConfiguration.java
webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/E2ManagerControllerTest.java
webapp-frontend/src/app/services/e2-mgr/e2-mgr.service.ts

index a66d5d4..ce75fac 100644 (file)
@@ -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
 --------------------------
index e4a5ad7..d06aeff 100644 (file)
@@ -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");
index 02d7f49..02b2ba4 100644 (file)
@@ -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<NodebIdentity> nodebIdList;
-       private final GetNodebResponse nodebResponse;
+       private final Map<String, GetNodebResponse> 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.<String>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.<SetupRequest>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.<SetupRequest>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;
index 33fb47d..6161d63 100644 (file)
@@ -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<Void> 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<SetupRequest> entity = new HttpEntity<>(setup);
+               return testRestTemplateAdminRole().exchange(uri, HttpMethod.POST, entity, Void.class);
+       }
+
+       private ResponseEntity<Void> reset() {
+               URI uri = buildUri(null, E2ManagerController.CONTROLLER_PATH, E2ManagerController.RESET_METHOD, "ignored");
+               logger.info("Invoking {}", uri);
+               ResetRequest reset = new ResetRequest();
+               HttpEntity<ResetRequest> 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<List<RanDetailsTransport>> response = testRestTemplateStandardRole().exchange(uri,
                                HttpMethod.GET, null, new ParameterizedTypeReference<List<RanDetailsTransport>>() {
                                });
                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<List<NodebIdentity>> response = testRestTemplateStandardRole().exchange(uri, HttpMethod.GET,
                                null, new ParameterizedTypeReference<List<NodebIdentity>>() {
                                });
                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<SetupRequest> entity = new HttpEntity<>(setup);
-               ResponseEntity<Void> voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.POST, entity,
-                               Void.class);
+               ResponseEntity<Void> 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<SetupRequest> entity = new HttpEntity<>(setup);
                ResponseEntity<Void> 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<Void> 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<ResetRequest> entity = new HttpEntity<>(reset);
-               ResponseEntity<Void> voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.PUT, entity,
-                               Void.class);
+               ResponseEntity<Void> voidResponse = reset();
                logger.debug("resetTest: response {}", voidResponse);
                Assertions.assertTrue(voidResponse.getStatusCode().is2xxSuccessful());
        }
index dfee7e1..e40ee60 100644 (file)
@@ -77,7 +77,7 @@ export class E2ManagerService {
    * @returns Observable with body.
    */
   nodebPut(): Observable<any> {
-    return this.httpClient.put((this.basePath + 'nodeb'), { observe: 'body' });
+    return this.httpClient.put((this.basePath + 'nodebShutdownPut'), { observe: 'body' });
   }
 
 }