2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2019 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.aai;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
28 import java.io.IOException;
29 import java.nio.charset.StandardCharsets;
30 import java.util.LinkedList;
31 import java.util.List;
32 import java.util.UUID;
33 import org.apache.commons.io.IOUtils;
34 import org.junit.Test;
35 import org.onap.policy.aai.util.Serialization;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
39 public class AaiNqResponseWrapperTest {
40 private static final Logger logger = LoggerFactory.getLogger(AaiNqResponseWrapperTest.class);
44 AaiNqInventoryResponseItem serviceItem = new AaiNqInventoryResponseItem();
45 serviceItem.setModelName("service-instance");
46 serviceItem.setServiceInstance(new AaiNqServiceInstance());
47 serviceItem.getServiceInstance().setServiceInstanceId("dhv-test-vhnfportal-service-instance-id");
48 serviceItem.getServiceInstance().setServiceInstanceName("dhv-test-service-instance-name1");
49 serviceItem.getServiceInstance().setPersonaModelId("82194af1-3c2c-485a-8f44-420e22a9eaa4");
50 serviceItem.getServiceInstance().setPersonaModelVersion("1.0");
51 serviceItem.getServiceInstance().setServiceInstanceLocationId("dhv-test-service-instance-location-id1");
52 serviceItem.getServiceInstance().setResourceVersion("1485366092");
53 serviceItem.setExtraProperties(new AaiNqExtraProperties());
54 serviceItem.getExtraProperties().getExtraProperty()
55 .add(new AaiNqExtraProperty("model.model-name", "service-instance"));
56 serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-type", "widget"));
57 serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-version", "1.0"));
58 serviceItem.getExtraProperties().getExtraProperty()
59 .add(new AaiNqExtraProperty("model.model-id", "82194af1-3c2c-485a-8f44-420e22a9eaa4"));
60 serviceItem.getExtraProperties().getExtraProperty()
61 .add(new AaiNqExtraProperty("model.model-name", "46b92144-923a-4d20-b85a-3cbd847668a9"));
63 AaiNqInventoryResponseItem vfModuleItem = new AaiNqInventoryResponseItem();
64 vfModuleItem.setModelName("vf-module");
65 vfModuleItem.setVfModule(new AaiNqVfModule());
66 vfModuleItem.getVfModule().setVfModuleId("example-vf-module-id-val-49261");
67 vfModuleItem.getVfModule().setVfModuleName("example-vf-module-name-val-73074");
68 vfModuleItem.getVfModule().setHeatStackId("example-heat-stack-id-val-86300");
69 vfModuleItem.getVfModule().setOrchestrationStatus("example-orchestration-status-val-56523");
70 vfModuleItem.getVfModule().setIsBaseVfModule(true);
71 vfModuleItem.getVfModule().setResourceVersion("1485366450");
72 vfModuleItem.getVfModule().setPersonaModelId("ef86f9c5-2165-44f3-8fc3-96018b609ea5");
73 vfModuleItem.getVfModule().setPersonaModelVersion("1.0");
74 vfModuleItem.getVfModule().setWidgetModelId("example-widget-model-id-val-92571");
75 vfModuleItem.getVfModule().setWidgetModelVersion("example-widget-model-version-val-83317");
76 vfModuleItem.getVfModule().setContrailServiceInstanceFqdn("example-contrail-service-instance-fqdn-val-86796");
77 vfModuleItem.setExtraProperties(new AaiNqExtraProperties());
78 vfModuleItem.getExtraProperties().getExtraProperty()
79 .add(new AaiNqExtraProperty("model.model-name", "vf-module"));
80 vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-type", "widget"));
81 vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-version", "1.0"));
82 vfModuleItem.getExtraProperties().getExtraProperty()
83 .add(new AaiNqExtraProperty("model.model-id", "ef86f9c5-2165-44f3-8fc3-96018b609ea5"));
84 vfModuleItem.getExtraProperties().getExtraProperty()
85 .add(new AaiNqExtraProperty("model.model-name", "c00563ae-812b-4e62-8330-7c4d0f47088a"));
87 AaiNqInventoryResponseItem genericVnfItem = new AaiNqInventoryResponseItem();
88 genericVnfItem.setModelName("generic-vnf");
89 genericVnfItem.setGenericVnf(new AaiNqGenericVnf());
90 genericVnfItem.getGenericVnf().setVnfId("dhv-test-gvnf");
91 genericVnfItem.getGenericVnf().setVnfName("dhv-test-gvnf-name");
92 genericVnfItem.getGenericVnf().setVnfName2("dhv-test-gvnf-name2");
93 genericVnfItem.getGenericVnf().setVnfType("SW");
94 genericVnfItem.getGenericVnf().setServiceId("d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4");
95 genericVnfItem.getGenericVnf().setProvStatus("PREPROV");
96 genericVnfItem.getGenericVnf().setOperationalState("dhv-test-operational-state");
97 genericVnfItem.getGenericVnf().setIpv4OamAddress("dhv-test-gvnf-ipv4-oam-address");
98 genericVnfItem.getGenericVnf().setIpv4Loopback0Address("dhv-test-gvnfipv4-loopback0-address");
99 genericVnfItem.getGenericVnf().setInMaint(false);
100 genericVnfItem.getGenericVnf().setIsClosedLoopDisabled(false);
101 genericVnfItem.getGenericVnf().setResourceVersion("1485366450");
102 genericVnfItem.getGenericVnf().setEncrypedAccessFlag(true);
103 genericVnfItem.getGenericVnf().setPersonaModelId("acc6edd8-a8d4-4b93-afaa-0994068be14c");
104 genericVnfItem.getGenericVnf().setPersonaModelVersion("1.0");
105 genericVnfItem.setExtraProperties(new AaiNqExtraProperties());
106 genericVnfItem.getExtraProperties().setExtraProperty(new LinkedList<>());
107 genericVnfItem.getExtraProperties().getExtraProperty()
108 .add(new AaiNqExtraProperty("model.model-name", "generic-vnf"));
109 genericVnfItem.getExtraProperties().getExtraProperty()
110 .add(new AaiNqExtraProperty("model.model-type", "widget"));
111 genericVnfItem.getExtraProperties().getExtraProperty()
112 .add(new AaiNqExtraProperty("model.model-version", "1.0"));
113 genericVnfItem.getExtraProperties().getExtraProperty()
114 .add(new AaiNqExtraProperty("model.model-id", "acc6edd8-a8d4-4b93-afaa-0994068be14c"));
115 genericVnfItem.getExtraProperties().getExtraProperty()
116 .add(new AaiNqExtraProperty("model.model-name-version-id", "93a6166f-b3d5-4f06-b4ba-aed48d009ad9"));
117 genericVnfItem.setItems(new AaiNqInventoryResponseItems());
118 genericVnfItem.getItems().setInventoryResponseItems(new LinkedList<>());
119 genericVnfItem.getItems().getInventoryResponseItems().add(serviceItem);
120 genericVnfItem.getItems().getInventoryResponseItems().add(vfModuleItem);
122 AaiNqInventoryResponseItem cloudItem = new AaiNqInventoryResponseItem();
123 cloudItem.setCloudRegion(new AaiNqCloudRegion());
124 cloudItem.getCloudRegion().setCloudOwner("OWNER");
125 cloudItem.getCloudRegion().setCloudRegionId("REGIONID");
126 cloudItem.getCloudRegion().setCloudRegionVersion("2.5");
127 cloudItem.getCloudRegion().setComplexName("COMPLEXNAME");
128 cloudItem.getCloudRegion().setResourceVersion("1485365988");
130 AaiNqInventoryResponseItem tenantItem = new AaiNqInventoryResponseItem();
131 tenantItem.setTenant(new AaiNqTenant());
132 tenantItem.getTenant().setTenantId("dhv-test-tenant");
133 tenantItem.getTenant().setTenantName("dhv-test-tenant-name");
134 tenantItem.getTenant().setResourceVersion("1485366334");
135 tenantItem.setItems(new AaiNqInventoryResponseItems());
136 tenantItem.getItems().setInventoryResponseItems(new LinkedList<>());
137 tenantItem.getItems().getInventoryResponseItems().add(cloudItem);
139 AaiNqInventoryResponseItem vserverItem = new AaiNqInventoryResponseItem();
140 vserverItem.setVserver(new AaiNqVServer());
141 vserverItem.getVserver().setVserverId("dhv-test-vserver");
142 vserverItem.getVserver().setVserverName("dhv-test-vserver-name");
143 vserverItem.getVserver().setVserverName2("dhv-test-vserver-name2");
144 vserverItem.getVserver().setProvStatus("PREPROV");
145 vserverItem.getVserver().setVserverSelflink("dhv-test-vserver-selflink");
146 vserverItem.getVserver().setInMaint(false);
147 vserverItem.getVserver().setIsClosedLoopDisabled(false);
148 vserverItem.getVserver().setResourceVersion("1485366417");
149 vserverItem.setItems(new AaiNqInventoryResponseItems());
150 vserverItem.getItems().setInventoryResponseItems(new LinkedList<>());
151 vserverItem.getItems().getInventoryResponseItems().add(genericVnfItem);
152 vserverItem.getItems().getInventoryResponseItems().add(tenantItem);
154 AaiNqResponse aaiResponse = new AaiNqResponse();
155 aaiResponse.getInventoryResponseItems().add(vserverItem);
156 AaiNqResponseWrapper aaiNqResponseWarapper = new AaiNqResponseWrapper();
157 aaiNqResponseWarapper.setAaiNqResponse(aaiResponse);
158 aaiNqResponseWarapper.setRequestId(UUID.randomUUID());
159 assertNotNull(aaiNqResponseWarapper);
160 logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper));
162 AaiNqResponse aaiResponse2 = new AaiNqResponse();
163 aaiResponse2.getInventoryResponseItems().add(vserverItem);
164 AaiNqResponseWrapper aaiNqResponseWarapper2 = new AaiNqResponseWrapper(UUID.randomUUID(), aaiResponse);
165 assertNotNull(aaiNqResponseWarapper2);
166 assertNotNull(aaiNqResponseWarapper2.getRequestId());
167 assertNotNull(aaiNqResponseWarapper2.getAaiNqResponse());
168 logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper2));
172 public void testCountVfModules() throws Exception {
173 AaiNqResponseWrapper resp;
176 resp = new AaiNqResponseWrapper();
177 assertEquals(0, resp.countVfModules());
180 resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoNames.json"));
181 assertEquals(0, resp.countVfModules());
184 resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
185 assertEquals(3, resp.countVfModules());
189 public void testGenVfModuleName() throws Exception {
190 AaiNqResponseWrapper resp;
193 resp = new AaiNqResponseWrapper();
194 assertEquals(null, resp.genVfModuleName());
197 resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoNames.json"));
198 assertEquals(null, resp.genVfModuleName());
201 resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
202 assertEquals("my-module-abc_124", resp.genVfModuleName());
206 public void testGetVfModules() throws Exception {
207 AaiNqResponseWrapper resp;
210 resp = new AaiNqResponseWrapper();
211 assertTrue(resp.getVfModuleItems(true).isEmpty());
214 resp = new AaiNqResponseWrapper();
215 resp.setAaiNqResponse(new AaiNqResponse());
216 assertTrue(resp.getVfModuleItems(false).isEmpty());
219 resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoItems.json"));
220 resp.getAaiNqResponse().getInventoryResponseItems().get(0).getItems().getInventoryResponseItems().get(0)
221 .getItems().setInventoryResponseItems(null);
222 assertTrue(resp.getVfModuleItems(false).isEmpty());
225 resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoModules.json"));
226 assertTrue(resp.getVfModuleItems(false).isEmpty());
229 resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoNames.json"));
230 List<AaiNqInventoryResponseItem> lst;
231 lst = resp.getVfModuleItems(false);
232 assertEquals(0, lst.size());
235 resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
236 lst = resp.getVfModuleItems(true);
237 assertEquals(1, lst.size());
238 assertEquals("Vfmodule_vLBMS-0809-1", lst.get(0).getVfModule().getVfModuleName());
240 // non base VF modules
241 resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
242 lst = resp.getVfModuleItems(false);
243 assertEquals(3, lst.size());
246 assertEquals("my-module-abc_1", lst.get(index++).getVfModule().getVfModuleName());
247 assertEquals("my-module-abc_123", lst.get(index++).getVfModule().getVfModuleName());
248 assertEquals("my-module-abc_34", lst.get(index++).getVfModule().getVfModuleName());
252 * Loads a response from a JSON file.
254 * @param fileName name of the file containing the JSON response
255 * @return the response
256 * @throws IOException if the file cannot be read
258 private AaiNqResponse load(String fileName) throws IOException {
259 String json = IOUtils.toString(getClass().getResource(fileName), StandardCharsets.UTF_8);
260 return Serialization.gsonPretty.fromJson(json, AaiNqResponse.class);