Modify nemo-impl and nemo-renderers partical test files 87/30687/1
authorsaomenmen <zhangmroy@163.com>
Fri, 4 Dec 2015 03:53:07 +0000 (11:53 +0800)
committersaomenmen <zhangmroy@163.com>
Fri, 4 Dec 2015 03:54:06 +0000 (11:54 +0800)
Change-Id: Ib47b2dcf93c6c9fac49a94f53204324fad7d5154
Signed-off-by: saomenmen <zhangmroy@163.com>
nemo-impl/src/test/java/org/opendaylight/nemo/intent/computation/VNComputationUnitTest.java
nemo-renderers/openflow-renderer/src/test/java/org/opendaylight/nemo/renderer/openflow/physicalnetwork/PhyConfigLoaderTest.java

index 88f1ebda1ab7a6afbe3cca9ac158f5221d180eaa..3b086c9346dda7d8c878cd617a0ad6c9cd5b5cbf 100644 (file)
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.intent.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
index 4a9a14f19fd736e550a763a2634126815fe1df00..c9f6748f840ed0f75b51380dae4258a3711f05b8 100644 (file)
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.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