X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2Ftest%2FTestToSalConversionsUtils.java;h=7601a7d9cf67ba543d50d8e49b3fb0d6bbe1ae82;hp=8108074ed74dc759314238ba7aec9e6836958632;hb=d6d463bdd587ae6eb8884c914787af061c6f2973;hpb=7e9c91c57da1cac389e8234b738219a5fe671c36 diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java index 8108074ed7..7601a7d9cf 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2013-2014 Cisco Systems, 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, @@ -9,6 +9,10 @@ package org.opendaylight.controller.sal.compatibility.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.CRUDP; +import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.ETHERNET_ARP; +import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.TCP; +import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.UDP; import java.math.BigInteger; import java.net.Inet4Address; @@ -18,35 +22,123 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import junit.framework.Assert; + import org.junit.Test; -import org.opendaylight.controller.sal.action.*; +import org.opendaylight.controller.sal.action.Flood; +import org.opendaylight.controller.sal.action.FloodAll; +import org.opendaylight.controller.sal.action.HwPath; +import org.opendaylight.controller.sal.action.Loopback; +import org.opendaylight.controller.sal.action.Output; +import org.opendaylight.controller.sal.action.PopVlan; +import org.opendaylight.controller.sal.action.PushVlan; +import org.opendaylight.controller.sal.action.SetDlDst; +import org.opendaylight.controller.sal.action.SetDlSrc; +import org.opendaylight.controller.sal.action.SetDlType; +import org.opendaylight.controller.sal.action.SetNextHop; +import org.opendaylight.controller.sal.action.SetNwDst; +import org.opendaylight.controller.sal.action.SetNwSrc; +import org.opendaylight.controller.sal.action.SetNwTos; +import org.opendaylight.controller.sal.action.SetTpDst; +import org.opendaylight.controller.sal.action.SetTpSrc; +import org.opendaylight.controller.sal.action.SetVlanCfi; +import org.opendaylight.controller.sal.action.SetVlanId; +import org.opendaylight.controller.sal.action.SetVlanPcp; +import org.opendaylight.controller.sal.action.SwPath; import org.opendaylight.controller.sal.compatibility.ToSalConversionsUtils; +import org.opendaylight.controller.sal.core.ConstructionException; +import org.opendaylight.controller.sal.core.Node; +import org.opendaylight.controller.sal.core.Node.NodeIDType; +import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType; import org.opendaylight.controller.sal.flowprogrammer.Flow; import org.opendaylight.controller.sal.match.MatchType; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.*; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Dscp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri; 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.flow.service.rev130819.FlowAddedBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeFlow; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.VlanCfi; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.*; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.ControllerActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodAllActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.HwPathActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.LoopbackActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlTypeActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNextHopActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanCfiActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SwPathActionCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.type.action._case.SetDlTypeActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.next.hop.action._case.SetNextHopActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.cfi.action._case.SetVlanCfiActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.Address; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv6Builder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowAddedBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeFlow; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType; import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId; import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpSourceHardwareAddressBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpTargetHardwareAddressBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.*; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.*; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestination; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSource; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatch; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer4Match; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatch; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder; @@ -54,66 +146,84 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsBuilder; import com.google.common.net.InetAddresses; -import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.ETHERNET_ARP; -import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.SCTP; -import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.TCP; -import static org.opendaylight.controller.sal.compatibility.ProtocolConstants.UDP; - public class TestToSalConversionsUtils { // prefix: // od|Od = Open Daylight private enum MtchType { - other, ipv4, ipv6, arp, sctp, tcp, udp + other, untagged, ipv4, ipv6, arp, sctp, tcp, udp } @Test - public void testToSalConversion() { + public void testToSalConversion() throws ConstructionException { FlowAddedBuilder odNodeFlowBuilder = new FlowAddedBuilder(); odNodeFlowBuilder = prepareOdFlowCommon(); - Flow salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.other)); + Node node = new Node(NodeIDType.OPENFLOW,(long)1); + + Flow salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.other), node); checkSalMatch(salFlow.getMatch(), MtchType.other); - salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.ipv4)); + salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.untagged), node); + checkSalMatch(salFlow.getMatch(), MtchType.untagged); + + salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.ipv4), node); checkSalMatch(salFlow.getMatch(), MtchType.ipv4); - salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.ipv6)); + salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.ipv6), node); checkSalMatch(salFlow.getMatch(), MtchType.ipv6); - salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.arp)); + salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.arp), node); checkSalMatch(salFlow.getMatch(), MtchType.arp); - salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.sctp)); + salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.sctp), node); checkSalMatch(salFlow.getMatch(), MtchType.sctp); - salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.tcp)); + salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.tcp), node); checkSalMatch(salFlow.getMatch(), MtchType.tcp); - salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.udp)); + salFlow = ToSalConversionsUtils.toFlow(prepareOdFlow(odNodeFlowBuilder, MtchType.udp), node); checkSalMatch(salFlow.getMatch(), MtchType.udp); checkSalFlow(salFlow); } - private void checkSalMatch(org.opendaylight.controller.sal.match.Match match, MtchType mt) { + /** + * test of {@link ToSalConversionsUtils#fromNodeConnectorRef(Uri, Node)} + * @throws ConstructionException + */ + @Test + public void testFromNodeConnectorRef() throws ConstructionException { + Node node = new Node(NodeIDType.OPENFLOW, 42L); + NodeConnector nodeConnector = ToSalConversionsUtils.fromNodeConnectorRef(new Uri("1"), node); + Assert.assertEquals("OF|1@OF|00:00:00:00:00:00:00:2a", nodeConnector.toString()); + } + + private void checkSalMatch(org.opendaylight.controller.sal.match.Match match, MtchType mt) throws ConstructionException { switch (mt) { case other: - /*assertNotNull("DL_DST isn't equal.", "3C:A9:F4:00:E0:C8", + /*assertNotNull("DL_DST isn't equal.", "3C:A9:F4:00:E0:C8", new String((byte[]) match.getField(MatchType.DL_DST).getValue())); assertEquals("DL_SRC isn't equal.", "24:77:03:7C:C5:F1", new String((byte[]) match.getField(MatchType.DL_SRC).getValue())); */ + Node node = new Node(NodeIDType.OPENFLOW, 12L); + NodeConnector port = new NodeConnector(NodeConnectorIDType.OPENFLOW, Short.valueOf((short)345), node); + assertEquals("IN_PORT isn't equal.", port, match.getField(MatchType.IN_PORT).getValue()); assertEquals("DL_TYPE isn't equal.", (short) 0xffff, (short) match.getField(MatchType.DL_TYPE).getValue()); assertEquals("NW_TOS isn't equal.", (byte) 0x33, (byte) match.getField(MatchType.NW_TOS).getValue()); assertEquals("NW_PROTO isn't equal.", (byte) 0x3f, (byte) match.getField(MatchType.NW_PROTO).getValue()); assertEquals("DL_VLAN isn't equal.", (short) 0xfff, (short) match.getField(MatchType.DL_VLAN).getValue()); assertEquals("DL_VLAN_PR isn't equal.", (byte) 0x7, (byte) match.getField(MatchType.DL_VLAN_PR).getValue()); break; + case untagged: + assertEquals("DL_TYPE isn't equal.", (short) 0xffff, (short) match.getField(MatchType.DL_TYPE).getValue()); + assertEquals("NW_TOS isn't equal.", (byte) 0x33, (byte) match.getField(MatchType.NW_TOS).getValue()); + assertEquals("NW_PROTO isn't equal.", (byte) 0x3f, (byte) match.getField(MatchType.NW_PROTO).getValue()); + assertEquals("DL_VLAN isn't equal.", MatchType.DL_VLAN_NONE, (short) match.getField(MatchType.DL_VLAN).getValue()); + break; case arp: /* assertEquals("DL_SRC isn't equal.", "22:44:66:88:AA:CC", @@ -142,7 +252,7 @@ public class TestToSalConversionsUtils { case sctp: assertEquals("TP_SRC isn't equal.", 31, (short) match.getField(MatchType.TP_SRC).getValue()); assertEquals("TP_DST isn't equal.", 32, (short) match.getField(MatchType.TP_DST).getValue()); - assertEquals("NW_PROTO isn't equal.", SCTP, (byte) match.getField(MatchType.NW_PROTO).getValue()); + assertEquals("NW_PROTO isn't equal.", CRUDP, (byte) match.getField(MatchType.NW_PROTO).getValue()); break; case tcp: assertEquals("TP_SRC isn't equal.", 21, (short) match.getField(MatchType.TP_SRC).getValue()); @@ -230,7 +340,7 @@ public class TestToSalConversionsUtils { //assertEquals("Wrong value for action SetDlSrc for MAC address.", "24:77:03:7C:C5:F1", new String( // ((SetDlSrc) action).getDlAddress())); } else if (action instanceof SetDlType) { - assertEquals("Wrong value for action SetDlType for.", 513l, ((SetDlType) action).getDlType()); + assertEquals("Wrong value for action SetDlType for.", 513L, ((SetDlType) action).getDlType()); } else if (action instanceof SetNextHop) { InetAddress inetAddress = ((SetNextHop) action).getAddress(); checkIpAddresses(inetAddress, "192.168.100.100", "2001:db8:85a3::8a2e:370:7334"); @@ -266,7 +376,7 @@ public class TestToSalConversionsUtils { private FlowAddedBuilder prepareOdFlowCommon() { FlowAddedBuilder odNodeFlowBuilder = new FlowAddedBuilder(); - odNodeFlowBuilder.setCookie(new BigInteger("9223372036854775807")); + odNodeFlowBuilder.setCookie(new FlowCookie(new BigInteger("9223372036854775807"))); odNodeFlowBuilder.setHardTimeout(32767); odNodeFlowBuilder.setIdleTimeout(32767); odNodeFlowBuilder.setPriority(32767); @@ -282,31 +392,31 @@ public class TestToSalConversionsUtils { private Instructions prepareOdActions() { List odActions = new ArrayList<>(); - ControllerActionBuilder controllerActionBuilder = new ControllerActionBuilder(); - DropActionBuilder dropActionBuilder = new DropActionBuilder(); - FloodActionBuilder floodActionBuilder = new FloodActionBuilder(); - FloodAllActionBuilder floodAllActionBuilder = new FloodAllActionBuilder(); - HwPathActionBuilder hwPathActionBuilder = new HwPathActionBuilder(); - LoopbackActionBuilder loopbackActionBuilder = new LoopbackActionBuilder(); - OutputActionBuilder outputActionBuilder = new OutputActionBuilder(); - PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder(); - PopVlanActionBuilder popVlanActionBuilder = new PopVlanActionBuilder(); - PushMplsActionBuilder pushMplsActionBuilder = new PushMplsActionBuilder(); - PushPbbActionBuilder pushPbbActionBuilder = new PushPbbActionBuilder(); - PushVlanActionBuilder pushVlanActionBuilder = new PushVlanActionBuilder(); - SetDlDstActionBuilder setDlDstActionBuilder = new SetDlDstActionBuilder(); - SetDlSrcActionBuilder setDlSrcActionBuilder = new SetDlSrcActionBuilder(); - SetDlTypeActionBuilder setDlTypeActionBuilder = new SetDlTypeActionBuilder(); - SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder(); - SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder(); - SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder(); - SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder(); - SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder(); - SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder(); - SetVlanCfiActionBuilder setVlanCfiActionBuilder = new SetVlanCfiActionBuilder(); - SetVlanIdActionBuilder setVlanIdActionBuilder = new SetVlanIdActionBuilder(); - SetVlanPcpActionBuilder setVlanPcpActionBuilder = new SetVlanPcpActionBuilder(); - SwPathActionBuilder swPathActionBuilder = new SwPathActionBuilder(); + ControllerActionCaseBuilder controllerActionBuilder = new ControllerActionCaseBuilder(); + DropActionCaseBuilder dropActionBuilder = new DropActionCaseBuilder(); + FloodActionCaseBuilder floodActionBuilder = new FloodActionCaseBuilder(); + FloodAllActionCaseBuilder floodAllActionBuilder = new FloodAllActionCaseBuilder(); + HwPathActionCaseBuilder hwPathActionBuilder = new HwPathActionCaseBuilder(); + LoopbackActionCaseBuilder loopbackActionBuilder = new LoopbackActionCaseBuilder(); + OutputActionCaseBuilder outputActionBuilder = new OutputActionCaseBuilder(); + PopMplsActionCaseBuilder popMplsActionBuilder = new PopMplsActionCaseBuilder(); + PopVlanActionCaseBuilder popVlanActionBuilder = new PopVlanActionCaseBuilder(); + PushMplsActionCaseBuilder pushMplsActionBuilder = new PushMplsActionCaseBuilder(); + PushPbbActionCaseBuilder pushPbbActionBuilder = new PushPbbActionCaseBuilder(); + PushVlanActionCaseBuilder pushVlanActionBuilder = new PushVlanActionCaseBuilder(); + SetDlDstActionCaseBuilder setDlDstActionBuilder = new SetDlDstActionCaseBuilder(); + SetDlSrcActionCaseBuilder setDlSrcActionBuilder = new SetDlSrcActionCaseBuilder(); + SetDlTypeActionCaseBuilder setDlTypeActionBuilder = new SetDlTypeActionCaseBuilder(); + SetMplsTtlActionCaseBuilder setMplsTtlActionBuilder = new SetMplsTtlActionCaseBuilder(); + SetNwTosActionCaseBuilder setNwTosActionBuilder = new SetNwTosActionCaseBuilder(); + SetNwTtlActionCaseBuilder setNwTtlActionBuilder = new SetNwTtlActionCaseBuilder(); + SetQueueActionCaseBuilder setQueueActionBuilder = new SetQueueActionCaseBuilder(); + SetTpDstActionCaseBuilder setTpDstActionBuilder = new SetTpDstActionCaseBuilder(); + SetTpSrcActionCaseBuilder setTpSrcActionBuilder = new SetTpSrcActionCaseBuilder(); + SetVlanCfiActionCaseBuilder setVlanCfiActionBuilder = new SetVlanCfiActionCaseBuilder(); + SetVlanIdActionCaseBuilder setVlanIdActionBuilder = new SetVlanIdActionCaseBuilder(); + SetVlanPcpActionCaseBuilder setVlanPcpActionBuilder = new SetVlanPcpActionCaseBuilder(); + SwPathActionCaseBuilder swPathActionBuilder = new SwPathActionCaseBuilder(); prepareActionOutput(outputActionBuilder); prepareActionPushVlan(pushVlanActionBuilder); @@ -349,75 +459,88 @@ public class TestToSalConversionsUtils { odActions.add(new ActionBuilder().setAction(setVlanPcpActionBuilder.build()).build()); odActions.add(new ActionBuilder().setAction(swPathActionBuilder.build()).build()); - - ApplyActions innerInst = new ApplyActionsBuilder().setAction(odActions).build(); + + ApplyActionsCase innerInst = new ApplyActionsCaseBuilder().setApplyActions(new ApplyActionsBuilder().setAction(odActions).build()).build(); Instruction applyActions = new InstructionBuilder().setInstruction(innerInst).build(); List instructions = Collections.singletonList(applyActions ); InstructionsBuilder instBuilder = new InstructionsBuilder(); - + instBuilder.setInstruction(instructions); - + return instBuilder.build(); } - private void prepareActionSetVlanPcp(SetVlanPcpActionBuilder setVlanPcpActionBuilder) { + private void prepareActionSetVlanPcp(SetVlanPcpActionCaseBuilder wrapper) { + SetVlanPcpActionBuilder setVlanPcpActionBuilder = new SetVlanPcpActionBuilder(); setVlanPcpActionBuilder.setVlanPcp(new VlanPcp((short) 7)); + wrapper.setSetVlanPcpAction(setVlanPcpActionBuilder.build()); } - private void prepareActionSetVladId(SetVlanIdActionBuilder setVlanIdActionBuilder) { + private void prepareActionSetVladId(SetVlanIdActionCaseBuilder wrapper) { + SetVlanIdActionBuilder setVlanIdActionBuilder = new SetVlanIdActionBuilder(); setVlanIdActionBuilder.setVlanId(new VlanId(4095)); + wrapper.setSetVlanIdAction(setVlanIdActionBuilder.build()); } - private void prepareActionSetVlanCfi(SetVlanCfiActionBuilder setVlanCfiActionBuilder) { + private void prepareActionSetVlanCfi(SetVlanCfiActionCaseBuilder wrapper) { + SetVlanCfiActionBuilder setVlanCfiActionBuilder = new SetVlanCfiActionBuilder(); setVlanCfiActionBuilder.setVlanCfi(new VlanCfi(1)); + wrapper.setSetVlanCfiAction(setVlanCfiActionBuilder.build()); } - private void prepareActionSetTpDst(SetTpDstActionBuilder setTpDstActionBuilder) { + private void prepareActionSetTpDst(SetTpDstActionCaseBuilder wrapper) { + SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder(); setTpDstActionBuilder.setPort(new PortNumber(65535)); + wrapper.setSetTpDstAction(setTpDstActionBuilder.build()); } - private void prepareActionSetTpSrc(SetTpSrcActionBuilder setTpSrcActionBuilder) { + private void prepareActionSetTpSrc(SetTpSrcActionCaseBuilder wrapper) { + SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder(); setTpSrcActionBuilder.setPort(new PortNumber(65535)); + wrapper.setSetTpSrcAction(setTpSrcActionBuilder.build()); } - private void prepareActionSetNwTos(SetNwTosActionBuilder setNwTosActionBuilder) { + private void prepareActionSetNwTos(SetNwTosActionCaseBuilder wrapper) { + SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder(); setNwTosActionBuilder.setTos(63); + wrapper.setSetNwTosAction(setNwTosActionBuilder.build()); } private void prepareActionSetNwSrc(List odActions) { // test case for IPv4 SetNwSrcActionBuilder setNwSrcActionBuilderIpv4 = new SetNwSrcActionBuilder(); setNwSrcActionBuilderIpv4.setAddress(prapareIpv4Address("192.168.100.102")); - odActions.add(new ActionBuilder().setAction(setNwSrcActionBuilderIpv4.build()).build()); + odActions.add(new ActionBuilder().setAction(new SetNwSrcActionCaseBuilder().setSetNwSrcAction(setNwSrcActionBuilderIpv4.build()).build()).build()); // test case for IPv6 SetNwSrcActionBuilder setNwSrcActionBuilderIpv6 = new SetNwSrcActionBuilder(); setNwSrcActionBuilderIpv6.setAddress(prapareIpv6Address("2001:0db8:85a3:0000:0000:8a2e:0370:7336")); - odActions.add(new ActionBuilder().setAction(setNwSrcActionBuilderIpv6.build()).build()); + odActions.add(new ActionBuilder().setAction(new SetNwSrcActionCaseBuilder().setSetNwSrcAction(setNwSrcActionBuilderIpv6.build()).build()).build()); } private void prepareActionSetNwDst(List odActions) { // test case for IPv4 + SetNwDstActionBuilder setNwDstActionBuilderIpv4 = new SetNwDstActionBuilder(); setNwDstActionBuilderIpv4.setAddress(prapareIpv4Address("192.168.100.101")); - odActions.add(new ActionBuilder().setAction(setNwDstActionBuilderIpv4.build()).build()); + odActions.add(new ActionBuilder().setAction(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilderIpv4.build()).build()).build()); // test case for IPv6 SetNwDstActionBuilder setNwDstActionBuilderIpv6 = new SetNwDstActionBuilder(); setNwDstActionBuilderIpv6.setAddress(prapareIpv6Address("2001:0db8:85a3:0000:0000:8a2e:0370:7335")); - odActions.add(new ActionBuilder().setAction(setNwDstActionBuilderIpv6.build()).build()); + odActions.add(new ActionBuilder().setAction(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilderIpv6.build()).build()).build()); } private void prepareActionNextHop(List odActions) { // test case for IPv4 SetNextHopActionBuilder setNextHopActionBuilderIpv4 = new SetNextHopActionBuilder(); setNextHopActionBuilderIpv4.setAddress(prapareIpv4Address("192.168.100.100")); - odActions.add(new ActionBuilder().setAction(setNextHopActionBuilderIpv4.build()).build()); + odActions.add(new ActionBuilder().setAction(new SetNextHopActionCaseBuilder().setSetNextHopAction(setNextHopActionBuilderIpv4.build()).build()).build()); // test case for IPv6 SetNextHopActionBuilder setNextHopActionBuilderIpv6 = new SetNextHopActionBuilder(); setNextHopActionBuilderIpv6.setAddress(prapareIpv6Address("2001:0db8:85a3:0000:0000:8a2e:0370:7334")); - odActions.add(new ActionBuilder().setAction(setNextHopActionBuilderIpv6.build()).build()); + odActions.add(new ActionBuilder().setAction(new SetNextHopActionCaseBuilder().setSetNextHopAction(setNextHopActionBuilderIpv6.build()).build()).build()); } private Address prapareIpv4Address(String ipv4Address) { @@ -432,37 +555,53 @@ public class TestToSalConversionsUtils { return ipv6Builder.build(); } - private void prepareActionSetDlType(SetDlTypeActionBuilder setDlTypeActionBuilder) { - setDlTypeActionBuilder.setDlType(new EtherType(513l)); + private void prepareActionSetDlType(SetDlTypeActionCaseBuilder wrapper) { + SetDlTypeActionBuilder setDlTypeActionBuilder = new SetDlTypeActionBuilder(); + setDlTypeActionBuilder.setDlType(new EtherType(513L)); + wrapper.setSetDlTypeAction(setDlTypeActionBuilder.build()); } - private void prepareActionSetDlSrc(SetDlSrcActionBuilder setDlSrcActionBuilder) { + private void prepareActionSetDlSrc(SetDlSrcActionCaseBuilder wrapper) { + SetDlSrcActionBuilder setDlSrcActionBuilder = new SetDlSrcActionBuilder(); setDlSrcActionBuilder.setAddress(new MacAddress("24:77:03:7C:C5:F1")); + wrapper.setSetDlSrcAction(setDlSrcActionBuilder.build()); } - private void prepareActionSetDlDst(SetDlDstActionBuilder setDlDstActionBuilder) { + private void prepareActionSetDlDst(SetDlDstActionCaseBuilder wrapper) { + SetDlDstActionBuilder setDlDstActionBuilder = new SetDlDstActionBuilder(); setDlDstActionBuilder.setAddress(new MacAddress("3C:A9:F4:00:E0:C8")); + wrapper.setSetDlDstAction(setDlDstActionBuilder.build()); } - private void prepareActionPushVlan(PushVlanActionBuilder pushVlanActionBuilder) { + private void prepareActionPushVlan(PushVlanActionCaseBuilder wrapper) { + PushVlanActionBuilder pushVlanActionBuilder = new PushVlanActionBuilder(); pushVlanActionBuilder.setPcp(7); // 3 bits pushVlanActionBuilder.setCfi(new VlanCfi(1)); // 1 bit pushVlanActionBuilder.setVlanId(new VlanId(4095)); pushVlanActionBuilder.setTag(0x8100); // 12 bit + wrapper.setPushVlanAction(pushVlanActionBuilder.build()); } - private void prepareActionOutput(OutputActionBuilder outputActionBuilder) { - outputActionBuilder.setOutputNodeConnector(new Uri("uri1")); + private void prepareActionOutput(OutputActionCaseBuilder wrapper) { + OutputActionBuilder outputActionBuilder = new OutputActionBuilder(); + outputActionBuilder.setOutputNodeConnector(new Uri("1")); + wrapper.setOutputAction(outputActionBuilder.build()); } private Match prepOdMatch(MtchType mt) { MatchBuilder odMatchBuilder = new MatchBuilder(); switch (mt) { case other: + odMatchBuilder.setInPort(new NodeConnectorId("openflow:12:345")); odMatchBuilder.setEthernetMatch(prepEthernetMatch()); odMatchBuilder.setIpMatch(prepIpMatch()); odMatchBuilder.setVlanMatch(prepVlanMatch()); break; + case untagged: + odMatchBuilder.setEthernetMatch(prepEthernetMatch()); + odMatchBuilder.setIpMatch(prepIpMatch()); + odMatchBuilder.setVlanMatch(prepVlanNoneMatch()); + break; case ipv4: odMatchBuilder.setLayer3Match(prepLayer3MatchIpv4()); break; @@ -545,11 +684,20 @@ public class TestToSalConversionsUtils { VlanMatchBuilder vlanMatchBuilder = new VlanMatchBuilder(); VlanIdBuilder vlanIdBuilder = new VlanIdBuilder().setVlanId(new VlanId(0xfff)); - vlanMatchBuilder.setVlanId(vlanIdBuilder.build()); + vlanMatchBuilder.setVlanId(vlanIdBuilder.setVlanIdPresent(true).build()); vlanMatchBuilder.setVlanPcp(new VlanPcp((short) 0x7)); return vlanMatchBuilder.build(); + } + + private VlanMatch prepVlanNoneMatch() { + VlanMatchBuilder vlanMatchBuilder = new VlanMatchBuilder(); + VlanIdBuilder vlanIdBuilder = new VlanIdBuilder(). + setVlanIdPresent(false); + vlanMatchBuilder.setVlanId(vlanIdBuilder.build()); + + return vlanMatchBuilder.build(); } private IpMatch prepIpMatch() { @@ -569,7 +717,7 @@ public class TestToSalConversionsUtils { private EthernetType prepEthType() { EthernetTypeBuilder ethTypeBuild = new EthernetTypeBuilder(); - ethTypeBuild.setType(new EtherType(0xffffl)); + ethTypeBuild.setType(new EtherType(0xffffL)); return ethTypeBuild.build(); }