Modified one test file and added two test files 89/31689/1
authorzhongwei <zhongwei_xdu@outlook.com>
Fri, 18 Dec 2015 07:47:45 +0000 (15:47 +0800)
committerzhongwei <zhongwei_xdu@outlook.com>
Fri, 18 Dec 2015 07:48:55 +0000 (15:48 +0800)
Change-Id: If090614076daeaa7b874d72196441f457851d1d9
Signed-off-by: zhongwei <zhongwei_xdu@outlook.com>
nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java
nemo-impl/src/test/java/org/opendaylight/nemo/intent/NodeMapperTest.java [new file with mode: 0644]
nemo-impl/src/test/java/org/opendaylight/nemo/intent/OperationResolverTest.java [new file with mode: 0644]

index d23c9b9f619c66403f39463a3f1ff0468831fd37..c0082d0fffdd96a6a3a958eecd718dd0f351d2f4 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * 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 junit.framework.TestCase;
@@ -59,12 +66,15 @@ import org.slf4j.LoggerFactory;
 import com.google.common.util.concurrent.CheckedFuture;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
+import java.util.Map;
+import java.util.HashMap;
+import java.lang.reflect.Field;  
+import java.lang.reflect.Method; 
+
 
 import static org.junit.Assert.assertFalse;
 import static org.mockito.Mockito.*;
-/**
- * Created by zhangmeng on 2015/11/25.
- */
+
 public class IntentResolverTest extends TestCase {
     private IntentResolver intentResolver;
     private DataBroker dataBroker;
@@ -97,12 +107,61 @@ public class IntentResolverTest extends TestCase {
 
     @Test
     public void testResolveIntent() throws Exception {
-//        UserId userId = mock(UserId.class);
-//
-//        when(userId.getValue()).thenReturn(new String());
-//        intentResolver.resolveIntent(userId);
+        UserId userId = mock(UserId.class);
+        VNComputationUnit vnComputationUnit = mock(VNComputationUnit.class);
+        
+        Map<UserId, VNComputationUnit> vnComputationUnits = new HashMap<UserId, VNComputationUnit>();
+        
+        Class<IntentResolver> class1 = IntentResolver.class;
+        Field field = class1.getDeclaredField("vnComputationUnits");
+        field.setAccessible(true);
+        
+        //vnComputationUnits.put(userId, vnComputationUnit);
+        field.set(intentResolver,vnComputationUnits);
+        
+        when(userId.getValue()).thenReturn(new String("00000000-0000-0000-0000-000000000000"));
+        
+        /*
+        CheckedFuture Future = mock(CheckedFuture.class);
+        ReadWriteTransaction readWriteTransaction = mock(ReadWriteTransaction.class);
+        when(dataBroker.newReadWriteTransaction()).thenReturn(readWriteTransaction);
+        when(readWriteTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(Future); 
+        
+        UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
+        Optional<UserVnPnMapping> result = Optional.of(userVnPnMapping);
+        when(Future.get()).thenReturn(result);
+        */
+        
+        
+        CheckedFuture Future1 = mock(CheckedFuture.class);
+        ReadWriteTransaction readWriteTransaction1 = mock(ReadWriteTransaction.class);
+        when(dataBroker.newReadWriteTransaction()).thenReturn(readWriteTransaction1);
+        when(readWriteTransaction1.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(Future1); 
+        
+        User user = mock(User.class);
+        Optional<User> result1 = Optional.of(user);
+        when(Future1.get()).thenReturn(result1);
+        
+        try
+       {
+               intentResolver.resolveIntent(userId);
+       }
+       catch(IntentResolutionException ex)
+       {
+               Assert.assertEquals(ex.getMessage(),contains(""));
+               
+       }
+        
+        //Optional<User> result1 = Optional.of(user);
+        //Optional<User> result1 = mock(Optional.class);
+        //when(result1.get()).thenReturn(user);
+        
+        //Optional<UserVnPnMapping> result = new 
+        //when(result.isPresent()).thenReturn(true);
+        //intentResolver.resolveIntent(userId);
     }
-
+    
+    
     @Test
     public void testClose() throws Exception {
         intentResolver.close();
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/intent/NodeMapperTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/intent/NodeMapperTest.java
new file mode 100644 (file)
index 0000000..5a842a4
--- /dev/null
@@ -0,0 +1,372 @@
+/*
+ * 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 {
+               
+               
+       }
+       
+}
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/intent/OperationResolverTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/intent/OperationResolverTest.java
new file mode 100644 (file)
index 0000000..86bc44f
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * 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.OperationResolver;
+
+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.action.instance.parameter.values.StringValue;
+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;
+
+
+public class OperationResolverTest {
+
+    private DataBroker dataBroker;
+    private OperationResolver operationResolver;
+    
+    private User user;
+    private UserId userId;
+    private Operation operation;
+    private OperationId operationId;
+    private VirtualNetwork virtualNetwork;
+    private UserIntentVnMapping userIntentVnMapping;
+    private DataObject dataObject;
+    
+    private VNComputationUnit vnComputationUnit;
+    private Map<UserId, VNComputationUnit> vnComputationUnits;
+    private ConditionManager conditionManager;
+    
+    private List<Operation> operations;
+    private List<Operation> operationsApplyingToNode;
+    private List<Operation> operationsApplyingToConnection;
+    private List<Operation> operationsApplyingToFlow;
+
+    private Connection connection;
+       private List<Node> nodeList;
+       private Node node;
+       
+    @org.junit.Before
+    public void setUp() throws Exception {
+       
+       dataBroker=mock(DataBroker.class);
+       user=mock(User.class);
+       operation=mock(Operation.class);
+       operationId=mock(OperationId.class);
+       virtualNetwork=mock(VirtualNetwork.class);
+       userIntentVnMapping=mock(UserIntentVnMapping.class);
+       conditionManager=mock(ConditionManager.class);
+       
+       userId=mock(UserId.class);
+       vnComputationUnit=mock(VNComputationUnit.class);
+       vnComputationUnits=new HashMap<UserId, VNComputationUnit>();
+       vnComputationUnits.put(userId,vnComputationUnit);
+       
+       
+       operationResolver=new OperationResolver(dataBroker, conditionManager,
+                vnComputationUnits);
+       
+       operations = new ArrayList<Operation>(1);
+       operations.add(operation);
+       
+       operationsApplyingToNode = new ArrayList<Operation>();
+       operationsApplyingToConnection = new ArrayList<Operation>();
+       operationsApplyingToFlow = new ArrayList<Operation>();
+       
+       connection = mock(Connection.class);
+       node = mock(Node.class);
+       nodeList = new ArrayList<Node>();
+       nodeList.add(node);
+       
+    }
+    
+    @org.junit.Test
+    public void resolveOperationTest() throws Exception {
+       
+       ObjectId objectId = mock(ObjectId.class);
+       when(operation.getTargetObject()).thenReturn(objectId);
+       
+       Objects objects = mock(Objects.class);
+       when(user.getObjects()).thenReturn(objects);
+       
+       List<Node> nodes = new ArrayList<Node>(1);
+       Node node = mock(Node.class);
+       nodes.add(node);
+       
+       when(objects.getNode()).thenReturn(nodes);
+       when(objectId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+       
+       NodeId nodeId = mock(NodeId.class);
+       
+       when(node.getNodeId()).thenReturn(nodeId);
+       when(operation.getOperationId()).thenReturn(operationId);
+       when(operationId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+       //when(IntentResolverUtils.getNode(nodes, nodeId)).thenReturn(node);
+
+       //when(IntentResolverUtils.getObject(any(Objects.class), any(ObjectId.class))).thenReturn(dataObject);
+       try
+       {
+               operationResolver.resolveOperation(user, operation, virtualNetwork, userIntentVnMapping);
+       }
+       catch(IntentResolutionException ex)
+       {
+               Assert.assertEquals(ex.getMessage(),"The target object of the operation " +
+                    operation.getOperationId().getValue() + " does not exist.");
+               
+       }
+       
+       
+       
+    
+    }
+    
+    @org.junit.Test
+    public void classifyOperationsTest() throws Exception {
+        
+       ObjectId objectId = mock(ObjectId.class);
+       when(operation.getTargetObject()).thenReturn(objectId);
+       
+       Objects objects = mock(Objects.class);
+       when(user.getObjects()).thenReturn(objects);
+       
+       
+       
+       when(objects.getNode()).thenReturn(nodeList);
+        when(objectId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
+        NodeId nodeId2 = new NodeId(objectId.getValue());
+        //into getnode
+        when(node.getNodeId()).thenReturn(nodeId2);
+       
+       
+       try
+       {
+               operationResolver.classifyOperations(user, operations, operationsApplyingToNode, operationsApplyingToConnection, operationsApplyingToFlow);
+       }
+       catch(IntentResolutionException ex)
+       {
+               Assert.assertEquals(ex.getMessage(),"The target object of the operation " +
+                        operation.getOperationId().getValue() + " does not exist.");
+               
+       }
+       
+       
+    }
+}
+    
+    
+    
+    
+    
\ No newline at end of file