Modified one test file and added the needed dependence in the nemo-impl pom file
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / intent / computation / VNMappingUnitTest.java
1 /*
2  * Copyright (c) 2015 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
9 package org.opendaylight.nemo.intent.computation;
10
11 import junit.framework.TestCase;
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.Test;
15
16 import static org.junit.Assert.*;
17 import com.google.common.base.Optional;
18 import com.google.common.util.concurrent.CheckedFuture;
19 import org.junit.runner.RunWith;
20 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
21 import org.opendaylight.nemo.user.tenantmanager.AAA;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalResourceEntityId;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNetworkId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.AttributeDefinition.AttributeValueType;
25 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualLinkId;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualLinks;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.AttributeValue;
30 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.AttributeName;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNodeAttributeDefinitions;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalPortAttributeDefinitions;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.definition.AttributeMatchPatterns;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.attribute.value.RangeValue;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalNodes;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNode;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPath;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPathBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.attribute.definitions.PhysicalNodeAttributeDefinition;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.attribute.definitions.PhysicalNodeAttributeDefinitionKey;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.PhysicalPort;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.attribute.definitions.PhysicalPortAttributeDefinition;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.attribute.definitions.PhysicalPortAttributeDefinitionKey;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.Attribute;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLinkBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPort;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.PhysicalResourceRequirement;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.PhysicalResourceInstance;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.VirtualNodeInstance.NodeType;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VirtualResourceInstance;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMapping;
57 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;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.user.vn.pn.mapping.VnPnMappingResultBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualNodes;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;
62 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
63 import org.slf4j.Logger;
64 import org.slf4j.LoggerFactory;
65 import org.powermock.api.mockito.PowerMockito;
66 import org.powermock.api.support.membermodification.MemberMatcher;
67 import org.powermock.api.support.membermodification.MemberModifier;
68 import org.powermock.core.classloader.annotations.PrepareForTest;
69 import org.powermock.modules.junit4.PowerMockRunner;
70 import java.lang.reflect.Method;
71 import java.util.ArrayList;
72 import java.util.LinkedList;
73 import java.util.List;
74 import java.util.UUID;
75 import java.util.concurrent.ExecutionException;
76 import static org.mockito.Mockito.*;
77 /**
78  * Created by zhangmeng on 2015/12/21.
79  */
80 @RunWith(PowerMockRunner.class)
81 @PrepareForTest({VNMappingUnit.class,VNMappingUnitUtils.class})
82 public class VNMappingUnitTest extends TestCase {
83     private Class<VNMappingUnit> class1;
84     private Method method;
85     private DataBroker dataBroker;
86     private PNComputationUnit pnComputationUnit;
87     private PNResourcesTracker pnResourcesTracker;
88     private VNMappingUnit vnMappingUnit;
89
90     @Before
91     public void setUp() throws Exception {
92         class1 = VNMappingUnit.class;
93         dataBroker = mock(DataBroker.class);
94         pnComputationUnit = mock(PNComputationUnit.class);
95         pnResourcesTracker = mock(PNResourcesTracker.class);
96
97         vnMappingUnit = new VNMappingUnit(dataBroker,pnComputationUnit,pnResourcesTracker);
98     }
99
100     @Test
101     public void testVirtualNetworkMapping() throws Exception {
102         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);
103         UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
104         List<PhysicalPath> physicalPaths = new ArrayList<PhysicalPath>();
105
106         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
107         PhysicalNodes physicalNodes = mock(PhysicalNodes.class);
108         VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);
109         CheckedFuture checkedFuture = mock(CheckedFuture.class);
110         VirtualNode virtualNode = mock(VirtualNode.class);
111         VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);
112         VirtualLink virtualLink = mock(VirtualLink.class);
113         VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
114         VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
115         VnPnMappingResult vnPnMappingResult_virtualLinkMapping = mock(VnPnMappingResult.class);
116         UserId userId = mock(UserId.class);
117         VirtualLinkId virtualLinkId = mock(VirtualLinkId.class);
118         PhysicalResourceEntityId physicalResourceEntityId_virtualLinkMapping = mock(PhysicalResourceEntityId.class);
119         Optional<PhysicalNodes> result = Optional.of(physicalNodes);
120         List<PhysicalNode> physicalNodeList = new ArrayList<PhysicalNode>();
121         List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();
122         List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();
123         List<VnPnMappingResult> vnPnMappingResults = new ArrayList<VnPnMappingResult>();
124         List<VnPnMappingResult> vnPnMappingResults_virtualLinkMapping = new ArrayList<VnPnMappingResult>();
125
126         virtualLinks.add(virtualLink);
127
128         Assert.assertTrue(result.isPresent());
129         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
130         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
131         when(checkedFuture.get()).thenReturn(result);
132         when(physicalNodes.getPhysicalNode()).thenReturn(physicalNodeList);
133         when(virtualNetwork.getUserId()).thenReturn(userId);
134         when(userVnPnMapping.getVnPnMappingResult())
135                 .thenReturn(vnPnMappingResults)
136                 .thenReturn(vnPnMappingResults_virtualLinkMapping);
137         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);
138         when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);
139         //for circle 1
140             //TODO
141         //for circle 2
142         when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);
143         when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);
144         when(virtualNetwork.getNetworkId()).thenReturn(virtualNetworkId);
145         //get into method "virtualLinkMapping" args(virtualNetworkId,virtualLink,userVnPnMapping)
146         when(virtualLink.getSrcNodeId()).thenReturn(virtualNodeId);
147         when(virtualNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
148         //powermock
149         PowerMockito.mockStatic(VNMappingUnitUtils.class);
150         PowerMockito.when(VNMappingUnitUtils.getVnPnMappingResult(vnPnMappingResults_virtualLinkMapping, new VirtualResourceEntityId(new String("00001111-0000-0000-0000-000011112222"))))
151                 .thenReturn(vnPnMappingResult_virtualLinkMapping);
152         when(vnPnMappingResult_virtualLinkMapping.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId_virtualLinkMapping);
153         when(physicalResourceEntityId_virtualLinkMapping.getValue()).thenReturn(new String("test"));
154         when(virtualLink.getDestNodeId()).thenReturn(virtualNodeId);
155         when(virtualLink.getBandwidth()).thenReturn(1L);
156         //return to main
157         when(virtualLink.getLinkId()).thenReturn(virtualLinkId);
158         when(virtualLinkId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
159
160         vnMappingUnit.virtualNetworkMapping(virtualNetwork, userVnPnMapping, physicalPaths);
161         verify(userVnPnMapping,times(2)).getVnPnMappingResult();
162         verify(virtualLink,times(2)).getSrcNodeId();
163         verify(virtualLink,times(2)).getDestNodeId();
164         verify(virtualNodeId,times(2)).getValue();
165     }
166
167     @Test
168     public void testVirtualNetworkMapping1() throws Exception {
169         VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
170         VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
171         VnPnMappingResult vnPnMappingResult_virtualLinkMapping = mock(VnPnMappingResult.class);
172         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);
173         UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
174         VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);
175         VirtualLink virtualLink = mock(VirtualLink.class);
176         VirtualLinkId virtualLinkId = mock(VirtualLinkId.class);
177         PhysicalResourceEntityId physicalResourceEntityId_virtualLinkMapping = mock(PhysicalResourceEntityId.class);
178         List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();
179         List<VirtualLink> unmappedVirtualLinks = new ArrayList<VirtualLink>();
180         List<PhysicalPath> physicalPaths = new ArrayList<PhysicalPath>();
181         List<VnPnMappingResult> vnPnMappingResults = new ArrayList<VnPnMappingResult>();
182         List<VnPnMappingResult> vnPnMappingResults_virtualLinkMapping = new ArrayList<VnPnMappingResult>();
183
184         unmappedVirtualLinks.add(virtualLink);
185         virtualLinks.add(virtualLink);
186
187         when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);
188         when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);
189         when(userVnPnMapping.getVnPnMappingResult())
190                 .thenReturn(vnPnMappingResults)
191                 .thenReturn(vnPnMappingResults_virtualLinkMapping);;
192         when(virtualNetwork.getNetworkId()).thenReturn(virtualNetworkId);
193         //get into method "virtualLinkMapping" args(virtualNetworkId,virtualLink,userVnPnMapping)
194         when(virtualLink.getSrcNodeId()).thenReturn(virtualNodeId);
195         when(virtualNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
196         //powermock
197         PowerMockito.mockStatic(VNMappingUnitUtils.class);
198         PowerMockito.when(VNMappingUnitUtils.getVnPnMappingResult(vnPnMappingResults_virtualLinkMapping, new VirtualResourceEntityId(new String("00001111-0000-0000-0000-000011112222"))))
199                 .thenReturn(vnPnMappingResult_virtualLinkMapping);
200         when(vnPnMappingResult_virtualLinkMapping.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId_virtualLinkMapping);
201         when(physicalResourceEntityId_virtualLinkMapping.getValue()).thenReturn(new String("test"));
202         when(virtualLink.getDestNodeId()).thenReturn(virtualNodeId);
203         when(virtualLink.getBandwidth()).thenReturn(1L);
204         //return to main
205         when(virtualLink.getLinkId()).thenReturn(virtualLinkId);
206         when(virtualLinkId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
207
208         vnMappingUnit.virtualNetworkMapping(virtualNetwork, unmappedVirtualLinks, userVnPnMapping, physicalPaths);
209         verify(userVnPnMapping,times(2)).getVnPnMappingResult();
210         verify(virtualLink,times(2)).getSrcNodeId();
211         verify(virtualLink,times(2)).getDestNodeId();
212         verify(virtualNodeId,times(2)).getValue();
213     }
214
215     @Test
216     public void testClose() throws Exception {
217         vnMappingUnit.close();
218         Assert.assertTrue(vnMappingUnit != null);
219     }
220
221     @Test
222     public void testCheckAttributeRangeValueSatisfied() throws Exception {
223         method = class1.getDeclaredMethod("checkAttributeRangeValueSatisfied",new Class[]{Long.class,
224                 RangeValue.class,
225                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class});
226         method.setAccessible(true);
227
228         Long attributeValue = 1L;
229         RangeValue requiredAttributeValue = mock(RangeValue.class);
230         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
231                 attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.Between;
232
233         when(requiredAttributeValue.getMin()).thenReturn(0L);
234         when(requiredAttributeValue.getMax()).thenReturn(2L);
235
236         Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeValue, requiredAttributeValue, attributeMatchPattern));
237     }
238     @Test
239     public void testCheckAttributeRangeValueSatisfied1() throws Exception {
240         method = class1.getDeclaredMethod("checkAttributeRangeValueSatisfied",new Class[]{Long.class,RangeValue.class,PhysicalResourceRequirement.AttributeMatchPattern.class});
241         method.setAccessible(true);
242
243         Long attributeValue = 1L;
244         RangeValue requiredAttributeValue = mock(RangeValue.class);
245         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.Between;
246
247         when(requiredAttributeValue.getMin()).thenReturn(0L);
248         when(requiredAttributeValue.getMax()).thenReturn(2L);
249
250         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
251     }
252
253     @Test
254     public void testCheckAttributeIntegerValueSatisfied() throws Exception {
255         method = class1.getDeclaredMethod("checkAttributeIntegerValueSatisfied",new Class[]{Long.class,
256                 Long.class,
257                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class
258                 });
259         method.setAccessible(true);
260
261         Long attributeValue = 2L;
262         Long requiredAttributeValue = 1L;
263         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
264                 attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
265         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
266                 attributeMatchPattern1 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
267         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
268                 attributeMatchPattern2 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.Equal;
269         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
270                 attributeMatchPattern3 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
271         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
272                 attributeMatchPattern4 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
273         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
274                 attributeMatchPattern5 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
275
276         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern) == false);
277         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1) == true);
278         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2) == false);
279         Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeValue, requiredAttributeValue, attributeMatchPattern3) == true);
280         Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeValue, requiredAttributeValue, attributeMatchPattern4) == true);
281         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5) == false);
282     }
283
284     @Test
285     public void testCheckAttributeIntegerValueSatisfied1() throws Exception {
286         method = class1.getDeclaredMethod("checkAttributeIntegerValueSatisfied",new Class[]{Long.class,Long.class,PhysicalResourceRequirement.AttributeMatchPattern.class});
287         method.setAccessible(true);
288
289         Long attributeValue = 2L;
290         Long requiredAttributeValue = 1L;
291         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
292         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern1 = PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
293         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern2 = PhysicalResourceRequirement.AttributeMatchPattern.Equal;
294         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern3 = PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
295         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern4 = PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
296         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern5 = PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
297
298         Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
299         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1));
300         Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2));
301         Assert.assertTrue((boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern3));
302         Assert.assertTrue((boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern4));
303         Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5));
304     }
305
306     @Test
307     public void testCheckAttributeStringValueSatisfied() throws Exception {
308         method = class1.getDeclaredMethod("checkAttributeStringValueSatisfied",new Class[]{
309                 String.class,
310                 String.class,
311                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class
312         });
313         method.setAccessible(true);
314
315         String attributeValue = new String("test");
316         String requiredAttributeValue = new String("test");
317         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
318                 attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
319         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
320                 attributeMatchPattern1 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
321         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
322                 attributeMatchPattern2 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.Equal;
323         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
324                 attributeMatchPattern3 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
325         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
326                 attributeMatchPattern4 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
327         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
328                 attributeMatchPattern5 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
329
330         Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
331         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1));
332         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2));
333         Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern3));
334         Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern4));
335         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5));
336     }
337
338     @Test
339     public void testCheckAttributeStringValueSatisfied1() throws Exception {
340         method = class1.getDeclaredMethod("checkAttributeStringValueSatisfied",new Class[]{
341                 String.class,
342                 String.class,
343                 PhysicalResourceRequirement.AttributeMatchPattern.class
344         });
345         method.setAccessible(true);
346
347         String attributeValue = new String("test");
348         String requiredAttributeValue = new String("test");
349         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
350         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern1 = PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
351         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern2 = PhysicalResourceRequirement.AttributeMatchPattern.Equal;
352         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern3 = PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
353         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern4 = PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
354         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern5 = PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
355
356         Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
357         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1));
358         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2));
359         Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern3));
360         Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern4));
361         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5));
362     }
363
364     @Test
365     public void testCheckAttributeMatchPatternSpecified() throws Exception {
366         method = class1.getDeclaredMethod("checkAttributeMatchPatternSpecified",new Class[]{
367                 List.class,
368                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class
369         });
370         method.setAccessible(true);
371
372         AttributeMatchPatterns.AttributeMatchPattern matchPattern = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
373         List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
374         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
375                 attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
376         attributeMatchPatterns.add(matchPattern);
377
378         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeMatchPatterns,attributeMatchPattern));
379
380     }
381
382     @Test
383     public void testCheckAttributeMatchPatternSpecified1() throws Exception {
384         method = class1.getDeclaredMethod("checkAttributeMatchPatternSpecified",new Class[]{
385                 List.class,
386                 PhysicalResourceRequirement.AttributeMatchPattern.class
387         });
388         method.setAccessible(true);
389
390         AttributeMatchPatterns.AttributeMatchPattern matchPattern = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
391         List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
392         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
393         attributeMatchPatterns.add(matchPattern);
394
395         Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeMatchPatterns, attributeMatchPattern));
396
397     }
398
399     @Test
400     public void testCheckPhysicalNodeAttributeSatisfied() throws Exception{
401         method = class1.getDeclaredMethod("checkPhysicalNodeAttributeSatisfied",new Class[]{
402                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute.class,
403                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class
404         });
405         method.setAccessible(true);
406
407         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute
408                 attribute = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute.class);
409         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement
410                 physicalResourceRequirement = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class);
411         AttributeMatchPatterns attributeMatchPatterns_temp = mock(AttributeMatchPatterns.class);
412         AttributeName attributeName = mock(AttributeName.class);
413         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
414         PhysicalNodeAttributeDefinition physicalNodeAttributeDefinition = mock(PhysicalNodeAttributeDefinition.class);
415         CheckedFuture checkedFuture = mock(CheckedFuture.class);
416         AttributeValue attributeValue = mock(AttributeValue.class);
417         AttributeMatchPatterns.AttributeMatchPattern attributeMatchPattern_in_list = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
418         Optional<PhysicalNodeAttributeDefinition> result = Optional.of(physicalNodeAttributeDefinition);
419         List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
420         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
421                 attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
422
423         attributeMatchPatterns.add(attributeMatchPattern_in_list);
424
425         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
426         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
427         when(checkedFuture.get()).thenReturn(result);
428         when(physicalNodeAttributeDefinition.getAttributeMatchPatterns()).thenReturn(attributeMatchPatterns_temp);//need to test
429         when(attributeMatchPatterns_temp.getAttributeMatchPattern()).thenReturn(attributeMatchPatterns);
430         when(physicalResourceRequirement.getAttributeMatchPattern()).thenReturn(attributeMatchPattern);
431         when(attribute.getAttributeName()).thenReturn(attributeName);//need to test
432
433         //get into methond"checkAttributeMatchPatternSpecified" args(attributeMatchPatterns,attributeMatchPattern) both less then
434         /*  returned true */
435
436         when(physicalNodeAttributeDefinition.getAttributeValueType()).thenReturn(AttributeValueType.Int);
437         when(attribute.getAttributeValue()).thenReturn(attributeValue);
438         when(attributeValue.getIntValue())
439                 .thenReturn(1L)
440                 .thenReturn(2L);
441         when(physicalResourceRequirement.getAttributeValue()).thenReturn(attributeValue);
442
443         Assert.assertTrue((boolean) method.invoke(vnMappingUnit,attribute,physicalResourceRequirement));
444     }
445
446     @Test
447     public void testCheckPhysicalNodeAttributeSatisfied1() throws Exception{
448         method = class1.getDeclaredMethod("checkPhysicalPortAttributeSatisfied",new Class[]{
449                 Attribute.class,
450                 PhysicalResourceRequirement.class
451         });
452         method.setAccessible(true);
453
454         Attribute attribute = mock(Attribute.class);
455         AttributeMatchPatterns attributeMatchPatterns_temp = mock(AttributeMatchPatterns.class);
456         PhysicalResourceRequirement physicalResourceRequirement = mock(PhysicalResourceRequirement.class);
457         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
458         AttributeValue attributeValue = mock(AttributeValue.class);
459         AttributeName attributeName = mock(AttributeName.class);
460         AttributeMatchPatterns.AttributeMatchPattern attributeMatchPattern = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
461         PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern1 = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
462         CheckedFuture checkedFuture = mock(CheckedFuture.class);
463         PhysicalPortAttributeDefinition physicalPortAttributeDefinition = mock(PhysicalPortAttributeDefinition.class);
464         Optional<PhysicalPortAttributeDefinition> result = Optional.of(physicalPortAttributeDefinition);
465         List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
466
467         attributeMatchPatterns.add(attributeMatchPattern);
468
469         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
470         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
471         when(checkedFuture.get()).thenReturn(result);
472         when(physicalPortAttributeDefinition.getAttributeMatchPatterns()).thenReturn(attributeMatchPatterns_temp);
473         when(attributeMatchPatterns_temp.getAttributeMatchPattern()).thenReturn(attributeMatchPatterns);
474         when(physicalResourceRequirement.getAttributeMatchPattern()).thenReturn(attributeMatchPattern1);
475
476         //get into methond"checkAttributeMatchPatternSpecified" args(attributeMatchPatterns,attributeMatchPattern) both less then
477         /*  returned true */
478
479         when(attribute.getAttributeName()).thenReturn(attributeName);
480         when(physicalPortAttributeDefinition.getAttributeValueType()).thenReturn(AttributeValueType.Int);
481         when(attribute.getAttributeValue()).thenReturn(attributeValue);
482         when(attributeValue.getIntValue())
483                 .thenReturn(1L)
484                 .thenReturn(2L);
485         when(physicalResourceRequirement.getAttributeValue()).thenReturn(attributeValue);
486
487         Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attribute,physicalResourceRequirement));
488     }
489
490     @Test
491     public void testVirtualNodeMapping() throws Exception{
492         method = class1.getDeclaredMethod("virtualNodeMapping",new Class[]{
493                 VirtualNetworkId.class,
494                 VirtualNode.class,
495                 List.class
496         });
497         method.setAccessible(true);
498
499         VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
500         VirtualNode virtualNode = mock(VirtualNode.class);
501         PhysicalNode.NodeType NodeType_Switch = PhysicalNode.NodeType.Switch;
502         PhysicalNode.NodeType NodeType_Router = PhysicalNode.NodeType.Router;
503         PhysicalNode.NodeType NodeType_Firewall = PhysicalNode.NodeType.Firewall;
504         PhysicalNode.NodeType NodeType_Loadbalancer = PhysicalNode.NodeType.Loadbalancer;
505         NodeType nodeType_Vswitch = NodeType.Vswitch;
506         NodeType nodeType_Vrouter = NodeType.Vrouter;
507         NodeType nodeType_Vfirewall = NodeType.Vrouter;
508         NodeType nodeType_Vloadbalancer = NodeType.Vrouter;
509
510 //        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNodeInstance.NodeType
511 //                nodeType_
512         PhysicalNode physicalNode = mock(PhysicalNode.class);
513         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement
514                 physicalResourceRequirement = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class);
515         List<PhysicalNode> physicalNodes = new ArrayList<PhysicalNode>();
516         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>
517                 physicalResourceRequirements = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>();
518
519         physicalResourceRequirements.add(physicalResourceRequirement);
520
521         when(virtualNode.getPhysicalResourceRequirement()).thenReturn(physicalResourceRequirements);
522         when(virtualNode.getNodeType())
523                 .thenReturn(nodeType_Vswitch)
524                 .thenReturn(nodeType_Vswitch)
525                 .thenReturn(nodeType_Vswitch)
526                 .thenReturn(nodeType_Vrouter)
527                 .thenReturn(nodeType_Vrouter)
528                 .thenReturn(nodeType_Vfirewall)
529                 .thenReturn(nodeType_Vfirewall)
530                 .thenReturn(nodeType_Vloadbalancer)
531                 .thenReturn(nodeType_Vloadbalancer);
532
533         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
534
535         physicalNodes.add(physicalNode);
536
537         //test nodeType_Vswitch
538         when(physicalNode.getNodeType())
539                 .thenReturn(null)
540                 .thenReturn(NodeType_Switch)
541                 .thenReturn(null)
542                 .thenReturn(NodeType_Router)
543                 .thenReturn(null)
544                 .thenReturn(NodeType_Firewall)
545                 .thenReturn(null)
546                 .thenReturn(NodeType_Loadbalancer);
547         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
548         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
549         //test nodeType_Vrouter
550         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
551         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
552         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
553         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
554         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
555         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
556     }
557
558     @Test
559     public void testVirtualPortMapping() throws Exception{
560         method = class1.getDeclaredMethod("virtualPortMapping", new Class[]{
561                 VirtualNetworkId.class,
562                 VirtualNodeId.class,
563                 VirtualPort.class,
564                 PhysicalNode.class
565         });
566         method.setAccessible(true);
567
568         VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
569         VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
570         VirtualPort virtualPort = mock(VirtualPort.class);
571         PhysicalNode physicalNode = mock(PhysicalNode.class);
572         VirtualPort.PortType portType = VirtualPort.PortType.Internal;
573         PhysicalPort physicalPort = mock(PhysicalPort.class);
574         List<PhysicalPort> physicalPorts = new ArrayList<PhysicalPort>();
575         List<PhysicalResourceRequirement> physicalResourceRequirements = new ArrayList<PhysicalResourceRequirement>();
576
577         physicalPorts.add(physicalPort);
578
579         when(virtualPort.getPortType())
580                 .thenReturn(null)
581                 .thenReturn(portType);
582
583         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNodeId, virtualPort, physicalNode) == null);
584
585         //test not null
586         when(physicalNode.getPhysicalPort()).thenReturn(physicalPorts);
587         when(virtualPort.getPhysicalResourceRequirement()).thenReturn(physicalResourceRequirements);
588         when(physicalPort.getPortType())
589                 .thenReturn(null)
590                 .thenReturn(PhysicalPort.PortType.External);
591
592         Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNodeId, virtualPort, physicalNode) == null);
593         Assert.assertTrue(method.invoke(vnMappingUnit,virtualNetworkId,virtualNodeId,virtualPort,physicalNode) == null);
594
595     }
596
597     @Test
598     public void testVirtualLinkMapping() throws Exception{
599         method = class1.getDeclaredMethod("virtualLinkMapping",new Class[]{
600                 VirtualNetworkId.class,
601                 VirtualLink.class,
602                 UserVnPnMapping.class
603         });
604         method.setAccessible(true);
605
606         VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
607         VirtualLink virtualLink = mock(VirtualLink.class);
608         UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
609         VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
610         VnPnMappingResult vnPnMappingResult = mock(VnPnMappingResult.class);
611         PhysicalResourceEntityId physicalResourceEntityId = mock(PhysicalResourceEntityId.class);
612         List<VnPnMappingResult> vnPnMappingResults = new ArrayList<VnPnMappingResult>();
613
614         when(userVnPnMapping.getVnPnMappingResult()).thenReturn(vnPnMappingResults);
615         when(virtualLink.getSrcNodeId()).thenReturn(virtualNodeId);
616         when(virtualNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
617         //powermock
618         PowerMockito.mockStatic(VNMappingUnitUtils.class);
619         PowerMockito.when(VNMappingUnitUtils.getVnPnMappingResult(vnPnMappingResults, new VirtualResourceEntityId(new String("00001111-0000-0000-0000-000011112222"))))
620                 .thenReturn(vnPnMappingResult);
621         when(virtualLink.getDestNodeId()).thenReturn(virtualNodeId);
622         when(vnPnMappingResult.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId);
623         when(physicalResourceEntityId.getValue())
624                 .thenReturn(new String("test"))//source
625                 .thenReturn(new String("test"))//destination
626                 .thenReturn(new String("src"))//source2
627                 .thenReturn(new String("dst"))//destination2
628                 .thenReturn(new String("src"))//source3
629                 .thenReturn(new String("dst"));//destination3
630         when(virtualLink.getBandwidth())
631                 .thenReturn(1L)//first trap
632                 .thenReturn(0L)//second trap
633                 .thenReturn(1L);//third trap
634
635         Assert.assertTrue((PhysicalPath) method.invoke(vnMappingUnit, virtualNetworkId, virtualLink, userVnPnMapping) != null);
636         verify(virtualLink).getBandwidth();
637
638         //test src != dst
639         when(pnComputationUnit.computePath(any(PhysicalNodeId.class), any(PhysicalNodeId.class))).thenReturn(null);
640         when(pnComputationUnit.computePath(any(PhysicalNodeId.class), any(PhysicalNodeId.class), any(long.class))).thenReturn(null);
641
642         Assert.assertTrue((PhysicalPath) method.invoke(vnMappingUnit, virtualNetworkId, virtualLink, userVnPnMapping) == null);
643         Assert.assertTrue((PhysicalPath) method.invoke(vnMappingUnit, virtualNetworkId, virtualLink, userVnPnMapping) == null);
644         verify(virtualLink,times(4)).getBandwidth();
645     }
646
647     @Test
648     public void testCheckPhysicalPortSatisfied() throws Exception{
649         method = class1.getDeclaredMethod("checkPhysicalNodeSatisfied",new Class[]{
650                 PhysicalNode.class,
651                 List.class,
652         });
653         method.setAccessible(true);
654
655         PhysicalNode physicalNode = mock(PhysicalNode.class);
656         AttributeName attributeName = mock(AttributeName.class);
657         AttributeName attributeName1 = mock(AttributeName.class);
658         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement
659                 physicalResourceRequirement = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class);
660         org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute
661                 attribute = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute.class);
662         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>
663                 physicalResourceRequirements = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>();
664         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute>
665                 attributes = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute>();
666
667         attributes.add(attribute);
668         physicalResourceRequirements.add(physicalResourceRequirement);
669         Assert.assertTrue(attributeName != attributeName1);
670
671         when(physicalNode.getAttribute()).thenReturn(attributes);
672         when(physicalResourceRequirement.getAttributeName()).thenReturn(attributeName);
673         //get into method "getPhysicalNodeAttribute _long" args(attributes,attributeName)
674         when(attribute.getAttributeName())
675                 .thenReturn(attributeName1) //return null
676                 .thenReturn(attributeName); //return attribute
677         //return to main
678         Assert.assertTrue((boolean) method.invoke(vnMappingUnit, physicalNode, physicalResourceRequirements) == false);
679         //get in to method "checkPhysicalNodeAttributeSatisfied" args(attribute,physicalResourceRequirement)
680         // TODO
681     }
682
683     @Test
684     public void testCheckPhysicalPortSatisfied1() throws Exception{
685         method  = class1.getDeclaredMethod("checkPhysicalPortSatisfied",new Class[]{
686                 PhysicalPort.class,
687                 List.class
688         });
689         method.setAccessible(true);
690
691         PhysicalPort physicalPort = mock(PhysicalPort.class);
692         Attribute attribute = mock(Attribute.class);
693         AttributeName attributeName = mock(AttributeName.class);
694         AttributeName attributeName1 = mock(AttributeName.class);
695         PhysicalResourceRequirement physicalResourceRequirement = mock(PhysicalResourceRequirement.class);
696         List<Attribute> attributes = new ArrayList<Attribute>();
697         List<PhysicalResourceRequirement> physicalResourceRequirements = new ArrayList<PhysicalResourceRequirement>();
698
699         attributes.add(attribute);
700         physicalResourceRequirements.add(physicalResourceRequirement);
701
702         when(physicalPort.getAttribute()).thenReturn(attributes);
703         when(physicalResourceRequirement.getAttributeName()).thenReturn(attributeName);
704         //get into method "getPhysicalNodeAttribute" args(attributes,attributeName)
705         when(attribute.getAttributeName()).thenReturn(attributeName1);
706         //return to main
707         Assert.assertTrue((boolean) method.invoke(vnMappingUnit, physicalPort, physicalResourceRequirements) == false);
708         //get in to method "checkPhysicalNodeAttributeSatisfied" args(attribute,physicalResourceRequirement)
709         // TODO
710     }
711 }