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 String WIDGET = "widget";
41 private static final String MODEL_VERSION_KEY = "model.model-version";
42 private static final String MODEL_TYPE_KEY = "model.model-type";
43 private static final String MODEL_NAME_KEY = "model.model-name";
44 private static final String MODEL_ID_KEY = "model.model-id";
45 private static final String VERSION_JSON = "AaiNqResponseWrapper-Vserver.json";
46 private static final String NO_NAMES_JSON = "AaiNqResponseWrapper-NoNames.json";
47 private static final Logger logger = LoggerFactory.getLogger(AaiNqResponseWrapperTest.class);
51 AaiNqInventoryResponseItem serviceItem = new AaiNqInventoryResponseItem();
52 serviceItem.setModelName("service-instance");
53 serviceItem.setServiceInstance(new AaiNqServiceInstance());
54 serviceItem.getServiceInstance().setServiceInstanceId("dhv-test-vhnfportal-service-instance-id");
55 serviceItem.getServiceInstance().setServiceInstanceName("dhv-test-service-instance-name1");
56 serviceItem.getServiceInstance().setPersonaModelId("82194af1-3c2c-485a-8f44-420e22a9eaa4");
57 serviceItem.getServiceInstance().setPersonaModelVersion("1.0");
58 serviceItem.getServiceInstance().setServiceInstanceLocationId("dhv-test-service-instance-location-id1");
59 serviceItem.getServiceInstance().setResourceVersion("1485366092");
60 serviceItem.setExtraProperties(new AaiNqExtraProperties());
61 serviceItem.getExtraProperties().getExtraProperty()
62 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "service-instance"));
63 serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_TYPE_KEY, WIDGET));
64 serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_VERSION_KEY, "1.0"));
65 serviceItem.getExtraProperties().getExtraProperty()
66 .add(new AaiNqExtraProperty(MODEL_ID_KEY, "82194af1-3c2c-485a-8f44-420e22a9eaa4"));
67 serviceItem.getExtraProperties().getExtraProperty()
68 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "46b92144-923a-4d20-b85a-3cbd847668a9"));
70 AaiNqInventoryResponseItem vfModuleItem = new AaiNqInventoryResponseItem();
71 vfModuleItem.setModelName("vf-module");
72 vfModuleItem.setVfModule(new AaiNqVfModule());
73 vfModuleItem.getVfModule().setVfModuleId("example-vf-module-id-val-49261");
74 vfModuleItem.getVfModule().setVfModuleName("example-vf-module-name-val-73074");
75 vfModuleItem.getVfModule().setHeatStackId("example-heat-stack-id-val-86300");
76 vfModuleItem.getVfModule().setOrchestrationStatus("example-orchestration-status-val-56523");
77 vfModuleItem.getVfModule().setIsBaseVfModule(true);
78 vfModuleItem.getVfModule().setResourceVersion("1485366450");
79 vfModuleItem.getVfModule().setPersonaModelId("ef86f9c5-2165-44f3-8fc3-96018b609ea5");
80 vfModuleItem.getVfModule().setPersonaModelVersion("1.0");
81 vfModuleItem.getVfModule().setWidgetModelId("example-widget-model-id-val-92571");
82 vfModuleItem.getVfModule().setWidgetModelVersion("example-widget-model-version-val-83317");
83 vfModuleItem.getVfModule().setContrailServiceInstanceFqdn("example-contrail-service-instance-fqdn-val-86796");
84 vfModuleItem.setExtraProperties(new AaiNqExtraProperties());
85 vfModuleItem.getExtraProperties().getExtraProperty()
86 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "vf-module"));
87 vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_TYPE_KEY, WIDGET));
88 vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_VERSION_KEY, "1.0"));
89 vfModuleItem.getExtraProperties().getExtraProperty()
90 .add(new AaiNqExtraProperty(MODEL_ID_KEY, "ef86f9c5-2165-44f3-8fc3-96018b609ea5"));
91 vfModuleItem.getExtraProperties().getExtraProperty()
92 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "c00563ae-812b-4e62-8330-7c4d0f47088a"));
94 AaiNqInventoryResponseItem genericVnfItem = new AaiNqInventoryResponseItem();
95 genericVnfItem.setModelName("generic-vnf");
96 genericVnfItem.setGenericVnf(new AaiNqGenericVnf());
97 genericVnfItem.getGenericVnf().setVnfId("dhv-test-gvnf");
98 genericVnfItem.getGenericVnf().setVnfName("dhv-test-gvnf-name");
99 genericVnfItem.getGenericVnf().setVnfName2("dhv-test-gvnf-name2");
100 genericVnfItem.getGenericVnf().setVnfType("SW");
101 genericVnfItem.getGenericVnf().setServiceId("d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4");
102 genericVnfItem.getGenericVnf().setProvStatus("PREPROV");
103 genericVnfItem.getGenericVnf().setOperationalState("dhv-test-operational-state");
104 genericVnfItem.getGenericVnf().setIpv4OamAddress("dhv-test-gvnf-ipv4-oam-address");
105 genericVnfItem.getGenericVnf().setIpv4Loopback0Address("dhv-test-gvnfipv4-loopback0-address");
106 genericVnfItem.getGenericVnf().setInMaint(false);
107 genericVnfItem.getGenericVnf().setIsClosedLoopDisabled(false);
108 genericVnfItem.getGenericVnf().setResourceVersion("1485366450");
109 genericVnfItem.getGenericVnf().setEncrypedAccessFlag(true);
110 genericVnfItem.getGenericVnf().setPersonaModelId("acc6edd8-a8d4-4b93-afaa-0994068be14c");
111 genericVnfItem.getGenericVnf().setPersonaModelVersion("1.0");
112 genericVnfItem.setExtraProperties(new AaiNqExtraProperties());
113 genericVnfItem.getExtraProperties().setExtraProperty(new LinkedList<>());
114 genericVnfItem.getExtraProperties().getExtraProperty()
115 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "generic-vnf"));
116 genericVnfItem.getExtraProperties().getExtraProperty()
117 .add(new AaiNqExtraProperty(MODEL_TYPE_KEY, WIDGET));
118 genericVnfItem.getExtraProperties().getExtraProperty()
119 .add(new AaiNqExtraProperty(MODEL_VERSION_KEY, "1.0"));
120 genericVnfItem.getExtraProperties().getExtraProperty()
121 .add(new AaiNqExtraProperty(MODEL_ID_KEY, "acc6edd8-a8d4-4b93-afaa-0994068be14c"));
122 genericVnfItem.getExtraProperties().getExtraProperty()
123 .add(new AaiNqExtraProperty("model.model-name-version-id", "93a6166f-b3d5-4f06-b4ba-aed48d009ad9"));
124 genericVnfItem.setItems(new AaiNqInventoryResponseItems());
125 genericVnfItem.getItems().setInventoryResponseItems(new LinkedList<>());
126 genericVnfItem.getItems().getInventoryResponseItems().add(serviceItem);
127 genericVnfItem.getItems().getInventoryResponseItems().add(vfModuleItem);
129 AaiNqInventoryResponseItem cloudItem = new AaiNqInventoryResponseItem();
130 cloudItem.setCloudRegion(new AaiNqCloudRegion());
131 cloudItem.getCloudRegion().setCloudOwner("OWNER");
132 cloudItem.getCloudRegion().setCloudRegionId("REGIONID");
133 cloudItem.getCloudRegion().setCloudRegionVersion("2.5");
134 cloudItem.getCloudRegion().setComplexName("COMPLEXNAME");
135 cloudItem.getCloudRegion().setResourceVersion("1485365988");
137 AaiNqInventoryResponseItem tenantItem = new AaiNqInventoryResponseItem();
138 tenantItem.setTenant(new AaiNqTenant());
139 tenantItem.getTenant().setTenantId("dhv-test-tenant");
140 tenantItem.getTenant().setTenantName("dhv-test-tenant-name");
141 tenantItem.getTenant().setResourceVersion("1485366334");
142 tenantItem.setItems(new AaiNqInventoryResponseItems());
143 tenantItem.getItems().setInventoryResponseItems(new LinkedList<>());
144 tenantItem.getItems().getInventoryResponseItems().add(cloudItem);
146 AaiNqInventoryResponseItem vserverItem = new AaiNqInventoryResponseItem();
147 vserverItem.setVserver(new AaiNqVServer());
148 vserverItem.getVserver().setVserverId("dhv-test-vserver");
149 vserverItem.getVserver().setVserverName("dhv-test-vserver-name");
150 vserverItem.getVserver().setVserverName2("dhv-test-vserver-name2");
151 vserverItem.getVserver().setProvStatus("PREPROV");
152 vserverItem.getVserver().setVserverSelflink("dhv-test-vserver-selflink");
153 vserverItem.getVserver().setInMaint(false);
154 vserverItem.getVserver().setIsClosedLoopDisabled(false);
155 vserverItem.getVserver().setResourceVersion("1485366417");
156 vserverItem.setItems(new AaiNqInventoryResponseItems());
157 vserverItem.getItems().setInventoryResponseItems(new LinkedList<>());
158 vserverItem.getItems().getInventoryResponseItems().add(genericVnfItem);
159 vserverItem.getItems().getInventoryResponseItems().add(tenantItem);
161 AaiNqResponse aaiResponse = new AaiNqResponse();
162 aaiResponse.getInventoryResponseItems().add(vserverItem);
163 AaiNqResponseWrapper aaiNqResponseWarapper = new AaiNqResponseWrapper();
164 aaiNqResponseWarapper.setAaiNqResponse(aaiResponse);
165 aaiNqResponseWarapper.setRequestId(UUID.randomUUID());
166 assertNotNull(aaiNqResponseWarapper);
167 logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper));
169 AaiNqResponse aaiResponse2 = new AaiNqResponse();
170 aaiResponse2.getInventoryResponseItems().add(vserverItem);
171 AaiNqResponseWrapper aaiNqResponseWarapper2 = new AaiNqResponseWrapper(UUID.randomUUID(), aaiResponse);
172 assertNotNull(aaiNqResponseWarapper2);
173 assertNotNull(aaiNqResponseWarapper2.getRequestId());
174 assertNotNull(aaiNqResponseWarapper2.getAaiNqResponse());
175 logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper2));
179 public void testCountVfModules() throws Exception {
180 AaiNqResponseWrapper resp;
183 resp = new AaiNqResponseWrapper();
184 assertEquals(0, resp.countVfModules());
187 resp.setAaiNqResponse(load(NO_NAMES_JSON));
188 assertEquals(0, resp.countVfModules());
191 resp.setAaiNqResponse(load(VERSION_JSON));
192 assertEquals(3, resp.countVfModules());
196 public void testGenVfModuleName() throws Exception {
197 AaiNqResponseWrapper resp;
200 resp = new AaiNqResponseWrapper();
201 assertEquals(null, resp.genVfModuleName());
204 resp.setAaiNqResponse(load(NO_NAMES_JSON));
205 assertEquals(null, resp.genVfModuleName());
208 resp.setAaiNqResponse(load(VERSION_JSON));
209 assertEquals("my-module-abc_124", resp.genVfModuleName());
213 public void testGetVfModules() throws Exception {
214 AaiNqResponseWrapper resp;
217 resp = new AaiNqResponseWrapper();
218 assertTrue(resp.getVfModuleItems(true).isEmpty());
221 resp = new AaiNqResponseWrapper();
222 resp.setAaiNqResponse(new AaiNqResponse());
223 assertTrue(resp.getVfModuleItems(false).isEmpty());
226 resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoItems.json"));
227 resp.getAaiNqResponse().getInventoryResponseItems().get(0).getItems().getInventoryResponseItems().get(0)
228 .getItems().setInventoryResponseItems(null);
229 assertTrue(resp.getVfModuleItems(false).isEmpty());
232 resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoModules.json"));
233 assertTrue(resp.getVfModuleItems(false).isEmpty());
236 resp.setAaiNqResponse(load(NO_NAMES_JSON));
237 List<AaiNqInventoryResponseItem> lst;
238 lst = resp.getVfModuleItems(false);
239 assertEquals(0, lst.size());
242 resp.setAaiNqResponse(load(VERSION_JSON));
243 lst = resp.getVfModuleItems(true);
244 assertEquals(1, lst.size());
245 assertEquals("Vfmodule_vLBMS-0809-1", lst.get(0).getVfModule().getVfModuleName());
247 // non base VF modules
248 resp.setAaiNqResponse(load(VERSION_JSON));
249 lst = resp.getVfModuleItems(false);
250 assertEquals(3, lst.size());
253 assertEquals("my-module-abc_1", lst.get(index++).getVfModule().getVfModuleName());
254 assertEquals("my-module-abc_123", lst.get(index++).getVfModule().getVfModuleName());
255 assertEquals("my-module-abc_34", lst.get(index++).getVfModule().getVfModuleName());
259 * Loads a response from a JSON file.
261 * @param fileName name of the file containing the JSON response
262 * @return the response
263 * @throws IOException if the file cannot be read
265 private AaiNqResponse load(String fileName) throws IOException {
266 String json = IOUtils.toString(getClass().getResource(fileName), StandardCharsets.UTF_8);
267 return Serialization.gsonPretty.fromJson(json, AaiNqResponse.class);