Modified one test file 62/31862/1
authorsaomenmen <zhangmroy@163.com>
Mon, 21 Dec 2015 06:13:39 +0000 (14:13 +0800)
committersaomenmen <zhangmroy@163.com>
Mon, 21 Dec 2015 06:14:25 +0000 (14:14 +0800)
Change-Id: Iaa9637b2adf80e873766546b3096b985bb14aeda
Signed-off-by: saomenmen <zhangmroy@163.com>
nemo-impl/src/test/java/org/opendaylight/nemo/intent/NodeMapperTest.java

index 5a842a43d89c36309b4756c570eee941d2f19d6c..faf6f41d9a3cc9bda3a6f6450c24649ade31ede9 100644 (file)
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * 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;
-
-import org.opendaylight.nemo.intent.NodeMapper;
-
-//import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
-
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-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.networks.virtual.network.virtual.paths.VirtualPath;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPathBuilder;
-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.node.instance.VirtualPortBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;
-import org.opendaylight.nemo.intent.computation.VNComputationUnit;
-import org.opendaylight.nemo.intent.condition.ConditionManager;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResultBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResourceBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ActionName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;
-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.nodes.VirtualNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;
-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.nodes.VirtualNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostId;
-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.VirtualNodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.UUID;
-import java.util.Map;
-import java.util.HashMap;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.*;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.common.base.Optional;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
-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.attribute.instance.AttributeValue;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.AttributeValueBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalHosts;
-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.arps.VirtualArp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArpBuilder;
-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.networks.virtual.network.VirtualNodes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPath;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPathBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.*;
-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.generic.virtual.network.rev151010.virtual.port.instance.PhysicalResourceRequirementBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResultBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResourceBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-
-
-import java.util.*;
-import java.util.concurrent.ExecutionException;
-
-public class NodeMapperTest
-{
-       private NodeMapper nodeMapper;
-       private DataBroker dataBroker;
-       
-       private User user;
-    private Node node;
-    private NodeId nodeId;
-    private List<Node> nodeList;
-    
-       private PhysicalHost physicalHost;
-       private PhysicalHosts physicalHosts;
-    private PhysicalHostId physicalHostId;
-    private List<PhysicalHost> physicalHostList;
-    
-    private VirtualNetwork virtualNetwork;
-    private VirtualNode virtualNode;
-    private VirtualNodes virtualNodes;
-    private List<VirtualNode> virtualNodeList;
-    private UserIntentVnMapping userIntentVnMapping;
-    
-    private Property property;
-    private PropertyName propertyName;
-    private PropertyValues propertyValues;
-    private List<Property> propertyList;
-    private StringValue stringValue;
-    private List<StringValue> stringValueList;
-    
-       @org.junit.Before
-    public void setUp() throws Exception {
-               
-               dataBroker=mock(DataBroker.class);
-               nodeMapper=new NodeMapper(dataBroker);
-               
-               user = mock(User.class);
-               node = mock(Node.class);
-               nodeId = mock(NodeId.class);
-        nodeList = new ArrayList<Node>(1);
-        nodeList.add(node);
-               
-               physicalHost = mock(PhysicalHost.class);
-               physicalHosts = mock(PhysicalHosts.class);
-        physicalHostId = mock(PhysicalHostId.class);
-        physicalHostList = new ArrayList<PhysicalHost>(1);
-        physicalHostList.add(physicalHost);
-        
-        virtualNetwork = mock(VirtualNetwork.class);
-        virtualNode = mock(VirtualNode.class);
-        virtualNodes = mock(VirtualNodes.class);
-        virtualNodeList = new ArrayList<VirtualNode>();
-        virtualNodeList.add(virtualNode);
-        
-        userIntentVnMapping = mock(UserIntentVnMapping.class);
-        
-        stringValue = mock(StringValue.class);
-        stringValueList = new ArrayList<StringValue>(1);
-        stringValueList.add(stringValue);
-        
-        property = mock(Property.class);
-        propertyList =  new ArrayList<Property>(1);
-        propertyList.add(property);
-        propertyValues = mock(PropertyValues.class);
-
-        propertyName = mock(PropertyName.class);
-        
-       }
-       
-       @org.junit.Test
-       public void resolveNodeTest() throws Exception {
-        
-               //nodeType = new NodeType("host")
-        NodeType nodeType = new NodeType("host");
-        when(node.getNodeType()).thenReturn(nodeType);
-        
-        CheckedFuture resultFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(resultFuture); 
-        
-        Optional<PhysicalHosts> result = Optional.of(physicalHosts);
-        when(resultFuture.get()).thenReturn(result); 
-        
-        when(node.getNodeId()).thenReturn(nodeId);
-        when(node.getNodeId().getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
-        
-        when(physicalHost.getHostId()).thenReturn(physicalHostId);
-
-        try
-       {
-               nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);
-       }
-       catch(IntentResolutionException ex)
-       {
-               Assert.assertEquals(ex.getMessage(),"The physical host corresponding to the node " +
-                    node.getNodeId().getValue() + " does not exist.");
-       }
-        
-        //nodeType = new NodeType("l2-group")
-        NodeType nodeTypeOther = new NodeType("l2-group");
-        when(node.getNodeType()).thenReturn(nodeTypeOther);
-        
-        
-        Objects objects = mock(Objects.class);
-       when(user.getObjects()).thenReturn(objects);
-       
-        when(objects.getNode()).thenReturn(nodeList);
-        
-        List<SubNode> subNodes = new ArrayList<SubNode>(1);
-        SubNode subNode=mock(SubNode.class);
-        subNodes.add(subNode);
-        when(node.getSubNode()).thenReturn(subNodes);
-        
-        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes);
-        when(virtualNodes.getVirtualNode()).thenReturn(virtualNodeList);
-        
-        when(subNode.getNodeId()).thenReturn(nodeId);
-       when(node.getNodeId()).thenReturn(nodeId);
-       
-        try
-       {
-               nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);
-       }
-       catch(IntentResolutionException ex)
-       {
-               Assert.assertEquals(ex.getMessage(),"Can not get the intent-vn mapping result for the node 00001111-0000-0000-0000-000011112222.");
-       }
-        
-        //nodeType = new NodeType("l3-group")
-        NodeType nodeType3 = new NodeType("l3-group");
-        when(node.getNodeType()).thenReturn(nodeType3);
-        NodeMapper nodeMapperother = mock(NodeMapper.class);
-        nodeMapperother.resolveNode(user, node, virtualNetwork, userIntentVnMapping);
-        verify(nodeMapperother,times(0)).resolveLayer3Group(user, node, virtualNetwork, userIntentVnMapping);
-        
-        //nodeType = new NodeType("ext-group")
-        NodeType nodeType4 = new NodeType("ext-group");
-        when(node.getNodeType()).thenReturn(nodeType4);
-        
-        when(node.getProperty()).thenReturn(propertyList);
-        propertyName = new PropertyName("ac-info-network");
-        when(property.getPropertyName()).thenReturn(propertyName);
-        when(property.getPropertyValues()).thenReturn(propertyValues);
-        when(propertyValues.getStringValue()).thenReturn(stringValueList);
-        when(property.getPropertyValues().getStringValue().get(0).getValue()).thenReturn(new String("layer3"));
-        
-        try
-       {
-               nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);
-       }
-       catch(IntentResolutionException ex)
-       {
-               Assert.assertEquals(ex.getMessage(),"Can not get the location property of the node 00001111-0000-0000-0000-000011112222.");
-       }
-        
-        
-        //nodeType = new NodeType("chain-group")
-        NodeType nodeType5 = new NodeType("chain-group");
-        when(node.getNodeType()).thenReturn(nodeType5);
-        
-        try
-       {
-               nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);
-       }
-       catch(IntentResolutionException ex)
-       {
-               Assert.assertEquals(ex.getMessage(),"Can not get the intent-vn mapping result for the node 00001111-0000-0000-0000-000011112222.");
-       }
-        
-        //nodeType = nodeType.equals(new NodeType("fw"))
-        //|| nodeType.equals(new NodeType("lb"))
-        //|| nodeType.equals(new NodeType("cache")) 
-        NodeType nodeType6 = new NodeType("fw");
-        when(node.getNodeType()).thenReturn(nodeType6);
-        
-        try
-       {
-               nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);
-       }
-       catch(IntentResolutionException ex)
-       {
-               Assert.assertEquals(ex.getMessage(),"Can not get the location property of the node 00001111-0000-0000-0000-000011112222.");
-       }
-        
-       }
-       
-       
-       @org.junit.Test
-       public void resolveHostTest() throws Exception {
-               
-               
-       }
-       
-       @org.junit.Test
-       public void resolveLayer2GroupTest() throws Exception {
-               
-               
-       }
-       
-       @org.junit.Test
-       public void resolveLayer3GroupTest() throws Exception {
-               
-               
-       }
-       
-       @org.junit.Test
-       public void resolveExternalLayer2GroupTest() throws Exception {
-               
-               
-       }
-       
-       @org.junit.Test
-       public void resolveExternalLayer3GroupTest() throws Exception {
-               
-               
-       }
-       
-       @org.junit.Test
-       public void resolveServiceChainGroupTest() throws Exception {
-               
-               
-       }
-       
-       @org.junit.Test
-       public void resolveServiceFunctionTest() throws Exception {
-               
-               
-       }
-       
-}
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.intent;\r
+\r
+import junit.framework.TestCase;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+\r
+import static org.junit.Assert.*;\r
+import com.google.common.base.Optional;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import org.junit.runner.RunWith;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalPortId;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.host.instance.IpAddresses;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualNodes;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.AttributeValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.AttributeValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalHosts;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArp;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArpBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLinkBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNodeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPath;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPathBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.PhysicalResourceRequirement;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.PhysicalResourceRequirementBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResultBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResourceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualArps;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualPaths;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPort;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualLinks;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualResourceEntityId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.powermock.api.mockito.PowerMockito;\r
+import org.powermock.api.support.membermodification.MemberMatcher;\r
+import org.powermock.api.support.membermodification.MemberModifier;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+\r
+import java.lang.reflect.Method;\r
+import java.util.*;\r
+import java.util.concurrent.ExecutionException;\r
+\r
+import static org.junit.Assert.assertTrue;\r
+import static org.mockito.Mockito.*;\r
+/**\r
+ * Created by zhangmeng on 2015/12/22.\r
+ */\r
+@RunWith(PowerMockRunner.class)\r
+@PrepareForTest({NodeMapper.class,IntentResolverUtils.class})\r
+public class NodeMapperTest extends TestCase {\r
+    private DataBroker dataBroker ;\r
+    private NodeMapper nodeMapper ;\r
+    @Before\r
+    public void setUp() throws Exception {\r
+        dataBroker = mock(DataBroker.class);\r
+        nodeMapper = new NodeMapper(dataBroker);\r
+    }\r
+\r
+    @Test\r
+    public void testResolveNode() throws Exception {\r
+        User user = mock(User.class);\r
+        Node node = mock(Node.class);\r
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+        UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
+        NodeType nodeType = mock(NodeType.class);\r
+\r
+        when(node.getNodeType())\r
+                .thenReturn(new NodeType("host"));\r
+        //get into method "resolveHost" args(user,node,virtualNetwork,userIntentVnMapping)\r
+        VirtualNodes virtualNodes = mock(VirtualNodes.class);\r
+        VirtualNode virtualNode = mock(VirtualNode.class);\r
+        IpAddress ipAddress = mock(IpAddress.class);\r
+        IpAddresses ipAddresses = mock(IpAddresses.class);\r
+        MacAddress macAddress = mock(MacAddress.class);\r
+        PhysicalPortId physicalPortId = mock(PhysicalPortId.class);\r
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
+        PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
+        PhysicalHost physicalHost = mock(PhysicalHost.class);\r
+        IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
+        PhysicalHosts physicalHosts_resolveHost = mock(PhysicalHosts.class);\r
+        VirtualArps virtualArps = mock(VirtualArps.class);\r
+        NodeId nodeId = mock(NodeId.class);\r
+        Optional<PhysicalHosts> result_resolveHost = Optional.of(physicalHosts_resolveHost);\r
+        CheckedFuture checkedFuture = mock(CheckedFuture.class);\r
+        List<PhysicalHost> physicalHostList_resolveHost = new ArrayList<PhysicalHost>();\r
+        List<VirtualNode> virtualNodeList_resolveHost = new ArrayList<VirtualNode>();\r
+        List<IpAddress> ipAddressList = new ArrayList<IpAddress>();\r
+        List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
+\r
+//        virtualNodeList_resolveHost.add(virtualNode);\r
+        ipAddressList.add(ipAddress);\r
+\r
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);\r
+        when(checkedFuture.get()).thenReturn(result_resolveHost);\r
+        when(physicalHosts_resolveHost.getPhysicalHost()).thenReturn(physicalHostList_resolveHost);\r
+            //powermock\r
+        PowerMockito.mockStatic(IntentResolverUtils.class);\r
+        PowerMockito.when(IntentResolverUtils.getPhysicalHost(physicalHostList_resolveHost, node)).thenReturn(physicalHost);\r
+        Assert.assertTrue(physicalHost != null);\r
+        when(physicalHost.getNodeId()).thenReturn(physicalNodeId);\r
+        when(physicalNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
+        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes);\r
+        when(virtualNodes.getVirtualNode()).thenReturn(virtualNodeList_resolveHost);\r
+        when(virtualNetwork.getVirtualArps()).thenReturn(virtualArps);\r
+        when(virtualArps.getVirtualArp()).thenReturn(new ArrayList<VirtualArp>());\r
+        when(physicalHost.getMacAddress()).thenReturn(macAddress);\r
+        when(physicalHost.getPortId()).thenReturn(physicalPortId);\r
+        when(physicalPortId.getValue()).thenReturn(new String("portid"));\r
+        when(physicalHost.getIpAddresses()).thenReturn(ipAddresses);\r
+        when(ipAddresses.getIpAddress()).thenReturn(ipAddressList);\r
+        when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(nodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
+\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        verify(nodeId).getValue();\r
+    }\r
+\r
+    @Test\r
+    public void testResolveNode1() throws Exception {\r
+        User user = mock(User.class);\r
+        Node node = mock(Node.class);\r
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+        UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
+        NodeType nodeType = mock(NodeType.class);\r
+\r
+        Node node1 = mock(Node.class);\r
+        Node node2 = mock(Node.class);\r
+        SubNode subNode = mock(SubNode.class);\r
+        SubNode subNode1 = mock(SubNode.class);\r
+        NodeId nodeId = mock(NodeId.class);\r
+        NodeId node1_id = mock(NodeId.class);\r
+        NodeId node2_id = mock(NodeId.class);\r
+        NodeId subnodeId = mock(NodeId.class);\r
+        NodeId subnodeId1 = mock(NodeId.class);\r
+        VirtualNode virtualNode = mock(VirtualNode.class);\r
+        VirtualNode virtualNode1 = mock(VirtualNode.class);\r
+        Property property = mock(Property.class);\r
+        VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
+        VirtualResource virtualResource = mock(VirtualResource.class);\r
+        IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
+        VirtualResourceEntityId virtualResourceEntityId = mock(VirtualResourceEntityId.class);\r
+        Property locationProperty = mock(Property.class);\r
+        Property ipPrefixProperty = mock(Property.class);\r
+        PropertyValues propertyValues = mock(PropertyValues.class);\r
+        VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);\r
+        VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);\r
+        VirtualPort virtualPort = mock(VirtualPort.class);\r
+        StringValue stringValue = mock(StringValue.class);\r
+        Objects objects = mock(Objects.class);\r
+        List<SubNode> subNodes = new ArrayList<SubNode>();\r
+        List<Node> nodeList = new ArrayList<Node>();\r
+        List<VirtualResource> virtualResourceList = new ArrayList<VirtualResource>();\r
+        List<Property> propertyList = new ArrayList<Property>();\r
+        List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
+        List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
+        List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+        List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();\r
+        List<VirtualPort> virtualPortList = new ArrayList<VirtualPort>();\r
+\r
+        subNodes.add(subNode);\r
+        subNodes.add(subNode1);\r
+        stringValueList.add(stringValue);\r
+        virtualResourceList.add(virtualResource);\r
+        Assert.assertTrue(subNodes.size() == 2);\r
+        Assert.assertTrue(subNodes.get(0) == subNode && subNodes.get(1) == subNode1);\r
+\r
+        when(node.getNodeType()).thenReturn(new NodeType("l2-group"));\r
+        when(user.getObjects()).thenReturn(objects);\r
+        when(objects.getNode()).thenReturn(nodeList);\r
+        when(node.getSubNode()).thenReturn(subNodes);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(node.getProperty()).thenReturn(propertyList);\r
+        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
+        when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
+        when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
+        //get into for circle subnodes\r
+        when(subNode.getNodeId()).thenReturn(subnodeId);\r
+        when(subNode1.getNodeId()).thenReturn(subnodeId1);\r
+            //power mock\r
+        PowerMockito.mockStatic(IntentResolverUtils.class);\r
+        PowerMockito.when(IntentResolverUtils.getNode(nodeList, subNode.getNodeId())).thenReturn(node1);\r
+        PowerMockito.when(IntentResolverUtils.getNode(nodeList, subNode1.getNodeId())).thenReturn(node2);\r
+        when(node1.getNodeType()).thenReturn(new NodeType("test1"));\r
+        when(node2.getNodeType()).thenReturn(new NodeType("test2"));\r
+        when(node1.getNodeId()).thenReturn(node1_id);\r
+        when(node2.getNodeId()).thenReturn(node2_id);\r
+        when(node1_id.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
+        when(node2_id.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
+        PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResultList,\r
+                new IntentId(node1.getNodeId().getValue())))\r
+                .thenReturn(intentVnMappingResult);\r
+        PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResultList,\r
+                new IntentId(node2.getNodeId().getValue()))).\r
+                thenReturn(intentVnMappingResult);\r
+        when(intentVnMappingResult.getVirtualResource()).thenReturn(virtualResourceList);\r
+        when(virtualResource.getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
+        when(virtualResourceEntityId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
+        PowerMockito.when(IntentResolverUtils.getVirtualNode(virtualNodes,\r
+                new VirtualNodeId(intentVnMappingResult.getVirtualResource().get(0).getParentVirtualResourceEntityId().getValue())))\r
+                .thenReturn(virtualNode)\r
+                .thenReturn(virtualNode1);\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
+                .thenReturn(locationProperty);\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("ip-prefix")))\r
+                .thenReturn(locationProperty);//use locationProperty instead of ipPrefixProperty\r
+        when(locationProperty.getPropertyValues()).thenReturn(propertyValues);\r
+        when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
+        when(stringValue.getValue())\r
+                .thenReturn(new String("1"))\r
+                .thenReturn(new String("192.168.1.1/24"));\r
+\r
+        when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);\r
+        when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);\r
+        when(virtualNode.getVirtualPort()).thenReturn(virtualPortList);\r
+        when(virtualNode.getNodeId()).thenReturn(virtualNodeId);\r
+        when(virtualNode1.getNodeId()).thenReturn(virtualNodeId);\r
+        when(virtualNode1.getVirtualPort()).thenReturn(virtualPortList);\r
+        when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
+\r
+\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        verify(stringValue,times(2)).getValue();\r
+\r
+    }\r
+    @Test\r
+    public void testResolveNode2() throws Exception {\r
+        User user = mock(User.class);\r
+        Node node = mock(Node.class);\r
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+        UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
+\r
+        when(node.getNodeType()).thenReturn(new NodeType("l3-group"));\r
+\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+    }\r
+\r
+    @Test\r
+    public void testResolveNode3() throws Exception {\r
+        User user = mock(User.class);\r
+        Node node = mock(Node.class);\r
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+        UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
+\r
+        NodeId nodeId = mock(NodeId.class);\r
+        Property property = mock(Property.class);\r
+        Property property1 = mock(Property.class);\r
+        StringValue stringValue = mock(StringValue.class);\r
+        PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
+        VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
+        PropertyValues propertyValues = mock(PropertyValues.class);\r
+        List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
+        List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+        List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
+\r
+        stringValueList.add(stringValue);\r
+\r
+        PowerMockito.mockStatic(IntentResolverUtils.class);\r
+        PowerMockito.when(IntentResolverUtils.checkExternalLayer3Group(node))\r
+                .thenReturn(false)\r
+                .thenReturn(true);\r
+        when(node.getNodeType()).thenReturn(new NodeType("ext-group"));\r
+        //test false\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        //true\r
+        when(node.getProperty()).thenReturn(new ArrayList<Property>());\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
+                .thenReturn(property);\r
+        PowerMockito.when(IntentResolverUtils.generatePhysicalNodeIdFromNodeLocationProperty(property))\r
+                .thenReturn(physicalNodeId);\r
+        when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
+        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
+        when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("ip-prefix")))\r
+                .thenReturn(property1);\r
+        when(property1.getPropertyValues()).thenReturn(propertyValues);\r
+        when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
+        when(stringValue.getValue())\r
+                .thenReturn("192.168.1.1/24")\r
+                .thenReturn("Test");\r
+        when(property.getPropertyValues()).thenReturn(propertyValues);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
+        when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        verify(stringValue,times(2)).getValue();\r
+    }\r
+    @Test\r
+    public void testResolveNode4() throws Exception {\r
+        User user = mock(User.class);\r
+        Node node = mock(Node.class);\r
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+        UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
+\r
+        SubNode subNode = mock(SubNode.class);\r
+        SubNode subNode1 = mock(SubNode.class);\r
+        NodeId nodeId = mock(NodeId.class);\r
+        Objects objects = mock(Objects.class);\r
+        IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
+        IntentVnMappingResult intentVnMappingResult_elseif = mock(IntentVnMappingResult.class);\r
+        VirtualResource virtualResource = mock(VirtualResource.class);\r
+        VirtualLink virtualLink = mock(VirtualLink.class);\r
+        VirtualNode virtualNode = mock(VirtualNode.class);\r
+        VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
+        VirtualPaths virtualPaths_temp = mock(VirtualPaths.class);\r
+        VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);\r
+        VirtualResourceEntityId virtualResourceEntityId = mock(VirtualResourceEntityId.class);\r
+        List<Node> nodes = new ArrayList<Node>();\r
+        List<SubNode> subNodes = new ArrayList<SubNode>();\r
+        List<IntentVnMappingResult> intentVnMappingResults = new ArrayList<IntentVnMappingResult>();\r
+        List<VirtualResource> virtualResourceList = new ArrayList<VirtualResource>();\r
+        List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
+        List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();\r
+        List<VirtualPath> virtualPaths = new ArrayList<VirtualPath>();\r
+        List<VirtualPort> virtualPortList = new ArrayList<VirtualPort>();\r
+\r
+        virtualResourceList.add(virtualResource);\r
+\r
+        when(node.getNodeType()).thenReturn(new NodeType("chain-group"));\r
+        when(node.getSubNode()).thenReturn(subNodes);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+\r
+        //test null\r
+        Assert.assertTrue(subNodes.isEmpty());\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+\r
+        //test not null\r
+        subNodes.add(subNode);\r
+\r
+        when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
+        //test size=1\r
+        when(subNode.getNodeId()).thenReturn(nodeId);\r
+        when(subNode1.getNodeId()).thenReturn(nodeId);\r
+        when(nodeId.getValue()).thenReturn("00001111-0000-0000-0000-000011112222");\r
+        PowerMockito.mockStatic(IntentResolverUtils.class);\r
+        PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResults, new IntentId(subNode.getNodeId().getValue())))\r
+                .thenReturn(intentVnMappingResult);\r
+        when(intentVnMappingResult.getVirtualResource()).thenReturn(virtualResourceList);\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        verify(node).getNodeId();\r
+        //test size > 1\r
+        subNodes.add(subNode1);\r
+        PowerMockito.when(IntentResolverUtils.sortSubNodes(subNodes)).thenReturn(subNodes);\r
+        when(user.getObjects()).thenReturn(objects);\r
+        when(objects.getNode()).thenReturn(nodes);\r
+//        Iterator<SubNode> iterator = subNodes.iterator();\r
+//        Assert.assertTrue(subNode == iterator.next());\r
+//        Assert.assertTrue(subNode1 == iterator.next());\r
+//        PowerMockito.doNothing().when(IntentResolverUtils.class):IntentResolverUtils.checkAllLayer2OperatingMode(subNodes, nodes);\r
+        PowerMockito.when(IntentResolverUtils.checkAllLayer2OperatingMode(subNodes, nodes))\r
+                .thenReturn(true)\r
+                .thenReturn(false);\r
+        PowerMockito.when(IntentResolverUtils.checkAllLayer3OperatingMode(subNodes, nodes))\r
+                .thenReturn(false)\r
+                .thenReturn(true);\r
+\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        verify(node, times(3)).getNodeId();\r
+        //test else if\r
+        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
+        when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
+        when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);\r
+        when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);\r
+        when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPaths_temp);\r
+        when(virtualPaths_temp.getVirtualPath()).thenReturn(virtualPaths);\r
+        PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResults, new IntentId(subNode1.getNodeId().getValue())))\r
+                .thenReturn(intentVnMappingResult);\r
+        when(virtualResource.getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
+        when(virtualResourceEntityId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
+        PowerMockito.when(IntentResolverUtils.getVirtualLink(any(List.class), any(VirtualNodeId.class), any(VirtualNodeId.class)))\r
+                .thenReturn(null);\r
+        PowerMockito.when(IntentResolverUtils.getVirtualNode(any(List.class), any(VirtualNodeId.class)))\r
+                .thenReturn(virtualNode);\r
+        when(virtualNode.getVirtualPort()).thenReturn(virtualPortList);\r
+\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+\r
+    }\r
+\r
+    @Test\r
+    public void testResolveNode5() throws Exception {\r
+        User user = mock(User.class);\r
+        Node node = mock(Node.class);\r
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+        UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
+\r
+        NodeId nodeId = mock(NodeId.class);\r
+        Property locationProperty = mock(Property.class);\r
+        Property operatingModeProperty = mock(Property.class);\r
+        StringValue stringValue = mock(StringValue.class);\r
+        PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
+        PropertyValues propertyValues = mock(PropertyValues.class);\r
+        VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
+        List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+        List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
+        List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
+\r
+        stringValueList.add(stringValue);\r
+\r
+        when(node.getNodeType())\r
+                .thenReturn(new NodeType("fw"))\r
+                .thenReturn(new NodeType("lb"))\r
+                .thenReturn(new NodeType("cache"));\r
+\r
+        when(node.getProperty()).thenReturn(new ArrayList<Property>());\r
+        PowerMockito.mockStatic(IntentResolverUtils.class);\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
+                .thenReturn(locationProperty);\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("operating-mode")))\r
+                .thenReturn(operatingModeProperty);\r
+        PowerMockito.when(IntentResolverUtils.generatePhysicalNodeIdFromNodeLocationProperty(locationProperty))\r
+                .thenReturn(physicalNodeId);\r
+        when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
+        when(operatingModeProperty.getPropertyValues()).thenReturn(propertyValues);\r
+        when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
+        when(stringValue.getValue())\r
+                .thenReturn(new String("layer3"))\r
+                .thenReturn(new String("layer2"));\r
+        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
+        when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
+        when(locationProperty.getPropertyValues()).thenReturn(propertyValues);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
+        when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
+\r
+        nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
+        verify(node).getNodeId();\r
+    }\r
+    @Test\r
+    public void testResolveExternalLayer2Group() throws Exception {\r
+        Class<NodeMapper> class1 = NodeMapper.class;\r
+        Method method = class1.getDeclaredMethod("resolveExternalLayer2Group", new Class[]{\r
+                User.class,\r
+                Node.class,\r
+                VirtualNetwork.class,\r
+                UserIntentVnMapping.class,\r
+                boolean.class\r
+        });\r
+        method.setAccessible(true);\r
+\r
+        boolean generatingVirtualRouter = true;\r
+        User user = mock(User.class);\r
+        Node node = mock(Node.class);\r
+        Property property = mock(Property.class);\r
+        Property property1 = mock(Property.class);\r
+        NodeId nodeId = mock(NodeId.class);\r
+        VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+        UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
+        PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
+        VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
+        PropertyValues propertyValues = mock(PropertyValues.class);\r
+        StringValue stringValue = mock(StringValue.class);\r
+\r
+        List<Property> propertyList = new ArrayList<Property>();\r
+        List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
+        List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+        List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
+\r
+        stringValueList.add(stringValue);\r
+\r
+        when(node.getProperty()).thenReturn(propertyList);\r
+        PowerMockito.mockStatic(IntentResolverUtils.class);\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
+                .thenReturn(property);\r
+        PowerMockito.when(IntentResolverUtils.generatePhysicalNodeIdFromNodeLocationProperty(property))\r
+                .thenReturn(physicalNodeId);\r
+        when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
+        when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
+        when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
+        PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("ip-prefix")))\r
+                .thenReturn(property1);\r
+        when(property1.getPropertyValues()).thenReturn(propertyValues);\r
+        when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
+        when(stringValue.getValue())\r
+                .thenReturn(new String("192.168.1.1/24"))\r
+                .thenReturn(new String("test"));\r
+        when(property.getPropertyValues()).thenReturn(propertyValues);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
+        when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
+\r
+        method.invoke(nodeMapper, user, node, virtualNetwork, userIntentVnMapping, generatingVirtualRouter);\r
+        verify(node).getNodeId();\r
+\r
+    }\r
+}
\ No newline at end of file