Add nemo-renderers test file 06/31406/1
authorldzd11 <1875840145@qq.com>
Wed, 16 Dec 2015 01:21:33 +0000 (09:21 +0800)
committerldzd11 <1875840145@qq.com>
Wed, 16 Dec 2015 01:21:33 +0000 (09:21 +0800)
Change-Id: I41591f4a02762b0ac0e9bde79e6b5176ef206a1a
Signed-off-by: ldzd11 <1875840145@qq.com>
nemo-renderers/openflow-renderer/src/test/java/org/opendaylight/nemo/renderer/openflow/FlowUtilsTest.java [new file with mode: 0644]

diff --git a/nemo-renderers/openflow-renderer/src/test/java/org/opendaylight/nemo/renderer/openflow/FlowUtilsTest.java b/nemo-renderers/openflow-renderer/src/test/java/org/opendaylight/nemo/renderer/openflow/FlowUtilsTest.java
new file mode 100644 (file)
index 0000000..7e46a14
--- /dev/null
@@ -0,0 +1,437 @@
+/*\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;\r
+\r
+import com.sun.security.sasl.util.AbstractSaslImpl;\r
+import junit.framework.TestCase;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.opendaylight.nemo.renderer.openflow.physicalnetwork.PhyConfigLoader;\r
+import java.lang.reflect.Method;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import junit.framework.TestCase;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.opendaylight.nemo.renderer.openflow.FlowUtils;\r
+import org.apache.commons.lang3.tuple.ImmutableTriple;\r
+import org.opendaylight.controller.liblldp.Ethernet;\r
+import org.opendaylight.controller.liblldp.HexEncode;\r
+import org.opendaylight.controller.liblldp.NetUtils;\r
+import org.opendaylight.controller.liblldp.PacketException;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.nemo.renderer.openflow.physicalnetwork.PhyConfigLoader;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import org.opendaylight.nemo.renderer.openflow.utils.ARP;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtl;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtl;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetField;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.go.to.table._case.GoToTable;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.go.to.table._case.GoToTableBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.metadata._case.WriteMetadata;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.metadata._case.WriteMetadataBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInputBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalLinks;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalPaths;\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.nodes.PhysicalNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPath;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPathBuilder;\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.virtual.network.rev151010.virtual.networks.VirtualNetwork;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArp;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArpBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.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.node.instance.VirtualPort;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMapping;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.user.vn.pn.mapping.VnPnMappingResult;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.MatchItemName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalPortId;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import java.lang.reflect.Method;\r
+import java.math.BigInteger;\r
+import java.util.*;\r
+import static org.junit.Assert.*;\r
+import static org.mockito.Mockito.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNetworkId;\r
+\r
+/**\r
+ * Created by zhangmeng on 2015/12/14.\r
+ */\r
+public class FlowUtilsTest extends TestCase {\r
+    private FlowUtils flowUtils;\r
+    private DataBroker dataBroker;\r
+    private PacketProcessingService packetProcessingService;\r
+    private PhyConfigLoader phyConfigLoader;\r
+    @Before\r
+    public void setUp() throws Exception {\r
+        dataBroker = mock(DataBroker.class);\r
+        packetProcessingService = mock(PacketProcessingService.class);\r
+        phyConfigLoader = mock(PhyConfigLoader.class);\r
+        flowUtils = new FlowUtils(dataBroker,packetProcessingService,phyConfigLoader);\r
+    }\r
+\r
+    @Test\r
+    public void testInit() throws Exception {\r
+        List<PhysicalNode> physicalNodes = new ArrayList<PhysicalNode>();\r
+        flowUtils.init(physicalNodes);\r
+    }\r
+\r
+    @Test\r
+    public void testUpdateFlowTable() throws Exception {\r
+\r
+    }\r
+\r
+    @Test\r
+    public void testDeleteFlowEntries() throws Exception {\r
+\r
+    }\r
+\r
+    @Test\r
+    public void testHandleArp() throws Exception {\r
+\r
+    }\r
+\r
+    @Test\r
+    public void testClose() throws Exception {\r
+        flowUtils.close();\r
+        Assert.assertTrue(flowUtils != null);\r
+    }\r
+\r
+    @Test\r
+    public void testAssignMPLSLabelForPPath() throws Exception {\r
+        PhysicalPath physicalPath = mock(PhysicalPath.class);\r
+        PhysicalPathId physicalPathId = mock(PhysicalPathId.class);\r
+        PhysicalLinkId physicalLinkId = mock(PhysicalLinkId.class);\r
+        PhysicalNodeId physicalDestNodeId = mock(PhysicalNodeId.class);\r
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLink\r
+                physicalLink = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLink.class);\r
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.path.instance.PhysicalLink\r
+                physicalLink_path = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.path.instance.PhysicalLink.class);\r
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLink>\r
+                physicalLinksList = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLink>();\r
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.path.instance.PhysicalLink>\r
+                physicalLinksInPath = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.path.instance.PhysicalLink>();\r
+\r
+        when(physicalPath.getPhysicalLink()).thenReturn(physicalLinksInPath);\r
+        when(physicalPath.getPathId()).thenReturn(physicalPathId);\r
+\r
+        flowUtils.assignMPLSLabelForPPath(physicalPath, physicalLinksList);\r
+        verify(physicalPath).getPhysicalLink();\r
+        verify(physicalPath).getPathId();\r
+\r
+        physicalLinksList.add(physicalLink);\r
+        physicalLinksInPath.add(physicalLink_path);\r
+        when(physicalLink_path.getLinkId()).thenReturn(physicalLinkId);\r
+        when(physicalLink.getLinkId()).thenReturn(physicalLinkId);\r
+        when(physicalLinkId.getValue())\r
+                .thenReturn(new String("1"))\r
+                .thenReturn(new String("2"))\r
+                .thenReturn(new String("1"))\r
+                .thenReturn(new String("1"));\r
+        flowUtils.assignMPLSLabelForPPath(physicalPath, physicalLinksList);\r
+        verify(physicalPath,times(2)).getPathId();\r
+        verify(physicalLink).getLinkId();\r
+        verify(physicalLink_path).getLinkId();\r
+        verify(physicalLinkId,times(2)).getValue();\r
+\r
+        when(physicalLink.getDestNodeId()).thenReturn(physicalDestNodeId);\r
+        flowUtils.assignMPLSLabelForPPath(physicalPath, physicalLinksList);\r
+        verify(physicalLinkId,times(4)).getValue();\r
+        verify(physicalPath,times(3)).getPathId();\r
+    }\r
+\r
+    @Test\r
+    public void testTheLastTwoPrivateMethod() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+\r
+        //test generateDefaultGatewayIpAddress\r
+        String ipPrefix = new String("192.168.1.1/16");\r
+        IpAddress ipAddress;\r
+\r
+        Method method = class1.getDeclaredMethod("generateDefaultGatewayIpAddress", new Class[]{String.class});\r
+        method.setAccessible(true);\r
+        ipAddress =(IpAddress) method.invoke(flowUtils,new Object[]{ipPrefix});\r
+        Assert.assertTrue(ipAddress != null);\r
+\r
+        //test convertMacAddressToByteArray6\r
+        MacAddress macAddress = mock(MacAddress.class);\r
+        byte[] result;\r
+        Method method1 = class1.getDeclaredMethod("convertMacAddressToByteArray6", new Class[]{MacAddress.class});\r
+        method1.setAccessible(true);\r
+        when(macAddress.getValue()).thenReturn(new String("2001:da8:215:3f0:847a:4267:b2a3:892f"));\r
+        result = (byte[])method1.invoke(flowUtils, macAddress);\r
+        verify(macAddress).getValue();\r
+        Assert.assertTrue(result.length != 0);\r
+    }\r
+\r
+    @Test\r
+    public void testConvertByteArray6ToMacAddress() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("convertByteArray6ToMacAddress",new Class[]{byte[].class});\r
+        method.setAccessible(true);\r
+        Method method1 = class1.getDeclaredMethod("convertMacAddressToByteArray6", new Class[]{MacAddress.class});\r
+        method1.setAccessible(true);\r
+\r
+        MacAddress result;\r
+        MacAddress macAddress = mock(MacAddress.class);\r
+        byte[] byteArray;\r
+\r
+        when(macAddress.getValue()).thenReturn(new String("2001:da8:215:3f0:847a:4267:b2a3:892f"));\r
+        byteArray = (byte[])method1.invoke(flowUtils, macAddress);\r
+        result = (MacAddress)method.invoke(flowUtils,byteArray);\r
+        Assert.assertTrue(result != null);\r
+    }\r
+\r
+    @Test\r
+    public void testConvertByteArray4ToIpAddress() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("convertByteArray4ToIpAddress",new Class[]{byte[].class});\r
+        method.setAccessible(true);\r
+\r
+        IpAddress result;\r
+        byte[] byteArray = "192.168.1.1".getBytes();\r
+        result = (IpAddress)method.invoke(flowUtils,byteArray);\r
+        Assert.assertTrue(result != null);\r
+    }\r
+\r
+    @Test\r
+    public void testConvertIpAddressToIpPrefix() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("convertIpAddressToIpPrefix", new Class[]{IpAddress.class});\r
+        method.setAccessible(true);\r
+\r
+        IpAddress ipAddress = mock(IpAddress.class);\r
+        Ipv4Address ipv4Address = mock(Ipv4Address.class);\r
+        IpPrefix result;\r
+\r
+        when(ipAddress.getIpv4Address()).thenReturn(ipv4Address);\r
+        when(ipv4Address.getValue()).thenReturn(new String("192.168.1.1"));\r
+        result = (IpPrefix)method.invoke(flowUtils,ipAddress);\r
+        Assert.assertTrue(result != null);\r
+    }\r
+\r
+    @Test\r
+    public void testConvertNodeConnectorRefToPhysicalNodeId() throws Exception{\r
+    }\r
+    @Test\r
+    public void testConvertNodeConnectorRefToPhysicalPortId() throws Exception{\r
+    }\r
+    @Test\r
+    public void testCreateFlowPath_CreateTablePath_CreateNodePath() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("createFlowPath", new Class[]{NodeId.class, Short.class, FlowId.class});\r
+        method.setAccessible(true);\r
+\r
+        NodeId nodeId = mock(NodeId.class);\r
+        Short tableId = 1;\r
+        FlowId flowId = mock(FlowId.class);\r
+        InstanceIdentifier<Flow> instanceIdentifier = mock(InstanceIdentifier.class);\r
+\r
+        instanceIdentifier = (InstanceIdentifier<Flow>) method.invoke(flowUtils,nodeId,tableId,flowId);\r
+        Assert.assertTrue(instanceIdentifier != null);\r
+    }\r
+\r
+    @Test\r
+    public void testCreateNodeRef() throws Exception{\r
+    }\r
+    @Test\r
+    public void testCreateNodeId() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("createNodeId", new Class[]{PhysicalNodeId.class});\r
+        method.setAccessible(true);\r
+\r
+        PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
+        NodeId result;\r
+\r
+        when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
+        result = (NodeId) method.invoke(flowUtils,physicalNodeId);\r
+        Assert.assertTrue(result != null);\r
+    }\r
+    @Test\r
+    public void testCreateNodeConnectorRef_CreateNodeConnectorPath_CreateNodePath_CreateNodeConnectorId() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("createNodeConnectorRef", new Class[]{PhysicalNodeId.class, PhysicalPortId.class});\r
+        method.setAccessible(true);\r
+\r
+        PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
+        PhysicalPortId physicalPortId = mock(PhysicalPortId.class);\r
+        NodeConnectorRef result;\r
+\r
+        when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
+        when(physicalPortId.getValue()).thenReturn(new String("test"));\r
+        result = (NodeConnectorRef)method.invoke(flowUtils,physicalNodeId,physicalPortId);\r
+        Assert.assertTrue(result != null);\r
+    }\r
+    @Test\r
+    public void testBaseFlowBuilder() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("baseFlowBuilder");\r
+        method.setAccessible(true);\r
+\r
+        method.invoke(flowUtils);\r
+    }\r
+    @Test\r
+    public void testCreateArpPacket() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("createArpPacket",new Class[]{Ethernet.class,ARP.class});\r
+        method.setAccessible(true);\r
+\r
+        Ethernet ethernet = mock(Ethernet.class);\r
+        ARP arp = mock(ARP.class);\r
+        byte[] byteArray = "192.168.1.1".getBytes();\r
+        byte[] result;\r
+\r
+        doNothing().when(ethernet).setRawPayload(any(byte[].class));\r
+        when(ethernet.serialize()).thenReturn(byteArray);\r
+        when(arp.serialize()).thenReturn(byteArray);\r
+\r
+        result = (byte[]) method.invoke(flowUtils,ethernet,arp);\r
+        Assert.assertTrue(result.equals(byteArray));\r
+    }\r
+    @Test\r
+    public void testSendPacketOut() throws Exception{\r
+    }\r
+    @Test\r
+    public void testCreateMatch_getMatchItem() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("createMatch", new Class[]{UserId.class,\r
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow.class,\r
+                PhysicalPort.class});\r
+        method.setAccessible(true);\r
+\r
+        UserId userId = mock(UserId.class);\r
+        Match result;\r
+        MatchItemValue matchItemValue = mock(MatchItemValue.class);\r
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow\r
+                nemoFlow = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow.class);\r
+        PhysicalPort physicalPort = mock(PhysicalPort.class);\r
+        MatchItem matchItem = mock(MatchItem.class);\r
+        PhysicalPortId physicalPortId = mock(PhysicalPortId.class);\r
+        List<MatchItem> matchItems = new ArrayList<MatchItem>();\r
+\r
+        matchItems.add(matchItem);\r
+\r
+        when(nemoFlow.getMatchItem()).thenReturn(matchItems);\r
+\r
+        //get into method "getMatchItem" args(matchitem src-ip)  args(matchitem dst-ip)\r
+        when(matchItem.getMatchItemName())\r
+                .thenReturn(new MatchItemName("src-ip")) //test src\r
+                .thenReturn(new MatchItemName("dst-ip"));//test dst\r
+\r
+        //return out\r
+        when(matchItem.getMatchItemValue()).thenReturn(matchItemValue);\r
+        when(matchItemValue.getStringValue()).thenReturn(new String("192.168.1.1/24"));\r
+        when(physicalPort.getPortId()).thenReturn(physicalPortId);\r
+        when(physicalPortId.getValue()).thenReturn(new String("test"));\r
+\r
+        result = (Match)method.invoke(flowUtils,null,nemoFlow,physicalPort);\r
+        Assert.assertTrue(result != null);\r
+    }\r
+    @Test\r
+    public void testConfigFlowTableEntryForOperation() throws Exception{\r
+        Class<FlowUtils> class1 = FlowUtils.class;\r
+        Method method = class1.getDeclaredMethod("configFlowTableEntryForOperation",\r
+                new Class[]{UserId.class,\r
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow.class,\r
+                        PhysicalPort.class,\r
+                        PhysicalPath.class,\r
+                        short.class,\r
+                        boolean.class});\r
+        method.setAccessible(true);\r
+\r
+        UserId userId = mock(UserId.class);\r
+        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow\r
+                nemoFlow = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow.class);\r
+        PhysicalPort inPhysicalPort = mock(PhysicalPort.class);\r
+        PhysicalPath outPhysicalPath = mock(PhysicalPath.class);\r
+        short operationPriority ;\r
+        boolean layer3Forwarding;\r
+\r
+    }\r
+}
\ No newline at end of file