2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.onap.so.client.adapter.network.mapper;
22 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
23 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
24 import static org.junit.Assert.*;
25 import static org.mockito.ArgumentMatchers.isA;
26 import static org.mockito.Mockito.doReturn;
28 import java.io.UnsupportedEncodingException;
29 import java.nio.file.Files;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.HashMap;
34 import java.util.List;
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.mockito.Mockito;
40 import org.onap.so.adapters.nwrest.ContrailNetwork;
41 import org.onap.so.adapters.nwrest.CreateNetworkRequest;
42 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
43 import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
44 import org.onap.so.adapters.nwrest.NetworkTechnology;
45 import org.onap.so.adapters.nwrest.ProviderVlanNetwork;
46 import org.onap.so.adapters.nwrest.RollbackNetworkRequest;
47 import org.onap.so.adapters.nwrest.UpdateNetworkRequest;
48 import org.onap.so.bpmn.common.data.TestDataSetup;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute;
52 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTableReference;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTarget;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
57 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
58 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
59 import org.onap.so.bpmn.servicedecomposition.bbobjects.VpnBinding;
60 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
61 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
62 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork;
63 import org.onap.so.entity.MsoRequest;
64 import org.onap.so.openstack.beans.NetworkRollback;
66 import com.fasterxml.jackson.databind.ObjectMapper;
68 public class NetworkAdapterObjectMapperTest extends TestDataSetup{
70 private NetworkAdapterObjectMapper SPY_networkAdapterObjectMapper = Mockito.spy(NetworkAdapterObjectMapper.class);
72 private L3Network l3Network;
73 private RequestContext requestContext;
74 private ServiceInstance serviceInstance;
75 private CloudRegion cloudRegion;
76 private OrchestrationContext orchestrationContext;
77 private Customer customer;
78 Map<String, String> userInput;
80 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/NetworkMapper/";
83 public void before() {
84 requestContext = setRequestContext();
86 customer = buildCustomer();
88 serviceInstance = setServiceInstance();
90 cloudRegion = setCloudRegion();
92 orchestrationContext = setOrchestrationContext();
93 orchestrationContext.setIsRollbackEnabled(false);
95 userInput = setUserInput();
97 l3Network = setL3Network();
99 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
103 public void buildCreateNetworkRequestFromBbobjectTest() throws Exception {
105 String cloudRegionPo = "cloudRegionPo";
106 CreateNetworkRequest expectedCreateNetworkRequest = new CreateNetworkRequest();
108 expectedCreateNetworkRequest.setCloudSiteId(cloudRegionPo);
109 expectedCreateNetworkRequest.setTenantId(cloudRegion.getTenantId());
110 expectedCreateNetworkRequest.setNetworkId(l3Network.getNetworkId());
111 expectedCreateNetworkRequest.setNetworkName(l3Network.getNetworkName());
112 expectedCreateNetworkRequest.setNetworkType(l3Network.getNetworkType());
113 expectedCreateNetworkRequest.setBackout(false);
114 expectedCreateNetworkRequest.setFailIfExists(true);
115 expectedCreateNetworkRequest.setNetworkTechnology("CONTRAIL");
116 MsoRequest msoRequest = new MsoRequest();
117 msoRequest.setRequestId(requestContext.getMsoRequestId());
118 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
119 expectedCreateNetworkRequest.setMsoRequest(msoRequest);
120 expectedCreateNetworkRequest.setSkipAAI(true);
121 HashMap<String, String> networkParams = new HashMap<String, String>();
122 networkParams.put("shared", "true");
123 networkParams.put("external", "false");
124 networkParams.put("testUserInputKey", "testUserInputValue");
125 expectedCreateNetworkRequest.setNetworkParams(networkParams);
127 expectedCreateNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
129 Subnet openstackSubnet = new Subnet();
130 HostRoute hostRoute = new HostRoute();
131 hostRoute.setHostRouteId("hostRouteId");
132 hostRoute.setNextHop("nextHop");
133 hostRoute.setRoutePrefix("routePrefix");
134 openstackSubnet.getHostRoutes().add(hostRoute);
135 List<Subnet> subnetList = new ArrayList<Subnet>();
136 subnetList.add(openstackSubnet);
137 l3Network.getSubnets().add(openstackSubnet);
138 l3Network.setNetworkTechnology("Contrail");
139 l3Network.setIsSharedNetwork(true);
140 l3Network.setIsExternalNetwork(false);
142 doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
143 doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
145 CreateNetworkRequest createNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, customer);
147 assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("contrailRequest").ignoring("contrailNetwork").ignoring("providerVlanNetwork").ignoring("subnets").ignoring("messageId"));
151 public void createNetworkRollbackRequestMapperTest() throws Exception {
153 String cloudRegionPo = "cloudRegionPo";
154 RollbackNetworkRequest expectedRollbackNetworkRequest = new RollbackNetworkRequest();
156 expectedRollbackNetworkRequest.setMessageId(requestContext.getMsoRequestId());
157 NetworkRollback networkRollback = new NetworkRollback();
158 networkRollback.setCloudId(cloudRegionPo);
159 networkRollback.setNetworkCreated(true);
160 networkRollback.setNetworkId(l3Network.getNetworkId());
161 networkRollback.setNetworkType(l3Network.getNetworkType());
162 networkRollback.setTenantId(cloudRegion.getTenantId());
163 expectedRollbackNetworkRequest.setNetworkRollback(networkRollback);
164 expectedRollbackNetworkRequest.setSkipAAI(true);
166 CreateNetworkResponse createNetworkResponse = new CreateNetworkResponse();
167 createNetworkResponse.setNetworkCreated(true);
169 RollbackNetworkRequest rollbackNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRollbackRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, createNetworkResponse);
171 assertThat(rollbackNetworkRequest, sameBeanAs(expectedRollbackNetworkRequest).ignoring("contrailNetwork").ignoring("providerVlanNetwork").ignoring("subnets").ignoring("networkParams").ignoring("messageId"));
175 public void updateNetworkRequestMapperTest() throws UnsupportedEncodingException {
176 org.onap.so.openstack.beans.Subnet subnet = new org.onap.so.openstack.beans.Subnet();
177 subnet.setSubnetId("subnetId");
178 subnet.setHostRoutes(new ArrayList<org.onap.so.openstack.beans.HostRoute>());
180 List<org.onap.so.openstack.beans.Subnet> subnets = new ArrayList<>();
183 ProviderVlanNetwork providerVlanNetwork = new ProviderVlanNetwork("physicalNetworkName", new ArrayList<Integer>());
185 List<String> policyFqdns = Arrays.asList("networkPolicyFqdn");
187 org.onap.so.openstack.beans.RouteTarget expectedRouteTarget = new org.onap.so.openstack.beans.RouteTarget();
188 expectedRouteTarget.setRouteTarget("globalRouteTarget");
190 ContrailNetwork contrailNetwork = new ContrailNetwork();
191 contrailNetwork.setPolicyFqdns(policyFqdns);
192 contrailNetwork.setRouteTableFqdns(new ArrayList<String>());
193 contrailNetwork.setRouteTargets(new ArrayList<org.onap.so.openstack.beans.RouteTarget>());
194 contrailNetwork.getRouteTargets().add(expectedRouteTarget);
195 contrailNetwork.getRouteTableFqdns().add("routeTableReferenceFqdn");
197 MsoRequest msoRequest = new MsoRequest();
198 msoRequest.setServiceInstanceId("testServiceInstanceId1");
200 ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
201 modelInfoNetwork.setNetworkType("networkType");
202 modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
203 modelInfoNetwork.setModelVersion("modelVersion");
205 Subnet actualSubnet = new Subnet();
206 actualSubnet.setSubnetId("subnetId");
207 actualSubnet.setDhcpEnabled(false);
208 actualSubnet.setIpVersion("4");
210 RouteTarget routeTarget = new RouteTarget();
211 routeTarget.setGlobalRouteTarget("globalRouteTarget");
213 VpnBinding vpnBinding = new VpnBinding();
214 vpnBinding.setVpnId("vpnId");
215 vpnBinding.getRouteTargets().add(routeTarget);
217 Customer customer = new Customer();
218 customer.getVpnBindings().add(vpnBinding);
219 ServiceSubscription serviceSubscription = new ServiceSubscription();
220 customer.setServiceSubscription(serviceSubscription);
221 // set Customer on service instance
222 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
224 NetworkPolicy networkPolicy = new NetworkPolicy();
225 networkPolicy.setNetworkPolicyId("networkPolicyId");
226 networkPolicy.setNetworkPolicyFqdn("networkPolicyFqdn");
228 RouteTableReference routeTableReference = new RouteTableReference();
229 routeTableReference.setRouteTableReferenceFqdn("routeTableReferenceFqdn");
231 l3Network.setModelInfoNetwork(modelInfoNetwork);
232 l3Network.setPhysicalNetworkName("physicalNetworkName");
233 l3Network.getSubnets().add(actualSubnet);
234 l3Network.getNetworkPolicies().add(networkPolicy);
235 l3Network.getContrailNetworkRouteTableReferences().add(routeTableReference);
236 l3Network.setIsSharedNetwork(false);
237 l3Network.setIsExternalNetwork(false);
238 HashMap<String, String> networkParams = new HashMap<String, String>();
239 networkParams.put("shared", "false");
240 networkParams.put("external", "false");
241 networkParams.put("testUserInputKey", "testUserInputValue");
243 UpdateNetworkRequest expectedUpdateNetworkRequest = new UpdateNetworkRequest();
244 expectedUpdateNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
245 expectedUpdateNetworkRequest.setTenantId(cloudRegion.getTenantId());
246 expectedUpdateNetworkRequest.setNetworkId(l3Network.getNetworkId());
247 expectedUpdateNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
248 expectedUpdateNetworkRequest.setNetworkName(l3Network.getNetworkName());
249 expectedUpdateNetworkRequest.setNetworkType(l3Network.getModelInfoNetwork().getNetworkType());
250 expectedUpdateNetworkRequest.setNetworkTypeVersion(l3Network.getModelInfoNetwork().getModelVersion());
251 expectedUpdateNetworkRequest.setModelCustomizationUuid(l3Network.getModelInfoNetwork().getModelCustomizationUUID());
252 expectedUpdateNetworkRequest.setSubnets(subnets);
253 expectedUpdateNetworkRequest.setProviderVlanNetwork(providerVlanNetwork);
254 expectedUpdateNetworkRequest.setContrailNetwork(contrailNetwork);
255 expectedUpdateNetworkRequest.setNetworkParams(networkParams);
256 expectedUpdateNetworkRequest.setMsoRequest(msoRequest);
257 expectedUpdateNetworkRequest.setSkipAAI(true);
258 expectedUpdateNetworkRequest.setBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
259 expectedUpdateNetworkRequest.setMessageId("messageId");
260 expectedUpdateNetworkRequest.setNotificationUrl("http://localhost:28080/mso/WorkflowMesssage/NetworkAResponse/messageId");
262 doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
263 doReturn("http://localhost:28080/mso/WorkflowMesssage").when(SPY_networkAdapterObjectMapper).getEndpoint();
264 UpdateNetworkRequest actualUpdateNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkUpdateRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, customer);
266 assertThat(actualUpdateNetworkRequest, sameBeanAs(expectedUpdateNetworkRequest).ignoring("msoRequest.requestId"));
270 public void deleteNetworkRequestMapperTest() throws Exception {
271 DeleteNetworkRequest expectedDeleteNetworkRequest = new DeleteNetworkRequest();
273 String messageId = "messageId";
274 expectedDeleteNetworkRequest.setMessageId(messageId);
275 doReturn(messageId).when(SPY_networkAdapterObjectMapper).getRandomUuid();
277 ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
278 l3Network.setModelInfoNetwork(modelInfoNetwork);
279 modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
280 expectedDeleteNetworkRequest.setModelCustomizationUuid(modelInfoNetwork.getModelCustomizationUUID());
282 MsoRequest msoRequest = new MsoRequest();
283 msoRequest.setRequestId(requestContext.getMsoRequestId());
284 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
285 expectedDeleteNetworkRequest.setMsoRequest(msoRequest);
287 expectedDeleteNetworkRequest.setNetworkId(l3Network.getNetworkId());
289 l3Network.setHeatStackId("heatStackId");
290 expectedDeleteNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
292 expectedDeleteNetworkRequest.setNetworkType(l3Network.getNetworkType());
294 expectedDeleteNetworkRequest.setSkipAAI(true);
296 expectedDeleteNetworkRequest.setTenantId(cloudRegion.getTenantId());
298 expectedDeleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
300 expectedDeleteNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
302 doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
303 doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
305 DeleteNetworkRequest deleteNetworkRequest = SPY_networkAdapterObjectMapper.deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
307 assertThat(expectedDeleteNetworkRequest, sameBeanAs(deleteNetworkRequest));
311 public void deleteNetworkRequestNoHeatIdMapperTest() throws Exception {
312 DeleteNetworkRequest expectedDeleteNetworkRequest = new DeleteNetworkRequest();
314 String messageId = "messageId";
315 expectedDeleteNetworkRequest.setMessageId(messageId);
316 doReturn(messageId).when(SPY_networkAdapterObjectMapper).getRandomUuid();
318 ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
319 l3Network.setModelInfoNetwork(modelInfoNetwork);
320 modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
321 expectedDeleteNetworkRequest.setModelCustomizationUuid(modelInfoNetwork.getModelCustomizationUUID());
323 MsoRequest msoRequest = new MsoRequest();
324 msoRequest.setRequestId(requestContext.getMsoRequestId());
325 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
326 expectedDeleteNetworkRequest.setMsoRequest(msoRequest);
328 expectedDeleteNetworkRequest.setNetworkId(l3Network.getNetworkId());
330 l3Network.setNetworkName("heatStackId");
331 expectedDeleteNetworkRequest.setNetworkStackId("heatStackId");
333 expectedDeleteNetworkRequest.setNetworkType(l3Network.getNetworkType());
335 expectedDeleteNetworkRequest.setSkipAAI(true);
337 expectedDeleteNetworkRequest.setTenantId(cloudRegion.getTenantId());
339 expectedDeleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
341 expectedDeleteNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
343 doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
344 doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
345 DeleteNetworkRequest deleteNetworkRequest = SPY_networkAdapterObjectMapper.deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
347 assertThat(expectedDeleteNetworkRequest, sameBeanAs(deleteNetworkRequest));
351 public void buildOpenstackSubnetListTest() throws Exception {
353 ObjectMapper omapper = new ObjectMapper();
354 String bbJson = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "generalBB.json")));
355 org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock gbb = omapper.readValue(
357 org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock.class);
358 L3Network myNetwork = gbb.getServiceInstance().getNetworks().get(0);
360 String expectedCreateNetworkRequestJson = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "createNetworkRequest.json")));
361 org.onap.so.adapters.nwrest.CreateNetworkRequest expectedCreateNetworkRequest = omapper.readValue(
362 expectedCreateNetworkRequestJson,
363 org.onap.so.adapters.nwrest.CreateNetworkRequest.class);
365 String cloudRegionPo = "cloudRegionPo";
367 expectedCreateNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
369 doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
370 doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
371 CreateNetworkRequest createNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, myNetwork, userInput, cloudRegionPo, customer);
372 //ignoring dynamic fields and networkParams that throws parsing exception on json file load
373 assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("messageId").ignoring("msoRequest.requestId").ignoring("networkParams"));