X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=test-provider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Ftest%2FOpenflowpluginTestCommandProvider.java;h=da2077be716913984b37ff80a381bef35cc64b98;hb=137e4d7d86e8f402f3d52fd0fa162792f9ff60eb;hp=36f52dff74b7ae1e086640d4827639f93a0e5f63;hpb=7b7efba2c5225938d5b1634e20f1879d2238465a;p=openflowplugin.git diff --git a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestCommandProvider.java b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestCommandProvider.java index 36f52dff74..da2077be71 100644 --- a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestCommandProvider.java +++ b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestCommandProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Ericsson , Inc. and others. All rights reserved. + * Copyright (c) 2013, 2015 Ericsson, 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, @@ -8,26 +8,30 @@ package org.opendaylight.openflowplugin.test; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; - +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.eclipse.osgi.framework.console.CommandInterpreter; import org.eclipse.osgi.framework.console.CommandProvider; -import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -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.Ipv6Address; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6FlowLabel; -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.controller.sal.binding.api.NotificationService; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; 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.ControllerActionCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder; @@ -50,6 +54,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti 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.SetFieldCaseBuilder; 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; @@ -106,12 +111,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti 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.action.list.ActionKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.config.rev130819.Flows; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowListener; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder; @@ -127,8 +135,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru 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.flow.types.rev131026.instruction.list.InstructionKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder; @@ -137,7 +145,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherTyp 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.meter.types.rev130918.MeterId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder; 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.EthernetDestinationBuilder; @@ -151,489 +158,667 @@ 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.IpMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TcpFlagsMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder; 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.Ipv4Match; 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; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.TunnelIpv4MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder; 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.protocol.match.fields.PbbBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder; -import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.node.error.service.rev140410.NodeErrorListener; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; -import org.opendaylight.yangtools.yang.common.RpcResult; import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey; +@SuppressWarnings("checkstyle:MethodName") public class OpenflowpluginTestCommandProvider implements CommandProvider { private static final Logger LOG = LoggerFactory.getLogger(OpenflowpluginTestCommandProvider.class); - private DataBrokerService dataBrokerService; - private ProviderContext pc; + private DataBroker dataBroker; private final BundleContext ctx; - private FlowBuilder testFlow; - private NodeBuilder testNode; - private final String originalFlowName = "Foo"; - private final String updatedFlowName = "Bar"; - - public OpenflowpluginTestCommandProvider(BundleContext ctx) { + private static final String ORIGINAL_FLOW_NAME = "Foo"; + private static final String UPDATED_FLOW_NAME = "Bar"; + private static final String IPV4_PREFIX = "10.0.0.1/24"; + private static final String DEST_MAC_ADDRESS = "ff:ff:ff:ff:ff:ff"; + private static final String SRC_MAC_ADDRESS = "00:00:00:00:23:ae"; + private final SalFlowListener flowEventListener = new FlowEventListenerLoggingImpl(); + private final NodeErrorListener nodeErrorListener = new NodeErrorListenerLoggingImpl(); + private NotificationService notificationService; + + public OpenflowpluginTestCommandProvider(final BundleContext ctx) { this.ctx = ctx; } - public void onSessionInitiated(ProviderContext session) { - pc = session; - dataBrokerService = session.getSALService(DataBrokerService.class); + public void onSessionInitiated(final ProviderContext session) { + notificationService = session.getSALService(NotificationService.class); + // For switch events + notificationService.registerNotificationListener(flowEventListener); + notificationService.registerNotificationListener(nodeErrorListener); + dataBroker = session.getSALService(DataBroker.class); ctx.registerService(CommandProvider.class.getName(), this, null); createTestFlow(createTestNode(null), null, null); } - private NodeBuilder createTestNode(String nodeId) { + private NodeBuilder createTestNode(final String nodeId) { + String localNodeId; + if (nodeId == null) { - nodeId = OpenflowpluginTestActivator.NODE_ID; + localNodeId = OpenflowpluginTestActivator.NODE_ID; + } else { + localNodeId = nodeId; } - NodeRef nodeOne = createNodeRef(nodeId); - NodeBuilder builder = new NodeBuilder(); - builder.setId(new NodeId(nodeId)); - builder.setKey(new NodeKey(builder.getId())); - testNode = builder; + + final NodeBuilder builder = new NodeBuilder(); + builder.setId(new NodeId(localNodeId)); + builder.withKey(new NodeKey(builder.getId())); return builder; } - private InstanceIdentifier nodeBuilderToInstanceId(NodeBuilder node) { - return InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()).toInstance(); + private InstanceIdentifier nodeBuilderToInstanceId(final NodeBuilder node) { + return InstanceIdentifier.create(Nodes.class).child(Node.class, node.key()); } - private FlowBuilder createTestFlow(NodeBuilder nodeBuilder, String flowTypeArg, String tableId) { + private FlowBuilder createTestFlow(final NodeBuilder nodeBuilder, final String flowTypeArg, final String tableId) { + final long TEST_ID = 123; - FlowBuilder flow = new FlowBuilder(); - long id = 123; + final FlowBuilder flow = new FlowBuilder(); + long id = TEST_ID; String flowType = flowTypeArg; if (flowType == null) { flowType = "f1"; } + flow.setPriority(2); + switch (flowType) { - case "f1": - id += 1; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createDecNwTtlInstructions().build()); - break; - case "f2": - id += 2; - flow.setMatch(createMatch2().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f3": - id += 3; - flow.setMatch(createMatch3().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f4": - id += 4; - flow.setMatch(createEthernetMatch().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f5": - id += 5; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction().build()); - break; - case "f6": - id += 6; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createGotoTableInstructions().build()); - break; - case "f7": - id += 7; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createMeterInstructions().build()); - break; - case "f8": - id += 8; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction1().build()); - break; - case "f9": - id += 9; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction2().build()); - break; - case "f10": - id += 10; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction3().build()); - break; - case "f11": - id += 11; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction4().build()); - break; - case "f12": - id += 12; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction5().build()); - break; - case "f13": - id += 13; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction6().build()); - break; - case "f14": - id += 14; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction7().build()); - break; - case "f15": - id += 15; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction8().build()); - break; - case "f16": - id += 16; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction9().build()); - break; - case "f17": - id += 17; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction10().build()); - break; - case "f18": - id += 18; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction11().build()); - break; - case "f19": - id += 19; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction12().build()); - break; - case "f20": - id += 20; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction13().build()); - break; - case "f21": - id += 21; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction14().build()); - break; - case "f22": - id += 22; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction15().build()); - break; - case "f23": - id += 23; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction16().build()); - break; - case "f24": - id += 24; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction17().build()); - break; - case "f25": - id += 25; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction18().build()); - break; - case "f26": - id += 26; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction19().build()); - break; - case "f27": - id += 27; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createMetadataInstructions().build()); - break; - case "f28": - id += 28; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction20().build()); - break; - case "f29": - id += 29; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction21().build()); - break; - case "f30": - id += 30; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction22().build()); - break; - case "f31": - id += 31; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction23().build()); - break; - case "f32": - id += 32; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction24().build()); - break; - case "f33": - id += 33; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction25().build()); - break; - case "f34": - id += 34; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction26().build()); - break; - case "f35": - id += 35; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction27().build()); - break; - case "f36": - id += 36; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction28().build()); - break; - case "f37": - id += 37; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction29().build()); - break; - case "f38": - id += 38; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction30().build()); - break; - case "f39": - id += 39; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction31().build()); - break; - case "f40": - id += 40; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction32().build()); - break; - case "f41": - id += 41; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction33().build()); - break; - case "f42": - id += 42; - flow.setMatch(createMatch1().build()); - flow.setInstructions(createAppyActionInstruction34().build()); - break; - case "f43": - id += 43; - flow.setMatch(createICMPv6Match().build()); - flow.setInstructions(createDecNwTtlInstructions().build()); - break; - case "f44": - id += 44; - flow.setMatch(createInphyportMatch().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f45": - id += 45; - flow.setMatch(createMetadataMatch().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f46": - id += 46; - flow.setMatch(createL3IPv6Match().build()); - flow.setInstructions(createDecNwTtlInstructions().build()); - break; - case "f47": - id += 47; - flow.setMatch(createL4SCTPMatch().build()); - flow.setInstructions(createAppyActionInstruction().build()); - break; - case "f48": - id += 48; - flow.setMatch(createTunnelIDMatch().build()); - flow.setInstructions(createGotoTableInstructions().build()); - break; - case "f49": - id += 49; - flow.setMatch(createVlanMatch().build()); - flow.setInstructions(createMeterInstructions().build()); - break; - case "f50": - id += 50; - flow.setMatch(createPbbMatch().build()); - flow.setInstructions(createMeterInstructions().build()); - break; - case "f51": - id += 51; - flow.setMatch(createVlanMatch().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f52": - id += 52; - flow.setMatch(createL4TCPMatch().build()); - flow.setInstructions(createDropInstructions().build()); - break; - - case "f53": - id += 53; - flow.setMatch(createL4UDPMatch().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f54": - id += 54; - flow.setMatch(new MatchBuilder().build()); - flow.setInstructions(createSentToControllerInstructions().build()); - break; - case "f55": - id += 55; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createDropInstructions().build()); - break; - case "f56": - id += 56; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createOutputInstructions("INPORT", 10).build()); - break; - case "f57": - id += 57; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createOutputInstructions("FLOOD", 20).build()); - break; - case "f58": - id += 58; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createOutputInstructions("ALL", 30).build()); - break; - case "f59": - id += 59; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createOutputInstructions("NORMAL" , 40).build()); - break; - case "f60": - id += 60; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createOutputInstructions("LOCAL" , 50).build()); - break; - case "f61": - id += 61; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createOutputInstructions("TABLE", 60).build()); - break; - case "f62": - id += 62; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createOutputInstructions("NONE" , 70).build()); - break; - case "f63": - id += 63; - flow.setMatch(createToSMatch().build()); - flow.setInstructions(createStripVlanInstructions().build()); - flow.setBarrier(Boolean.TRUE); - break; - default: - LOG.warn("flow type not understood: {}", flowType); + case "f1": + id += 1; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createDecNwTtlInstructions().build()); + break; + case "f2": + id += 2; + flow.setMatch(createMatch2().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f3": + id += 3; + flow.setMatch(createMatch3().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f4": + id += 4; + flow.setMatch(createEthernetMatch().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f5": + id += 5; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction().build()); + break; + case "f6": + id += 6; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createGotoTableInstructions().build()); + break; + case "f7": + id += 7; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createMeterInstructions().build()); + break; + case "f8": + id += 8; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction1().build()); + break; + case "f9": + id += 9; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction2().build()); + break; + case "f10": + id += 10; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction3().build()); + break; + case "f11": + id += 11; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction4().build()); + break; + case "f12": + id += 12; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction5().build()); + break; + case "f13": + id += 13; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction6().build()); + break; + case "f14": + id += 14; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction7().build()); + break; + case "f15": + id += 15; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction8().build()); + break; + case "f16": + id += 16; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction9().build()); + break; + case "f17": + id += 17; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction10().build()); + break; + case "f18": + id += 18; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction11().build()); + break; + case "f19": + id += 19; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction12().build()); + break; + case "f20": + id += 20; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction13().build()); + break; + case "f21": + id += 21; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction14().build()); + break; + case "f22": + id += 22; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction15().build()); + break; + case "f23": + id += 23; + // f23 can be used as test-case for generating error notification + // if the particular group is not configured - tested + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction16().build()); + break; + case "f24": + id += 24; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction17().build()); + break; + case "f25": + id += 25; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction18().build()); + break; + case "f26": + id += 26; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction19().build()); + break; + case "f27": + id += 27; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createMetadataInstructions().build()); + break; + case "f28": + id += 28; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction20().build()); + break; + case "f29": + id += 29; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction21().build()); + break; + case "f30": + id += 30; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction22().build()); + break; + case "f31": + id += 31; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction23(nodeBuilder.getId()).build()); + break; + case "f32": + id += 32; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction24().build()); + break; + case "f33": + id += 33; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction25().build()); + break; + case "f34": + id += 34; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction26().build()); + break; + case "f35": + id += 35; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction27().build()); + break; + case "f36": + id += 36; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction28().build()); + break; + case "f37": + id += 37; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction29().build()); + break; + case "f38": + id += 38; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction30().build()); + break; + case "f39": + id += 39; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction31().build()); + break; + case "f40": + id += 40; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction32().build()); + break; + case "f41": + id += 41; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction33().build()); + break; + case "f42": + id += 42; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction34().build()); + break; + case "f43": + id += 43; + flow.setMatch(createICMPv6Match().build()); + flow.setInstructions(createDecNwTtlInstructions().build()); + break; + case "f44": + id += 44; + flow.setMatch(createInphyportMatch(nodeBuilder.getId()).build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f45": + id += 45; + flow.setMatch(createMetadataMatch().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f46": + id += 46; + flow.setMatch(createL3IPv6Match().build()); + flow.setInstructions(createDecNwTtlInstructions().build()); + break; + case "f47": + id += 47; + flow.setMatch(createL4SCTPMatch().build()); + flow.setInstructions(createAppyActionInstruction().build()); + break; + case "f48": + id += 48; + flow.setMatch(createTunnelIDMatch().build()); + flow.setInstructions(createGotoTableInstructions().build()); + break; + case "f49": + id += 49; + flow.setMatch(createVlanMatch().build()); + flow.setInstructions(createMeterInstructions().build()); + break; + case "f50": + id += 50; + flow.setMatch(createPbbMatch().build()); + flow.setInstructions(createMeterInstructions().build()); + break; + case "f51": + id += 51; + flow.setMatch(createVlanMatch().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f52": + id += 52; + flow.setMatch(createL4TCPMatch().build()); + flow.setInstructions(createDropInstructions().build()); + break; + + case "f53": + id += 53; + flow.setMatch(createL4UDPMatch().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f54": + id += 54; + flow.setMatch(new MatchBuilder().build()); + flow.setInstructions(createSentToControllerInstructions().build()); + flow.setPriority(0); + break; + case "f55": + id += 55; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f56": + id += 56; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions("INPORT", 10).build()); + break; + case "f57": + id += 57; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions("FLOOD", 20).build()); + break; + case "f58": + id += 58; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions("ALL", 30).build()); + break; + case "f59": + id += 59; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions("NORMAL", 40).build()); + break; + case "f60": + id += 60; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions("LOCAL", 50).build()); + break; + case "f61": + id += 61; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions("TABLE", 60).build()); + break; + case "f62": + id += 62; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions("NONE", 70).build()); + break; + case "f63": + id += 63; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createStripVlanInstructions().build()); + flow.setBarrier(Boolean.TRUE); + break; + case "f64": + id += 64; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction35().build()); + break; + case "f65": + id += 65; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction36().build()); + break; + case "f66": + id += 66; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction37().build()); + break; + case "f67": + id += 67; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createAppyActionInstruction38().build()); + break; + case "f68": + id += 68; + flow.setMatch(createL4TCPMatch().build()); + flow.setInstructions(createAppyActionInstruction39().build()); + break; + case "f69": + id += 69; + flow.setMatch(createL4UDPMatch().build()); + flow.setInstructions(createAppyActionInstruction40().build()); + break; + case "f70": + id += 70; + flow.setMatch(createL4SCTPMatch().build()); + flow.setInstructions(createAppyActionInstruction41().build()); + break; + case "f71": + id += 71; + flow.setMatch(createICMPv4Match().build()); + flow.setInstructions(createAppyActionInstruction42().build()); + break; + case "f72": + id += 72; + flow.setMatch(createArpMatch().build()); + flow.setInstructions(createAppyActionInstruction43().build()); + break; + case "f73": + id += 73; + flow.setMatch(createL3IPv6Match().build()); + flow.setInstructions(createAppyActionInstruction44().build()); + break; + case "f74": + id += 74; + flow.setMatch(createICMPv6Match().build()); + flow.setInstructions(createAppyActionInstruction45().build()); + break; + case "f75": + id += 75; + flow.setMatch(createMplsMatch().build()); + flow.setInstructions(createAppyActionInstruction46().build()); + break; + case "f76": + id += 76; + flow.setMatch(createPbbMatch().build()); + flow.setInstructions(createAppyActionInstruction47().build()); + break; + case "f77": + id += 77; + flow.setMatch(createTunnelIDMatch().build()); + flow.setInstructions(createAppyActionInstruction48().build()); + break; + case "f78": + id += 78; + flow.setMatch(createMatch33().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f79": + id += 79; + flow.setMatch(createICMPv6Match1().build()); + flow.setInstructions(createDecNwTtlInstructions().build()); + break; + case "f80": + id += 80; + flow.setMatch(createVlanMatch().build()); + flow.setInstructions(createAppyActionInstruction88().build()); + break; + case "f81": + id += 81; + flow.setMatch(createLLDPMatch().build()); + flow.setInstructions(createSentToControllerInstructions().build()); + break; + case "f82": + id += 82; + flow.setMatch(createToSMatch().build()); + flow.setInstructions(createOutputInstructions().build()); + break; + case "f83": + // Test TCP_Flag Match + id += 83; + flow.setMatch(createTcpFlagMatch().build()); + flow.setInstructions(createDropInstructions().build()); + break; + case "f84": + id += 84; + // match vlan=10,dl_vlan_pcp=3 + flow.setMatch(createVlanMatch().build()); + // vlan_pcp=4 + flow.setInstructions(createAppyActionInstruction88().build()); + break; + case "f85": + // Test Tunnel IPv4 Src (e.g. set_field:172.16.100.200->tun_src) + id += 85; + flow.setMatch(createMatch3().build()); + flow.setInstructions(createTunnelIpv4SrcInstructions().build()); + break; + case "f86": + // Test Tunnel IPv4 Dst (e.g. set_field:172.16.100.100->tun_dst) + id += 86; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createTunnelIpv4DstInstructions().build()); + break; + default: + LOG.warn("flow type not understood: {}", flowType); } - FlowKey key = new FlowKey(new FlowId(id)); - if(null == flow.isBarrier()) - { + final FlowKey key = new FlowKey(new FlowId(Long.toString(id))); + if (null == flow.isBarrier()) { flow.setBarrier(Boolean.FALSE); } - // flow.setBufferId(new Long(12)); - BigInteger value = new BigInteger("10", 10); - BigInteger outputPort = new BigInteger("65535", 10); - flow.setCookie(value); - flow.setCookieMask(value); + final BigInteger value = BigInteger.valueOf(10); + flow.setCookie(new FlowCookie(value)); + flow.setCookieMask(new FlowCookie(value)); flow.setHardTimeout(0); flow.setIdleTimeout(0); flow.setInstallHw(false); flow.setStrict(false); flow.setContainerName(null); - flow.setFlags(new FlowModFlags(false, false, false, false, false)); - flow.setId(new FlowId(new Long(12))); + flow.setFlags(new FlowModFlags(false, false, false, false, true)); + flow.setId(new FlowId("12")); flow.setTableId(getTableId(tableId)); - flow.setOutGroup(new Long(2)); - // set outport to OFPP_NONE (65535) to disable remove restriction for flow - flow.setOutPort(outputPort); - flow.setKey(key); - flow.setPriority(2); - flow.setFlowName(originalFlowName + "X" + flowType); - testFlow = flow; + flow.withKey(key); + flow.setFlowName(ORIGINAL_FLOW_NAME + "X" + flowType); + return flow; + } + + + private FlowBuilder createTestFlowPerfTest(final String flowTypeArg, final String tableId, final int id) { + final FlowBuilder flow = new FlowBuilder(); + String flowType = flowTypeArg; + int flowId = id; + + if (flowType == null) { + flowType = "f1"; + } + + flow.setPriority(flowId); + + switch (flowType) { + case "f1": + flowId += 1; + flow.setMatch(createMatch1().build()); + flow.setInstructions(createDecNwTtlInstructions().build()); + break; + default: + LOG.warn("flow type not understood: {}", flowType); + } + + final FlowKey key = new FlowKey(new FlowId(Long.toString(flowId))); + if (null == flow.isBarrier()) { + flow.setBarrier(Boolean.FALSE); + } + final BigInteger value = BigInteger.valueOf(10); + flow.setCookie(new FlowCookie(value)); + flow.setCookieMask(new FlowCookie(value)); + flow.setHardTimeout(0); + flow.setIdleTimeout(0); + flow.setInstallHw(false); + flow.setStrict(false); + flow.setContainerName(null); + flow.setFlags(new FlowModFlags(false, false, false, false, true)); + flow.setId(new FlowId("12")); + flow.setTableId(getTableId(tableId)); + + flow.withKey(key); + flow.setFlowName(ORIGINAL_FLOW_NAME + "X" + flowType); + return flow; + } + + private FlowBuilder createtablemiss() { + final FlowBuilder flow = new FlowBuilder(); + final long id = 456; + final MatchBuilder matchBuilder = new MatchBuilder(); + flow.setMatch(matchBuilder.build()); + flow.setInstructions(createSentToControllerInstructions().build()); + flow.setPriority(0); + flow.setTableId((short) 0); + final FlowKey key = new FlowKey(new FlowId(Long.toString(id))); + flow.withKey(key); return flow; } - - - private short getTableId(String tableId) - { - short table = 2; - try - { + + private short getTableId(final String tableId) { + final short TABLE_ID = 2; + short table = TABLE_ID; + + if (tableId == null) { + return table; + } + + try { table = Short.parseShort(tableId); - } - catch(Exception ex) - { - // ignore exception and continue with default value - } - - return table; - + } catch (NumberFormatException ex) { + LOG.info("Parsing String tableId {} failed. Continuing with default tableId {}.", + tableId, table); + } + return table; } - /** - * @return - */ private static InstructionsBuilder createDecNwTtlInstructions() { - DecNwTtlBuilder ta = new DecNwTtlBuilder(); - DecNwTtl decNwTtl = ta.build(); - ActionBuilder ab = new ActionBuilder(); + final DecNwTtlBuilder ta = new DecNwTtlBuilder(); + final DecNwTtl decNwTtl = ta.build(); + final ActionBuilder ab = new ActionBuilder(); ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(decNwTtl).build()); - + ab.withKey(new ActionKey(0)); // Add our drop action to a list - List actionList = new ArrayList(); + final List actionList = new ArrayList<>(); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); - ib.setKey(new InstructionKey(0)); + ib.withKey(new InstructionKey(0)); ib.setOrder(0); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); instructions.add(ib.build()); + ib.withKey(new InstructionKey(0)); isb.setInstruction(instructions); return isb; } - /** - * @return - */ private static InstructionsBuilder createMeterInstructions() { - MeterBuilder aab = new MeterBuilder(); - aab.setMeterId(new MeterId(new Long(1))); + final MeterBuilder aab = new MeterBuilder(); + aab.setMeterId(new MeterId(1L)); - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new MeterCaseBuilder().setMeter(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -641,16 +826,17 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createMetadataInstructions() { - WriteMetadataBuilder aab = new WriteMetadataBuilder(); - aab.setMetadata(new BigInteger("10", 10)); - aab.setMetadataMask(new BigInteger("12", 10)); + final WriteMetadataBuilder aab = new WriteMetadataBuilder(); + aab.setMetadata(BigInteger.valueOf(10)); + aab.setMetadataMask(BigInteger.valueOf(10)); - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new WriteMetadataCaseBuilder().setWriteMetadata(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -658,41 +844,43 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createGotoTableInstructions() { - GoToTableBuilder aab = new GoToTableBuilder(); - aab.setTableId((short) 2); + final GoToTableBuilder aab = new GoToTableBuilder(); + aab.setTableId((short) 5); - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new GoToTableCaseBuilder().setGoToTable(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; } private static InstructionsBuilder createDropInstructions() { - DropActionBuilder dab = new DropActionBuilder(); - DropAction dropAction = dab.build(); - ActionBuilder ab = new ActionBuilder(); + final DropActionBuilder dab = new DropActionBuilder(); + final DropAction dropAction = dab.build(); + final ActionBuilder ab = new ActionBuilder(); ab.setAction(new DropActionCaseBuilder().setDropAction(dropAction).build()); - + ab.withKey(new ActionKey(0)); // Add our drop action to a list - List actionList = new ArrayList(); + final List actionList = new ArrayList<>(); actionList.add(ab.build()); - + ab.withKey(new ActionKey(0)); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -700,23 +888,25 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); - ControllerActionBuilder controller = new ControllerActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ControllerActionBuilder controller = new ControllerActionBuilder(); controller.setMaxLength(5); ab.setAction(new ControllerActionCaseBuilder().setControllerAction(controller.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -724,140 +914,176 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction1() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - OutputActionBuilder output = new OutputActionBuilder(); + final OutputActionBuilder output = new OutputActionBuilder(); output.setMaxLength(56); - Uri value = new Uri("PCEP"); + final Uri value = new Uri("PCEP"); output.setOutputNodeConnector(value); ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; } - - private static InstructionsBuilder createSentToControllerInstructions() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); - OutputActionBuilder output = new OutputActionBuilder(); - output.setMaxLength(56); - Uri value = new Uri("CONTROLLER"); + private static InstructionsBuilder createOutputInstructions() { + + // test case for Output Port works if the particular port exists + // this particular test-case is for Port : 1 + // tested as (addMDFlow openflow: f82) + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final OutputActionBuilder output = new OutputActionBuilder(); + + final Uri value = new Uri("1"); output.setOutputNodeConnector(value); ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); ab.setOrder(0); - ab.setKey(new ActionKey(0)); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); ib.setOrder(0); - ib.setKey(new InstructionKey(0)); + ib.withKey(new InstructionKey(0)); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; } - - private static InstructionsBuilder createOutputInstructions(String outputType, int outputValue) { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + private static InstructionsBuilder createOutputInstructions(final String outputType, final int outputValue) { + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - OutputActionBuilder output = new OutputActionBuilder(); + final OutputActionBuilder output = new OutputActionBuilder(); output.setMaxLength(outputValue); - Uri value = new Uri(outputType); + final Uri value = new Uri(outputType); output.setOutputNodeConnector(value); ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); ab.setOrder(0); - ab.setKey(new ActionKey(0)); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); ib.setOrder(0); - ib.setKey(new InstructionKey(0)); + ib.withKey(new InstructionKey(0)); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; } - + + private static InstructionsBuilder createSentToControllerInstructions() { + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + + final OutputActionBuilder output = new OutputActionBuilder(); + output.setMaxLength(Integer.valueOf(0xffff)); + final Uri value = new Uri(OutputPortValues.CONTROLLER.toString()); + output.setOutputNodeConnector(value); + ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build()); + ab.setOrder(0); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + // Create an Apply Action + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + // Wrap our Apply Action in an Instruction + final InstructionBuilder ib = new InstructionBuilder(); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + ib.setOrder(0); + ib.withKey(new InstructionKey(0)); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createStripVlanInstructions() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - StripVlanActionBuilder stripActionBuilder = new StripVlanActionBuilder(); + final StripVlanActionBuilder stripActionBuilder = new StripVlanActionBuilder(); ab.setAction(new StripVlanActionCaseBuilder().setStripVlanAction(stripActionBuilder.build()).build()); ab.setOrder(0); - ab.setKey(new ActionKey(0)); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); ib.setOrder(0); - ib.setKey(new InstructionKey(0)); + ib.withKey(new InstructionKey(0)); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; } - - + private static InstructionsBuilder createAppyActionInstruction2() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - PushMplsActionBuilder push = new PushMplsActionBuilder(); - push.setEthernetType(new Integer(0x8847)); + final PushMplsActionBuilder push = new PushMplsActionBuilder(); + push.setEthernetType(Integer.valueOf(0x8847)); ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -865,24 +1091,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction3() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - PushPbbActionBuilder pbb = new PushPbbActionBuilder(); - pbb.setEthernetType(new Integer(0x88E7)); + final PushPbbActionBuilder pbb = new PushPbbActionBuilder(); + pbb.setEthernetType(Integer.valueOf(0x88E7)); ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -890,25 +1118,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction4() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - PushVlanActionBuilder vlan = new PushVlanActionBuilder(); - vlan.setEthernetType(new Integer(0x8100)); + final PushVlanActionBuilder vlan = new PushVlanActionBuilder(); + vlan.setEthernetType(Integer.valueOf(0x8100)); ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -916,24 +1146,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction5() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetDlDstActionBuilder setdl = new SetDlDstActionBuilder(); + final SetDlDstActionBuilder setdl = new SetDlDstActionBuilder(); setdl.setAddress(new MacAddress("00:05:b9:7c:81:5f")); ab.setAction(new SetDlDstActionCaseBuilder().setSetDlDstAction(setdl.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -941,25 +1173,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction6() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetDlSrcActionBuilder src = new SetDlSrcActionBuilder(); + final SetDlSrcActionBuilder src = new SetDlSrcActionBuilder(); src.setAddress(new MacAddress("00:05:b9:7c:81:5f")); ab.setAction(new SetDlSrcActionCaseBuilder().setSetDlSrcAction(src.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -967,25 +1201,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction7() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetVlanIdActionBuilder vl = new SetVlanIdActionBuilder(); - VlanId a = new VlanId(4000); + final SetVlanIdActionBuilder vl = new SetVlanIdActionBuilder(); + final VlanId a = new VlanId(4000); vl.setVlanId(a); ab.setAction(new SetVlanIdActionCaseBuilder().setSetVlanIdAction(vl.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -993,25 +1229,56 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction8() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetVlanPcpActionBuilder pcp = new SetVlanPcpActionBuilder(); - VlanPcp pcp1 = new VlanPcp((short) 2); + final SetVlanPcpActionBuilder pcp = new SetVlanPcpActionBuilder(); + final VlanPcp pcp1 = new VlanPcp((short) 2); pcp.setVlanPcp(pcp1); ab.setAction(new SetVlanPcpActionCaseBuilder().setSetVlanPcpAction(pcp.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction88() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + + final SetVlanPcpActionBuilder pcp = new SetVlanPcpActionBuilder(); + // the code point is a 3-bit(0-7) field representing the frame priority level + final VlanPcp pcp1 = new VlanPcp((short) 4); + pcp.setVlanPcp(pcp1); + ab.setAction(new SetVlanPcpActionCaseBuilder().setSetVlanPcpAction(pcp.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + // Create an Apply Action + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + // Wrap our Apply Action in an Instruction + final InstructionBuilder ib = new InstructionBuilder(); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1019,23 +1286,25 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction9() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - CopyTtlInBuilder ttlin = new CopyTtlInBuilder(); - ab.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build()); + final CopyTtlInBuilder ttlin = new CopyTtlInBuilder(); + ab.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1043,23 +1312,25 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction10() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder(); + final CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder(); ab.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1067,23 +1338,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction11() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - DecMplsTtlBuilder mpls = new DecMplsTtlBuilder(); + final DecMplsTtlBuilder mpls = new DecMplsTtlBuilder(); ab.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + ib.withKey(new InstructionKey(0)); + ib.setOrder(0); - // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + // Put our Instruction in a list of Instruction + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1091,24 +1365,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction12() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - DecNwTtlBuilder nwttl = new DecNwTtlBuilder(); + final DecNwTtlBuilder nwttl = new DecNwTtlBuilder(); ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1116,24 +1392,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction13() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - DropActionBuilder drop = new DropActionBuilder(); + final DropActionBuilder drop = new DropActionBuilder(); ab.setAction(new DropActionCaseBuilder().setDropAction(drop.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1141,23 +1419,25 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction14() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - FloodActionBuilder fld = new FloodActionBuilder(); + final FloodActionBuilder fld = new FloodActionBuilder(); ab.setAction(new FloodActionCaseBuilder().setFloodAction(fld.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1165,23 +1445,25 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction15() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - FloodAllActionBuilder fldall = new FloodAllActionBuilder(); + final FloodAllActionBuilder fldall = new FloodAllActionBuilder(); ab.setAction(new FloodAllActionCaseBuilder().setFloodAllAction(fldall.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1189,26 +1471,28 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction16() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - GroupActionBuilder groupActionB = new GroupActionBuilder(); + final GroupActionBuilder groupActionB = new GroupActionBuilder(); groupActionB.setGroupId(1L); groupActionB.setGroup("0"); ab.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1216,23 +1500,25 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction17() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - HwPathActionBuilder hwPathB = new HwPathActionBuilder(); + final HwPathActionBuilder hwPathB = new HwPathActionBuilder(); ab.setAction(new HwPathActionCaseBuilder().setHwPathAction(hwPathB.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1240,24 +1526,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction18() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - LoopbackActionBuilder loopbackActionBuilder = new LoopbackActionBuilder(); + final LoopbackActionBuilder loopbackActionBuilder = new LoopbackActionBuilder(); ab.setAction(new LoopbackActionCaseBuilder().setLoopbackAction(loopbackActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1265,24 +1553,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction19() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder(); + final PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder(); popMplsActionBuilder.setEthernetType(0XB); ab.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1290,23 +1580,25 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction20() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder(); + final PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder(); ab.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1314,24 +1606,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction21() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - PopVlanActionBuilder popVlanActionBuilder = new PopVlanActionBuilder(); + final PopVlanActionBuilder popVlanActionBuilder = new PopVlanActionBuilder(); ab.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(popVlanActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1339,50 +1633,54 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction22() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetDlTypeActionBuilder setDlTypeActionBuilder = new SetDlTypeActionBuilder(); + final SetDlTypeActionBuilder setDlTypeActionBuilder = new SetDlTypeActionBuilder(); setDlTypeActionBuilder.setDlType(new EtherType(8L)); ab.setAction(new SetDlTypeActionCaseBuilder().setSetDlTypeAction(setDlTypeActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; } - private static InstructionsBuilder createAppyActionInstruction23() { + private static InstructionsBuilder createAppyActionInstruction23(final NodeId nodeId) { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); - setFieldBuilder.setInPort(new Long(2)); + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + setFieldBuilder.setInPort(new NodeConnectorId(nodeId + ":2")); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1390,25 +1688,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction24() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder(); + final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder(); setMplsTtlActionBuilder.setMplsTtl((short) 0X1); ab.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1416,28 +1716,30 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction25() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetNextHopActionBuilder setNextHopActionBuilder = new SetNextHopActionBuilder(); - Ipv4Builder ipnext = new Ipv4Builder(); - Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.1/24"); + final SetNextHopActionBuilder setNextHopActionBuilder = new SetNextHopActionBuilder(); + final Ipv4Builder ipnext = new Ipv4Builder(); + final Ipv4Prefix prefix = new Ipv4Prefix(IPV4_PREFIX); ipnext.setIpv4Address(prefix); setNextHopActionBuilder.setAddress(ipnext.build()); ab.setAction(new SetNextHopActionCaseBuilder().setSetNextHopAction(setNextHopActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1445,28 +1747,30 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction26() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetNwDstActionBuilder setNwDstActionBuilder = new SetNwDstActionBuilder(); - Ipv4Builder ipdst = new Ipv4Builder(); - Ipv4Prefix prefixdst = new Ipv4Prefix("10.0.0.21/24"); + final SetNwDstActionBuilder setNwDstActionBuilder = new SetNwDstActionBuilder(); + final Ipv4Builder ipdst = new Ipv4Builder(); + final Ipv4Prefix prefixdst = new Ipv4Prefix("10.0.0.21/24"); ipdst.setIpv4Address(prefixdst); setNwDstActionBuilder.setAddress(ipdst.build()); ab.setAction(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1474,28 +1778,30 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction27() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetNwSrcActionBuilder setNwsrcActionBuilder = new SetNwSrcActionBuilder(); - Ipv4Builder ipsrc = new Ipv4Builder(); - Ipv4Prefix prefixsrc = new Ipv4Prefix("10.0.23.21/24"); + final SetNwSrcActionBuilder setNwsrcActionBuilder = new SetNwSrcActionBuilder(); + final Ipv4Builder ipsrc = new Ipv4Builder(); + final Ipv4Prefix prefixsrc = new Ipv4Prefix("10.0.23.21/24"); ipsrc.setIpv4Address(prefixsrc); setNwsrcActionBuilder.setAddress(ipsrc.build()); ab.setAction(new SetNwSrcActionCaseBuilder().setSetNwSrcAction(setNwsrcActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1503,24 +1809,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction28() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder(); + final SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder(); setNwTosActionBuilder.setTos(8); ab.setAction(new SetNwTosActionCaseBuilder().setSetNwTosAction(setNwTosActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1528,25 +1836,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction29() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder(); + final SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder(); setNwTtlActionBuilder.setNwTtl((short) 1); ab.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1554,24 +1864,26 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction30() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder(); + final SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder(); setQueueActionBuilder.setQueueId(1L); - ab.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build()); + ab.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1579,25 +1891,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction31() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder(); + final SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder(); setTpDstActionBuilder.setPort(new PortNumber(109)); ab.setAction(new SetTpDstActionCaseBuilder().setSetTpDstAction(setTpDstActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1605,25 +1919,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction32() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder(); + final SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder(); setTpSrcActionBuilder.setPort(new PortNumber(109)); ab.setAction(new SetTpSrcActionCaseBuilder().setSetTpSrcAction(setTpSrcActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1631,25 +1947,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction33() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SetVlanCfiActionBuilder setVlanCfiActionBuilder = new SetVlanCfiActionBuilder(); + final SetVlanCfiActionBuilder setVlanCfiActionBuilder = new SetVlanCfiActionBuilder(); setVlanCfiActionBuilder.setVlanCfi(new VlanCfi(2)); ab.setAction(new SetVlanCfiActionCaseBuilder().setSetVlanCfiAction(setVlanCfiActionBuilder.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; @@ -1657,148 +1975,846 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { private static InstructionsBuilder createAppyActionInstruction34() { - List actionList = new ArrayList(); - ActionBuilder ab = new ActionBuilder(); + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); - SwPathActionBuilder swPathAction = new SwPathActionBuilder(); + final SwPathActionBuilder swPathAction = new SwPathActionBuilder(); ab.setAction(new SwPathActionCaseBuilder().setSwPathAction(swPathAction.build()).build()); + ab.withKey(new ActionKey(0)); actionList.add(ab.build()); // Create an Apply Action - ApplyActionsBuilder aab = new ApplyActionsBuilder(); + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction - InstructionBuilder ib = new InstructionBuilder(); + final InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions - InstructionsBuilder isb = new InstructionsBuilder(); - List instructions = new ArrayList(); + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; } - /** - * @return - */ - private static MatchBuilder createMatch1() { - MatchBuilder match = new MatchBuilder(); - Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); - Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.1/24"); - ipv4Match.setIpv4Destination(prefix); - Ipv4Match i4m = ipv4Match.build(); - match.setLayer3Match(i4m); + private static InstructionsBuilder createAppyActionInstruction35() { - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); - ethTypeBuilder.setType(new EtherType(0x0800L)); - eth.setEthernetType(ethTypeBuilder.build()); - match.setEthernetMatch(eth.build()); - return match; + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + final ActionBuilder ab2 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder(); + + // Ethernet + final EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder(); + final EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder(); + ethSourceBuilder.setAddress(new MacAddress("00:00:00:00:00:01")); + final EthernetMatchBuilder ethernetMatch1 = new EthernetMatchBuilder(); + final EthernetDestinationBuilder ethDestBuilder = new EthernetDestinationBuilder(); + ethDestBuilder.setAddress(new MacAddress("00:00:00:00:00:02")); + final EthernetMatchBuilder ethernetMatch2 = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + ethTypeBuilder.setType(new EtherType(0x86ddL)); + + ethernetMatch.setEthernetSource(ethSourceBuilder.build()); + ethernetMatch1.setEthernetDestination(ethDestBuilder.build()); + ethernetMatch2.setEthernetType(ethTypeBuilder.build()); + setFieldBuilder.setEthernetMatch(ethernetMatch.build()); + setFieldBuilder1.setEthernetMatch(ethernetMatch1.build()); + setFieldBuilder2.setEthernetMatch(ethernetMatch2.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build()); + ab2.withKey(new ActionKey(2)); + actionList.add(ab2.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + ib.withKey(new InstructionKey(0)); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; } - /** - * @return - */ - private static MatchBuilder createIPv4DstMatch() { - MatchBuilder match = new MatchBuilder(); - Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); - Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.1/24"); - ipv4Match.setIpv4Destination(prefix); - Ipv4Match i4m = ipv4Match.build(); - match.setLayer3Match(i4m); + private static InstructionsBuilder createAppyActionInstruction36() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + + // Vlan + final VlanMatchBuilder vlanBuilder = new VlanMatchBuilder(); + final VlanMatchBuilder vlanBuilder1 = new VlanMatchBuilder(); + final VlanIdBuilder vlanIdBuilder = new VlanIdBuilder(); + final VlanId vlanId = new VlanId(10); + final VlanPcp vpcp = new VlanPcp((short) 3); + vlanBuilder.setVlanPcp(vpcp); + vlanBuilder1.setVlanId(vlanIdBuilder.setVlanId(vlanId).setVlanIdPresent(true).build()); + setFieldBuilder.setVlanMatch(vlanBuilder.build()); + setFieldBuilder1.setVlanMatch(vlanBuilder1.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction37() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + final ActionBuilder ab2 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder(); + // Ip + final IpMatchBuilder ipmatch = new IpMatchBuilder(); + final IpMatchBuilder ipmatch1 = new IpMatchBuilder(); + final IpMatchBuilder ipmatch2 = new IpMatchBuilder(); + final Dscp dscp = new Dscp((short) 3); + ipmatch.setIpDscp(dscp); + ipmatch1.setIpEcn((short) 2); + ipmatch2.setIpProtocol((short) 120); + setFieldBuilder.setIpMatch(ipmatch.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setIpMatch(ipmatch1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + setFieldBuilder2.setIpMatch(ipmatch2.build()); + ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build()); + ab2.withKey(new ActionKey(2)); + actionList.add(ab2.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction38() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + // IPv4 + final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); + final Ipv4MatchBuilder ipv4Match1 = new Ipv4MatchBuilder(); + final Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.5210"); + final Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1"); + ipv4Match1.setIpv4Destination(dstip); + ipv4Match.setIpv4Source(srcip); + setFieldBuilder.setLayer3Match(ipv4Match.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setLayer3Match(ipv4Match1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction39() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + + // Tcp + final PortNumber tcpsrcport = new PortNumber(1213); + final PortNumber tcpdstport = new PortNumber(646); + final TcpMatchBuilder tcpmatch = new TcpMatchBuilder(); + final TcpMatchBuilder tcpmatch1 = new TcpMatchBuilder(); + tcpmatch.setTcpSourcePort(tcpsrcport); + tcpmatch1.setTcpDestinationPort(tcpdstport); + setFieldBuilder.setLayer4Match(tcpmatch.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setLayer4Match(tcpmatch1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction40() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + + // Udp + final PortNumber udpsrcport = new PortNumber(1325); + final PortNumber udpdstport = new PortNumber(42); + final UdpMatchBuilder udpmatch = new UdpMatchBuilder(); + final UdpMatchBuilder udpmatch1 = new UdpMatchBuilder(); + udpmatch.setUdpDestinationPort(udpdstport); + udpmatch1.setUdpSourcePort(udpsrcport); + setFieldBuilder.setLayer4Match(udpmatch.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setLayer4Match(udpmatch1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction41() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + + // Sctp + final SctpMatchBuilder sctpmatch = new SctpMatchBuilder(); + final SctpMatchBuilder sctpmatch1 = new SctpMatchBuilder(); + final PortNumber srcport = new PortNumber(1435); + final PortNumber dstport = new PortNumber(22); + sctpmatch.setSctpSourcePort(srcport); + sctpmatch1.setSctpDestinationPort(dstport); + setFieldBuilder.setLayer4Match(sctpmatch.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setLayer4Match(sctpmatch1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction42() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + + // Icmpv4 + final Icmpv4MatchBuilder icmpv4match = new Icmpv4MatchBuilder(); + final Icmpv4MatchBuilder icmpv4match1 = new Icmpv4MatchBuilder(); + icmpv4match.setIcmpv4Type((short) 8); + icmpv4match1.setIcmpv4Code((short) 0); + setFieldBuilder.setIcmpv4Match(icmpv4match.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setIcmpv4Match(icmpv4match1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction43() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + final ActionBuilder ab2 = new ActionBuilder(); + final ActionBuilder ab3 = new ActionBuilder(); + final ActionBuilder ab4 = new ActionBuilder(); + + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder3 = new SetFieldBuilder(); + final SetFieldBuilder setFieldBuilder4 = new SetFieldBuilder(); + + // setting the values of ARP + final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS); + final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS); + final Ipv4Prefix dstiparp = new Ipv4Prefix("200.71.9.52"); + final Ipv4Prefix srciparp = new Ipv4Prefix("100.1.1.1"); + // create ARP match action + final ArpMatchBuilder arpmatch = new ArpMatchBuilder(); + final ArpMatchBuilder arpmatch1 = new ArpMatchBuilder(); + final ArpMatchBuilder arpmatch2 = new ArpMatchBuilder(); + final ArpMatchBuilder arpmatch3 = new ArpMatchBuilder(); + final ArpMatchBuilder arpmatch4 = new ArpMatchBuilder(); + final ArpSourceHardwareAddressBuilder arpsrc = new ArpSourceHardwareAddressBuilder(); + arpsrc.setAddress(macsrc); + final ArpTargetHardwareAddressBuilder arpdst = new ArpTargetHardwareAddressBuilder(); + arpdst.setAddress(macdest); + arpmatch.setArpOp(2); + arpmatch1.setArpSourceHardwareAddress(arpsrc.build()); + arpmatch2.setArpTargetHardwareAddress(arpdst.build()); + arpmatch3.setArpSourceTransportAddress(srciparp); + arpmatch4.setArpTargetTransportAddress(dstiparp); + setFieldBuilder.setLayer3Match(arpmatch.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setLayer3Match(arpmatch1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + setFieldBuilder2.setLayer3Match(arpmatch2.build()); + ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build()); + ab2.withKey(new ActionKey(2)); + actionList.add(ab2.build()); + + setFieldBuilder3.setLayer3Match(arpmatch3.build()); + ab3.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder3.build()).build()); + ab3.withKey(new ActionKey(3)); + actionList.add(ab3.build()); + + setFieldBuilder4.setLayer3Match(arpmatch4.build()); + ab4.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder4.build()).build()); + ab4.withKey(new ActionKey(4)); + actionList.add(ab4.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction44() { + + final List actionLists = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + final ActionBuilder ab5 = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder5 = new SetFieldBuilder(); + final ActionBuilder ab6 = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder6 = new SetFieldBuilder(); + + // IPv6 + final Ipv6MatchBuilder ipv6Builder = new Ipv6MatchBuilder(); + final Ipv6MatchBuilder ipv6Builder1 = new Ipv6MatchBuilder(); + final Ipv6MatchBuilder ipv6Builder5 = new Ipv6MatchBuilder(); + final Ipv6MatchBuilder ipv6Builder6 = new Ipv6MatchBuilder(); + + final Ipv6Prefix dstip6 = new Ipv6Prefix("2002::2/128"); + final Ipv6Prefix srcip6 = new Ipv6Prefix("2001:0:0:0:0:0:0:1/128"); + final Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder(); + nextheader.setIpv6Exthdr(58); + final Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder(); + final Ipv6FlowLabel label = new Ipv6FlowLabel(10028L); + ipv6label.setIpv6Flabel(label); + + ipv6Builder.setIpv6Source(srcip6); + ipv6Builder1.setIpv6Destination(dstip6); + ipv6Builder5.setIpv6ExtHeader(nextheader.build()); + ipv6Builder6.setIpv6Label(ipv6label.build()); + + setFieldBuilder.setLayer3Match(ipv6Builder.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionLists.add(ab.build()); + + setFieldBuilder1.setLayer3Match(ipv6Builder1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionLists.add(ab1.build()); + + setFieldBuilder5.setLayer3Match(ipv6Builder5.build()); + ab5.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder5.build()).build()); + ab5.withKey(new ActionKey(5)); + actionLists.add(ab5.build()); + + setFieldBuilder6.setLayer3Match(ipv6Builder6.build()); + ab6.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder6.build()).build()); + ab6.withKey(new ActionKey(6)); + actionLists.add(ab6.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionLists); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction45() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + + // Icmpv6 + final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); + final Icmpv6MatchBuilder icmpv6match1 = new Icmpv6MatchBuilder(); + icmpv6match.setIcmpv6Type((short) 135); + icmpv6match1.setIcmpv6Code((short) 0); + setFieldBuilder.setIcmpv6Match(icmpv6match.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setIcmpv6Match(icmpv6match1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction46() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final ActionBuilder ab1 = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder(); + final ActionBuilder ab2 = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder(); + + // MPLS + final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); + final ProtocolMatchFieldsBuilder protomatch1 = new ProtocolMatchFieldsBuilder(); + final ProtocolMatchFieldsBuilder protomatch2 = new ProtocolMatchFieldsBuilder(); + protomatch.setMplsLabel((long) 36008); + protomatch1.setMplsTc((short) 4); + protomatch2.setMplsBos((short) 1); + setFieldBuilder.setProtocolMatchFields(protomatch.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + setFieldBuilder1.setProtocolMatchFields(protomatch1.build()); + ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build()); + ab1.withKey(new ActionKey(1)); + actionList.add(ab1.build()); + + setFieldBuilder2.setProtocolMatchFields(protomatch2.build()); + ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build()); + ab2.withKey(new ActionKey(2)); + actionList.add(ab2.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction47() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + // PBB + final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); + protomatch.setPbb(new PbbBuilder().setPbbIsid(4L).setPbbMask( + new BigInteger(new byte[]{0, 1, 0, 0}).longValue()).build()); + setFieldBuilder.setProtocolMatchFields(protomatch.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + actionList.add(ab.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createAppyActionInstruction48() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + // Tunnel + final TunnelBuilder tunnel = new TunnelBuilder(); + tunnel.setTunnelId(BigInteger.valueOf(10668)); + setFieldBuilder.setTunnel(tunnel.build()); + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + + final InstructionBuilder ib = new InstructionBuilder(); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createTunnelIpv4DstInstructions() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + // Build the tunnel endpoint destination IPv4 address + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final Ipv4Prefix dstIp = new Ipv4Prefix("172.16.100.100"); + // Add the mew IPv4 object as the tunnel destination + final TunnelIpv4MatchBuilder tunnelIpv4DstMatchBuilder = new TunnelIpv4MatchBuilder(); + tunnelIpv4DstMatchBuilder.setTunnelIpv4Destination(dstIp); + setFieldBuilder.setLayer3Match(tunnelIpv4DstMatchBuilder.build()); + // Add the IPv4 tunnel dst to the set_field value + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.setOrder(0); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + // Resulting action is a per/flow src TEP (set_field:172.16.100.100->tun_dst) + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + // Add the action to the ordered list of Instructions + final InstructionBuilder ib = new InstructionBuilder(); + ib.setOrder(0); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + // Add the Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static InstructionsBuilder createTunnelIpv4SrcInstructions() { + + final List actionList = new ArrayList<>(); + final ActionBuilder ab = new ActionBuilder(); + // Build the tunnel endpoint source IPv4 address + final SetFieldBuilder setFieldBuilder = new SetFieldBuilder(); + final Ipv4Prefix dstIp = new Ipv4Prefix("172.16.100.200"); + // Add the new IPv4 object as the tunnel destination + final TunnelIpv4MatchBuilder tunnelIpv4MatchBuilder = new TunnelIpv4MatchBuilder(); + tunnelIpv4MatchBuilder.setTunnelIpv4Source(dstIp); + setFieldBuilder.setLayer3Match(tunnelIpv4MatchBuilder.build()); + // Add the IPv4 tunnel src to the set_field value + ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build()); + ab.setOrder(0); + ab.withKey(new ActionKey(0)); + actionList.add(ab.build()); + // Resulting action is a per/flow src TEP (set_field:172.16.100.100->tun_src) + final ApplyActionsBuilder aab = new ApplyActionsBuilder(); + aab.setAction(actionList); + // Add the action to the ordered list of Instructions + final InstructionBuilder ib = new InstructionBuilder(); + ib.setOrder(0); + ib.withKey(new InstructionKey(0)); + ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); + // Put our Instruction in a list of Instructions + final InstructionsBuilder isb = new InstructionsBuilder(); + final List instructions = new ArrayList<>(); + instructions.add(ib.build()); + isb.setInstruction(instructions); + return isb; + } + + private static MatchBuilder createLLDPMatch() { + final MatchBuilder match = new MatchBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + ethTypeBuilder.setType(new EtherType(0x88ccL)); + eth.setEthernetType(ethTypeBuilder.build()); + match.setEthernetMatch(eth.build()); return match; } - /** - * @return - */ - private static MatchBuilder createIPv4SrcMatch() { - MatchBuilder match = new MatchBuilder(); - Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); - Ipv4Prefix prefix = new Ipv4Prefix("10.20.30.40/24"); - ipv4Match.setIpv4Source(prefix); - Ipv4Match i4m = ipv4Match.build(); + private static MatchBuilder createMatch1() { + final MatchBuilder match = new MatchBuilder(); + final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); + final Ipv4Prefix prefix = new Ipv4Prefix(IPV4_PREFIX); + ipv4Match.setIpv4Destination(prefix); + final Ipv4Match i4m = ipv4Match.build(); match.setLayer3Match(i4m); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x0800L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); return match; } - - - /** - * @return - */ private static MatchBuilder createMatch2() { - MatchBuilder match = new MatchBuilder(); - Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); - Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.1"); + final MatchBuilder match = new MatchBuilder(); + final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); + final Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.1"); ipv4Match.setIpv4Source(prefix); - Ipv4Match i4m = ipv4Match.build(); + final Ipv4Match i4m = ipv4Match.build(); match.setLayer3Match(i4m); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x0800L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); return match; } - /** - * @return - */ private static MatchBuilder createMatch3() { - MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder(); - EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder(); + final MatchBuilder match = new MatchBuilder(); + final EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder(); + final EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder(); ethSourceBuilder.setAddress(new MacAddress("00:00:00:00:00:01")); ethernetMatch.setEthernetSource(ethSourceBuilder.build()); match.setEthernetMatch(ethernetMatch.build()); return match; } - - private static MatchBuilder createInphyportMatch() { - MatchBuilder match = new MatchBuilder(); - match.setInPort(202L); - match.setInPhyPort(10122L); + + private static MatchBuilder createICMPv6Match1() { + + final MatchBuilder match = new MatchBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + ethTypeBuilder.setType(new EtherType(0x86ddL)); + eth.setEthernetType(ethTypeBuilder.build()); + match.setEthernetMatch(eth.build()); + + // ipv4 version + final IpMatchBuilder ipmatch = new IpMatchBuilder(); + ipmatch.setIpProtocol((short) 256); + match.setIpMatch(ipmatch.build()); + + // icmpv6 + final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); + + // match + icmpv6match.setIcmpv6Type((short) 135); + icmpv6match.setIcmpv6Code((short) 1); + match.setIcmpv6Match(icmpv6match.build()); + return match; } - private static MatchBuilder createEthernetMatch() { - MatchBuilder match = new MatchBuilder(); + private static MatchBuilder createMatch33() { + + final MatchBuilder match = new MatchBuilder(); + final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); + final Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.10"); + ipv4Match.setIpv4Source(prefix); + final Ipv4Match i4m = ipv4Match.build(); + match.setLayer3Match(i4m); + + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + ethTypeBuilder.setType(new EtherType(0xfffeL)); + eth.setEthernetType(ethTypeBuilder.build()); + match.setEthernetMatch(eth.build()); + return match; + } - byte[] mask1 = new byte[] { (byte) -1, (byte) -1, 0, 0, 0, 0 }; - byte[] mask2 = new byte[] { (byte) -1, (byte) -1, (byte) -1, 0, 0, 0 }; + private static MatchBuilder createInphyportMatch(final NodeId nodeId) { + final MatchBuilder match = new MatchBuilder(); + match.setInPort(new NodeConnectorId(nodeId + ":202")); + match.setInPhyPort(new NodeConnectorId(nodeId + ":10122")); + return match; + } - EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); // ethernettype - // match - EthernetTypeBuilder ethtype = new EthernetTypeBuilder(); - EtherType type = new EtherType(0x0800L); + private static MatchBuilder createEthernetMatch() { + final MatchBuilder match = new MatchBuilder(); + final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); // ethernettype + // match + final EthernetTypeBuilder ethtype = new EthernetTypeBuilder(); + final EtherType type = new EtherType(0x0800L); ethmatch.setEthernetType(ethtype.setType(type).build()); - EthernetDestinationBuilder ethdest = new EthernetDestinationBuilder(); // ethernet - // macaddress - // match - MacAddress macdest = new MacAddress("ff:ff:ff:ff:ff:ff"); + final EthernetDestinationBuilder ethdest = new EthernetDestinationBuilder(); // ethernet + // macaddress + // match + final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS); ethdest.setAddress(macdest); - ethdest.setMask(mask1); + ethdest.setMask(new MacAddress("ff:ff:ff:00:00:00")); ethmatch.setEthernetDestination(ethdest.build()); - EthernetSourceBuilder ethsrc = new EthernetSourceBuilder(); - MacAddress macsrc = new MacAddress("00:00:00:00:23:ae"); + final EthernetSourceBuilder ethsrc = new EthernetSourceBuilder(); + final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS); ethsrc.setAddress(macsrc); - ethsrc.setMask(mask2); + ethsrc.setMask(new MacAddress("ff:ff:00:00:00:00")); ethmatch.setEthernetSource(ethsrc.build()); match.setEthernetMatch(ethmatch.build()); @@ -1806,16 +2822,13 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { } - /** - * @return - */ - private static MatchBuilder createVlanMatch() { - MatchBuilder match = new MatchBuilder(); - VlanMatchBuilder vlanBuilder = new VlanMatchBuilder(); // vlan match - VlanIdBuilder vlanIdBuilder = new VlanIdBuilder(); - VlanId vlanId = new VlanId(10); - VlanPcp vpcp = new VlanPcp((short) 3); + final MatchBuilder match = new MatchBuilder(); + // vlan match + final VlanMatchBuilder vlanBuilder = new VlanMatchBuilder(); + final VlanIdBuilder vlanIdBuilder = new VlanIdBuilder(); + final VlanId vlanId = new VlanId(10); + final VlanPcp vpcp = new VlanPcp((short) 3); vlanBuilder.setVlanPcp(vpcp); vlanIdBuilder.setVlanId(vlanId); vlanIdBuilder.setVlanIdPresent(true); @@ -1824,33 +2837,29 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { return match; } - /** - * @return - */ private static MatchBuilder createArpMatch() { - MatchBuilder match = new MatchBuilder(); + final MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); - MacAddress macdest = new MacAddress("ff:ff:ff:ff:ff:ff"); - MacAddress macsrc = new MacAddress("00:00:00:00:23:ae"); + final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); + final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS); + final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS); - byte[] mask = new byte[] { (byte) -1, (byte) -1, 0, 0, 0, 0 }; - byte[] mask2 = new byte[] { (byte) -1, (byte) -1, (byte) -1, 0, 0, 0 }; - - EthernetTypeBuilder ethtype = new EthernetTypeBuilder(); - EtherType type = new EtherType(0x0806L); + final EthernetTypeBuilder ethtype = new EthernetTypeBuilder(); + final EtherType type = new EtherType(0x0806L); ethmatch.setEthernetType(ethtype.setType(type).build()); - Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.52/10"); // ipv4 match - Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1/8"); + // ipv4 match + final Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.52/10"); + final Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1/8"); - ArpMatchBuilder arpmatch = new ArpMatchBuilder(); // arp match - ArpSourceHardwareAddressBuilder arpsrc = new ArpSourceHardwareAddressBuilder(); + // arp match + final ArpMatchBuilder arpmatch = new ArpMatchBuilder(); + final ArpSourceHardwareAddressBuilder arpsrc = new ArpSourceHardwareAddressBuilder(); arpsrc.setAddress(macsrc); - arpsrc.setMask(mask); - ArpTargetHardwareAddressBuilder arpdst = new ArpTargetHardwareAddressBuilder(); + arpsrc.setMask(new MacAddress("ff:ff:ff:00:00:00")); + final ArpTargetHardwareAddressBuilder arpdst = new ArpTargetHardwareAddressBuilder(); arpdst.setAddress(macdest); - arpdst.setMask(mask2); + arpdst.setMask(new MacAddress("ff:ff:00:00:00:00")); arpmatch.setArpOp(2); arpmatch.setArpSourceHardwareAddress(arpsrc.build()); arpmatch.setArpTargetHardwareAddress(arpdst.build()); @@ -1863,81 +2872,31 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { return match; } - /** - * @return - */ - private static MatchBuilder createIPMatch() { - MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); - EthernetTypeBuilder ethtype = new EthernetTypeBuilder(); - EtherType type = new EtherType(0x0800L); - ethmatch.setEthernetType(ethtype.setType(type).build()); - match.setEthernetMatch(ethmatch.build()); - - IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version - ipmatch.setIpProtocol((short) 1); - Dscp dscp = new Dscp((short) 3); - ipmatch.setIpDscp(dscp); - ipmatch.setIpEcn((short) 2); - match.setIpMatch(ipmatch.build()); - return match; - } - - /** - * @return - */ - private static MatchBuilder createL3IPv4Match() { - MatchBuilder match = new MatchBuilder(); - - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); - ethTypeBuilder.setType(new EtherType(0x0800L)); - eth.setEthernetType(ethTypeBuilder.build()); - match.setEthernetMatch(eth.build()); - - Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder(); - Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.52/10"); // ipv4 match - Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1/8"); - Ipv4MatchBuilder ipv4match = new Ipv4MatchBuilder(); - ipv4match.setIpv4Destination(dstip); - ipv4match.setIpv4Source(srcip); - match.setLayer3Match(ipv4match.build()); - - return match; - - } - - /** - * @return - */ private static MatchBuilder createL3IPv6Match() { - MatchBuilder match = new MatchBuilder(); + final MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x86ddL)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - Ipv6Prefix dstip6 = new Ipv6Prefix("2002::2/64"); - Ipv6Prefix srcip6 = new Ipv6Prefix("2001:0:0:0:0:0:0:1/56"); - Ipv6Address ndtarget = new Ipv6Address("2001:db8:0:1:fd97:f9f0:a810:782e"); - MacAddress ndsll = new MacAddress("c2:00:54:f5:00:00"); - MacAddress ndtll = new MacAddress("00:0c:29:0e:4c:67"); - Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder(); + final MacAddress ndsll = new MacAddress("c2:00:54:f5:00:00"); + final MacAddress ndtll = new MacAddress("00:0c:29:0e:4c:67"); + final Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder(); nextheader.setIpv6Exthdr(58); - Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder(); - Ipv6FlowLabel label = new Ipv6FlowLabel(10028L); + final Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder(); + final Ipv6FlowLabel label = new Ipv6FlowLabel(10028L); ipv6label.setIpv6Flabel(label); - ipv6label.setFlabelMask(new byte[] { 0, 1, -1, -1 }); + ipv6label.setFlabelMask(new Ipv6FlowLabel(1L)); - Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6 - // match + final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6 + // match icmpv6match.setIcmpv6Type((short) 135); icmpv6match.setIcmpv6Code((short) 0); match.setIcmpv6Match(icmpv6match.build()); - Ipv6MatchBuilder ipv6match = new Ipv6MatchBuilder(); + final Ipv6MatchBuilder ipv6match = new Ipv6MatchBuilder(); // ipv6match.setIpv6Source(srcip6); // ipv6match.setIpv6Destination(dstip6); // ipv6match.setIpv6ExtHeader(nextheader.build()); @@ -1951,95 +2910,80 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { return match; } - /** - * @return - */ - private static MatchBuilder createICMPv4Match() { - MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final MatchBuilder match = new MatchBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x0800L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version + final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version ipmatch.setIpProtocol((short) 1); match.setIpMatch(ipmatch.build()); - Icmpv4MatchBuilder icmpv4match = new Icmpv4MatchBuilder(); // icmpv4 - // match + final Icmpv4MatchBuilder icmpv4match = new Icmpv4MatchBuilder(); // icmpv4 + // match icmpv4match.setIcmpv4Type((short) 8); icmpv4match.setIcmpv4Code((short) 0); match.setIcmpv4Match(icmpv4match.build()); return match; } - /** - * @return - */ private static MatchBuilder createICMPv6Match() { - MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final MatchBuilder match = new MatchBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x86ddL)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version + final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version ipmatch.setIpProtocol((short) 58); match.setIpMatch(ipmatch.build()); - Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6 - // match + final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6 + // match icmpv6match.setIcmpv6Type((short) 135); icmpv6match.setIcmpv6Code((short) 1); match.setIcmpv6Match(icmpv6match.build()); return match; } - - /** - * @return - */ + private static MatchBuilder createToSMatch() { - MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); - EthernetTypeBuilder ethtype = new EthernetTypeBuilder(); - EtherType type = new EtherType(0x0800L); + final MatchBuilder match = new MatchBuilder(); + final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethtype = new EthernetTypeBuilder(); + final EtherType type = new EtherType(0x0800L); ethmatch.setEthernetType(ethtype.setType(type).build()); match.setEthernetMatch(ethmatch.build()); - IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version + final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version ipmatch.setIpProtocol((short) 6); - Dscp dscp = new Dscp((short) 8); + final Dscp dscp = new Dscp((short) 8); ipmatch.setIpDscp(dscp); match.setIpMatch(ipmatch.build()); return match; } - - /** - * @return - */ - private static MatchBuilder createL4TCPMatch() { - MatchBuilder match = new MatchBuilder(); + final MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x0800L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version + final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version ipmatch.setIpProtocol((short) 6); match.setIpMatch(ipmatch.build()); - PortNumber srcport = new PortNumber(1213); - PortNumber dstport = new PortNumber(646); - TcpMatchBuilder tcpmatch = new TcpMatchBuilder(); // tcp match + final PortNumber srcport = new PortNumber(1213); + final PortNumber dstport = new PortNumber(646); + final TcpMatchBuilder tcpmatch = new TcpMatchBuilder(); // tcp match tcpmatch.setTcpSourcePort(srcport); tcpmatch.setTcpDestinationPort(dstport); match.setLayer4Match(tcpmatch.build()); @@ -2047,25 +2991,22 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { return match; } - /** - * @return - */ private static MatchBuilder createL4UDPMatch() { - MatchBuilder match = new MatchBuilder(); + final MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x0800L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version + final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version ipmatch.setIpProtocol((short) 17); match.setIpMatch(ipmatch.build()); - PortNumber srcport = new PortNumber(1325); - PortNumber dstport = new PortNumber(42); - UdpMatchBuilder udpmatch = new UdpMatchBuilder(); // udp match + final PortNumber srcport = new PortNumber(1325); + final PortNumber dstport = new PortNumber(42); + final UdpMatchBuilder udpmatch = new UdpMatchBuilder(); // udp match udpmatch.setUdpDestinationPort(dstport); udpmatch.setUdpSourcePort(srcport); match.setLayer4Match(udpmatch.build()); @@ -2073,25 +3014,22 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { return match; } - /** - * @return - */ private static MatchBuilder createL4SCTPMatch() { - MatchBuilder match = new MatchBuilder(); + final MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x0800L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version + final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version ipmatch.setIpProtocol((short) 132); match.setIpMatch(ipmatch.build()); - SctpMatchBuilder sctpmatch = new SctpMatchBuilder(); - PortNumber srcport = new PortNumber(1435); - PortNumber dstport = new PortNumber(22); + final SctpMatchBuilder sctpmatch = new SctpMatchBuilder(); + final PortNumber srcport = new PortNumber(1435); + final PortNumber dstport = new PortNumber(22); sctpmatch.setSctpSourcePort(srcport); sctpmatch.setSctpDestinationPort(dstport); match.setLayer4Match(sctpmatch.build()); @@ -2099,33 +3037,27 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { return match; } - /** - * @return - */ private static MatchBuilder createMetadataMatch() { - MatchBuilder match = new MatchBuilder(); - byte[] metamask = new byte[] { (byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1 }; - MetadataBuilder metadata = new MetadataBuilder(); // metadata match + final MatchBuilder match = new MatchBuilder(); + final byte[] metamask = new byte[]{(byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1}; + final MetadataBuilder metadata = new MetadataBuilder(); // metadata match metadata.setMetadata(BigInteger.valueOf(500L)); - metadata.setMetadataMask(metamask); + metadata.setMetadataMask(new BigInteger(1, metamask)); match.setMetadata(metadata.build()); return match; } - /** - * @return - */ private static MatchBuilder createMplsMatch() { - MatchBuilder match = new MatchBuilder(); + final MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x8847L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls + final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls // match protomatch.setMplsLabel((long) 36008); protomatch.setMplsTc((short) 4); @@ -2136,114 +3068,326 @@ public class OpenflowpluginTestCommandProvider implements CommandProvider { } - /** - * @return - */ private static MatchBuilder createPbbMatch() { - MatchBuilder match = new MatchBuilder(); + final MatchBuilder match = new MatchBuilder(); - EthernetMatchBuilder eth = new EthernetMatchBuilder(); - EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + final EthernetMatchBuilder eth = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); ethTypeBuilder.setType(new EtherType(0x88E7L)); eth.setEthernetType(ethTypeBuilder.build()); match.setEthernetMatch(eth.build()); - ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls + final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls // match - protomatch.setPbb(new PbbBuilder().setPbbIsid(4L).setPbbMask(new byte[] { 0, 1, 0, 0 }).build()); + protomatch.setPbb(new PbbBuilder().setPbbIsid(4L).setPbbMask( + new BigInteger(new byte[]{0, 1, 0, 0}).longValue()).build()); match.setProtocolMatchFields(protomatch.build()); return match; } - - /** - * @return - */ + private static MatchBuilder createTunnelIDMatch() { - MatchBuilder match = new MatchBuilder(); - TunnelBuilder tunnel = new TunnelBuilder(); // tunnel id match + final MatchBuilder match = new MatchBuilder(); + final TunnelBuilder tunnel = new TunnelBuilder(); // tunnel id match tunnel.setTunnelId(BigInteger.valueOf(10668)); - byte[] mask = new byte[] { (byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1 }; - tunnel.setTunnelMask(mask); + final byte[] mask = new byte[]{(byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1}; + tunnel.setTunnelMask(new BigInteger(1, mask)); match.setTunnel(tunnel.build()); return match; } - public void _removeMDFlow(CommandInterpreter ci) { - DataModification, DataObject> modification = dataBrokerService.beginTransaction(); - NodeBuilder tn = createTestNode(ci.nextArgument()); - FlowBuilder tf = createTestFlow(tn, ci.nextArgument(), ci.nextArgument()); - InstanceIdentifier path1 = InstanceIdentifier.builder(Nodes.class) - .child(Node.class, tn.getKey()).augmentation(FlowCapableNode.class) - .child(Table.class, new TableKey(tf.getTableId())).child(Flow.class, tf.getKey()) - .build(); - modification.removeOperationalData(nodeBuilderToInstanceId(tn)); - modification.removeOperationalData(path1); - modification.removeConfigurationData(nodeBuilderToInstanceId(tn)); - modification.removeConfigurationData(path1); - Future> commitFuture = modification.commit(); - try { - RpcResult result = commitFuture.get(); - TransactionStatus status = result.getResult(); - ci.println("Status of Flow Data Loaded Transaction: " + status); + /** + * Test match for TCP_Flags. + * + * @return match containing Ethertype (0x0800), IP Protocol (TCP), TCP_Flag (SYN) + */ + //FIXME: move to extensible support + private static MatchBuilder createTcpFlagMatch() { + final MatchBuilder match = new MatchBuilder(); - } catch (InterruptedException e) { - LOG.error(e.getMessage(), e); - } catch (ExecutionException e) { - LOG.error(e.getMessage(), e); + // Ethertype match + final EthernetMatchBuilder ethernetType = new EthernetMatchBuilder(); + final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder(); + ethTypeBuilder.setType(new EtherType(0x0800L)); + ethernetType.setEthernetType(ethTypeBuilder.build()); + match.setEthernetMatch(ethernetType.build()); + + // TCP Protocol Match + final IpMatchBuilder ipMatch = new IpMatchBuilder(); // ipv4 version + ipMatch.setIpProtocol((short) 6); + match.setIpMatch(ipMatch.build()); + + // TCP Port Match + final PortNumber dstPort = new PortNumber(80); + final TcpMatchBuilder tcpMatch = new TcpMatchBuilder(); + tcpMatch.setTcpDestinationPort(dstPort); + match.setLayer4Match(tcpMatch.build()); + /** + * Defined TCP Flag values in OVS v2.1+ + * TCP_FIN 0x001 / TCP_SYN 0x002 / TCP_RST 0x004 + * TCP_PSH 0x008 / TCP_ACK 0x010 / TCP_URG 0x020 + * TCP_ECE 0x040 / TCP_CWR 0x080 / TCP_NS 0x100 + */ + final TcpFlagsMatchBuilder tcpFlagsMatch = new TcpFlagsMatchBuilder(); + tcpFlagsMatch.setTcpFlags(0x002); + match.setTcpFlagsMatch(tcpFlagsMatch.build()); + + return match; + } + + public void _removeMDFlow(final CommandInterpreter ci) { + final ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + final NodeBuilder tn = createTestNode(ci.nextArgument()); + final String flowtype = ci.nextArgument(); + FlowBuilder tf; + if (flowtype.equals("fTM")) { + tf = createtablemiss(); + } else { + tf = createTestFlow(tn, flowtype, ci.nextArgument()); } + final InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, tn.key()) + .augmentation(FlowCapableNode.class).child(Table.class, new TableKey(tf.getTableId())) + .child(Flow.class, tf.key()); + modification.delete(LogicalDatastoreType.CONFIGURATION, path1); + final ListenableFuture commitFuture = modification.submit(); + Futures.addCallback(commitFuture, new FutureCallback() { + @Override + public void onSuccess(final Void notUsed) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(final Throwable throwable) { + LOG.error(throwable.getMessage(), throwable); + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }, MoreExecutors.directExecutor()); } - public void _addMDFlow(CommandInterpreter ci) { - NodeBuilder tn = createTestNode(ci.nextArgument()); - FlowBuilder tf = createTestFlow(tn, ci.nextArgument(), ci.nextArgument()); + /** + * Adds a flow. + * + * @param ci arguments: switchId flowType tableNum, e.g.: addMDFlow openflow:1 f1 42 + */ + public void _addMDFlow(final CommandInterpreter ci) { + final NodeBuilder tn = createTestNode(ci.nextArgument()); + final String flowtype = ci.nextArgument(); + FlowBuilder tf; + if (flowtype.equals("fTM")) { + tf = createtablemiss(); + } else { + tf = createTestFlow(tn, flowtype, ci.nextArgument()); + } writeFlow(ci, tf, tn); } - private void writeFlow(CommandInterpreter ci, FlowBuilder flow, NodeBuilder nodeBuilder) { - DataModification, DataObject> modification = dataBrokerService.beginTransaction(); - InstanceIdentifier path1 = InstanceIdentifier.builder(Nodes.class) - .child(Node.class, nodeBuilder.getKey()).augmentation(FlowCapableNode.class) - .child(Table.class, new TableKey(flow.getTableId())).child(Flow.class, flow.getKey()) - .build(); - modification.putOperationalData(nodeBuilderToInstanceId(nodeBuilder), nodeBuilder.build()); - modification.putOperationalData(path1, flow.build()); - modification.putConfigurationData(nodeBuilderToInstanceId(nodeBuilder), nodeBuilder.build()); - modification.putConfigurationData(path1, flow.build()); - Future> commitFuture = modification.commit(); - try { - RpcResult result = commitFuture.get(); - TransactionStatus status = result.getResult(); - ci.println("Status of Flow Data Loaded Transaction: " + status); + private void writeFlow(final CommandInterpreter ci, final FlowBuilder flow, final NodeBuilder nodeBuilder) { + final ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + final InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, nodeBuilder.key()).augmentation(FlowCapableNode.class) + .child(Table.class, new TableKey(flow.getTableId())).child(Flow.class, flow.key()); + modification.merge(LogicalDatastoreType.CONFIGURATION, + nodeBuilderToInstanceId(nodeBuilder), nodeBuilder.build(), true); + modification.merge(LogicalDatastoreType.CONFIGURATION, path1, flow.build(), true); + final ListenableFuture commitFuture = modification.submit(); + Futures.addCallback(commitFuture, new FutureCallback() { + @Override + public void onSuccess(final Void notUsed) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(final Throwable throwable) { + LOG.error(throwable.getMessage(), throwable); + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }, MoreExecutors.directExecutor()); + } + + public void _modifyMDFlow(final CommandInterpreter ci) { + final NodeBuilder tn = createTestNode(ci.nextArgument()); + final FlowBuilder tf = createTestFlow(tn, ci.nextArgument(), ci.nextArgument()); + tf.setFlowName(UPDATED_FLOW_NAME); + writeFlow(ci, tf, tn); + tf.setFlowName(ORIGINAL_FLOW_NAME); + writeFlow(ci, tf, tn); + } + @Override + public String getHelp() { + return "No help"; + } + + /* + * usage testSwitchFlows + * ex: _perfFlowTest 10 5 1 2 + */ + public void _perfFlowTest(final CommandInterpreter ci) { + + final String numberOfSwtichesStr = ci.nextArgument(); + final String numberOfFlowsStr = ci.nextArgument(); + final String warmupIterationsStr = ci.nextArgument(); + final String threadCountStr = ci.nextArgument(); + final String warmUpStr = ci.nextArgument(); + + int numberOfSwtiches = 0; + int numberOfFlows = 0; + int warmupIterations = 0; + boolean warmUpIterations = false; + + int threadCount = 0; + if (numberOfSwtichesStr != null && !numberOfSwtichesStr.trim().equals("")) { + numberOfSwtiches = Integer.parseInt(numberOfSwtichesStr); + } else { + numberOfSwtiches = 2; + } + + if (numberOfFlowsStr != null && !numberOfFlowsStr.trim().equals("")) { + numberOfFlows = Integer.parseInt(numberOfFlowsStr); + } else { + numberOfFlows = 2; + } + + if (warmupIterationsStr != null && !warmupIterationsStr.trim().equals("")) { + warmupIterations = Integer.parseInt(warmupIterationsStr); + } else { + warmupIterations = 2; + } + + if (threadCountStr != null && !threadCountStr.trim().equals("")) { + threadCount = Integer.parseInt(threadCountStr); + } else { + threadCount = 2; + } + if (warmUpStr != null && !warmUpStr.trim().equals("") && warmUpStr.trim().equals("true")) { + warmUpIterations = true; + } else { + warmUpIterations = false; + } + ci.println("* Test Configurations*"); + ci.println("* numberOfSwtiches:::" + numberOfSwtiches + ""); + ci.println("* numberOfFlows:::" + numberOfFlows + ""); + ci.println("* warmupIterations:::" + warmupIterations + ""); + ci.println("* Number of Threads :::" + threadCount + ""); + ci.println("* Warmup Required? :::" + warmUpIterations + ""); + + String dataPath = "openflow:1"; + NodeBuilder tn; + FlowBuilder tf; + final String tableId = "0"; + if (warmUpIterations) { + ci.println("----Warmup Started-----"); + for (int j = 1; j <= warmupIterations; j++) { + for (int i = 1; i <= numberOfSwtiches; i++) { + dataPath = "openflow:" + i; + tn = createTestNode(dataPath); + for (int flow = 1; flow < numberOfFlows; flow++) { + tf = createTestFlowPerfTest("f1", tableId, flow); + writeFlow(ci, tf, tn); + } + } + } + + ci.println("----Warmup Done-----"); + } + try { + final ExecutorService executor = Executors.newFixedThreadPool(threadCount); + int tableID = 0; + for (int t = 0; t < threadCount; t++) { + tableID = t + 1; + final Runnable tRunnable = new TestFlowThread(numberOfSwtiches, numberOfFlows, ci, t, tableID); + executor.execute(tRunnable); + } + executor.shutdown(); + executor.awaitTermination(1, TimeUnit.SECONDS); } catch (InterruptedException e) { - LOG.error(e.getMessage(), e); - } catch (ExecutionException e) { - LOG.error(e.getMessage(), e); + ci.println("Exception:" + e.getMessage()); } } - public void _modifyMDFlow(CommandInterpreter ci) { - NodeBuilder tn = createTestNode(ci.nextArgument()); - FlowBuilder tf = createTestFlow(tn, ci.nextArgument(), ci.nextArgument()); - tf.setFlowName(updatedFlowName); - writeFlow(ci, tf, tn); - tf.setFlowName(originalFlowName); - writeFlow(ci, tf, tn); - } + public class TestFlowThread implements Runnable { + + int numberOfSwitches; + int numberOfFlows; + CommandInterpreter ci; + int theadNumber; + int tableID = 0; - private static NodeRef createNodeRef(String string) { - NodeKey key = new NodeKey(new NodeId(string)); - InstanceIdentifier path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key) - .toInstance(); + TestFlowThread(final int numberOfSwtiches, final int numberOfFlows, final CommandInterpreter ci, + final int threadNumber, final int tableID) { + this.numberOfSwitches = numberOfSwtiches; + this.numberOfFlows = numberOfFlows; + this.ci = ci; + this.theadNumber = threadNumber; + this.tableID = tableID; + } + + @Override + public void run() { + executeFlow(); + } + + public void executeFlow() { + + String dataPath = "openflow:1"; + NodeBuilder tn; + FlowBuilder tf; + //String tableId = "0"; + + ci.println("New Thread started with id: ID_" + + this.theadNumber); + int totalNumberOfFlows = 0; + final long startTime = System.currentTimeMillis(); + + for (int i = 1; i <= this.numberOfSwitches; i++) { + dataPath = "openflow:" + i; + tn = createTestNode(dataPath); + for (int flow2 = 1; flow2 <= this.numberOfFlows; flow2++) { + tf = createTestFlowPerfTest("f1", "" + this.tableID, flow2); + writeFlow(this.ci, tf, tn); + totalNumberOfFlows++; + } + } + final long endTime = System.currentTimeMillis(); + final long timeInSeconds = Math.round((endTime - startTime) / 1000.0F); + if (timeInSeconds > 0) { + ci.println("Total flows added in Thread:" + this.theadNumber + ": Flows/Sec::" + + Math.round((float)totalNumberOfFlows / timeInSeconds)); + } else { + ci.println("Total flows added in Thread:" + this.theadNumber + ": Flows/Sec::" + totalNumberOfFlows); + } + } - return new NodeRef(path); } - @Override - public String getHelp() { - return "No help"; + /* + * usage testAllFlows + * ex: _perfFlowTest 1 + */ + @SuppressWarnings("checkstyle:IllegalCatch") + public void _testAllFlows(final CommandInterpreter ci) { + String dataPathID = ci.nextArgument(); + final int numberOfFlows = 82; + if (dataPathID == null || dataPathID.trim().equals("")) { + dataPathID = "1"; + } + ci.println("* Test All Flows *"); + ci.println("* dataPathID:::" + dataPathID + ""); + final String dataPath = "openflow:" + dataPathID; + final String tableId = "0"; + final NodeBuilder tn = createTestNode(dataPath); + FlowBuilder tf; + for (int flow = 1; flow < numberOfFlows; flow++) { + final String flowID = "f" + flow; + try { + tf = createTestFlow(tn, flowID, tableId); + writeFlow(ci, tf, tn); + } catch (RuntimeException e) { + ci.println("--Test Failed--Issue found while adding flow" + flow); + break; + } + } } }