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.mockito.Mockito.doReturn;
26 import java.io.UnsupportedEncodingException;
27 import java.nio.file.Files;
28 import java.nio.file.Paths;
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.List;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.mockito.Mockito;
37 import org.onap.so.adapters.nwrest.ContrailNetwork;
38 import org.onap.so.adapters.nwrest.CreateNetworkRequest;
39 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
40 import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
41 import org.onap.so.adapters.nwrest.ProviderVlanNetwork;
42 import org.onap.so.adapters.nwrest.RollbackNetworkRequest;
43 import org.onap.so.adapters.nwrest.UpdateNetworkRequest;
44 import org.onap.so.bpmn.common.data.TestDataSetup;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTableReference;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTarget;
52 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.VpnBinding;
56 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
57 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
58 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork;
59 import org.onap.so.entity.MsoRequest;
60 import org.onap.so.openstack.beans.NetworkRollback;
62 import com.fasterxml.jackson.databind.ObjectMapper;
64 public class NetworkAdapterObjectMapperTest extends TestDataSetup{
66 private NetworkAdapterObjectMapper SPY_networkAdapterObjectMapper = Mockito.spy(NetworkAdapterObjectMapper.class);
68 private L3Network l3Network;
69 private RequestContext requestContext;
70 private ServiceInstance serviceInstance;
71 private CloudRegion cloudRegion;
72 private OrchestrationContext orchestrationContext;
73 private Customer customer;
74 Map<String, String> userInput;
76 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/NetworkMapper/";
79 public void before() {
80 requestContext = setRequestContext();
82 customer = buildCustomer();
84 serviceInstance = setServiceInstance();
86 cloudRegion = setCloudRegion();
88 orchestrationContext = setOrchestrationContext();
89 orchestrationContext.setIsRollbackEnabled(false);
91 userInput = setUserInput();
93 l3Network = setL3Network();
95 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
99 public void buildCreateNetworkRequestFromBbobjectTest() throws Exception {
101 String cloudRegionPo = "cloudRegionPo";
102 CreateNetworkRequest expectedCreateNetworkRequest = new CreateNetworkRequest();
104 expectedCreateNetworkRequest.setCloudSiteId(cloudRegionPo);
105 expectedCreateNetworkRequest.setTenantId(cloudRegion.getTenantId());
106 expectedCreateNetworkRequest.setNetworkId(l3Network.getNetworkId());
107 expectedCreateNetworkRequest.setNetworkName(l3Network.getNetworkName());
108 expectedCreateNetworkRequest.setNetworkType(l3Network.getNetworkType());
109 expectedCreateNetworkRequest.setBackout(false);
110 expectedCreateNetworkRequest.setFailIfExists(true);
112 MsoRequest msoRequest = new MsoRequest();
113 msoRequest.setRequestId(requestContext.getMsoRequestId());
114 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
115 expectedCreateNetworkRequest.setMsoRequest(msoRequest);
116 expectedCreateNetworkRequest.setSkipAAI(true);
118 Subnet openstackSubnet = new Subnet();
119 HostRoute hostRoute = new HostRoute();
120 hostRoute.setHostRouteId("hostRouteId");
121 hostRoute.setNextHop("nextHop");
122 hostRoute.setRoutePrefix("routePrefix");
123 openstackSubnet.getHostRoutes().add(hostRoute);
124 List<Subnet> subnetList = new ArrayList<Subnet>();
125 subnetList.add(openstackSubnet);
126 l3Network.getSubnets().add(openstackSubnet);
128 CreateNetworkRequest createNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, customer);
130 assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("contrailNetwork").ignoring("providerVlanNetwork").ignoring("subnets").ignoring("networkParams").ignoring("messageId"));
134 public void createNetworkRollbackRequestMapperTest() throws Exception {
136 String cloudRegionPo = "cloudRegionPo";
137 RollbackNetworkRequest expectedRollbackNetworkRequest = new RollbackNetworkRequest();
139 expectedRollbackNetworkRequest.setMessageId(requestContext.getMsoRequestId());
140 NetworkRollback networkRollback = new NetworkRollback();
141 networkRollback.setCloudId(cloudRegionPo);
142 networkRollback.setNetworkCreated(true);
143 networkRollback.setNetworkId(l3Network.getNetworkId());
144 networkRollback.setNetworkType(l3Network.getNetworkType());
145 networkRollback.setTenantId(cloudRegion.getTenantId());
146 expectedRollbackNetworkRequest.setNetworkRollback(networkRollback);
147 expectedRollbackNetworkRequest.setSkipAAI(true);
149 CreateNetworkResponse createNetworkResponse = new CreateNetworkResponse();
150 createNetworkResponse.setNetworkCreated(true);
152 RollbackNetworkRequest rollbackNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRollbackRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, createNetworkResponse);
154 assertThat(rollbackNetworkRequest, sameBeanAs(expectedRollbackNetworkRequest).ignoring("contrailNetwork").ignoring("providerVlanNetwork").ignoring("subnets").ignoring("networkParams").ignoring("messageId"));
158 public void updateNetworkRequestMapperTest() throws UnsupportedEncodingException {
159 org.onap.so.openstack.beans.Subnet subnet = new org.onap.so.openstack.beans.Subnet();
160 subnet.setSubnetId("subnetId");
161 subnet.setHostRoutes(new ArrayList<org.onap.so.openstack.beans.HostRoute>());
163 List<org.onap.so.openstack.beans.Subnet> subnets = new ArrayList<>();
166 ProviderVlanNetwork providerVlanNetwork = new ProviderVlanNetwork("physicalNetworkName", new ArrayList<Integer>());
168 List<String> policyFqdns = Arrays.asList("networkPolicyFqdn");
170 org.onap.so.openstack.beans.RouteTarget expectedRouteTarget = new org.onap.so.openstack.beans.RouteTarget();
171 expectedRouteTarget.setRouteTarget("globalRouteTarget");
173 ContrailNetwork contrailNetwork = new ContrailNetwork();
174 contrailNetwork.setPolicyFqdns(policyFqdns);
175 contrailNetwork.setRouteTableFqdns(new ArrayList<String>());
176 contrailNetwork.setRouteTargets(new ArrayList<org.onap.so.openstack.beans.RouteTarget>());
177 contrailNetwork.getRouteTargets().add(expectedRouteTarget);
178 contrailNetwork.getRouteTableFqdns().add("routeTableReferenceFqdn");
180 MsoRequest msoRequest = new MsoRequest();
181 msoRequest.setServiceInstanceId("testServiceInstanceId1");
183 ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
184 modelInfoNetwork.setNetworkType("networkType");
185 modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
186 modelInfoNetwork.setModelVersion("modelVersion");
188 Subnet actualSubnet = new Subnet();
189 actualSubnet.setSubnetId("subnetId");
190 actualSubnet.setDhcpEnabled(false);
191 actualSubnet.setIpVersion("4");
193 RouteTarget routeTarget = new RouteTarget();
194 routeTarget.setGlobalRouteTarget("globalRouteTarget");
196 VpnBinding vpnBinding = new VpnBinding();
197 vpnBinding.setVpnId("vpnId");
198 vpnBinding.getRouteTargets().add(routeTarget);
200 Customer customer = new Customer();
201 customer.getVpnBindings().add(vpnBinding);
202 ServiceSubscription serviceSubscription = new ServiceSubscription();
203 customer.setServiceSubscription(serviceSubscription);
204 // set Customer on service instance
205 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
207 NetworkPolicy networkPolicy = new NetworkPolicy();
208 networkPolicy.setNetworkPolicyId("networkPolicyId");
209 networkPolicy.setNetworkPolicyFqdn("networkPolicyFqdn");
211 RouteTableReference routeTableReference = new RouteTableReference();
212 routeTableReference.setRouteTableReferenceFqdn("routeTableReferenceFqdn");
214 l3Network.setModelInfoNetwork(modelInfoNetwork);
215 l3Network.setPhysicalNetworkName("physicalNetworkName");
216 l3Network.getSubnets().add(actualSubnet);
217 l3Network.getNetworkPolicies().add(networkPolicy);
218 l3Network.getContrailNetworkRouteTableReferences().add(routeTableReference);
220 UpdateNetworkRequest expectedUpdateNetworkRequest = new UpdateNetworkRequest();
221 expectedUpdateNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
222 expectedUpdateNetworkRequest.setTenantId(cloudRegion.getTenantId());
223 expectedUpdateNetworkRequest.setNetworkId(l3Network.getNetworkId());
224 expectedUpdateNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
225 expectedUpdateNetworkRequest.setNetworkName(l3Network.getNetworkName());
226 expectedUpdateNetworkRequest.setNetworkType(l3Network.getModelInfoNetwork().getNetworkType());
227 expectedUpdateNetworkRequest.setNetworkTypeVersion(l3Network.getModelInfoNetwork().getModelVersion());
228 expectedUpdateNetworkRequest.setModelCustomizationUuid(l3Network.getModelInfoNetwork().getModelCustomizationUUID());
229 expectedUpdateNetworkRequest.setSubnets(subnets);
230 expectedUpdateNetworkRequest.setProviderVlanNetwork(providerVlanNetwork);
231 expectedUpdateNetworkRequest.setContrailNetwork(contrailNetwork);
232 expectedUpdateNetworkRequest.setNetworkParams(userInput);
233 expectedUpdateNetworkRequest.setMsoRequest(msoRequest);
234 expectedUpdateNetworkRequest.setSkipAAI(true);
235 expectedUpdateNetworkRequest.setBackout(!Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
236 expectedUpdateNetworkRequest.setMessageId("messageId");
237 expectedUpdateNetworkRequest.setNotificationUrl("http://localhost:28080/mso/WorkflowMesssage/NetworkAResponse/messageId");
239 doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
240 doReturn("http://localhost:28080/mso/WorkflowMesssage").when(SPY_networkAdapterObjectMapper).getEndpoint();
241 UpdateNetworkRequest actualUpdateNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkUpdateRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, customer);
243 assertThat(actualUpdateNetworkRequest, sameBeanAs(expectedUpdateNetworkRequest).ignoring("msoRequest.requestId"));
247 public void deleteNetworkRequestMapperTest() throws Exception {
248 DeleteNetworkRequest expectedDeleteNetworkRequest = new DeleteNetworkRequest();
250 String messageId = "messageId";
251 expectedDeleteNetworkRequest.setMessageId(messageId);
252 doReturn(messageId).when(SPY_networkAdapterObjectMapper).getRandomUuid();
254 ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
255 l3Network.setModelInfoNetwork(modelInfoNetwork);
256 modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
257 expectedDeleteNetworkRequest.setModelCustomizationUuid(modelInfoNetwork.getModelCustomizationUUID());
259 MsoRequest msoRequest = new MsoRequest();
260 msoRequest.setRequestId(requestContext.getMsoRequestId());
261 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
262 expectedDeleteNetworkRequest.setMsoRequest(msoRequest);
264 expectedDeleteNetworkRequest.setNetworkId(l3Network.getNetworkId());
266 l3Network.setHeatStackId("heatStackId");
267 expectedDeleteNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
269 expectedDeleteNetworkRequest.setNetworkType(l3Network.getNetworkType());
271 expectedDeleteNetworkRequest.setSkipAAI(true);
273 expectedDeleteNetworkRequest.setTenantId(cloudRegion.getTenantId());
275 expectedDeleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
277 DeleteNetworkRequest deleteNetworkRequest = SPY_networkAdapterObjectMapper.deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
279 assertThat(expectedDeleteNetworkRequest, sameBeanAs(deleteNetworkRequest));
283 public void buildOpenstackSubnetListTest() throws Exception {
285 ObjectMapper omapper = new ObjectMapper();
286 String bbJson = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "generalBB.json")));
287 org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock gbb = omapper.readValue(
289 org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock.class);
290 L3Network myNetwork = gbb.getServiceInstance().getNetworks().get(0);
292 String expectedCreateNetworkRequestJson = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "createNetworkRequest.json")));
293 org.onap.so.adapters.nwrest.CreateNetworkRequest expectedCreateNetworkRequest = omapper.readValue(
294 expectedCreateNetworkRequestJson,
295 org.onap.so.adapters.nwrest.CreateNetworkRequest.class);
297 String cloudRegionPo = "cloudRegionPo";
298 CreateNetworkRequest createNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, myNetwork, userInput, cloudRegionPo, customer);
299 //ignoring dynamic fields and networkParams that throws parsing exception on json file load
300 assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("messageId").ignoring("msoRequest.requestId").ignoring("networkParams"));