-/*
- * 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.computation;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-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.virtual.network.virtual.paths.VirtualPath;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;
-/**
- * Created by zhangmeng on 2015/11/9.
- */
-public class VNComputationUnitTest extends TestCase {
-
- private VNComputationUnit vnComputationUnit;
- private DataBroker dataBroker;
- private UserId userId;
- private VirtualNodeId source,target;
- private VirtualNodeId source1,target1;
- private long bandwidth;
- @Before
- public void setUp() throws Exception {
-
- source = mock(VirtualNodeId.class);
- target = mock(VirtualNodeId.class);
- source1 = mock(VirtualNodeId.class);
- target1 = mock(VirtualNodeId.class);
- vnComputationUnit = mock(VNComputationUnit.class);
- }
-
- @Test
- public void testComputePath() throws Exception {
- vnComputationUnit.computePath(source, target);
- verify(vnComputationUnit).computePath(source, target);
- Assert.assertNotEquals(mock(VirtualPath.class), vnComputationUnit.computePath(source, target));
- Assert.assertNotNull(vnComputationUnit);
- }
-
- @Test
- public void testComputePath1() throws Exception {
- vnComputationUnit.computePath(source1, target1, bandwidth);
- verify(vnComputationUnit).computePath(source1, target1, bandwidth);
- Assert.assertNotEquals(mock(VirtualPath.class), vnComputationUnit.computePath(source1, target1, bandwidth));
- Assert.assertNotNull(vnComputationUnit);
- }
-
- @Test
- public void testClose() throws Exception {
- vnComputationUnit.close();
- Assert.assertNotNull(vnComputationUnit);
- verify(vnComputationUnit).close();
- }
+/*\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.computation;\r
+\r
+import junit.framework.TestCase;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import com.google.common.base.Optional;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;\r
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;\r
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.nemo.intent.algorithm.Edge;\r
+import org.opendaylight.nemo.intent.algorithm.RoutingAlgorithm;\r
+import org.opendaylight.nemo.intent.algorithm.Vertex;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.VirtualNetworks;\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.VirtualNetworkKey;\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.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualNodes;\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.networks.virtual.network.VirtualRoutes;\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.nodes.VirtualNode;\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.networks.virtual.network.virtual.paths.VirtualPathKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.routes.VirtualRoute;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.routes.VirtualRouteBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.routes.VirtualRouteKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.path.instance.VirtualLinkBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualLinkId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNetworkId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualPathId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.VirtualNodeInstance.NodeType;\r
+import org.opendaylight.yangtools.concepts.ListenerRegistration;\r
+import org.opendaylight.yangtools.yang.binding.DataObject;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import java.lang.reflect.Method;\r
+import java.util.*;\r
+import java.util.concurrent.ExecutionException;\r
+import static org.junit.Assert.*;\r
+import static org.mockito.Mockito.*;\r
+/**\r
+ * Created by zhangmeng on 2015/12/3.\r
+ */\r
+public class VNComputationUnitTest extends TestCase {\r
+ private VNComputationUnit vnComputationUnit;\r
+ private DataBroker dataBroker;\r
+ private VirtualNetwork virtualNetwork;\r
+ private VirtualNode virtualNode;\r
+ private VirtualNode virtualNode1;\r
+ private VirtualNode virtualNode2;\r
+ private VirtualNodeId nodeId;\r
+ private VirtualNodeId nodeId1;\r
+ private VirtualNodeId nodeId2;\r
+\r
+ @Before\r
+ public void setUp() throws Exception {\r
+ dataBroker = mock(DataBroker.class);\r
+ virtualNetwork = mock(VirtualNetwork.class);\r
+ UserId userId = mock(UserId.class);\r
+ virtualNode = mock(VirtualNode.class);\r
+ virtualNode1 = mock(VirtualNode.class);\r
+ virtualNode2 = mock(VirtualNode.class);\r
+ VirtualNodes virtualNodes = mock(VirtualNodes.class);\r
+ nodeId = mock(VirtualNodeId.class);\r
+ nodeId1 = mock(VirtualNodeId.class);\r
+ nodeId2= mock(VirtualNodeId.class);\r
+ NodeType nodeType = VirtualNode.NodeType.Vrouter;\r
+ VirtualLink virtualLink = mock(VirtualLink.class);\r
+ VirtualLinks virtualLinks = mock(VirtualLinks.class);\r
+ VirtualLinkId linkId = mock(VirtualLinkId.class);\r
+ VirtualNodeId srcVirtualNodeId = mock(VirtualNodeId.class);\r
+ VirtualNodeId destVirtualNodeId = mock(VirtualNodeId.class);\r
+ List<VirtualNode> virtualNodes_list = new ArrayList<VirtualNode>();\r
+ List<VirtualLink> virtualLinks_list = new ArrayList<VirtualLink>();\r
+\r
+ virtualNodes_list.add(virtualNode);\r
+ virtualNodes_list.add(virtualNode1);\r
+ virtualNodes_list.add(virtualNode2);\r
+ virtualLinks_list.add(virtualLink);\r
+\r
+ when(virtualNetwork.getUserId()).thenReturn(userId);\r
+ when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes);\r
+ when(virtualNodes.getVirtualNode()).thenReturn(virtualNodes_list);\r
+ when(virtualNode.getNodeId()).thenReturn(nodeId);\r
+ when(virtualNode1.getNodeId()).thenReturn(nodeId1);\r
+ when(virtualNode2.getNodeId()).thenReturn(nodeId2);\r
+ when(nodeId.getValue()).thenReturn(new String("src"));\r
+ when(nodeId1.getValue()).thenReturn(new String("dst"));\r
+ when(nodeId2.getValue()).thenReturn(new String("null"));\r
+\r
+ when(virtualNode.getNodeType())\r
+ .thenReturn(null)\r
+ .thenReturn(nodeType);\r
+ when(virtualNode1.getNodeType())\r
+ .thenReturn(null)\r
+ .thenReturn(nodeType);\r
+ when(virtualNode2.getNodeType())\r
+ .thenReturn(null)\r
+ .thenReturn(nodeType);\r
+ when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks);\r
+ when(virtualLinks.getVirtualLink()).thenReturn(virtualLinks_list);\r
+\r
+ when(virtualLink.getLinkId()).thenReturn(linkId);\r
+ when(linkId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
+\r
+ when(virtualLink.getSrcNodeId()).thenReturn(srcVirtualNodeId);\r
+ when(srcVirtualNodeId.getValue()).thenReturn(new String("src"));\r
+\r
+ when(virtualLink.getDestNodeId()).thenReturn(destVirtualNodeId);\r
+ when(destVirtualNodeId.getValue()).thenReturn(new String("dst"));\r
+\r
+ when(virtualLink.getMetric()).thenReturn((long)1);\r
+\r
+ when(virtualLink.getBandwidth()).thenReturn((long)1);\r
+\r
+ vnComputationUnit = new VNComputationUnit(dataBroker,virtualNetwork);\r
+ vnComputationUnit = new VNComputationUnit(dataBroker,virtualNetwork);\r
+\r
+ verify(virtualNetwork,times(2)).getUserId();\r
+ verify(virtualNetwork,times(2)).getVirtualNodes();\r
+ verify(virtualNodes,times(2)).getVirtualNode();\r
+ verify(virtualNode,times(3)).getNodeId();\r
+ verify(virtualNode1, times(3)).getNodeId();\r
+ verify(virtualNode2, times(3)).getNodeId();\r
+ verify(nodeId, times(2)).getValue();\r
+ verify(nodeId1, times(2)).getValue();\r
+ verify(nodeId2, times(2)).getValue();\r
+ verify(virtualNode, times(2)).getNodeType();\r
+ verify(virtualNode1, times(2)).getNodeType();\r
+ verify(virtualNetwork,times(2)).getVirtualLinks();\r
+ verify(virtualLinks,times(2)).getVirtualLink();\r
+ verify(virtualLink,times(2)).getBandwidth();\r
+\r
+ }\r
+\r
+ @Test\r
+ public void testComputePath() throws Exception {\r
+ VirtualNodeId source = mock(VirtualNodeId.class);\r
+ VirtualNodeId target = mock(VirtualNodeId.class);\r
+ VirtualPath result;\r
+\r
+ when(source.getValue()).thenReturn(new String("src"));\r
+ when(target.getValue())\r
+ .thenReturn(new String("null"))\r
+ .thenReturn(new String("dst"));\r
+\r
+ result = vnComputationUnit.computePath(source,target);\r
+ Assert.assertTrue(result == null);\r
+\r
+ result = vnComputationUnit.computePath(source,target);\r
+ Assert.assertTrue(result != null);\r
+\r
+ verify(source, times(2)).getValue();\r
+ verify(target,times(2)).getValue();\r
+\r
+ }\r
+\r
+ @Test\r
+ public void testComputePath1() throws Exception {\r
+ VirtualNodeId source = mock(VirtualNodeId.class);\r
+ VirtualNodeId target = mock(VirtualNodeId.class);\r
+ VirtualPath result;\r
+\r
+ when(source.getValue()).thenReturn(new String("src"));\r
+ when(target.getValue())\r
+ .thenReturn(new String("null"))\r
+ .thenReturn(new String("dst"));\r
+\r
+ result = vnComputationUnit.computePath(source,target,1);\r
+ Assert.assertTrue(result == null);\r
+\r
+ result = vnComputationUnit.computePath(source,target,1);\r
+ Assert.assertTrue(result != null);\r
+\r
+ verify(source,times(2)).getValue();\r
+ verify(target,times(2)).getValue();\r
+\r
+ }\r
+\r
+ @Test\r
+ public void testClose() throws Exception {\r
+ vnComputationUnit.close();\r
+ Assert.assertTrue(vnComputationUnit != null);\r
+ }\r
+\r
+ @Test\r
+ public void testPrivateComputeRoute_withArgs() throws Exception{\r
+ VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
+ VirtualRoutes virtualRoutes = mock(VirtualRoutes.class);\r
+ VirtualRoute virtualRoute = mock(VirtualRoute.class);\r
+ VirtualPaths virtualPaths = mock(VirtualPaths.class);\r
+ VirtualPath virtualPath = mock(VirtualPath.class);\r
+ List<VirtualPath> virtualPathList = new ArrayList<VirtualPath>();\r
+ List<VirtualRoute> virtualRouteList = new ArrayList<VirtualRoute>();\r
+\r
+\r
+ Class<VNComputationUnit> class1 = VNComputationUnit.class;\r
+ Method method = class1.getDeclaredMethod("computeRoute",new Class[]{VirtualNetwork.class});\r
+ method.setAccessible(true);\r
+\r
+ when(virtualNetwork.getVirtualRoutes()).thenReturn(virtualRoutes);\r
+ when(virtualRoutes.getVirtualRoute()).thenReturn(virtualRouteList);\r
+ when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPaths);\r
+ when(virtualPaths.getVirtualPath()).thenReturn(virtualPathList);\r
+\r
+ method.invoke(vnComputationUnit, virtualNetwork);\r
+\r
+ Assert.assertTrue(nodeId.equals(nodeId));\r
+ verify(virtualNetwork).getVirtualRoutes();\r
+ verify(virtualNetwork).getVirtualPaths();\r
+ verify(virtualPaths).getVirtualPath();\r
+ verify(virtualRoutes).getVirtualRoute();\r
+ }\r
+\r
+ @Test\r
+ public void testPrivateComputeRoute_withoutArgs() throws Exception{\r
+ ReadWriteTransaction readWriteTransaction = mock(ReadWriteTransaction.class);\r
+\r
+ Class<VNComputationUnit> class1 = VNComputationUnit.class;\r
+ Method method = class1.getDeclaredMethod("computeRoute");\r
+ method.setAccessible(true);\r
+\r
+ when(dataBroker.newReadWriteTransaction()).thenReturn(readWriteTransaction);\r
+\r
+\r
+ //method.invoke(vnComputationUnit);\r
+ }\r
}
\ No newline at end of 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.renderer.openflow.physicalnetwork;
-
-import junit.framework.TestCase;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.HashBasedTable;
-import com.google.common.collect.Table;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.renderer.openflow.physicalnetwork.PhyConfigLoader;
-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.Ipv4Address;
-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.PhysicalNodeInstance;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalPortInstance;
-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.host.instance.IpAddressesBuilder;
-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.physical.network.rev151010.physical.network.physical.hosts.PhysicalHostBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHostKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLink;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLinkBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNodeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.PhysicalPort;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.PhysicalPortBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.Attribute;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.AttributeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.AttributeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.crypto.Data;
-import java.io.IOException;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import static org.mockito.Mockito.*;
-/**
- * Created by zhangmeng on 2015/11/30.
- */
-public class PhyConfigLoaderTest extends TestCase {
- private PhyConfigLoader phyConfigLoader;
- private DataBroker dataBroker;
- @Before
- public void setUp() throws Exception {
- dataBroker = mock(DataBroker.class);
- phyConfigLoader = new PhyConfigLoader(dataBroker);
- }
-
- @Test
- public void testGetExternalNetworkMac() throws Exception {
- Table<PhysicalNodeId, PhysicalPortId, MacAddress> table;
- table = phyConfigLoader.getExternalNetworkMac();
- Assert.assertTrue(table != null);
- }
-
- @Test
- public void testGetPhysicalNode() throws Exception {
- PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);
- PhysicalNode physicalNode ;
-
- Class<PhyConfigLoader> class1 = PhyConfigLoader.class;
- Method method = class1.getDeclaredMethod("getPhysicalNode",new Class[]{PhysicalNodeId.class});
- method.setAccessible(true);
-
- physicalNode = (PhysicalNode) method.invoke(phyConfigLoader,physicalNodeId);
-
- Assert.assertTrue( physicalNode == null);
- }
-
- @Test
- public void testGetPhysicalPort() throws Exception {
- PhysicalPortId physicalPortId = mock(PhysicalPortId.class);
- PhysicalPort physicalPort;
-
- Class<PhyConfigLoader> class1 = PhyConfigLoader.class;
- Method method = class1.getDeclaredMethod("getPhysicalPort",new Class[]{PhysicalPortId.class});
- method.setAccessible(true);
-
- physicalPort = (PhysicalPort) method.invoke(phyConfigLoader,physicalPortId);
-
- Assert.assertTrue(physicalPort == null);
- }
-
- @Test
- public void testGetPhysicalLink() throws Exception {
- PhysicalLinkId physicalLinkId = mock(PhysicalLinkId.class);
- PhysicalLink physicalLink;
-
- Class<PhyConfigLoader> class1 = PhyConfigLoader.class;
- Method method = class1.getDeclaredMethod("getPhysicalLink",new Class[]{PhysicalLinkId.class});
- method.setAccessible(true);
-
- physicalLink = (PhysicalLink) method.invoke(phyConfigLoader,physicalLinkId);
-
- Assert.assertTrue(physicalLink == null);
- }
-
- @Test
- public void testClose() throws Exception {
- phyConfigLoader.close();
- }
+/*\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.renderer.openflow.phtysicalnetwork;\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.fasterxml.jackson.databind.JsonNode;\r
+import com.fasterxml.jackson.databind.ObjectMapper;\r
+import com.google.common.collect.HashBasedTable;\r
+import com.google.common.collect.Table;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.renderer.openflow.physicalnetwork.PhyConfigLoader;\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.Ipv4Address;\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.PhysicalNodeInstance;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalPortInstance;\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.host.instance.IpAddressesBuilder;\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.physical.network.rev151010.physical.network.physical.hosts.PhysicalHostBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHostKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLink;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLinkBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNodeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.PhysicalPort;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.node.instance.PhysicalPortBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.Attribute;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.AttributeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.port.instance.AttributeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import javax.xml.crypto.Data;\r
+import java.io.IOException;\r
+import java.lang.reflect.Member;\r
+import java.lang.reflect.Method;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import static org.mockito.Mockito.*;\r
+/**\r
+ * Created by zhangmeng on 2015/11/30.\r
+ */\r
+public class PhyConfigLoaderTest extends TestCase {\r
+ private PhyConfigLoader phyConfigLoader;\r
+ private DataBroker dataBroker;\r
+ @Before\r
+ public void setUp() throws Exception {\r
+ dataBroker = mock(DataBroker.class);\r
+ phyConfigLoader = new PhyConfigLoader(dataBroker);\r
+ }\r
+\r
+ @Test\r
+ public void testGetExternalNetworkMac() throws Exception {\r
+ Table<PhysicalNodeId, PhysicalPortId, MacAddress> table;\r
+ table = phyConfigLoader.getExternalNetworkMac();\r
+ Assert.assertTrue(table != null);\r
+ }\r
+\r
+ @Test\r
+ public void testGetPhysicalNode() throws Exception {\r
+ PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
+ PhysicalNode physicalNode ;\r
+\r
+ Class<PhyConfigLoader> class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("getPhysicalNode",new Class[]{PhysicalNodeId.class});\r
+ method.setAccessible(true);\r
+\r
+ physicalNode = (PhysicalNode) method.invoke(phyConfigLoader,physicalNodeId);\r
+\r
+ Assert.assertTrue( physicalNode == null);\r
+ }\r
+\r
+ @Test\r
+ public void testGetPhysicalPort() throws Exception {\r
+ PhysicalPortId physicalPortId = mock(PhysicalPortId.class);\r
+ PhysicalPort physicalPort;\r
+\r
+ Class<PhyConfigLoader> class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("getPhysicalPort",new Class[]{PhysicalPortId.class});\r
+ method.setAccessible(true);\r
+\r
+ physicalPort = (PhysicalPort) method.invoke(phyConfigLoader,physicalPortId);\r
+\r
+ Assert.assertTrue(physicalPort == null);\r
+ }\r
+\r
+ @Test\r
+ public void testGetPhysicalLink() throws Exception {\r
+ PhysicalLinkId physicalLinkId = mock(PhysicalLinkId.class);\r
+ PhysicalLink physicalLink;\r
+\r
+ Class<PhyConfigLoader> class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("getPhysicalLink",new Class[]{PhysicalLinkId.class});\r
+ method.setAccessible(true);\r
+\r
+ physicalLink = (PhysicalLink) method.invoke(phyConfigLoader,physicalLinkId);\r
+\r
+ Assert.assertTrue(physicalLink == null);\r
+ }\r
+\r
+ @Test\r
+ public void testClose() throws Exception {\r
+ phyConfigLoader.close();\r
+ }\r
+\r
+ @Test\r
+ public void testBuildExternals() throws Exception{\r
+ JsonNode externalRoot = mock(JsonNode.class);\r
+ JsonNode exNetworkNodes = mock(JsonNode.class);\r
+ JsonNode exNetworkNode = mock(JsonNode.class);\r
+ JsonNode jsonNode = mock(JsonNode.class);\r
+ String nodeId = new String("1");\r
+ String portId = new String("2");\r
+ String peerMac = new String("00:11:22:33:44:55");\r
+\r
+ Class<PhyConfigLoader> class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("buildExternals",new Class[]{JsonNode.class});\r
+ method.setAccessible(true);\r
+\r
+ when(externalRoot.path(any(String.class))).thenReturn(exNetworkNodes);\r
+ when(exNetworkNodes.size()).thenReturn(1);\r
+ when(exNetworkNodes.get(any(Integer.class))).thenReturn(exNetworkNode);\r
+\r
+ //get into method "buildExNetwork"\r
+ when(exNetworkNode.get(any(String.class))).thenReturn(jsonNode);\r
+ when(jsonNode.asText())\r
+ .thenReturn(nodeId)\r
+ .thenReturn(portId)\r
+ .thenReturn(peerMac);\r
+\r
+ method.invoke(phyConfigLoader, externalRoot);\r
+\r
+ verify(externalRoot).path(any(String.class));\r
+ verify(exNetworkNodes,times(2)).size();\r
+ verify(exNetworkNodes).get(any(Integer.class));\r
+ verify(exNetworkNode,times(3)).get(any(String.class));\r
+ verify(jsonNode,times(3)).asText();\r
+ }\r
+\r
+\r
+ @Test\r
+ public PhysicalLink testBuildLink(JsonNode arg)throws Exception{\r
+ if(arg == null)return null;\r
+\r
+ PhysicalLink physicalLink = mock(PhysicalLink.class);\r
+ JsonNode jsonNode = mock(JsonNode.class);\r
+ JsonNode jsonNode1 = mock(JsonNode.class);\r
+\r
+\r
+ Class<PhyConfigLoader> class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("buildLink",new Class[]{JsonNode.class});\r
+ method.setAccessible(true);\r
+\r
+ when(jsonNode.get(any(String.class)))\r
+ .thenReturn(jsonNode1)\r
+ .thenReturn(jsonNode1);\r
+ when(jsonNode1.asText()).thenReturn(new String("test"));\r
+ when(jsonNode1.asLong()).thenReturn((long) 1);\r
+\r
+ physicalLink = (PhysicalLink)method.invoke(phyConfigLoader,jsonNode);\r
+ Assert.assertTrue(physicalLink != null);\r
+ Assert.assertTrue(physicalLink != mock(PhysicalLink.class));\r
+\r
+ return physicalLink;\r
+ }\r
+\r
+ @Test\r
+ public void testBuildLinks()throws Exception{\r
+ List<PhysicalLink> list;\r
+ JsonNode hostsNode = mock(JsonNode.class);\r
+ JsonNode hosts = mock(JsonNode.class);\r
+ JsonNode jsonNode = mock(JsonNode.class);\r
+ JsonNode jsonNode1 = mock(JsonNode.class);\r
+ PhysicalHost physicalHost;\r
+\r
+ Class<PhyConfigLoader> class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("buildLinks",new Class[]{JsonNode.class});\r
+ method.setAccessible(true);\r
+\r
+ when(hostsNode.path(any(String.class))).thenReturn(hosts);\r
+ when(hosts.size()).thenReturn(1);\r
+ when(hosts.get(any(Integer.class))).thenReturn(jsonNode);\r
+ when(jsonNode.get(any(String.class)))\r
+ .thenReturn(jsonNode1)\r
+ .thenReturn(jsonNode1);\r
+ when(jsonNode1.asText()).thenReturn(new String("test"));\r
+ when(jsonNode1.asLong()).thenReturn((long) 1);\r
+\r
+ list = (List<PhysicalLink>)method.invoke(phyConfigLoader,hostsNode);\r
+ Assert.assertTrue(list.size() == 1);\r
+ }\r
+\r
+ @Test\r
+ public void testBuildHosts()throws Exception{\r
+ Class<PhyConfigLoader> class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("buildHosts", new Class[]{JsonNode.class});\r
+ method.setAccessible(true);\r
+\r
+ JsonNode hostsNode = mock(JsonNode.class);\r
+ JsonNode hosts = mock(JsonNode.class);\r
+ JsonNode host = mock(JsonNode.class);\r
+ JsonNode host_temp = mock(JsonNode.class);\r
+ JsonNode host_temp1 = mock(JsonNode.class);\r
+ JsonNode ipaddrs = mock(JsonNode.class);\r
+ JsonNode ipaddr = mock(JsonNode.class);\r
+ List<PhysicalHost> list;\r
+\r
+ when(hostsNode.path(any(String.class))).thenReturn(hosts);\r
+ when(hosts.size()).thenReturn(1);\r
+ when(hosts.get(any(Integer.class))).thenReturn(host);\r
+ //get into method "buildhost"\r
+ when(host.get(any(String.class))).thenReturn(host_temp);\r
+ when(host_temp.asText())\r
+ .thenReturn(new String("00001111-0000-0000-0000-000011112222")) //HOST_ID\r
+ .thenReturn(new String("hostName")) //HOST_NAME\r
+ .thenReturn(new String("00:11:22:33:44:55")) //MAC_ADDRESS\r
+ .thenReturn(new String("nodeId")) //NODE_ID\r
+ .thenReturn(new String("connetionId"));//PhysicalPortId\r
+ when(host.path(any(String.class))).thenReturn(ipaddrs);\r
+ when(ipaddrs.size()).thenReturn(1);\r
+ when(ipaddrs.get(any(Integer.class))).thenReturn(ipaddr);\r
+ when(ipaddr.get(any(String.class))).thenReturn(host_temp1);\r
+ when(host_temp1.asText()).thenReturn(new String("192.168.1.1"));//ipv4_address\r
+\r
+\r
+ list = (List<PhysicalHost>) method.invoke(phyConfigLoader,hostsNode);\r
+ Assert.assertTrue(list.size() == 1);\r
+ }\r
+\r
+ public void testBuildPortAttributes()throws Exception{\r
+ Class<PhyConfigLoader>class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("buildPortAttributes",new Class[]{JsonNode.class});\r
+ method.setAccessible(true);\r
+\r
+ List<Attribute> attributeList;\r
+ JsonNode attributes = mock(JsonNode.class);\r
+ JsonNode portAttribute = mock(JsonNode.class);\r
+ JsonNode jsonNode_temp = mock(JsonNode.class);\r
+\r
+ when(attributes.size()).thenReturn(1);\r
+ when(attributes.get(any(Integer.class))).thenReturn(portAttribute);\r
+ //get into method "buildPortAttribute"\r
+ when(portAttribute.path(any(String.class))).thenReturn(jsonNode_temp);\r
+ when(jsonNode_temp.asText())\r
+ .thenReturn(new String(""))//branch null\r
+ .thenReturn(new String("zm"));\r
+ attributeList = (List<Attribute>)method.invoke(phyConfigLoader,attributes);\r
+ Assert.assertTrue(attributeList.size() == 0);\r
+ //new AttributeName("zm");\r
+ attributeList = (List<Attribute>)method.invoke(phyConfigLoader,attributes);\r
+ Assert.assertTrue(attributeList.size() == 1);\r
+ verify(portAttribute,times(3)).path(any(String.class));\r
+ verify(jsonNode_temp,times(3)).asText();\r
+ }\r
+\r
+ @Test\r
+ public void testBuildNodes() throws Exception{\r
+ Class<PhyConfigLoader>class1 = PhyConfigLoader.class;\r
+ Method method = class1.getDeclaredMethod("buildNodes", new Class[]{JsonNode.class});\r
+ method.setAccessible(true);\r
+\r
+ JsonNode nodesRoot = mock(JsonNode.class);\r
+ JsonNode nodes = mock(JsonNode.class);\r
+ JsonNode node = mock(JsonNode.class);\r
+ JsonNode node_temp = mock(JsonNode.class);\r
+ JsonNode port_temp = mock(JsonNode.class);\r
+ JsonNode attribute_temp = mock(JsonNode.class);\r
+ JsonNode attribute_temp_son = mock(JsonNode.class);\r
+ JsonNode ports = mock(JsonNode.class);\r
+ JsonNode attributes = mock(JsonNode.class);\r
+ JsonNode portAttributes = mock(JsonNode.class);\r
+ JsonNode portAttribute = mock(JsonNode.class);\r
+ JsonNode attributes_son = mock(JsonNode.class);\r
+ JsonNode port = mock(JsonNode.class);\r
+ List<PhysicalNode> result;\r
+\r
+ when(nodesRoot.path(any(String.class))).thenReturn(nodes);\r
+ when(nodes.size()).thenReturn(1);\r
+ when(nodes.get(any(Integer.class))).thenReturn(node);\r
+ //get into method "buildnode"\r
+ when(node.get(any(String.class))).thenReturn(node_temp);\r
+ when(node_temp.asText())\r
+ .thenReturn(new String(""))//branch null\r
+ .thenReturn(new String("test")) //node_id\r
+ .thenReturn(new String("switch")); //NODE_TYPE\r
+\r
+\r
+ result = (List<PhysicalNode>) method.invoke(phyConfigLoader,nodesRoot); //return empty list\r
+ Assert.assertTrue(result.size() == 0);\r
+ verify(node_temp).asText();\r
+\r
+ when(node.path(any(String.class)))\r
+ .thenReturn(ports)//PORTS\r
+ .thenReturn(attributes);//ATTRIBUTES\r
+ ////get into method "buildports"\r
+ when(ports.size()).thenReturn(1);\r
+ when(ports.get(any(Integer.class))).thenReturn(port);\r
+ ///////get into method "buildport"\r
+ when(port.get(any(String.class))).thenReturn(port_temp);\r
+ when(port_temp.asText())\r
+ .thenReturn(new String("test"))//PORT_ID\r
+ .thenReturn(new String("switch"));//PORT_TYPE\r
+ when(port.path(any(String.class))).thenReturn(portAttributes);\r
+ ////////get into method "buildportattributes"\r
+ when(portAttributes.size()).thenReturn(1);\r
+ when(portAttributes.get(any(Integer.class))).thenReturn(attributes_son);\r
+ //////////get into method "buildPortAttribute"\r
+ when(attributes_son.path(any(String.class))).thenReturn(attribute_temp_son);\r
+ when(attribute_temp_son.asText())\r
+ .thenReturn(new String("zm"))\r
+ .thenReturn(new String("zm"));\r
+ ////return to method "buildnode" and get into method "..............buildNodeAttributes"\r
+ when(attributes.size()).thenReturn(1);\r
+ when(attributes.get(any(Integer.class))).thenReturn(portAttribute);\r
+ //////get into method "..............buildNodeAttribute"\r
+ when(portAttribute.path(any(String.class))).thenReturn(attribute_temp);\r
+ when(attribute_temp.asText())\r
+ .thenReturn(new String("test"))//ATTRIBUTE_NAME\r
+ .thenReturn(new String("test"));//ATTRIBUTE_VALUE\r
+\r
+ result = (List<PhysicalNode>) method.invoke(phyConfigLoader,nodesRoot); //return empty list\r
+ Assert.assertTrue(result.size() == 1);\r
+\r
+ }\r
+\r
}
\ No newline at end of file