summaryrefslogtreecommitdiffstats
path: root/holmes-actions/src/test
diff options
context:
space:
mode:
authorMehreen Kaleem <mehreen.kaleem@us.fujitsu.com>2020-07-19 09:33:55 +0000
committerMehreen Kaleem <mehreen.kaleem@us.fujitsu.com>2020-07-19 09:34:04 +0000
commite31f9bf54d6bd8a7a3bda3f2fdf8fa7c3e7d6344 (patch)
tree4ed7e6e52536e6669e28afaa8f70429ce895e5b0 /holmes-actions/src/test
parentce0b806a18d8f370e1245c480836d18a04afa243 (diff)
AAI data query changes for the MDONS CLosed
loop case Change-Id: Ib100eed6ca08558a3050c07304eb65cbf31d8eed Issue-ID: HOLMES-312 Signed-off-by: Mehreen Kaleem <mehreen.kaleem@us.fujitsu.com>
Diffstat (limited to 'holmes-actions/src/test')
-rw-r--r--holmes-actions/src/test/java/org/onap/holmes/common/aai/AaiQueryMdonsTest.java175
-rw-r--r--holmes-actions/src/test/resources/aai-mdons.json191
2 files changed, 366 insertions, 0 deletions
diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/aai/AaiQueryMdonsTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/aai/AaiQueryMdonsTest.java
new file mode 100644
index 0000000..0fd577c
--- /dev/null
+++ b/holmes-actions/src/test/java/org/onap/holmes/common/aai/AaiQueryMdonsTest.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright 2020 Fujitsu Limited.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.
+ */
+
+package org.onap.holmes.common.aai;
+
+import static org.junit.Assert.assertEquals;
+import static org.onap.holmes.common.config.MicroServiceConfig.MSB_ADDR;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.ws.rs.core.MultivaluedHashMap;
+import javax.ws.rs.core.MultivaluedMap;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.onap.holmes.common.aai.config.AaiConfig;
+import org.onap.holmes.common.config.MicroServiceConfig;
+import org.onap.holmes.common.utils.HttpsUtils;
+import org.powermock.api.easymock.PowerMock;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
+
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+@RunWith(PowerMockRunner.class)
+@PowerMockIgnore("javax.net.ssl.*")
+@PrepareForTest({AaiQueryMdons.class, HttpsUtils.class, MicroServiceConfig.class, HttpGet.class})
+public class AaiQueryMdonsTest {
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ private static AaiQueryMdons aaiMdonsQuery = AaiQueryMdons.newInstance();
+ private static MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
+
+ private static JsonObject data;
+
+ private HttpResponse httpResponse;
+ private static final String AAI_ADDR = "https://aai.onap:8443/aai/v19/";
+
+ @BeforeClass
+ public static void beforeClass() {
+ System.setProperty(MSB_ADDR, "127.0.0.1:80");
+ System.setProperty("ENABLE_ENCRYPT", "true");
+
+ File file = new File(AaiQueryMdonsTest.class.getClassLoader().getResource("./aai-mdons.json").getFile());
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new FileReader(file));
+ StringBuilder sb = new StringBuilder();
+ reader.lines().forEach(l -> sb.append(l));
+ data = JsonParser.parseString(sb.toString()).getAsJsonObject();
+ } catch (FileNotFoundException e) {
+ // Do nothing
+ } catch (IOException e) {
+ // Do nothing
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException e) {
+ // Do nothing
+ }
+ }
+ }
+
+ headers.add("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
+ headers.add("X-FromAppId", AaiConfig.X_FROMAPP_ID);
+ headers.add("Authorization", AaiConfig.getAuthenticationCredentials());
+ headers.add("Accept", "application/json");
+ headers.add("Content-Type", "application/json");
+
+ }
+
+ @Before
+ public void before() {
+ httpResponse = PowerMock.createMock(HttpResponse.class);
+ Whitebox.setInternalState(aaiMdonsQuery, "headers", headers);
+
+ }
+
+ @After
+ public void after() {
+ PowerMock.resetAll();
+ }
+
+ @Test
+ public void testProcessPnf() throws Exception {
+ String pnfUrl = AAI_ADDR + "network/pnfs/pnf/test1?depth=all";
+ String domainService = AAI_ADDR
+ + "business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/789";
+ PowerMock.resetAll();
+
+ aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse");
+ PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", pnfUrl).andReturn(data.get("pnf-depth-all").toString());
+ PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", domainService)
+ .andReturn(data.get("get-domain-service").toString());
+
+ PowerMock.replayAll();
+ Map<String, String> accessMap = aaiMdonsQuery.processPnf("test1");
+ PowerMock.verifyAll();
+ Map<String, String> verifyMap = new HashMap<>();
+ verifyMap.put("123", "access-service");
+ assertEquals(accessMap, verifyMap);
+ }
+
+ @Test
+ public void testGetPnfName() throws Exception {
+ String pnfUrl = AAI_ADDR + "network/pnfs?pnf-id=test1-id";
+
+ Whitebox.setInternalState(aaiMdonsQuery, "headers", headers);
+
+ aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse");
+ PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", pnfUrl).andReturn(data.get("get-pnf-by-id").toString());
+ PowerMock.replayAll();
+ String pnfName = Whitebox.invokeMethod(aaiMdonsQuery, "getPnfNameFromPnfId", "test1-id");
+
+ PowerMock.verifyAll();
+ assertEquals(pnfName, "test1");
+
+ }
+
+ @Test
+ public void testUpdatelinksAccess() throws Exception {
+ Map<String, String> accessMap = new HashMap<>();
+ accessMap.put("123", "access-service");
+ String accessService = AAI_ADDR
+ + "business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/123";
+ String linkUrl = AAI_ADDR + "network/logical-links/logical-link/link1";
+
+ String response =
+ "{\"link-name\":\"link1\",\"in-maint\":false,\"link-type\":\"inter-domain\",\"available-capacity\":\"ODU2\",\"resource-version\":\"1584338211407\",\"operational-status\":\"down\"}";
+
+ aaiMdonsQuery = PowerMock.createPartialMock(AaiQueryMdons.class, "getResponse", "put");
+
+ PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", accessService)
+ .andReturn(data.get("get-access-service").toString());
+ PowerMock.expectPrivate(aaiMdonsQuery, "getResponse", linkUrl).andReturn(data.get("get-inter-link").toString());
+ PowerMock.expectPrivate(aaiMdonsQuery, "put", linkUrl, response).andReturn(httpResponse);
+
+ PowerMock.replayAll();
+ Whitebox.invokeMethod(aaiMdonsQuery, "updateLinksForAccessService", accessMap);
+
+ PowerMock.verifyAll();
+
+ }
+
+}
diff --git a/holmes-actions/src/test/resources/aai-mdons.json b/holmes-actions/src/test/resources/aai-mdons.json
new file mode 100644
index 0000000..517751c
--- /dev/null
+++ b/holmes-actions/src/test/resources/aai-mdons.json
@@ -0,0 +1,191 @@
+{
+ "get-pnf-by-id":{
+ "pnf":[
+ {
+ "pnf-name":"test1",
+ "in-maint":false,
+ "resource-version":"1593337809133",
+ "operational-status":"down"
+ }
+ ]
+ },
+ "get-domain-service":{
+ "service-instance-id":"789",
+ "service-instance-name":"domain-service",
+ "service-type":"Domain-Service",
+ "service-rate":"ODU2",
+ "service-layer":"ODU",
+ "orchestration-status":"CREATED",
+ "resource-version":"1592808052617",
+ "relationship-list":{
+ "relationship":[
+ {
+ "related-to":"p-interface",
+ "relationship-label":"org.onap.relationships.inventory.ComposedOf",
+ "related-link":"/aai/v19/network/pnfs/pnf/test1/p-interfaces/p-interface/int1",
+ "relationship-data":[
+ {
+ "relationship-key":"pnf.pnf-name",
+ "relationship-value":"test1"
+ },
+ {
+ "relationship-key":"p-interface.interface-name",
+ "relationship-value":"int1"
+ }
+ ]
+ },
+ {
+ "related-to":"p-interface",
+ "relationship-label":"org.onap.relationships.inventory.ComposedOf",
+ "related-link":"/aai/v19/network/pnfs/pnf/test2/p-interfaces/p-interface/int4",
+ "relationship-data":[
+ {
+ "relationship-key":"pnf.pnf-name",
+ "relationship-value":"test2"
+ },
+ {
+ "relationship-key":"p-interface.interface-name",
+ "relationship-value":"int4"
+ }
+ ],
+ "related-to-property":[
+ {
+ "property-key":"service-instance.service-instance-name",
+ "property-value":"domain-service"
+ }
+ ]
+ },
+ {
+ "related-to":"service-instance",
+ "relationship-label":"org.onap.relationships.inventory.ComposedOf",
+ "related-link":"/aai/v19/business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/123",
+ "relationship-data":[
+ {
+ "relationship-key":"customer.global-customer-id",
+ "relationship-value":"Orange"
+ },
+ {
+ "relationship-key":"service-subscription.service-type",
+ "relationship-value":"MDONS_OTN"
+ },
+ {
+ "relationship-key":"service-instance.service-instance-id",
+ "relationship-value":"123"
+ }
+ ],
+ "related-to-property":[
+ {
+ "property-key":"service-instance.service-instance-name",
+ "property-value":"access-service"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "get-access-service":{
+ "service-instance-id":"123",
+ "service-instance-name":"access-service",
+ "service-type":"Access-Service",
+ "service-rate":"ODU2",
+ "service-layer":"ODU",
+ "resource-version":"1593324022557",
+ "orchestration-status":"CREATED",
+ "relationship-list":{
+ "relationship":[
+ {
+ "related-to":"service-instance",
+ "relationship-label":"org.onap.relationships.inventory.ComposedOf",
+ "related-link":"/aai/v19/business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/789",
+ "relationship-data":[
+ {
+ "relationship-key":"customer.global-customer-id",
+ "relationship-value":"Orange"
+ },
+ {
+ "relationship-key":"service-subscription.service-type",
+ "relationship-value":"MDONS_OTN"
+ },
+ {
+ "relationship-key":"service-instance.service-instance-id",
+ "relationship-value":"789"
+ }
+ ],
+ "related-to-property":[
+ {
+ "property-key":"service-instance.service-instance-name",
+ "property-value":"domain-service"
+ }
+ ]
+ },
+ {
+ "related-to":"logical-link",
+ "relationship-label":"org.onap.relationships.inventory.ComposedOf",
+ "related-link":"/aai/v19/network/logical-links/logical-link/link1",
+ "relationship-data":[
+ {
+ "relationship-key":"logical-link.link-name",
+ "relationship-value":"link1"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pnf-depth-all":{
+ "pnf-name":"test1",
+ "resource-version":"1593337809133",
+ "operational-status":"down",
+ "p-interfaces":{
+ "p-interface":[
+ {
+ "interface-name":"int1",
+ "in-maint":false,
+ "resource-version":"159333780998",
+ "relationship-list":{
+ "relationship":[
+ {
+ "related-to":"service-instance",
+ "relationship-label":"org.onap.relationships.inventory.ComposedOf",
+ "related-link":"/aai/v19/business/customers/customer/Orange/service-subscriptions/service-subscription/MDONS_OTN/service-instances/service-instance/789",
+ "relationship-data":[
+ {
+ "relationship-key":"customer.global-customer-id",
+ "relationship-value":"Orange"
+ },
+ {
+ "relationship-key":"service-subscription.service-type",
+ "relationship-value":"MDONS_OTN"
+ },
+ {
+ "relationship-key":"service-instance.service-instance-id",
+ "relationship-value":"789"
+ }
+ ],
+ "related-to-property":[
+ {
+ "property-key":"service-instance.service-instance-name",
+ "property-value":"domain-service"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "interface-name":"int2",
+ "in-maint":false,
+ "resource-version":"1593337809136"
+ }
+ ]
+ }
+ },
+ "get-inter-link":{
+ "link-name":"link1",
+ "in-maint":false,
+ "link-type":"inter-domain",
+ "available-capacity":"ODU2",
+ "resource-version":"1584338211407",
+ "operational-status":"up"
+ }
+}