From 5c07f0088fd71e30bfd8dc92b870f604b4297420 Mon Sep 17 00:00:00 2001 From: Norm Traxler Date: Mon, 21 Jan 2019 21:03:59 +0000 Subject: NetworkDiscCtxBuilder error handling Issue-ID: LOG-938 Change-Id: I20e8592efe5f1ca8960f228041303c8d25628018 Signed-off-by: Norm Traxler --- .../test/NetworkDiscoveryRspInfoTest.java | 104 ------------- .../test/jolt/TransformationTest.java | 48 +++++- .../NetworkDiscoveryContextBuilderTest.java | 163 +++++++++------------ 3 files changed, 110 insertions(+), 205 deletions(-) delete mode 100644 src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/NetworkDiscoveryRspInfoTest.java (limited to 'src/test/java') diff --git a/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/NetworkDiscoveryRspInfoTest.java b/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/NetworkDiscoveryRspInfoTest.java deleted file mode 100644 index af2ba01..0000000 --- a/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/NetworkDiscoveryRspInfoTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * ============LICENSE_START=================================================== - * Copyright (c) 2018 Amdocs - * ============================================================================ - * 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.onap.pomba.contextbuilder.networkdiscovery.test; - -import static org.junit.Assert.assertEquals; - -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.CountDownLatch; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.onap.pomba.contextbuilder.networkdiscovery.model.NetworkDiscoveryRspInfo; -import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.NetworkDiscoveryNotification; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; - -@RunWith(SpringJUnit4ClassRunner.class) -@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class }) -@WebAppConfiguration -@SpringBootTest -@TestPropertySource(properties = { "enricher.url=http://localhost:9505", "serviceDecomposition.host=localhost", - "networkDiscoveryMicroService.host=localhost", - "networkDiscoveryMicroService.responseTimeOutInMilliseconds=1000" }) -public class NetworkDiscoveryRspInfoTest { - NetworkDiscoveryRspInfo networkDiscoveryRspInfo = new NetworkDiscoveryRspInfo(); - - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testGetRequestId() throws Exception { - String requestId = "2123"; - networkDiscoveryRspInfo.setRequestId(requestId); - assertEquals(requestId, networkDiscoveryRspInfo.getRequestId()); - } - - @Test - public void testGetResourceType() throws Exception { - String resourceType = "vserver"; - networkDiscoveryRspInfo.setResourceType(resourceType); - assertEquals(resourceType, networkDiscoveryRspInfo.getResourceType()); - } - - @Test - public void testGetResourceId() throws Exception { - String resourceId = "2123"; - networkDiscoveryRspInfo.setResourceId(resourceId); - assertEquals(resourceId, networkDiscoveryRspInfo.getResourceId()); - } - - @Test - public void testGetLatchSignal() throws Exception { - CountDownLatch latchSignal = new CountDownLatch(5); - networkDiscoveryRspInfo.setLatchSignal(latchSignal); - assertEquals(latchSignal, networkDiscoveryRspInfo.getLatchSignal()); - } - - @Test - public void testGetNetworkDiscoveryNotificationList() throws Exception { - NetworkDiscoveryNotification tmpNof = new NetworkDiscoveryNotification(); - List myList = Arrays.asList(tmpNof); - - networkDiscoveryRspInfo.setNetworkDiscoveryNotificationList(myList); - networkDiscoveryRspInfo.toString(); - assertEquals(myList, networkDiscoveryRspInfo.getNetworkDiscoveryNotificationList()); - } - - @Test - public void testGetRelatedRequestIdList() throws Exception { - List myList = Arrays.asList("myTest123"); - - networkDiscoveryRspInfo.setRelatedRequestIdList(myList); - assertEquals(myList, networkDiscoveryRspInfo.getRelatedRequestIdList()); - } -} diff --git a/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/jolt/TransformationTest.java b/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/jolt/TransformationTest.java index 7518591..29a4a6f 100644 --- a/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/jolt/TransformationTest.java +++ b/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/test/jolt/TransformationTest.java @@ -28,10 +28,12 @@ import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.onap.pomba.contextbuilder.networkdiscovery.model.NdQuery; +import org.onap.pomba.common.datatypes.ModelContext; +import org.onap.pomba.contextbuilder.networkdiscovery.model.NdResources; public class TransformationTest { + private static final String CONFIG_JOLT_DIRECTORY = "config/jolt/"; private static final String TEST_RESOURCES = "src/test/resources/jolt/"; @Rule @@ -39,26 +41,58 @@ public class TransformationTest { @Test - public void testTransformNdQuery() { + public void testTransformNdResources() { - Object sourceObject = JsonUtils.filepathToObject(TEST_RESOURCES + "serviceDecompToNdQuery-input.json"); + Object sourceObject = JsonUtils.filepathToObject(TEST_RESOURCES + "/serviceDecompResponse.json"); Object sourceObject1 = JsonUtils.jsonToObject(JsonUtils.toJsonString(sourceObject)); - List chainrSpecJSON = JsonUtils.filepathToList("config/ndQuery.spec"); - Chainr chainr = Chainr.fromSpec(chainrSpecJSON); + List chainrSpecJson = JsonUtils.filepathToList(CONFIG_JOLT_DIRECTORY + "sdToNdResourcesSpec.json"); + Chainr chainr = Chainr.fromSpec(chainrSpecJson); + Object output = chainr.transform(sourceObject1); + + String resultJson = JsonUtils.toJsonString(output); + + System.err.println(resultJson); + + // read the result into the NqQuery class: + Gson gson = new Gson(); + NdResources ndQuery = gson.fromJson(resultJson, NdResources.class); + + // convert ndQuery back to json: + String ndQueryToJson = gson.toJson(ndQuery); + + + + // Compare with expected output: + Object expectedObject = JsonUtils.filepathToObject(TEST_RESOURCES + "serviceDecompToNdResources-expected.json"); + + Assert.assertEquals("Json transformation result does not match expected content", + JsonUtils.toPrettyJsonString(expectedObject), + JsonUtils.toPrettyJsonString(JsonUtils.jsonToObject(ndQueryToJson))); + + } + + @Test + public void testTransformModelContext() { + + Object sourceObject = JsonUtils.filepathToObject(TEST_RESOURCES + "serviceDecompResponse.json"); + Object sourceObject1 = JsonUtils.jsonToObject(JsonUtils.toJsonString(sourceObject)); + + List chainrSpecJson = JsonUtils.filepathToList(CONFIG_JOLT_DIRECTORY + "sdToModelContextSpec.json"); + Chainr chainr = Chainr.fromSpec(chainrSpecJson); Object output = chainr.transform(sourceObject1); String resultJson = JsonUtils.toJsonString(output); // read the result into the NqQuery class: Gson gson = new Gson(); - NdQuery ndQuery = gson.fromJson(resultJson, NdQuery.class); + ModelContext ndQuery = gson.fromJson(resultJson, ModelContext.class); // convert ndQuery back to json: String ndQueryToJson = gson.toJson(ndQuery); // Compare with expected output: - Object expectedObject = JsonUtils.filepathToObject(TEST_RESOURCES + "serviceDecompToNdQuery-expected.json"); + Object expectedObject = JsonUtils.filepathToObject(TEST_RESOURCES + "serviceDecompToModelContext-expected.json"); Assert.assertEquals("Json transformation result does not match expected content", JsonUtils.toPrettyJsonString(expectedObject), diff --git a/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/unittest/service/NetworkDiscoveryContextBuilderTest.java b/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/unittest/service/NetworkDiscoveryContextBuilderTest.java index 024f21a..c7475b0 100644 --- a/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/unittest/service/NetworkDiscoveryContextBuilderTest.java +++ b/src/test/java/org/onap/pomba/contextbuilder/networkdiscovery/unittest/service/NetworkDiscoveryContextBuilderTest.java @@ -24,15 +24,13 @@ import static org.mockito.Mockito.mock; import com.github.tomakehurst.wiremock.client.WireMock; import com.github.tomakehurst.wiremock.junit.WireMockRule; import com.github.tomakehurst.wiremock.matching.UrlPattern; +import com.google.gson.Gson; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Base64; -import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletRequest; @@ -44,11 +42,8 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; -import org.onap.pomba.common.datatypes.DataQuality; +import org.onap.pomba.common.datatypes.ModelContext; import org.onap.pomba.contextbuilder.networkdiscovery.service.rs.RestService; -import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.Attribute; -import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.NetworkDiscoveryNotification; -import org.onap.sdnc.apps.pomba.networkdiscovery.datamodel.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -75,10 +70,8 @@ public class NetworkDiscoveryContextBuilderTest { private String partnerName = "POMBA"; private String transactionId = UUID.randomUUID().toString(); private String serviceInstanceId = "c6456519-6acf-4adb-997c-3c363dd4caaf"; - private String requestId = "2131__1"; HttpServletRequest httpServletRequest = mock(HttpServletRequest.class); - NetworkDiscoveryNotification networkDiscoveryNotification = simulateNetworkDiscoveryNotification(); @Autowired Environment environment; @@ -135,8 +128,8 @@ public class NetworkDiscoveryContextBuilderTest { public void testVerifyServiceDecomposition() throws Exception { String urlStr = "/service-decomposition/service/context?serviceInstanceId=" + serviceInstanceId; - addResponse(urlStr, "junit/SD_response.json", serviceDecompositionRule); - addResponseAny("junit/networkDiscoveryResponse-1.json", networkDiscoveryMicroServiceRule); + addResponse(urlStr, "junit/serviceDecompositionResponse-1.json", serviceDecompositionRule); + addResponseAny("junit/networkDiscoveryResponseVserver-1.json", networkDiscoveryMicroServiceRule); Response response = this.restService.getContext(httpServletRequest, authorization, partnerName, transactionId, null, null, serviceInstanceId, null, null); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -146,20 +139,73 @@ public class NetworkDiscoveryContextBuilderTest { public void testVerifyGetContext() throws Exception { String serviceDecompUrl = "/service-decomposition/service/context?serviceInstanceId=" + serviceInstanceId; - addResponse(serviceDecompUrl, "junit/serviceDecomposition-1.json", serviceDecompositionRule); - addResponseAny("junit/networkDiscoveryResponse-1.json", networkDiscoveryMicroServiceRule); + addResponse(serviceDecompUrl, "junit/serviceDecompositionResponse-1.json", serviceDecompositionRule); + + String vserverPayload = readFully( + ClassLoader.getSystemResourceAsStream("junit/networkDiscoveryResponseVserver-1.json")); + networkDiscoveryMicroServiceRule.stubFor(WireMock + .any(WireMock.urlPathEqualTo("/network-discovery/v1/network/resource")) + .withQueryParam("resourceType", WireMock.equalTo("vserver")).willReturn(okJson(vserverPayload))); + + String l3networkPayload = readFully( + ClassLoader.getSystemResourceAsStream("junit/networkDiscoveryResponseL3Network.json")); + networkDiscoveryMicroServiceRule.stubFor(WireMock + .any(WireMock.urlPathEqualTo("/network-discovery/v1/network/resource")) + .withQueryParam("resourceType", WireMock.equalTo("l3-network")).willReturn(okJson(l3networkPayload))); Response response = this.restService.getContext(httpServletRequest, authorization, partnerName, transactionId, null, null, serviceInstanceId, null, null); assertEquals(Status.OK.getStatusCode(), response.getStatus()); + + System.out.println(response.getEntity()); + + Gson gson = new Gson(); + ModelContext modelContext = gson.fromJson((String) response.getEntity(), ModelContext.class); + assertTrue(modelContext.getVnfs().size() > 0); + assertTrue(modelContext.getVnfs().get(0).getVfModules().size() > 0); + assertTrue(modelContext.getVnfs().get(0).getVfModules().get(0).getVms().size() > 0); + + } + + @Test + public void testVerifyGetContextNdResourceNotFound() throws Exception { + + String serviceDecompUrl = "/service-decomposition/service/context?serviceInstanceId=" + serviceInstanceId; + addResponse(serviceDecompUrl, "junit/serviceDecompositionResponse-1.json", serviceDecompositionRule); + UrlPattern testPath = WireMock.anyUrl(); + networkDiscoveryMicroServiceRule.stubFor(get(testPath).willReturn(WireMock.notFound())); + + Response response = this.restService.getContext(httpServletRequest, authorization, partnerName, transactionId, + null, null, serviceInstanceId, null, null); + + assertEquals(Status.OK.getStatusCode(), response.getStatus()); + + Gson gson = new Gson(); + ModelContext modelContext = gson.fromJson((String)response.getEntity(), ModelContext.class); + assertTrue(modelContext.getVnfs().size() > 0); + assertTrue(modelContext.getVnfs().get(0).getVfModules().size() > 0); + assertTrue(modelContext.getVnfs().get(0).getVfModules().get(0).getVms().size() > 0); + + } + + @Test + public void testVerifyGetContextSdResoureNofFound() throws Exception { + + UrlPattern testPath = WireMock.anyUrl(); + serviceDecompositionRule.stubFor(get(testPath).willReturn(WireMock.notFound())); + + Response response = this.restService.getContext(httpServletRequest, authorization, partnerName, transactionId, + null, null, serviceInstanceId, null, null); + + assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus()); } @Test public void testVerifyNoPartnerNameWithFromAppId() throws Exception { String serviceDecompUrl = "/service-decomposition/service/context?serviceInstanceId=" + serviceInstanceId; - addResponse(serviceDecompUrl, "junit/serviceDecomposition-1.json", serviceDecompositionRule); - addResponseAny("junit/networkDiscoveryResponse-1.json", networkDiscoveryMicroServiceRule); + addResponse(serviceDecompUrl, "junit/serviceDecompositionResponse-1.json", serviceDecompositionRule); + addResponseAny("junit/networkDiscoveryResponseVserver-1.json", networkDiscoveryMicroServiceRule); Response response = this.restService.getContext(httpServletRequest, authorization, null, transactionId, partnerName, null, serviceInstanceId, null, null); @@ -169,8 +215,8 @@ public class NetworkDiscoveryContextBuilderTest { @Test public void testVerifyNoRequestIdNoTransactionId() throws Exception { String serviceDecompUrl = "/service-decomposition/service/context?serviceInstanceId=" + serviceInstanceId; - addResponse(serviceDecompUrl, "junit/serviceDecomposition-1.json", serviceDecompositionRule); - addResponseAny("junit/networkDiscoveryResponse-1.json", networkDiscoveryMicroServiceRule); + addResponse(serviceDecompUrl, "junit/serviceDecompositionResponse-1.json", serviceDecompositionRule); + addResponseAny("junit/networkDiscoveryResponseVserver-1.json", networkDiscoveryMicroServiceRule); Response response = this.restService.getContext(httpServletRequest, authorization, partnerName, null, null, null, serviceInstanceId, null, null); @@ -180,8 +226,8 @@ public class NetworkDiscoveryContextBuilderTest { @Test public void testVerifyNoPartnerNameNoFromAppId() throws Exception { String serviceDecompUrl = "/service-decomposition/service/context?serviceInstanceId=" + serviceInstanceId; - addResponse(serviceDecompUrl, "junit/serviceDecomposition-1.json", serviceDecompositionRule); - addResponseAny("junit/networkDiscoveryResponse-1.json", networkDiscoveryMicroServiceRule); + addResponse(serviceDecompUrl, "junit/serviceDecompositionResponse-1.json", serviceDecompositionRule); + addResponseAny("junit/networkDiscoveryResponseVserver-1.json", networkDiscoveryMicroServiceRule); Response response = this.restService.getContext(httpServletRequest, authorization, null, transactionId, null, null, serviceInstanceId, null, null); @@ -191,8 +237,8 @@ public class NetworkDiscoveryContextBuilderTest { @Test public void testVerifyNoRequestIdWithTransactionId() throws Exception { String serviceDecompUrl = "/service-decomposition/service/context?serviceInstanceId=" + serviceInstanceId; - addResponse(serviceDecompUrl, "junit/serviceDecomposition-1.json", serviceDecompositionRule); - addResponseAny("junit/networkDiscoveryResponse-1.json", networkDiscoveryMicroServiceRule); + addResponse(serviceDecompUrl, "junit/serviceDecompositionResponse-1.json", serviceDecompositionRule); + addResponseAny("junit/networkDiscoveryResponseVserver-1.json", networkDiscoveryMicroServiceRule); Response response = this.restService.getContext(httpServletRequest, authorization, partnerName, null, null, transactionId, serviceInstanceId, null, null); @@ -206,8 +252,8 @@ public class NetworkDiscoveryContextBuilderTest { private void addResponseAny(String classpathResource, WireMockRule thisMock) throws IOException { String payload = readFully(ClassLoader.getSystemResourceAsStream(classpathResource)); - UrlPattern tPath = WireMock.anyUrl(); - thisMock.stubFor(get(tPath).willReturn(okJson(payload))); + UrlPattern testPath = WireMock.anyUrl(); + thisMock.stubFor(get(testPath).willReturn(okJson(payload))); } private String readFully(InputStream in) throws IOException { @@ -221,75 +267,4 @@ public class NetworkDiscoveryContextBuilderTest { } return content.toString(); } - - private NetworkDiscoveryNotification simulateNetworkDiscoveryNotification() { - Resource myResource = new Resource(); - myResource.setId("25fb07ab-0478-465e-a021-6384ac299671"); - myResource.setType("vserver"); - DataQuality dataQuality = new DataQuality(); - dataQuality.setStatus(DataQuality.Status.ok); - myResource.setDataQuality(dataQuality); - Attribute attribute = new Attribute(); - attribute.setName("vserver-id"); - attribute.setValue("25fb07ab-0478-465e-a021-6384ac299671"); - attribute.setDataQuality(dataQuality); - List attributeList = new ArrayList<>(); - attributeList.add(attribute); - - attribute.setName("power-state"); - attribute.setValue("1"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName("vm-state"); - attribute.setValue("active"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName("status"); - attribute.setValue("ACTIVE"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName("host-status"); - attribute.setValue("UNKNOWN"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName("updated"); - attribute.setValue("2017-11-20T04:26:13Z"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName("disk-allocation-gb"); - attribute.setValue(".010"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName("memory-usage-mb"); - attribute.setValue("null"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName("cpu-util-percent"); - attribute.setValue(".048"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - - attribute.setName(".048"); - attribute.setValue("2018-07-26 01:37:07 +0000"); - attribute.setDataQuality(dataQuality); - attributeList.add(attribute); - myResource.setAttributeList(attributeList); - - NetworkDiscoveryNotification notification = new NetworkDiscoveryNotification(); - notification.setResources(Arrays.asList(myResource)); - notification.setAckFinalIndicator(true); - notification.setCode(200); - notification.setRequestId(requestId); - notification.setMessage("OK"); - - return notification; - } - } -- cgit 1.2.3-korg