Modified one test file and added the needed dependence in the nemo-impl pom file 59/31759/1
authorsaomenmen <zhangmroy@163.com>
Sat, 19 Dec 2015 04:05:56 +0000 (12:05 +0800)
committersaomenmen <zhangmroy@163.com>
Sat, 19 Dec 2015 04:08:53 +0000 (12:08 +0800)
Change-Id: I5c68d603d777d63e9a88acc8e0202d79be9f370f
Signed-off-by: saomenmen <zhangmroy@163.com>
nemo-impl/pom.xml
nemo-impl/src/test/java/org/opendaylight/nemo/intent/computation/VNMappingUnitTest.java

index 32a241f72c50fef28ab48e37349203cdb9aa431b..fabbde3978336fd41c5be42b5fd53022d7053202 100644 (file)
@@ -23,7 +23,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <name>${project.artifactId}</name>
 
   <properties>
-    <powermock.version>1.4.10</powermock.version>
+    <powermock.version>1.5.2</powermock.version>
     <jacoco.version>0.7.2.201409121644</jacoco.version>
     <sonar.jacoco.reportPath>target/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
     <sonar.jacoco.itReportPath>target/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPath>
@@ -77,9 +77,9 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>mockito-all</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
+        <dependency>
       <groupId>org.powermock</groupId>
-      <artifactId>powermock-api-mockito</artifactId>
+      <artifactId>powermock-core</artifactId>
       <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
@@ -89,6 +89,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.powermock</groupId>
+      <artifactId>powermock-api-mockito</artifactId>
+      <version>${powermock.version}</version>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
@@ -215,4 +221,4 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
     <tag>HEAD</tag>
   </scm>
-</project>
\ No newline at end of file
+</project>
index 01115619089e834cef0caeb169895eede279a6c0..d456803c3472cdafee6a38a4fc2aede0a4632be5 100644 (file)
@@ -5,46 +5,96 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.nemo.intent.computation;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+package org.opendaylight.nemo.intent.computation;
 
 import junit.framework.TestCase;
-
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+
+import static org.junit.Assert.*;
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.CheckedFuture;
+import org.junit.runner.RunWith;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
+import org.opendaylight.nemo.user.tenantmanager.AAA;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalResourceEntityId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNetworkId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.AttributeDefinition.AttributeValueType;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualLinkId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualLinks;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.AttributeValue;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.AttributeName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNodeAttributeDefinitions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalPortAttributeDefinitions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.definition.AttributeMatchPatterns;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.attribute.value.RangeValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalNodes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPath;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.attribute.definitions.PhysicalNodeAttributeDefinition;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.attribute.definitions.PhysicalNodeAttributeDefinitionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.PhysicalPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.attribute.definitions.PhysicalPortAttributeDefinition;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.attribute.definitions.PhysicalPortAttributeDefinitionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.Attribute;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.PhysicalResourceRequirement;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.PhysicalResourceInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.VirtualNodeInstance.NodeType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VirtualResourceInstance;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMapping;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalPortId;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
+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;
+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;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualNodes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.api.support.membermodification.MemberMatcher;
+import org.powermock.api.support.membermodification.MemberModifier;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.ExecutionException;
+import static org.mockito.Mockito.*;
 /**
- * Created by zhangmeng on 2015/11/9.
+ * Created by zhangmeng on 2015/12/21.
  */
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({VNMappingUnit.class,VNMappingUnitUtils.class})
 public class VNMappingUnitTest extends TestCase {
-    private VNMappingUnit vnMappingUnit;
+    private Class<VNMappingUnit> class1;
+    private Method method;
     private DataBroker dataBroker;
     private PNComputationUnit pnComputationUnit;
-    private Map<PhysicalNodeId, Map<PhysicalPortId, ListenerRegistration<DataChangeListener>>> physicalPortChangeListenerRegs;
-    private ListenerRegistration<DataChangeListener> physicalNodeChangeListenerReg;
-    private ListenerRegistration<DataChangeListener> physicalLinkChangeListenerReg;
+    private PNResourcesTracker pnResourcesTracker;
+    private VNMappingUnit vnMappingUnit;
 
     @Before
     public void setUp() throws Exception {
+        class1 = VNMappingUnit.class;
         dataBroker = mock(DataBroker.class);
         pnComputationUnit = mock(PNComputationUnit.class);
-        vnMappingUnit =  mock(VNMappingUnit.class);
+        pnResourcesTracker = mock(PNResourcesTracker.class);
 
+        vnMappingUnit = new VNMappingUnit(dataBroker,pnComputationUnit,pnResourcesTracker);
     }
 
     @Test
@@ -52,15 +102,610 @@ public class VNMappingUnitTest extends TestCase {
         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);
         UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
         List<PhysicalPath> physicalPaths = new ArrayList<PhysicalPath>();
-        vnMappingUnit.virtualNetworkMapping(virtualNetwork,userVnPnMapping,physicalPaths);
-        Assert.assertNotNull(vnMappingUnit);
-        verify(vnMappingUnit).virtualNetworkMapping(any(VirtualNetwork.class),any(UserVnPnMapping.class),any(List.class));
+
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
+        PhysicalNodes physicalNodes = mock(PhysicalNodes.class);
+        VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);
+        CheckedFuture checkedFuture = mock(CheckedFuture.class);
+        VirtualNode virtualNode = mock(VirtualNode.class);
+        VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);
+        VirtualLink virtualLink = mock(VirtualLink.class);
+        VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
+        VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
+        VnPnMappingResult vnPnMappingResult_virtualLinkMapping = mock(VnPnMappingResult.class);
+        UserId userId = mock(UserId.class);
+        VirtualLinkId virtualLinkId = mock(VirtualLinkId.class);
+        PhysicalResourceEntityId physicalResourceEntityId_virtualLinkMapping = mock(PhysicalResourceEntityId.class);
+        Optional<PhysicalNodes> result = Optional.of(physicalNodes);
+        List<PhysicalNode> physicalNodeList = new ArrayList<PhysicalNode>();
+        List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();
+        List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();
+        List<VnPnMappingResult> vnPnMappingResults = new ArrayList<VnPnMappingResult>();
+        List<VnPnMappingResult> vnPnMappingResults_virtualLinkMapping = new ArrayList<VnPnMappingResult>();
+
+        virtualLinks.add(virtualLink);
+
+        Assert.assertTrue(result.isPresent());
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
+        when(checkedFuture.get()).thenReturn(result);
+        when(physicalNodes.getPhysicalNode()).thenReturn(physicalNodeList);
+        when(virtualNetwork.getUserId()).thenReturn(userId);
+        when(userVnPnMapping.getVnPnMappingResult())
+                .thenReturn(vnPnMappingResults)
+                .thenReturn(vnPnMappingResults_virtualLinkMapping);
+        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);
+        when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);
+        //for circle 1
+            //TODO
+        //for circle 2
+        when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);
+        when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);
+        when(virtualNetwork.getNetworkId()).thenReturn(virtualNetworkId);
+        //get into method "virtualLinkMapping" args(virtualNetworkId,virtualLink,userVnPnMapping)
+        when(virtualLink.getSrcNodeId()).thenReturn(virtualNodeId);
+        when(virtualNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+        //powermock
+        PowerMockito.mockStatic(VNMappingUnitUtils.class);
+        PowerMockito.when(VNMappingUnitUtils.getVnPnMappingResult(vnPnMappingResults_virtualLinkMapping, new VirtualResourceEntityId(new String("00001111-0000-0000-0000-000011112222"))))
+                .thenReturn(vnPnMappingResult_virtualLinkMapping);
+        when(vnPnMappingResult_virtualLinkMapping.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId_virtualLinkMapping);
+        when(physicalResourceEntityId_virtualLinkMapping.getValue()).thenReturn(new String("test"));
+        when(virtualLink.getDestNodeId()).thenReturn(virtualNodeId);
+        when(virtualLink.getBandwidth()).thenReturn(1L);
+        //return to main
+        when(virtualLink.getLinkId()).thenReturn(virtualLinkId);
+        when(virtualLinkId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+
+        vnMappingUnit.virtualNetworkMapping(virtualNetwork, userVnPnMapping, physicalPaths);
+        verify(userVnPnMapping,times(2)).getVnPnMappingResult();
+        verify(virtualLink,times(2)).getSrcNodeId();
+        verify(virtualLink,times(2)).getDestNodeId();
+        verify(virtualNodeId,times(2)).getValue();
+    }
+
+    @Test
+    public void testVirtualNetworkMapping1() throws Exception {
+        VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
+        VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
+        VnPnMappingResult vnPnMappingResult_virtualLinkMapping = mock(VnPnMappingResult.class);
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);
+        UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
+        VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);
+        VirtualLink virtualLink = mock(VirtualLink.class);
+        VirtualLinkId virtualLinkId = mock(VirtualLinkId.class);
+        PhysicalResourceEntityId physicalResourceEntityId_virtualLinkMapping = mock(PhysicalResourceEntityId.class);
+        List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();
+        List<VirtualLink> unmappedVirtualLinks = new ArrayList<VirtualLink>();
+        List<PhysicalPath> physicalPaths = new ArrayList<PhysicalPath>();
+        List<VnPnMappingResult> vnPnMappingResults = new ArrayList<VnPnMappingResult>();
+        List<VnPnMappingResult> vnPnMappingResults_virtualLinkMapping = new ArrayList<VnPnMappingResult>();
+
+        unmappedVirtualLinks.add(virtualLink);
+        virtualLinks.add(virtualLink);
+
+        when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);
+        when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);
+        when(userVnPnMapping.getVnPnMappingResult())
+                .thenReturn(vnPnMappingResults)
+                .thenReturn(vnPnMappingResults_virtualLinkMapping);;
+        when(virtualNetwork.getNetworkId()).thenReturn(virtualNetworkId);
+        //get into method "virtualLinkMapping" args(virtualNetworkId,virtualLink,userVnPnMapping)
+        when(virtualLink.getSrcNodeId()).thenReturn(virtualNodeId);
+        when(virtualNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+        //powermock
+        PowerMockito.mockStatic(VNMappingUnitUtils.class);
+        PowerMockito.when(VNMappingUnitUtils.getVnPnMappingResult(vnPnMappingResults_virtualLinkMapping, new VirtualResourceEntityId(new String("00001111-0000-0000-0000-000011112222"))))
+                .thenReturn(vnPnMappingResult_virtualLinkMapping);
+        when(vnPnMappingResult_virtualLinkMapping.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId_virtualLinkMapping);
+        when(physicalResourceEntityId_virtualLinkMapping.getValue()).thenReturn(new String("test"));
+        when(virtualLink.getDestNodeId()).thenReturn(virtualNodeId);
+        when(virtualLink.getBandwidth()).thenReturn(1L);
+        //return to main
+        when(virtualLink.getLinkId()).thenReturn(virtualLinkId);
+        when(virtualLinkId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+
+        vnMappingUnit.virtualNetworkMapping(virtualNetwork, unmappedVirtualLinks, userVnPnMapping, physicalPaths);
+        verify(userVnPnMapping,times(2)).getVnPnMappingResult();
+        verify(virtualLink,times(2)).getSrcNodeId();
+        verify(virtualLink,times(2)).getDestNodeId();
+        verify(virtualNodeId,times(2)).getValue();
     }
 
     @Test
     public void testClose() throws Exception {
-        Assert.assertNotNull(vnMappingUnit);
         vnMappingUnit.close();
-        verify(vnMappingUnit).close();
+        Assert.assertTrue(vnMappingUnit != null);
+    }
+
+    @Test
+    public void testCheckAttributeRangeValueSatisfied() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeRangeValueSatisfied",new Class[]{Long.class,
+                RangeValue.class,
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class});
+        method.setAccessible(true);
+
+        Long attributeValue = 1L;
+        RangeValue requiredAttributeValue = mock(RangeValue.class);
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.Between;
+
+        when(requiredAttributeValue.getMin()).thenReturn(0L);
+        when(requiredAttributeValue.getMax()).thenReturn(2L);
+
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeValue, requiredAttributeValue, attributeMatchPattern));
+    }
+    @Test
+    public void testCheckAttributeRangeValueSatisfied1() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeRangeValueSatisfied",new Class[]{Long.class,RangeValue.class,PhysicalResourceRequirement.AttributeMatchPattern.class});
+        method.setAccessible(true);
+
+        Long attributeValue = 1L;
+        RangeValue requiredAttributeValue = mock(RangeValue.class);
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.Between;
+
+        when(requiredAttributeValue.getMin()).thenReturn(0L);
+        when(requiredAttributeValue.getMax()).thenReturn(2L);
+
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
+    }
+
+    @Test
+    public void testCheckAttributeIntegerValueSatisfied() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeIntegerValueSatisfied",new Class[]{Long.class,
+                Long.class,
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class
+                });
+        method.setAccessible(true);
+
+        Long attributeValue = 2L;
+        Long requiredAttributeValue = 1L;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern1 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern2 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.Equal;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern3 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern4 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern5 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
+
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern) == false);
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1) == true);
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2) == false);
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeValue, requiredAttributeValue, attributeMatchPattern3) == true);
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeValue, requiredAttributeValue, attributeMatchPattern4) == true);
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5) == false);
+    }
+
+    @Test
+    public void testCheckAttributeIntegerValueSatisfied1() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeIntegerValueSatisfied",new Class[]{Long.class,Long.class,PhysicalResourceRequirement.AttributeMatchPattern.class});
+        method.setAccessible(true);
+
+        Long attributeValue = 2L;
+        Long requiredAttributeValue = 1L;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern1 = PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern2 = PhysicalResourceRequirement.AttributeMatchPattern.Equal;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern3 = PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern4 = PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern5 = PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
+
+        Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1));
+        Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2));
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern3));
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern4));
+        Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5));
+    }
+
+    @Test
+    public void testCheckAttributeStringValueSatisfied() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeStringValueSatisfied",new Class[]{
+                String.class,
+                String.class,
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class
+        });
+        method.setAccessible(true);
+
+        String attributeValue = new String("test");
+        String requiredAttributeValue = new String("test");
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern1 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern2 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.Equal;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern3 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern4 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern5 = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
+
+        Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1));
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2));
+        Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern3));
+        Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern4));
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5));
+    }
+
+    @Test
+    public void testCheckAttributeStringValueSatisfied1() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeStringValueSatisfied",new Class[]{
+                String.class,
+                String.class,
+                PhysicalResourceRequirement.AttributeMatchPattern.class
+        });
+        method.setAccessible(true);
+
+        String attributeValue = new String("test");
+        String requiredAttributeValue = new String("test");
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern1 = PhysicalResourceRequirement.AttributeMatchPattern.NotLessThan;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern2 = PhysicalResourceRequirement.AttributeMatchPattern.Equal;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern3 = PhysicalResourceRequirement.AttributeMatchPattern.NotEqual;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern4 = PhysicalResourceRequirement.AttributeMatchPattern.GreaterThan;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern5 = PhysicalResourceRequirement.AttributeMatchPattern.NotGreaterThan;
+
+        Assert.assertTrue(!(boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern));
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern1));
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern2));
+        Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern3));
+        Assert.assertTrue(!(boolean) method.invoke(vnMappingUnit,attributeValue, requiredAttributeValue, attributeMatchPattern4));
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeValue,requiredAttributeValue,attributeMatchPattern5));
+    }
+
+    @Test
+    public void testCheckAttributeMatchPatternSpecified() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeMatchPatternSpecified",new Class[]{
+                List.class,
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.class
+        });
+        method.setAccessible(true);
+
+        AttributeMatchPatterns.AttributeMatchPattern matchPattern = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
+        List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+        attributeMatchPatterns.add(matchPattern);
+
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attributeMatchPatterns,attributeMatchPattern));
+
+    }
+
+    @Test
+    public void testCheckAttributeMatchPatternSpecified1() throws Exception {
+        method = class1.getDeclaredMethod("checkAttributeMatchPatternSpecified",new Class[]{
+                List.class,
+                PhysicalResourceRequirement.AttributeMatchPattern.class
+        });
+        method.setAccessible(true);
+
+        AttributeMatchPatterns.AttributeMatchPattern matchPattern = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
+        List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+        attributeMatchPatterns.add(matchPattern);
+
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit, attributeMatchPatterns, attributeMatchPattern));
+
+    }
+
+    @Test
+    public void testCheckPhysicalNodeAttributeSatisfied() throws Exception{
+        method = class1.getDeclaredMethod("checkPhysicalNodeAttributeSatisfied",new Class[]{
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute.class,
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class
+        });
+        method.setAccessible(true);
+
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute
+                attribute = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute.class);
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement
+                physicalResourceRequirement = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class);
+        AttributeMatchPatterns attributeMatchPatterns_temp = mock(AttributeMatchPatterns.class);
+        AttributeName attributeName = mock(AttributeName.class);
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
+        PhysicalNodeAttributeDefinition physicalNodeAttributeDefinition = mock(PhysicalNodeAttributeDefinition.class);
+        CheckedFuture checkedFuture = mock(CheckedFuture.class);
+        AttributeValue attributeValue = mock(AttributeValue.class);
+        AttributeMatchPatterns.AttributeMatchPattern attributeMatchPattern_in_list = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
+        Optional<PhysicalNodeAttributeDefinition> result = Optional.of(physicalNodeAttributeDefinition);
+        List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern
+                attributeMatchPattern = org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+
+        attributeMatchPatterns.add(attributeMatchPattern_in_list);
+
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
+        when(checkedFuture.get()).thenReturn(result);
+        when(physicalNodeAttributeDefinition.getAttributeMatchPatterns()).thenReturn(attributeMatchPatterns_temp);//need to test
+        when(attributeMatchPatterns_temp.getAttributeMatchPattern()).thenReturn(attributeMatchPatterns);
+        when(physicalResourceRequirement.getAttributeMatchPattern()).thenReturn(attributeMatchPattern);
+        when(attribute.getAttributeName()).thenReturn(attributeName);//need to test
+
+        //get into methond"checkAttributeMatchPatternSpecified" args(attributeMatchPatterns,attributeMatchPattern) both less then
+        /*  returned true */
+
+        when(physicalNodeAttributeDefinition.getAttributeValueType()).thenReturn(AttributeValueType.Int);
+        when(attribute.getAttributeValue()).thenReturn(attributeValue);
+        when(attributeValue.getIntValue())
+                .thenReturn(1L)
+                .thenReturn(2L);
+        when(physicalResourceRequirement.getAttributeValue()).thenReturn(attributeValue);
+
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit,attribute,physicalResourceRequirement));
+    }
+
+    @Test
+    public void testCheckPhysicalNodeAttributeSatisfied1() throws Exception{
+        method = class1.getDeclaredMethod("checkPhysicalPortAttributeSatisfied",new Class[]{
+                Attribute.class,
+                PhysicalResourceRequirement.class
+        });
+        method.setAccessible(true);
+
+        Attribute attribute = mock(Attribute.class);
+        AttributeMatchPatterns attributeMatchPatterns_temp = mock(AttributeMatchPatterns.class);
+        PhysicalResourceRequirement physicalResourceRequirement = mock(PhysicalResourceRequirement.class);
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
+        AttributeValue attributeValue = mock(AttributeValue.class);
+        AttributeName attributeName = mock(AttributeName.class);
+        AttributeMatchPatterns.AttributeMatchPattern attributeMatchPattern = AttributeMatchPatterns.AttributeMatchPattern.LessThan;
+        PhysicalResourceRequirement.AttributeMatchPattern attributeMatchPattern1 = PhysicalResourceRequirement.AttributeMatchPattern.LessThan;
+        CheckedFuture checkedFuture = mock(CheckedFuture.class);
+        PhysicalPortAttributeDefinition physicalPortAttributeDefinition = mock(PhysicalPortAttributeDefinition.class);
+        Optional<PhysicalPortAttributeDefinition> result = Optional.of(physicalPortAttributeDefinition);
+        List<AttributeMatchPatterns.AttributeMatchPattern> attributeMatchPatterns = new ArrayList<AttributeMatchPatterns.AttributeMatchPattern>();
+
+        attributeMatchPatterns.add(attributeMatchPattern);
+
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
+        when(checkedFuture.get()).thenReturn(result);
+        when(physicalPortAttributeDefinition.getAttributeMatchPatterns()).thenReturn(attributeMatchPatterns_temp);
+        when(attributeMatchPatterns_temp.getAttributeMatchPattern()).thenReturn(attributeMatchPatterns);
+        when(physicalResourceRequirement.getAttributeMatchPattern()).thenReturn(attributeMatchPattern1);
+
+        //get into methond"checkAttributeMatchPatternSpecified" args(attributeMatchPatterns,attributeMatchPattern) both less then
+        /*  returned true */
+
+        when(attribute.getAttributeName()).thenReturn(attributeName);
+        when(physicalPortAttributeDefinition.getAttributeValueType()).thenReturn(AttributeValueType.Int);
+        when(attribute.getAttributeValue()).thenReturn(attributeValue);
+        when(attributeValue.getIntValue())
+                .thenReturn(1L)
+                .thenReturn(2L);
+        when(physicalResourceRequirement.getAttributeValue()).thenReturn(attributeValue);
+
+        Assert.assertTrue((boolean)method.invoke(vnMappingUnit,attribute,physicalResourceRequirement));
+    }
+
+    @Test
+    public void testVirtualNodeMapping() throws Exception{
+        method = class1.getDeclaredMethod("virtualNodeMapping",new Class[]{
+                VirtualNetworkId.class,
+                VirtualNode.class,
+                List.class
+        });
+        method.setAccessible(true);
+
+        VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
+        VirtualNode virtualNode = mock(VirtualNode.class);
+        PhysicalNode.NodeType NodeType_Switch = PhysicalNode.NodeType.Switch;
+        PhysicalNode.NodeType NodeType_Router = PhysicalNode.NodeType.Router;
+        PhysicalNode.NodeType NodeType_Firewall = PhysicalNode.NodeType.Firewall;
+        PhysicalNode.NodeType NodeType_Loadbalancer = PhysicalNode.NodeType.Loadbalancer;
+        NodeType nodeType_Vswitch = NodeType.Vswitch;
+        NodeType nodeType_Vrouter = NodeType.Vrouter;
+        NodeType nodeType_Vfirewall = NodeType.Vrouter;
+        NodeType nodeType_Vloadbalancer = NodeType.Vrouter;
+
+//        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNodeInstance.NodeType
+//                nodeType_
+        PhysicalNode physicalNode = mock(PhysicalNode.class);
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement
+                physicalResourceRequirement = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class);
+        List<PhysicalNode> physicalNodes = new ArrayList<PhysicalNode>();
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>
+                physicalResourceRequirements = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>();
+
+        physicalResourceRequirements.add(physicalResourceRequirement);
+
+        when(virtualNode.getPhysicalResourceRequirement()).thenReturn(physicalResourceRequirements);
+        when(virtualNode.getNodeType())
+                .thenReturn(nodeType_Vswitch)
+                .thenReturn(nodeType_Vswitch)
+                .thenReturn(nodeType_Vswitch)
+                .thenReturn(nodeType_Vrouter)
+                .thenReturn(nodeType_Vrouter)
+                .thenReturn(nodeType_Vfirewall)
+                .thenReturn(nodeType_Vfirewall)
+                .thenReturn(nodeType_Vloadbalancer)
+                .thenReturn(nodeType_Vloadbalancer);
+
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+
+        physicalNodes.add(physicalNode);
+
+        //test nodeType_Vswitch
+        when(physicalNode.getNodeType())
+                .thenReturn(null)
+                .thenReturn(NodeType_Switch)
+                .thenReturn(null)
+                .thenReturn(NodeType_Router)
+                .thenReturn(null)
+                .thenReturn(NodeType_Firewall)
+                .thenReturn(null)
+                .thenReturn(NodeType_Loadbalancer);
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+        //test nodeType_Vrouter
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNode, physicalNodes) == null);
+    }
+
+    @Test
+    public void testVirtualPortMapping() throws Exception{
+        method = class1.getDeclaredMethod("virtualPortMapping", new Class[]{
+                VirtualNetworkId.class,
+                VirtualNodeId.class,
+                VirtualPort.class,
+                PhysicalNode.class
+        });
+        method.setAccessible(true);
+
+        VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
+        VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
+        VirtualPort virtualPort = mock(VirtualPort.class);
+        PhysicalNode physicalNode = mock(PhysicalNode.class);
+        VirtualPort.PortType portType = VirtualPort.PortType.Internal;
+        PhysicalPort physicalPort = mock(PhysicalPort.class);
+        List<PhysicalPort> physicalPorts = new ArrayList<PhysicalPort>();
+        List<PhysicalResourceRequirement> physicalResourceRequirements = new ArrayList<PhysicalResourceRequirement>();
+
+        physicalPorts.add(physicalPort);
+
+        when(virtualPort.getPortType())
+                .thenReturn(null)
+                .thenReturn(portType);
+
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNodeId, virtualPort, physicalNode) == null);
+
+        //test not null
+        when(physicalNode.getPhysicalPort()).thenReturn(physicalPorts);
+        when(virtualPort.getPhysicalResourceRequirement()).thenReturn(physicalResourceRequirements);
+        when(physicalPort.getPortType())
+                .thenReturn(null)
+                .thenReturn(PhysicalPort.PortType.External);
+
+        Assert.assertTrue(method.invoke(vnMappingUnit, virtualNetworkId, virtualNodeId, virtualPort, physicalNode) == null);
+        Assert.assertTrue(method.invoke(vnMappingUnit,virtualNetworkId,virtualNodeId,virtualPort,physicalNode) == null);
+
+    }
+
+    @Test
+    public void testVirtualLinkMapping() throws Exception{
+        method = class1.getDeclaredMethod("virtualLinkMapping",new Class[]{
+                VirtualNetworkId.class,
+                VirtualLink.class,
+                UserVnPnMapping.class
+        });
+        method.setAccessible(true);
+
+        VirtualNetworkId virtualNetworkId = mock(VirtualNetworkId.class);
+        VirtualLink virtualLink = mock(VirtualLink.class);
+        UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
+        VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);
+        VnPnMappingResult vnPnMappingResult = mock(VnPnMappingResult.class);
+        PhysicalResourceEntityId physicalResourceEntityId = mock(PhysicalResourceEntityId.class);
+        List<VnPnMappingResult> vnPnMappingResults = new ArrayList<VnPnMappingResult>();
+
+        when(userVnPnMapping.getVnPnMappingResult()).thenReturn(vnPnMappingResults);
+        when(virtualLink.getSrcNodeId()).thenReturn(virtualNodeId);
+        when(virtualNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+        //powermock
+        PowerMockito.mockStatic(VNMappingUnitUtils.class);
+        PowerMockito.when(VNMappingUnitUtils.getVnPnMappingResult(vnPnMappingResults, new VirtualResourceEntityId(new String("00001111-0000-0000-0000-000011112222"))))
+                .thenReturn(vnPnMappingResult);
+        when(virtualLink.getDestNodeId()).thenReturn(virtualNodeId);
+        when(vnPnMappingResult.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId);
+        when(physicalResourceEntityId.getValue())
+                .thenReturn(new String("test"))//source
+                .thenReturn(new String("test"))//destination
+                .thenReturn(new String("src"))//source2
+                .thenReturn(new String("dst"))//destination2
+                .thenReturn(new String("src"))//source3
+                .thenReturn(new String("dst"));//destination3
+        when(virtualLink.getBandwidth())
+                .thenReturn(1L)//first trap
+                .thenReturn(0L)//second trap
+                .thenReturn(1L);//third trap
+
+        Assert.assertTrue((PhysicalPath) method.invoke(vnMappingUnit, virtualNetworkId, virtualLink, userVnPnMapping) != null);
+        verify(virtualLink).getBandwidth();
+
+        //test src != dst
+        when(pnComputationUnit.computePath(any(PhysicalNodeId.class), any(PhysicalNodeId.class))).thenReturn(null);
+        when(pnComputationUnit.computePath(any(PhysicalNodeId.class), any(PhysicalNodeId.class), any(long.class))).thenReturn(null);
+
+        Assert.assertTrue((PhysicalPath) method.invoke(vnMappingUnit, virtualNetworkId, virtualLink, userVnPnMapping) == null);
+        Assert.assertTrue((PhysicalPath) method.invoke(vnMappingUnit, virtualNetworkId, virtualLink, userVnPnMapping) == null);
+        verify(virtualLink,times(4)).getBandwidth();
+    }
+
+    @Test
+    public void testCheckPhysicalPortSatisfied() throws Exception{
+        method = class1.getDeclaredMethod("checkPhysicalNodeSatisfied",new Class[]{
+                PhysicalNode.class,
+                List.class,
+        });
+        method.setAccessible(true);
+
+        PhysicalNode physicalNode = mock(PhysicalNode.class);
+        AttributeName attributeName = mock(AttributeName.class);
+        AttributeName attributeName1 = mock(AttributeName.class);
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement
+                physicalResourceRequirement = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement.class);
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute
+                attribute = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute.class);
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>
+                physicalResourceRequirements = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.PhysicalResourceRequirement>();
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute>
+                attributes = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.Attribute>();
+
+        attributes.add(attribute);
+        physicalResourceRequirements.add(physicalResourceRequirement);
+        Assert.assertTrue(attributeName != attributeName1);
+
+        when(physicalNode.getAttribute()).thenReturn(attributes);
+        when(physicalResourceRequirement.getAttributeName()).thenReturn(attributeName);
+        //get into method "getPhysicalNodeAttribute _long" args(attributes,attributeName)
+        when(attribute.getAttributeName())
+                .thenReturn(attributeName1) //return null
+                .thenReturn(attributeName); //return attribute
+        //return to main
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit, physicalNode, physicalResourceRequirements) == false);
+        //get in to method "checkPhysicalNodeAttributeSatisfied" args(attribute,physicalResourceRequirement)
+        // TODO
+    }
+
+    @Test
+    public void testCheckPhysicalPortSatisfied1() throws Exception{
+        method  = class1.getDeclaredMethod("checkPhysicalPortSatisfied",new Class[]{
+                PhysicalPort.class,
+                List.class
+        });
+        method.setAccessible(true);
+
+        PhysicalPort physicalPort = mock(PhysicalPort.class);
+        Attribute attribute = mock(Attribute.class);
+        AttributeName attributeName = mock(AttributeName.class);
+        AttributeName attributeName1 = mock(AttributeName.class);
+        PhysicalResourceRequirement physicalResourceRequirement = mock(PhysicalResourceRequirement.class);
+        List<Attribute> attributes = new ArrayList<Attribute>();
+        List<PhysicalResourceRequirement> physicalResourceRequirements = new ArrayList<PhysicalResourceRequirement>();
+
+        attributes.add(attribute);
+        physicalResourceRequirements.add(physicalResourceRequirement);
+
+        when(physicalPort.getAttribute()).thenReturn(attributes);
+        when(physicalResourceRequirement.getAttributeName()).thenReturn(attributeName);
+        //get into method "getPhysicalNodeAttribute" args(attributes,attributeName)
+        when(attribute.getAttributeName()).thenReturn(attributeName1);
+        //return to main
+        Assert.assertTrue((boolean) method.invoke(vnMappingUnit, physicalPort, physicalResourceRequirements) == false);
+        //get in to method "checkPhysicalNodeAttributeSatisfied" args(attribute,physicalResourceRequirement)
+        // TODO
     }
 }
\ No newline at end of file