Add INFO.yaml for nemo
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / intent / IntentResolverTest.java
1 /*
2  * Copyright (c) 2016 Huawei, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.nemo.intent;
9
10 import org.junit.Before;
11 import org.junit.Test;
12
13 import static org.junit.Assert.*;
14 import com.google.common.base.Optional;
15 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
16 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
17 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
18 import org.opendaylight.nemo.intent.computation.PNComputationUnit;
19 import org.opendaylight.nemo.intent.computation.PNResourcesTracker;
20 import org.opendaylight.nemo.intent.computation.VNComputationUnit;
21 import org.opendaylight.nemo.intent.computation.VNMappingUnit;
22 import org.opendaylight.nemo.intent.condition.ConditionManager;
23 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateIntent;
24 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalPaths;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPath;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPathKey;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.VirtualNetworks;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetworkBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetworkKey;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.*;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArp;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPath;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.routes.VirtualRoute;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.IntentVnMappingResults;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VnPnMappingResults;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMappingBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMappingKey;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMapping;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMappingBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMappingKey;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.user.vn.pn.mapping.VnPnMappingResult;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalPathId;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNetworkId;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
61 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
62 import org.slf4j.Logger;
63 import org.slf4j.LoggerFactory;
64
65 import java.util.HashMap;
66 import java.util.LinkedList;
67 import java.util.List;
68 import java.util.Map;
69 import java.util.concurrent.ExecutionException;
70
71 import java.util.List;
72 import java.util.HashMap;
73 import java.util.List;
74 import java.util.Map;
75 import java.util.LinkedList;
76 import org.junit.Assert;
77 import org.junit.Before;
78 import org.junit.Test;
79 import java.util.*;
80 import java.util.List;
81
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalLinks;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalNodes;
84 import static org.mockito.Matchers.any;
85 import static org.mockito.Mockito.mock;
86 import static org.mockito.Mockito.times;
87 import static org.mockito.Mockito.verify;
88 import static org.mockito.Mockito.when;
89 import com.google.common.util.concurrent.CheckedFuture;
90 import java.lang.reflect.Field;
91 import java.lang.reflect.Method;
92 import java.util.ArrayList;
93 import java.util.List;
94 import java.lang.reflect.Field;
95 import java.lang.reflect.Method;
96 import java.util.HashMap;
97 import java.util.List;
98 import java.util.Map;
99 import java.util.concurrent.ExecutionException;
100 import java.util.concurrent.TimeUnit;
101 import java.util.concurrent.TimeoutException;
102 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;
105 import static org.junit.Assert.*;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VirtualResourceInstance.VirtualResourceType;
107 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalResourceEntityId;
109 import org.junit.Assert;
110 import org.junit.Test;
111 import org.junit.runner.RunWith;
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;
113 import org.mockito.Mockito;
114 import org.powermock.api.mockito.PowerMockito;
115 import org.powermock.core.classloader.annotations.PrepareForTest;
116 import org.powermock.modules.junit4.PowerMockRunner;
117 import org.powermock.api.mockito.PowerMockito;
118 import org.powermock.api.support.membermodification.MemberMatcher;
119 import org.powermock.api.support.membermodification.MemberModifier;
120 import org.powermock.core.classloader.annotations.PrepareForTest;
121 import org.powermock.modules.junit4.PowerMockRunner;
122 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ObjectId;
123 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalHosts;
124 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;
125 import static org.mockito.Mockito.doNothing;
126 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
131 /**
132  * Created by ldzd11 on 2015/12/24.
133  */
134
135 @RunWith(PowerMockRunner.class)
136 @PrepareForTest(IntentResolverUtils.class)
137 public class IntentResolverTest {
138     private IntentResolver intentResolver;
139     private  DataBroker dataBroker;
140     private UserId userId;
141     private List<VnPnMappingResult> vnPnMappingResults;
142     private VnPnMappingResult vnPnMappingResult;
143     private  VirtualResourceType virtualResourceType;
144     private PhysicalResourceEntityId physicalResourceEntityId;
145     private Objects objects;
146     private List<Node> nodeList;
147     private Node node;
148     private NodeType nodeType;
149     private List<Connection> connections;
150     private Connection connection;
151     private List<Flow> flows;
152     private Flow flow;
153     private Operations operations;
154     private  List<Operation> operationList;
155     private Operation operation;
156     private  ObjectId objectId;
157     private  NodeId nodeId;
158     private List<PhysicalHost> physicalHostList;
159     private PhysicalHost physicalHost;
160     private Property property;
161     private List<Property> propertyList;
162     private PropertyValues propertyValues;
163     private StringValue stringValue;
164     private List<StringValue> stringValueList;
165
166
167     @Before
168     public void setUp() throws Exception {
169         dataBroker = mock(DataBroker.class);
170         userId = mock(UserId.class);
171
172         vnPnMappingResults =  new ArrayList<VnPnMappingResult>();
173         vnPnMappingResult  = mock(VnPnMappingResult.class);
174         vnPnMappingResults.add(vnPnMappingResult);
175
176         virtualResourceType = VnPnMappingResult.VirtualResourceType.Vlink;
177         physicalResourceEntityId  =mock(PhysicalResourceEntityId.class);
178         objects = mock(Objects.class);
179         nodeList = new ArrayList<Node>();
180         node = mock(Node.class);
181         nodeList.add(node);
182         nodeType = mock(NodeType.class);
183         connections = new ArrayList<Connection>();
184         connection = mock(Connection.class);
185         connections.add(connection);
186         flows = new ArrayList<Flow>();
187         flow = mock(Flow.class);
188         flows.add(flow);
189         operations = mock(Operations.class);
190         operationList = new ArrayList<Operation>();
191         operation = mock(Operation.class);
192         operationList.add(operation);
193         objectId = mock(ObjectId.class);
194         nodeId = mock(NodeId.class);
195
196         physicalHostList = new ArrayList<PhysicalHost>();
197         physicalHost = mock(PhysicalHost.class);
198         physicalHostList.add(physicalHost);
199         property = mock(Property.class);
200         propertyList = new ArrayList<Property>();
201         propertyList.add(property);
202         propertyValues = mock(PropertyValues.class);
203         stringValueList = new ArrayList<StringValue>();
204         stringValue  = mock(StringValue.class);
205         stringValueList.add(stringValue);
206
207
208
209
210         //into PNC to result
211         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
212         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
213
214         CheckedFuture physicalnodesFuture = mock(CheckedFuture.class);
215         CheckedFuture physicallinksFuture = mock(CheckedFuture.class);
216         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(physicalnodesFuture).thenReturn(physicallinksFuture);
217
218         //////////////////first result/////////////////////
219         PhysicalNodes physicalNodes = mock(PhysicalNodes.class);
220         Optional<PhysicalNodes> result = Optional.of(physicalNodes);
221         Assert.assertTrue(result.isPresent());
222         when(physicalnodesFuture.get()).thenReturn(result);
223
224         ///////////////////Second result///////////////////////
225         PhysicalLinks physicalLinks = mock(PhysicalLinks.class);
226         Optional<PhysicalLinks> result1 = Optional.of(physicalLinks);
227         Assert.assertTrue(result1.isPresent());
228         when(physicallinksFuture.get()).thenReturn(result1);
229
230         intentResolver = new IntentResolver(dataBroker);
231     }
232
233     @Test
234     public void testResolveIntent() throws Exception {
235         PowerMockito.mockStatic(IntentResolverUtils.class);
236         PowerMockito.doNothing().when(IntentResolverUtils.class);
237         IntentResolverUtils.copyPhysicalNetworkConfigToOperational(dataBroker);
238
239         Class<IntentResolver> class1 = IntentResolver.class;
240
241         CheckedFuture userVnPnMappingIidFuture = mock(CheckedFuture.class);
242         CheckedFuture userFuture = mock(CheckedFuture.class);
243         CheckedFuture physicalHostsFuture = mock(CheckedFuture.class);
244
245         ReadWriteTransaction readWriteTransaction = mock(ReadWriteTransaction.class);
246         when(dataBroker.newReadWriteTransaction()).thenReturn(readWriteTransaction);
247         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
248         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
249
250         when(readWriteTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(userVnPnMappingIidFuture).thenReturn(userFuture);
251         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(physicalHostsFuture);
252
253
254         when(userId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
255         //////////////152  forvnComputationUnits.get(userId) into if null != vnComputationUnit
256         Map<UserId, VNComputationUnit> vnComputationUnits = new HashMap<UserId, VNComputationUnit>();
257         VNComputationUnit vnComputationUnit = mock(VNComputationUnit.class);
258         vnComputationUnits.put(userId, vnComputationUnit);
259
260         Field field1 = class1.getDeclaredField("vnComputationUnits");
261         field1.setAccessible(true);
262         field1.set(intentResolver, vnComputationUnits);//for 170
263         //into null!=vncomputionUnit
264
265         ////////////////////the result1////////////////////////
266         UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
267         Optional<UserVnPnMapping> result1 = Optional.of(userVnPnMapping);
268         Assert.assertTrue(result1.isPresent());
269         when(userVnPnMappingIidFuture.get()).thenReturn(result1);
270
271         //187 into result1.is present
272         when(userVnPnMapping.getVnPnMappingResult()).thenReturn(vnPnMappingResults);
273         when(vnPnMappingResult.getVirtualResourceType()).thenReturn(virtualResourceType);
274         when(vnPnMappingResult.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId);
275         when(vnPnMappingResult.getPhysicalResourceEntityId().getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
276
277         //end of 212
278         //////////////////the result2////////////////////////////////
279         User user = mock(User.class);
280         Optional<User> result2 = Optional.of(user);
281         Assert.assertTrue(result2.isPresent());
282         when(userFuture.get()).thenReturn(result2);
283
284         ////////into null!-user.getObjects
285         when(user.getObjects()).thenReturn(objects);
286         when(user.getObjects().getNode()).thenReturn(nodeList);
287         ////////////////////1/////////////////////////////////
288         nodeType = new NodeType("host");
289         when(node.getNodeType()).thenReturn(nodeType);
290         ////////////////////into nodeMapper.resolverHosr for nodes
291         NodeMapper nodeMapper = mock(NodeMapper.class);
292         Field field2 = class1.getDeclaredField("nodeMapper");
293         field2.setAccessible(true);
294         field2.set(intentResolver, nodeMapper);//for 170
295         doNothing().when(nodeMapper).resolveHost(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
296
297         ///////////////////2//////////////////////////////
298         nodeType = new NodeType("l2-group");
299         when(node.getNodeType()).thenReturn(nodeType);
300         ////////////////////into nodeMapper.resolverHosr for nodes
301         doNothing().when(nodeMapper).resolveLayer2Group(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
302
303         //////////////////////3///////////////////////////////
304         nodeType = new NodeType("l3-group");
305         when(node.getNodeType()).thenReturn(nodeType);
306         ////////////////////into nodeMapper.resolverHosr for nodes
307         doNothing().when(nodeMapper).resolveLayer3Group(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
308
309         //////////////////////4///////////////////////////////
310         nodeType = new NodeType("ext-group");
311         when(node.getNodeType()).thenReturn(nodeType);
312         ////////////////////into nodeMapper.resolverHosr for nodes
313         when(node.getProperty()).thenReturn(propertyList);
314         PropertyName propertyName = new PropertyName("ac-info-network");
315         when(property.getPropertyName()).thenReturn(propertyName);
316         when(property.getPropertyValues()).thenReturn(propertyValues);
317         when(property.getPropertyValues().getStringValue()).thenReturn(stringValueList);
318         when(property.getPropertyValues().getStringValue().get(0).getValue()).thenReturn(new String("layer3"));
319         doNothing().when(nodeMapper).resolveExternalLayer3Group(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
320
321         //////////////////////5///////////////////////////////
322         nodeType = new NodeType("chain-group");
323         when(node.getNodeType()).thenReturn(nodeType);
324         ////////////////////into nodeMapper.resolverHosr for nodes
325         doNothing().when(nodeMapper).resolveServiceChainGroup(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
326
327         //////////////////////6///////////////////////////////
328         nodeType = new NodeType("fw");
329         when(node.getNodeType()).thenReturn(nodeType);
330         ////////////////////into nodeMapper.resolverHosr for nodes
331         doNothing().when(nodeMapper).resolveServiceFunction(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
332
333         //////////////////////6///////////////////////////////
334         nodeType = new NodeType("lb");
335         when(node.getNodeType()).thenReturn(nodeType);
336         ////////////////////into nodeMapper.resolverHosr for nodes
337         doNothing().when(nodeMapper).resolveServiceFunction(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
338
339         //////////////////////6///////////////////////////////
340         nodeType = new NodeType("cache");
341         when(node.getNodeType()).thenReturn(nodeType);
342         ////////////////////into nodeMapper.resolverHosr for nodes
343         doNothing().when(nodeMapper).resolveServiceFunction(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
344
345
346         //////////////////////connection///////////////////////////
347         when(user.getObjects().getConnection()).thenReturn(connections);
348         ConnectionMapper connectionMapper = mock(ConnectionMapper.class);
349         Field field4 = class1.getDeclaredField("connectionMapper");
350         field4.setAccessible(true);
351         field4.set(intentResolver, connectionMapper);//for 170
352         doNothing().when(connectionMapper).resolveConnection(any(User.class), any(Connection.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
353
354         //////////////////////flow///////////////////////////
355         when(user.getObjects().getFlow()).thenReturn(flows);
356         //////////////////////operation///////////////////////////
357         when(user.getOperations()).thenReturn(operations);
358         when(user.getOperations().getOperation()).thenReturn(operationList);
359
360
361         //into operationResolver.classifyOperations
362         OperationResolver operationResolver =mock(OperationResolver.class);
363         Field field3 = class1.getDeclaredField("operationResolver");
364         field3.setAccessible(true);
365         field3.set(intentResolver, operationResolver);
366         doNothing().when(operationResolver).classifyOperations(any(User.class), any(List.class), any(List.class), any(List.class), any(List.class));
367         doNothing().when(operationResolver).resolveOperation(any(User.class), any(Operation.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
368
369         //392vnMappingUnit
370         VNMappingUnit vnMappingUnit = mock(VNMappingUnit.class);
371         Field field5 = class1.getDeclaredField("vnMappingUnit");
372         field5.setAccessible(true);
373         field5.set(intentResolver, vnMappingUnit);//for 170
374         doNothing().when(vnMappingUnit).virtualNetworkMapping(any(VirtualNetwork.class), any(UserVnPnMapping.class), any(List.class));
375
376         intentResolver.resolveIntent(userId);
377         
378     }
379
380     @Test
381     public void testClose() throws Exception {
382         Class<IntentResolver> class1 = IntentResolver.class;
383         PNComputationUnit pnComputationUnit = mock(PNComputationUnit.class);
384
385         VNComputationUnit vnComputationUnit  = mock(VNComputationUnit.class);
386         Map<UserId, VNComputationUnit> vnComputationUnits = new HashMap<UserId, VNComputationUnit>();
387         vnComputationUnits.put(userId,vnComputationUnit);
388
389         PNResourcesTracker pnResourcesTracker = mock(PNResourcesTracker.class);
390         VNMappingUnit vnMappingUnit = mock(VNMappingUnit.class);
391
392
393         Field field1 = class1.getDeclaredField("pnComputationUnit");
394         field1.setAccessible(true);
395         field1.set(intentResolver, pnComputationUnit);
396
397         Field field2 = class1.getDeclaredField("vnComputationUnits");
398         field2.setAccessible(true);
399         field2.set(intentResolver, vnComputationUnits);
400
401         Field field3 = class1.getDeclaredField("pnResourcesTracker");
402         field3.setAccessible(true);
403         field3.set(intentResolver, pnResourcesTracker);
404
405         Field field4 = class1.getDeclaredField("vnMappingUnit");
406         field4.setAccessible(true);
407         field4.set(intentResolver, vnMappingUnit);
408
409         intentResolver.close();
410
411     }
412 }