use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage in project openflowplugin by opendaylight.
the class MultipartReplyMessageFactoryTest method testDescSerialize.
@Test
public void testDescSerialize() throws Exception {
MultipartReplyMessageBuilder builder = new MultipartReplyMessageBuilder();
BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
builder.setFlags(new MultipartRequestFlags(true));
builder.setType(MultipartType.forValue(0));
final MultipartReplyDescCaseBuilder descCase = new MultipartReplyDescCaseBuilder();
MultipartReplyDescBuilder desc = new MultipartReplyDescBuilder();
desc.setMfrDesc("Test");
desc.setHwDesc("Test");
desc.setSwDesc("Test");
desc.setSerialNum("12345");
desc.setDpDesc("Test");
descCase.setMultipartReplyDesc(desc.build());
builder.setMultipartReplyBody(descCase.build());
MultipartReplyMessage message = builder.build();
ByteBuf serializedBuffer = UnpooledByteBufAllocator.DEFAULT.buffer();
factory.serialize(message, serializedBuffer);
BufferHelper.checkHeaderV13(serializedBuffer, MESSAGE_TYPE, 1072);
Assert.assertEquals("Wrong type", MultipartType.OFPMPDESC.getIntValue(), serializedBuffer.readShort());
Assert.assertEquals("Wrong flags", message.getFlags(), createMultipartRequestFlags(serializedBuffer.readShort()));
serializedBuffer.skipBytes(PADDING);
Assert.assertEquals("Wrong desc body", message.getMultipartReplyBody(), decodeDescBody(serializedBuffer));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage in project openflowplugin by opendaylight.
the class MultipartReplyMessageFactoryTest method testMeterConfigSerialize.
@Test
public void testMeterConfigSerialize() throws Exception {
MultipartReplyMessageBuilder builder = new MultipartReplyMessageBuilder();
BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
builder.setFlags(new MultipartRequestFlags(true));
builder.setType(MultipartType.forValue(10));
MultipartReplyMeterConfigCaseBuilder meterConfigCase = new MultipartReplyMeterConfigCaseBuilder();
MultipartReplyMeterConfigBuilder meterConfigBuilder = new MultipartReplyMeterConfigBuilder();
meterConfigBuilder.setMeterConfig(createMeterConfig());
meterConfigCase.setMultipartReplyMeterConfig(meterConfigBuilder.build());
builder.setMultipartReplyBody(meterConfigCase.build());
MultipartReplyMessage message = builder.build();
ByteBuf serializedBuffer = UnpooledByteBufAllocator.DEFAULT.buffer();
factory.serialize(message, serializedBuffer);
BufferHelper.checkHeaderV13(serializedBuffer, MESSAGE_TYPE, 48);
Assert.assertEquals("Wrong type", MultipartType.OFPMPMETERCONFIG.getIntValue(), serializedBuffer.readShort());
Assert.assertEquals("Wrong flags", message.getFlags(), createMultipartRequestFlags(serializedBuffer.readShort()));
serializedBuffer.skipBytes(PADDING);
MultipartReplyMeterConfigCase body = (MultipartReplyMeterConfigCase) message.getMultipartReplyBody();
MultipartReplyMeterConfig messageOutput = body.getMultipartReplyMeterConfig();
MeterConfig meterConfig = messageOutput.getMeterConfig().get(0);
Assert.assertEquals("Wrong len", 32, serializedBuffer.readShort());
Assert.assertEquals("Wrong flags", meterConfig.getFlags(), createMeterFlags(serializedBuffer.readShort()));
Assert.assertEquals("Wrong meterId", meterConfig.getMeterId().getValue().intValue(), serializedBuffer.readInt());
Assert.assertEquals("Wrong bands", meterConfig.getBands(), decodeBandsList(serializedBuffer));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage in project openflowplugin by opendaylight.
the class MultipartReplyMessageFactoryTest method testMultipartRequestTableFeaturesMessageFactory.
@Test
public void testMultipartRequestTableFeaturesMessageFactory() throws Exception {
MultipartReplyMessageBuilder builder = new MultipartReplyMessageBuilder();
BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
builder.setFlags(new MultipartRequestFlags(true));
builder.setType(MultipartType.forValue(12));
final MultipartReplyTableFeaturesCaseBuilder caseBuilder = new MultipartReplyTableFeaturesCaseBuilder();
final MultipartReplyTableFeaturesBuilder featuresBuilder = new MultipartReplyTableFeaturesBuilder();
final List<TableFeatures> tableFeaturesList = new ArrayList<>();
TableFeaturesBuilder tableFeaturesBuilder = new TableFeaturesBuilder();
tableFeaturesBuilder.setTableId((short) 8);
tableFeaturesBuilder.setName("AAAABBBBCCCCDDDDEEEEFFFFGGGG");
tableFeaturesBuilder.setMetadataMatch(new byte[] { 0x00, 0x01, 0x02, 0x03, 0x01, 0x04, 0x08, 0x01 });
tableFeaturesBuilder.setMetadataWrite(new byte[] { 0x00, 0x07, 0x01, 0x05, 0x01, 0x00, 0x03, 0x01 });
tableFeaturesBuilder.setConfig(new TableConfig(true));
tableFeaturesBuilder.setMaxEntries(65L);
TableFeaturePropertiesBuilder propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTNEXTTABLES);
NextTableRelatedTableFeaturePropertyBuilder nextPropBuilder = new NextTableRelatedTableFeaturePropertyBuilder();
List<NextTableIds> nextIds = new ArrayList<>();
nextIds.add(new NextTableIdsBuilder().setTableId((short) 1).build());
nextIds.add(new NextTableIdsBuilder().setTableId((short) 2).build());
nextPropBuilder.setNextTableIds(nextIds);
propBuilder.addAugmentation(NextTableRelatedTableFeatureProperty.class, nextPropBuilder.build());
List<TableFeatureProperties> properties = new ArrayList<>();
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTNEXTTABLESMISS);
nextPropBuilder = new NextTableRelatedTableFeaturePropertyBuilder();
nextIds = new ArrayList<>();
nextPropBuilder.setNextTableIds(nextIds);
propBuilder.addAugmentation(NextTableRelatedTableFeatureProperty.class, nextPropBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTINSTRUCTIONS);
List<Instruction> insIds = new ArrayList<>();
InstructionBuilder insBuilder = new InstructionBuilder();
insBuilder.setInstructionChoice(new WriteActionsCaseBuilder().build());
insIds.add(insBuilder.build());
insBuilder = new InstructionBuilder();
insBuilder.setInstructionChoice(new GotoTableCaseBuilder().build());
insIds.add(insBuilder.build());
InstructionRelatedTableFeaturePropertyBuilder insPropBuilder = new InstructionRelatedTableFeaturePropertyBuilder();
insPropBuilder.setInstruction(insIds);
propBuilder.addAugmentation(InstructionRelatedTableFeatureProperty.class, insPropBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTINSTRUCTIONSMISS);
insPropBuilder = new InstructionRelatedTableFeaturePropertyBuilder();
insIds = new ArrayList<>();
insBuilder = new InstructionBuilder();
insBuilder.setInstructionChoice(new WriteMetadataCaseBuilder().build());
insIds.add(insBuilder.build());
insBuilder = new InstructionBuilder();
insBuilder.setInstructionChoice(new ApplyActionsCaseBuilder().build());
insIds.add(insBuilder.build());
insBuilder = new InstructionBuilder();
insBuilder.setInstructionChoice(new MeterCaseBuilder().build());
insIds.add(insBuilder.build());
insBuilder = new InstructionBuilder();
insBuilder.setInstructionChoice(new ClearActionsCaseBuilder().build());
insIds.add(insBuilder.build());
insBuilder = new InstructionBuilder();
insBuilder.setInstructionChoice(new GotoTableCaseBuilder().build());
insIds.add(insBuilder.build());
insPropBuilder.setInstruction(insIds);
propBuilder.addAugmentation(InstructionRelatedTableFeatureProperty.class, insPropBuilder.build());
properties.add(propBuilder.build());
tableFeaturesBuilder.setTableFeatureProperties(properties);
tableFeaturesList.add(tableFeaturesBuilder.build());
tableFeaturesBuilder = new TableFeaturesBuilder();
tableFeaturesBuilder.setTableId((short) 8);
tableFeaturesBuilder.setName("AAAABBBBCCCCDDDDEEEEFFFFGGGG");
byte[] metadataMatch = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x01, 0x04, 0x08, 0x01 };
tableFeaturesBuilder.setMetadataMatch(metadataMatch);
byte[] metadataWrite = new byte[] { 0x00, 0x07, 0x01, 0x05, 0x01, 0x00, 0x03, 0x01 };
tableFeaturesBuilder.setMetadataWrite(metadataWrite);
tableFeaturesBuilder.setConfig(new TableConfig(true));
tableFeaturesBuilder.setMaxEntries(67L);
properties = new ArrayList<>();
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITEACTIONS);
ActionRelatedTableFeaturePropertyBuilder actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
List<Action> actions = new ArrayList<>();
ActionBuilder actionBuilder = new ActionBuilder();
actionBuilder.setActionChoice(new OutputActionCaseBuilder().build());
actions.add(actionBuilder.build());
actBuilder.setAction(actions);
propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITEACTIONSMISS);
actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
actions = new ArrayList<>();
actBuilder.setAction(actions);
propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYACTIONS);
actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
actions = new ArrayList<>();
actBuilder.setAction(actions);
propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYACTIONSMISS);
actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
actions = new ArrayList<>();
actBuilder.setAction(actions);
propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTMATCH);
MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
entriesBuilder.setOxmClass(OpenflowBasicClass.class);
entriesBuilder.setOxmMatchField(InPhyPort.class);
entriesBuilder.setHasMask(false);
List<MatchEntry> entries = new ArrayList<>();
entries.add(entriesBuilder.build());
entriesBuilder = new MatchEntryBuilder();
entriesBuilder.setOxmClass(OpenflowBasicClass.class);
entriesBuilder.setOxmMatchField(InPort.class);
entriesBuilder.setHasMask(false);
entries.add(entriesBuilder.build());
OxmRelatedTableFeaturePropertyBuilder oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
oxmBuilder.setMatchEntry(entries);
propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTWILDCARDS);
oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
entries = new ArrayList<>();
oxmBuilder.setMatchEntry(entries);
propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITESETFIELD);
oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
entries = new ArrayList<>();
oxmBuilder.setMatchEntry(entries);
propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITESETFIELDMISS);
oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
entries = new ArrayList<>();
oxmBuilder.setMatchEntry(entries);
propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYSETFIELD);
oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
entries = new ArrayList<>();
entriesBuilder = new MatchEntryBuilder();
entriesBuilder.setOxmClass(OpenflowBasicClass.class);
entriesBuilder.setOxmMatchField(IpProto.class);
entriesBuilder.setHasMask(false);
entries.add(entriesBuilder.build());
entriesBuilder = new MatchEntryBuilder();
entriesBuilder.setOxmClass(OpenflowBasicClass.class);
entriesBuilder.setOxmMatchField(IpEcn.class);
entriesBuilder.setHasMask(false);
entries.add(entriesBuilder.build());
oxmBuilder.setMatchEntry(entries);
propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
properties.add(propBuilder.build());
propBuilder = new TableFeaturePropertiesBuilder();
propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYSETFIELDMISS);
oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
entries = new ArrayList<>();
oxmBuilder.setMatchEntry(entries);
propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
properties.add(propBuilder.build());
tableFeaturesBuilder.setTableFeatureProperties(properties);
tableFeaturesList.add(tableFeaturesBuilder.build());
featuresBuilder.setTableFeatures(tableFeaturesList);
caseBuilder.setMultipartReplyTableFeatures(featuresBuilder.build());
builder.setMultipartReplyBody(caseBuilder.build());
MultipartReplyMessage message = builder.build();
ByteBuf serializedBuffer = UnpooledByteBufAllocator.DEFAULT.buffer();
factory.serialize(message, serializedBuffer);
BufferHelper.checkHeaderV13(serializedBuffer, MESSAGE_TYPE, 520);
Assert.assertEquals("Wrong type", MultipartType.OFPMPTABLEFEATURES.getIntValue(), serializedBuffer.readShort());
Assert.assertEquals("Wrong flags", message.getFlags(), createMultipartRequestFlags(serializedBuffer.readShort()));
serializedBuffer.skipBytes(PADDING);
Assert.assertEquals("Wrong length", 232, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong registry-id", 8, serializedBuffer.readUnsignedByte());
serializedBuffer.skipBytes(5);
Assert.assertEquals("Wrong name", "AAAABBBBCCCCDDDDEEEEFFFFGGGG", ByteBufUtils.decodeNullTerminatedString(serializedBuffer, 32));
byte[] metadataMatchOutput = new byte[metadataMatch.length];
serializedBuffer.readBytes(metadataMatchOutput);
Assert.assertArrayEquals("Wrong metadata-match", new byte[] { 0x00, 0x01, 0x02, 0x03, 0x01, 0x04, 0x08, 0x01 }, metadataMatchOutput);
serializedBuffer.skipBytes(64 - metadataMatch.length);
byte[] metadataWriteOutput = new byte[metadataWrite.length];
serializedBuffer.readBytes(metadataWriteOutput);
Assert.assertArrayEquals("Wrong metadata-write", new byte[] { 0x00, 0x07, 0x01, 0x05, 0x01, 0x00, 0x03, 0x01 }, metadataWriteOutput);
serializedBuffer.skipBytes(64 - metadataWrite.length);
Assert.assertEquals("Wrong config", 1, serializedBuffer.readUnsignedInt());
Assert.assertEquals("Wrong max-entries", 65, serializedBuffer.readUnsignedInt());
Assert.assertEquals("Wrong property type", 2, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 6, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong next-registry-id", 1, serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong next-registry-id", 2, serializedBuffer.readUnsignedByte());
serializedBuffer.skipBytes(2);
Assert.assertEquals("Wrong property type", 3, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 0, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 12, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction type", 3, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction length", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction type", 1, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 1, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 24, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction type", 2, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction length", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction type", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction length", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction type", 6, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction length", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction type", 5, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction length", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction type", 1, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong instruction length", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong length", 272, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong registry-id", 8, serializedBuffer.readUnsignedByte());
serializedBuffer.skipBytes(5);
Assert.assertEquals("Wrong name", "AAAABBBBCCCCDDDDEEEEFFFFGGGG", ByteBufUtils.decodeNullTerminatedString(serializedBuffer, 32));
metadataMatchOutput = new byte[metadataMatch.length];
serializedBuffer.readBytes(metadataMatchOutput);
serializedBuffer.skipBytes(64 - metadataMatch.length);
Assert.assertArrayEquals("Wrong metadata-match", new byte[] { 0x00, 0x01, 0x02, 0x03, 0x01, 0x04, 0x08, 0x01 }, metadataMatchOutput);
metadataWriteOutput = new byte[metadataWrite.length];
serializedBuffer.readBytes(metadataWriteOutput);
serializedBuffer.skipBytes(64 - metadataWrite.length);
Assert.assertArrayEquals("Wrong metadata-write", new byte[] { 0x00, 0x07, 0x01, 0x05, 0x01, 0x00, 0x03, 0x01 }, metadataWriteOutput);
Assert.assertEquals("Wrong config", 1, serializedBuffer.readUnsignedInt());
Assert.assertEquals("Wrong max-entries", 67, serializedBuffer.readUnsignedInt());
Assert.assertEquals("Wrong property type", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 8, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong action type", 0, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong action length", 4, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property type", 5, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 6, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 7, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 8, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 12, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong match class", 0x8000, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong match field&mask", 2, serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong match length", 4, serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong match class", 0x8000, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong match field&mask", 0, serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong match length", 4, serializedBuffer.readUnsignedByte());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 10, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 12, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 13, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 14, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 12, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong match class", 0x8000, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong match field&mask", 20, serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong match length", 1, serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong match class", 0x8000, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong match field&mask", 18, serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong match length", 1, serializedBuffer.readUnsignedByte());
serializedBuffer.skipBytes(4);
Assert.assertEquals("Wrong property type", 15, serializedBuffer.readUnsignedShort());
Assert.assertEquals("Wrong property length", 4, serializedBuffer.readUnsignedShort());
serializedBuffer.skipBytes(4);
Assert.assertTrue("Unread data", serializedBuffer.readableBytes() == 0);
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage in project openflowplugin by opendaylight.
the class MultipartReplyMessageFactoryTest method testMeterFeaturesSerialize.
@Test
public void testMeterFeaturesSerialize() throws Exception {
MultipartReplyMessageBuilder builder = new MultipartReplyMessageBuilder();
BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
builder.setFlags(new MultipartRequestFlags(true));
builder.setType(MultipartType.forValue(11));
final MultipartReplyMeterFeaturesCaseBuilder meterFeaturesCase = new MultipartReplyMeterFeaturesCaseBuilder();
MultipartReplyMeterFeaturesBuilder meterFeatures = new MultipartReplyMeterFeaturesBuilder();
meterFeatures.setMaxMeter(1L);
meterFeatures.setBandTypes(new MeterBandTypeBitmap(true, false));
meterFeatures.setCapabilities(new MeterFlags(true, false, true, false));
meterFeatures.setMaxBands((short) 1);
meterFeatures.setMaxColor((short) 1);
meterFeaturesCase.setMultipartReplyMeterFeatures(meterFeatures.build());
builder.setMultipartReplyBody(meterFeaturesCase.build());
MultipartReplyMessage message = builder.build();
ByteBuf serializedBuffer = UnpooledByteBufAllocator.DEFAULT.buffer();
factory.serialize(message, serializedBuffer);
BufferHelper.checkHeaderV13(serializedBuffer, MESSAGE_TYPE, 30);
Assert.assertEquals("Wrong type", MultipartType.OFPMPMETERFEATURES.getIntValue(), serializedBuffer.readShort());
Assert.assertEquals("Wrong flags", message.getFlags(), createMultipartRequestFlags(serializedBuffer.readShort()));
serializedBuffer.skipBytes(PADDING);
MultipartReplyMeterFeaturesCase body = (MultipartReplyMeterFeaturesCase) message.getMultipartReplyBody();
MultipartReplyMeterFeatures messageOutput = body.getMultipartReplyMeterFeatures();
Assert.assertEquals("Wrong max meter", messageOutput.getMaxMeter().intValue(), serializedBuffer.readInt());
Assert.assertEquals("Wrong band type", messageOutput.getBandTypes(), createMeterBandTypeBitmap(serializedBuffer.readInt()));
Assert.assertEquals("Wrong capabilities", messageOutput.getCapabilities(), createMeterFlags(serializedBuffer.readShort()));
Assert.assertEquals("Wrong max bands", messageOutput.getMaxBands().shortValue(), serializedBuffer.readUnsignedByte());
Assert.assertEquals("Wrong max color", messageOutput.getMaxColor().shortValue(), serializedBuffer.readUnsignedByte());
serializedBuffer.skipBytes(2);
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage in project openflowplugin by opendaylight.
the class OF10StatsReplyMessageFactoryTest method testTableBodySerialize.
@Test
public void testTableBodySerialize() throws Exception {
MultipartReplyMessageBuilder builder;
builder = new MultipartReplyMessageBuilder();
BufferHelper.setupHeader(builder, EncodeConstants.OF10_VERSION_ID);
builder.setFlags(new MultipartRequestFlags(true));
builder.setType(MultipartType.forValue(3));
MultipartReplyTableCaseBuilder tableCase = new MultipartReplyTableCaseBuilder();
MultipartReplyTableBuilder table = new MultipartReplyTableBuilder();
table.setTableStats(createTableStats());
tableCase.setMultipartReplyTable(table.build());
builder.setMultipartReplyBody(tableCase.build());
MultipartReplyMessage message = builder.build();
ByteBuf serializedBuffer = UnpooledByteBufAllocator.DEFAULT.buffer();
factory.serialize(message, serializedBuffer);
BufferHelper.checkHeaderV10(serializedBuffer, MESSAGE_TYPE, 60);
Assert.assertEquals("Wrong type", MultipartType.OFPMPTABLE.getIntValue(), serializedBuffer.readShort());
Assert.assertEquals("Wrong flags", message.getFlags(), createMultipartRequestFlags(serializedBuffer.readShort()));
Assert.assertEquals("Wrong table id", 1, serializedBuffer.readUnsignedByte());
serializedBuffer.skipBytes(3);
Assert.assertEquals("Wrong name", "Table name", ByteBufUtils.decodeNullTerminatedString(serializedBuffer, 16));
Assert.assertEquals("Wrong wildcards", 3145983, serializedBuffer.readUnsignedInt());
Assert.assertEquals("Wrong max entries", 1L, serializedBuffer.readUnsignedInt());
Assert.assertEquals("Wrong active count", 1L, serializedBuffer.readUnsignedInt());
Assert.assertEquals("Wrong lookup count", 1234L, serializedBuffer.readLong());
Assert.assertEquals("Wrong matched count", 1234L, serializedBuffer.readLong());
}
Aggregations