From: zhongwei Date: Fri, 18 Dec 2015 07:47:45 +0000 (+0800) Subject: Modified one test file and added two test files X-Git-Tag: release/beryllium~58 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=nemo.git;a=commitdiff_plain;h=19dd65ffac626ee2eab11205b9107384de0ad063 Modified one test file and added two test files Change-Id: If090614076daeaa7b874d72196441f457851d1d9 Signed-off-by: zhongwei --- diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java index d23c9b9..c0082d0 100644 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java +++ b/nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java @@ -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 vnComputationUnits = new HashMap(); + + Class 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 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 result1 = Optional.of(user); + when(Future1.get()).thenReturn(result1); + + try + { + intentResolver.resolveIntent(userId); + } + catch(IntentResolutionException ex) + { + Assert.assertEquals(ex.getMessage(),contains("")); + + } + + //Optional result1 = Optional.of(user); + //Optional result1 = mock(Optional.class); + //when(result1.get()).thenReturn(user); + + //Optional 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 index 0000000..5a842a4 --- /dev/null +++ b/nemo-impl/src/test/java/org/opendaylight/nemo/intent/NodeMapperTest.java @@ -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 nodeList; + + private PhysicalHost physicalHost; + private PhysicalHosts physicalHosts; + private PhysicalHostId physicalHostId; + private List physicalHostList; + + private VirtualNetwork virtualNetwork; + private VirtualNode virtualNode; + private VirtualNodes virtualNodes; + private List virtualNodeList; + private UserIntentVnMapping userIntentVnMapping; + + private Property property; + private PropertyName propertyName; + private PropertyValues propertyValues; + private List propertyList; + private StringValue stringValue; + private List 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(1); + nodeList.add(node); + + physicalHost = mock(PhysicalHost.class); + physicalHosts = mock(PhysicalHosts.class); + physicalHostId = mock(PhysicalHostId.class); + physicalHostList = new ArrayList(1); + physicalHostList.add(physicalHost); + + virtualNetwork = mock(VirtualNetwork.class); + virtualNode = mock(VirtualNode.class); + virtualNodes = mock(VirtualNodes.class); + virtualNodeList = new ArrayList(); + virtualNodeList.add(virtualNode); + + userIntentVnMapping = mock(UserIntentVnMapping.class); + + stringValue = mock(StringValue.class); + stringValueList = new ArrayList(1); + stringValueList.add(stringValue); + + property = mock(Property.class); + propertyList = new ArrayList(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 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 subNodes = new ArrayList(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 index 0000000..86bc44f --- /dev/null +++ b/nemo-impl/src/test/java/org/opendaylight/nemo/intent/OperationResolverTest.java @@ -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 vnComputationUnits; + private ConditionManager conditionManager; + + private List operations; + private List operationsApplyingToNode; + private List operationsApplyingToConnection; + private List operationsApplyingToFlow; + + private Connection connection; + private List 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(); + vnComputationUnits.put(userId,vnComputationUnit); + + + operationResolver=new OperationResolver(dataBroker, conditionManager, + vnComputationUnits); + + operations = new ArrayList(1); + operations.add(operation); + + operationsApplyingToNode = new ArrayList(); + operationsApplyingToConnection = new ArrayList(); + operationsApplyingToFlow = new ArrayList(); + + connection = mock(Connection.class); + node = mock(Node.class); + nodeList = new ArrayList(); + 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 nodes = new ArrayList(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