use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabel in project bgpcep by opendaylight.
the class MplsLabelUtilTest method testSerialization.
@Test
public void testSerialization() {
final MplsLabel label = new MplsLabel(VAL1);
assertEquals(Unpooled.copiedBuffer(VAL1_LEFT_BYTES), MplsLabelUtil.byteBufForMplsLabel(label));
assertEquals(Unpooled.copiedBuffer(VAL1_LEFT_BYTES_BOTTOM), MplsLabelUtil.byteBufForMplsLabelWithBottomBit(label));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabel in project bgpcep by opendaylight.
the class PCEPTlvParserTest method testPathBindingTlvMplsLabelEntry.
@Test
public void testPathBindingTlvMplsLabelEntry() throws PCEPDeserializerException {
final byte[] pathBindingBytes = { 0x00, 0x1f, 0x00, 0x06, 0x00, 0x01, (byte) 0xA8, (byte) 0x0F, (byte) 0x6D, (byte) 0xAD, 0x00, 0x00 };
final PathBindingTlvParser parser = new PathBindingTlvParser();
final PathBindingBuilder builder = new PathBindingBuilder();
builder.setBindingTypeValue(new MplsLabelEntryBuilder().setTrafficClass((short) 6).setTimeToLive((short) 173).setBottomOfStack(true).setLabel(new MplsLabel(688_374L)).build());
final PathBinding tlv = builder.build();
final ByteBuf buff = Unpooled.buffer();
parser.serializeTlv(tlv, buff);
assertArrayEquals(pathBindingBytes, ByteArray.readAllBytes(buff));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabel in project bgpcep by opendaylight.
the class PCEPTlvParserTest method testPathBindingTlvMplsLabel.
@Test
public void testPathBindingTlvMplsLabel() throws PCEPDeserializerException {
final byte[] pathBindingBytes = { 0x00, 0x1f, 0x00, 0x06, 0x00, 0x00, (byte) 0xA8, 0x0F, (byte) 0x60, 0x00, 0x00, 0x00 };
final PathBindingTlvParser parser = new PathBindingTlvParser();
final PathBindingBuilder builder = new PathBindingBuilder();
builder.setBindingTypeValue(new MplsLabelBuilder().setMplsLabel(new MplsLabel(688_374L)).build());
final ByteBuf buff = Unpooled.buffer();
parser.serializeTlv(builder.build(), buff);
assertArrayEquals(pathBindingBytes, ByteArray.readAllBytes(buff));
try {
final byte[] wrong = { 0, 0x1f, 0, 4, 1, 1, 2, 3 };
parser.parseTlv(Unpooled.wrappedBuffer(ByteArray.cutBytes(wrong, 4)));
fail();
} catch (final PCEPDeserializerException e) {
assertEquals("Unsupported Path Binding Type: 257", e.getMessage());
}
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabel in project bgpcep by opendaylight.
the class SrAttributeParserTest method testSrLanAdjIdOspf.
@Test
public void testSrLanAdjIdOspf() {
final byte[] tested = { (byte) 0x60, 10, 0, 0, 1, 2, 3, 4, 0, 0x5d, (byte) 0xc0 };
final SrLanAdjIds srLanAdjId = new SrLanAdjIdsBuilder().setFlags(OSPF_LAN_ADJ_FLAGS).setWeight(new Weight((short) 10)).setNeighborId(new Ipv4Address("1.2.3.4")).setSidLabelIndex(new LocalLabelCaseBuilder().setLocalLabel(new MplsLabel(24000L)).build()).build();
assertEquals(srLanAdjId, SrLinkAttributesParser.parseLanAdjacencySegmentIdentifier(Unpooled.wrappedBuffer(tested), ProtocolId.Ospf));
final ByteBuf serializedData = SrLinkAttributesParser.serializeLanAdjacencySegmentIdentifier(srLanAdjId);
assertArrayEquals(tested, ByteArray.readAllBytes(serializedData));
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabel in project openflowplugin by opendaylight.
the class MultipartReplyMessageDeserializerTest method deserialize.
@Test
public void deserialize() throws Exception {
ByteBuf buffer = UnpooledByteBufAllocator.DEFAULT.buffer();
buffer.writeByte(TYPE);
buffer.writeShort(EncodeConstants.EMPTY_LENGTH);
buffer.writeInt(XID);
buffer.writeShort(MULTIPART_TYPE);
buffer.writeShort(REQ_MORE);
buffer.writeZero(PADDING_IN_MULTIPART_REPLY_HEADER);
buffer.writeShort(ITEM_LENGTH);
buffer.writeByte(TABLE_ID);
buffer.writeZero(PADDING_IN_FLOW_STATS_HEADER_01);
buffer.writeInt(SECOND);
buffer.writeInt(NANOSECOND);
buffer.writeShort(PRIORITY);
buffer.writeShort(IDLE_TIMEOUT);
buffer.writeShort(HARD_TIMEOUT);
buffer.writeShort(ByteBufUtils.fillBitMask(0, FLAGS.isSENDFLOWREM(), FLAGS.isCHECKOVERLAP(), FLAGS.isRESETCOUNTS(), FLAGS.isNOPKTCOUNTS(), FLAGS.isNOBYTCOUNTS()));
buffer.writeZero(PADDING_IN_FLOW_STATS_HEADER_02);
buffer.writeLong(COOKIE);
buffer.writeLong(PACKET_COUNT);
buffer.writeLong(BYTE_COUNT);
// Match header
int matchStartIndex = buffer.writerIndex();
buffer.writeShort(OXM_MATCH_TYPE_CODE);
int matchLengthIndex = buffer.writerIndex();
buffer.writeShort(EncodeConstants.EMPTY_LENGTH);
// MplsLabel match
buffer.writeShort(OxmMatchConstants.OPENFLOW_BASIC_CLASS);
buffer.writeByte(OxmMatchConstants.MPLS_LABEL << 1);
buffer.writeByte(EncodeConstants.SIZE_OF_INT_IN_BYTES);
buffer.writeInt(MPLS_LABEL);
// Match footer
int matchLength = buffer.writerIndex() - matchStartIndex;
buffer.setShort(matchLengthIndex, matchLength);
int paddingRemainder = matchLength % EncodeConstants.PADDING;
if (paddingRemainder != 0) {
buffer.writeZero(EncodeConstants.PADDING - paddingRemainder);
}
// Instruction POP PBB header
int instructionStartIndex = buffer.writerIndex();
buffer.writeShort(InstructionConstants.APPLY_ACTIONS_TYPE);
int instructionLengthIndex = buffer.writerIndex();
buffer.writeShort(EncodeConstants.EMPTY_LENGTH);
buffer.writeZero(InstructionConstants.PADDING_IN_ACTIONS_INSTRUCTION);
// POP PBB action
buffer.writeShort(ActionConstants.POP_PBB_CODE);
buffer.writeShort(ActionConstants.GENERAL_ACTION_LENGTH);
buffer.writeZero(ActionConstants.PADDING_IN_ACTION_HEADER);
// Count total length of instruction
buffer.setShort(instructionLengthIndex, buffer.writerIndex() - instructionStartIndex);
// Deserialize and check everything
final MultipartReply message = (MultipartReply) getFactory().deserialize(buffer, EncodeConstants.OF13_VERSION_ID);
final MultipartReplyFlowStats reply = (MultipartReplyFlowStats) message.getMultipartReplyBody();
assertEquals(XID, message.getXid().intValue());
final FlowAndStatisticsMapList flowAndStatisticsMapList = reply.getFlowAndStatisticsMapList().get(0);
assertEquals(TABLE_ID, flowAndStatisticsMapList.getTableId().shortValue());
assertEquals(SECOND, flowAndStatisticsMapList.getDuration().getSecond().getValue().intValue());
assertEquals(NANOSECOND, flowAndStatisticsMapList.getDuration().getNanosecond().getValue().intValue());
assertEquals(PRIORITY, flowAndStatisticsMapList.getPriority().intValue());
assertEquals(IDLE_TIMEOUT, flowAndStatisticsMapList.getIdleTimeout().intValue());
assertEquals(HARD_TIMEOUT, flowAndStatisticsMapList.getHardTimeout().intValue());
assertTrue(flowAndStatisticsMapList.getFlags().equals(FLAGS));
assertEquals(COOKIE, flowAndStatisticsMapList.getCookie().getValue().longValue());
assertEquals(BYTE_COUNT, flowAndStatisticsMapList.getByteCount().getValue().longValue());
assertEquals(PACKET_COUNT, flowAndStatisticsMapList.getPacketCount().getValue().longValue());
assertEquals(1, flowAndStatisticsMapList.getInstructions().getInstruction().size());
final Instruction instruction = flowAndStatisticsMapList.getInstructions().getInstruction().get(0).getInstruction();
assertEquals(ApplyActionsCase.class, instruction.getImplementedInterface());
final ApplyActionsCase applyActions = ApplyActionsCase.class.cast(instruction);
assertEquals(1, applyActions.getApplyActions().getAction().size());
assertEquals(PopPbbActionCase.class, applyActions.getApplyActions().getAction().get(0).getAction().getImplementedInterface());
}
Aggregations