import java.util.List;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
+import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
+import org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl;
import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
-import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
-import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
+import org.opendaylight.openflowjava.util.ByteBufUtils;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.IpAddressAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwDst;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetTpSrc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsListBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModCommand;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlagsV10;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowWildcardsV10;
*/
public class OF10FlowModInputMessageFactoryTest {
+ private SerializerRegistry registry;
+ private OFSerializer<FlowModInput> flowModFactory;
+
/**
- * @throws Exception
+ * Initializes serializer registry and stores correct factory in field
+ */
+ @Before
+ public void startUp() {
+ registry = new SerializerRegistryImpl();
+ registry.init();
+ flowModFactory = registry.getSerializer(
+ new MessageTypeKey<>(EncodeConstants.OF10_VERSION_ID, FlowModInput.class));
+ }
+
+ /**
+ * @throws Exception
* Testing of {@link OF10FlowModInputMessageFactory} for correct translation from POJO
*/
@Test
FlowModInputBuilder builder = new FlowModInputBuilder();
BufferHelper.setupHeader(builder, EncodeConstants.OF10_VERSION_ID);
MatchV10Builder matchBuilder = new MatchV10Builder();
- matchBuilder.setWildcards(new FlowWildcardsV10(true, true, true, true, true, true, true, true, true, true, true));
+ matchBuilder.setWildcards(new FlowWildcardsV10(true, true, true, true, true, true, true, true, true, true));
matchBuilder.setNwSrcMask((short) 0);
matchBuilder.setNwDstMask((short) 0);
matchBuilder.setInPort(58);
matchBuilder.setTpSrc(6653);
matchBuilder.setTpDst(6633);
builder.setMatchV10(matchBuilder.build());
- byte[] cookie = new byte[]{0x00, 0x01, 0x04, 0x01, 0x06, 0x00, 0x07, 0x01};
- builder.setCookie(new BigInteger(cookie));
+ byte[] cookie = new byte[]{(byte) 0xFF, 0x01, 0x04, 0x01, 0x06, 0x00, 0x07, 0x01};
+ builder.setCookie(new BigInteger(1, cookie));
builder.setCommand(FlowModCommand.forValue(0));
builder.setIdleTimeout(12);
builder.setHardTimeout(16);
builder.setBufferId(2L);
builder.setOutPort(new PortNumber(4422L));
builder.setFlagsV10(new FlowModFlagsV10(true, false, true));
- List<ActionsList> actions = new ArrayList<>();
- ActionsListBuilder actionsListBuilder = new ActionsListBuilder();
+ List<Action> actions = new ArrayList<>();
ActionBuilder actionBuilder = new ActionBuilder();
actionBuilder.setType(SetNwDst.class);
IpAddressActionBuilder ipBuilder = new IpAddressActionBuilder();
ipBuilder.setIpAddress(new Ipv4Address("2.2.2.2"));
actionBuilder.addAugmentation(IpAddressAction.class, ipBuilder.build());
- actionsListBuilder.setAction(actionBuilder.build());
- actions.add(actionsListBuilder.build());
+ actions.add(actionBuilder.build());
actionBuilder = new ActionBuilder();
actionBuilder.setType(SetTpSrc.class);
PortActionBuilder portBuilder = new PortActionBuilder();
portBuilder.setPort(new PortNumber(42L));
actionBuilder.addAugmentation(PortAction.class, portBuilder.build());
- actionsListBuilder.setAction(actionBuilder.build());
- actions.add(actionsListBuilder.build());
- builder.setActionsList(actions);
+ actions.add(actionBuilder.build());
+ builder.setAction(actions);
FlowModInput message = builder.build();
-
+
ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
- OF10FlowModInputMessageFactory factory = OF10FlowModInputMessageFactory.getInstance();
- factory.messageToBuffer(EncodeConstants.OF10_VERSION_ID, out, message);
-
- BufferHelper.checkHeaderV10(out, factory.getMessageType(), factory.computeLength(message));
- Assert.assertEquals("Wrong wildcards", 4194303, out.readUnsignedInt());
+ flowModFactory.serialize(message, out);
+
+ BufferHelper.checkHeaderV10(out, (byte) 14, 88);
+ Assert.assertEquals("Wrong wildcards", 3678463, out.readUnsignedInt());
Assert.assertEquals("Wrong inPort", 58, out.readUnsignedShort());
byte[] dlSrc = new byte[6];
out.readBytes(dlSrc);