* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.lispflowmapping.serializer;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-
-import junitx.framework.ArrayAssert;
-
import org.junit.Ignore;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.MapReplySerializer;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
+import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4Binary;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinary;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapReply;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord.Action;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItem;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.container.MappingRecord.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.container.MappingRecordBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.list.MappingRecordItem;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.list.MappingRecordItemBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplymessage.MapReplyBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
public class MapReplySerializationTest extends BaseTestCase {
MappingRecordBuilder recordBuilder = new MappingRecordBuilder();
recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
mr.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).setMappingRecordItemId("xyzzy")
+ .build());
mr.setProbe(true);
mr.setEchoNonceEnabled(false);
public void deserialize__SomeFlags() throws Exception {
MapReply mr = MapReplySerializer.getInstance().deserialize(hexToByteBuffer("2A 00 00 00 00 00 "
- //
+ "00 00 00 00 00 00"));
- assertEquals(true, mr.isProbe());
- assertEquals(false, mr.isEchoNonceEnabled());
- assertEquals(true, mr.isSecurityEnabled());
+ assertEquals(true, mr.getProbe());
+ assertEquals(false, mr.getEchoNonceEnabled());
+ assertEquals(true, mr.getSecurityEnabled());
}
@Test
public void deserialize__All() throws Exception {
MapReply mr = MapReplySerializer.getInstance().deserialize(hexToByteBuffer("20 00 00 02 00 00 "
- //
- + "00 00 00 00 00 02 00 00 " //
- + "00 02 02 20 00 00 00 00 " //
- + "00 01 01 02 03 04 01 02 " //
- + "03 04 00 06 00 01 0a 0a " //
- + "0a 0a 04 03 02 01 00 01 " //
- + "00 02 00 01 00 02 00 03 " //
+ + "00 00 00 00 00 02 00 00 "
+ + "00 02 02 20 00 00 00 00 "
+ + "00 01 01 02 03 04 01 02 "
+ + "03 04 00 06 00 01 0a 0a "
+ + "0a 0a 04 03 02 01 00 01 "
+ + "00 02 00 01 00 02 00 03 "
+ "00 04 00 05 00 06 00 07 00 08 00 00 00 00 00 10 30 00 00 02 00 01 04 03 00 00"));
assertEquals(2, mr.getNonce().longValue());
- assertEquals("1.2.3.4/32", ((Ipv4Prefix) mr.getMappingRecordItem().get(0)
- .getMappingRecord().getEid().getAddress()).getIpv4Prefix().getValue());
+ assertArrayEquals(new byte[] {1, 2, 3, 4}, ((Ipv4PrefixBinary) mr.getMappingRecordItem().get(0)
+ .getMappingRecord().getEid().getAddress()).getIpv4AddressBinary().getValue());
// XXX Why here normalized and other cases not normalized?
- assertEquals("4.3.0.0/16", ((Ipv4Prefix) mr.getMappingRecordItem().get(1)
- .getMappingRecord().getEid().getAddress()).getIpv4Prefix().getValue());
- assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().isAuthoritative());
- assertEquals(true, mr.getMappingRecordItem().get(1).getMappingRecord().isAuthoritative());
+ assertArrayEquals(new byte[] {4, 3, 0, 0}, ((Ipv4PrefixBinary) mr.getMappingRecordItem().get(1)
+ .getMappingRecord().getEid().getAddress()).getIpv4AddressBinary().getValue());
+ assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getAuthoritative());
+ assertEquals(true, mr.getMappingRecordItem().get(1).getMappingRecord().getAuthoritative());
assertEquals(Action.NoAction, mr.getMappingRecordItem().get(0).getMappingRecord().getAction());
assertEquals(Action.NativelyForward, mr.getMappingRecordItem().get(1).getMappingRecord().getAction());
assertEquals(0, mr.getMappingRecordItem().get(0).getMappingRecord().getMapVersion().shortValue());
assertEquals(2, mr.getMappingRecordItem().get(1).getMappingRecord().getMapVersion().shortValue());
- assertEquals(32, mr.getMappingRecordItem().get(0).getMappingRecord().getMaskLength().shortValue());
- assertEquals(16, mr.getMappingRecordItem().get(1).getMappingRecord().getMaskLength().shortValue());
+ assertEquals(32, MaskUtil.getMaskForAddress(mr.getMappingRecordItem().get(0).getMappingRecord()
+ .getEid().getAddress()));
+ assertEquals(16, MaskUtil.getMaskForAddress(mr.getMappingRecordItem().get(1).getMappingRecord()
+ .getEid().getAddress()));
assertEquals(2, mr.getMappingRecordItem().get(0).getMappingRecord().getRecordTtl().byteValue());
assertEquals(0, mr.getMappingRecordItem().get(1).getMappingRecord().getRecordTtl().byteValue());
- assertEquals("1:2:3:4:5:6:7:8", ((Ipv6) mr.getMappingRecordItem().get(0).getMappingRecord()
- .getLocatorRecord().get(1).getRloc().getAddress()).getIpv6().getValue());
- assertEquals("10.10.10.10", ((Ipv4) mr.getMappingRecordItem().get(0).getMappingRecord()
- .getLocatorRecord().get(0).getRloc().getAddress()).getIpv4().getValue());
- assertEquals(1, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0).getPriority().byteValue());
- assertEquals(2, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0).getWeight().byteValue());
- assertEquals(3, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0).getMulticastPriority().byteValue());
- assertEquals(4, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0).getMulticastWeight().byteValue());
- assertEquals(4, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).getPriority().byteValue());
- assertEquals(3, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).getWeight().byteValue());
- assertEquals(2, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).getMulticastPriority().byteValue());
- assertEquals(1, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).getMulticastWeight().byteValue());
- assertEquals(true, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0).isLocalLocator());
- assertEquals(true, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0).isRlocProbed());
- assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0).isRouted());
- assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).isLocalLocator());
- assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).isRlocProbed());
- assertEquals(true, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).isRouted());
+ assertArrayEquals(new byte[] {0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8},
+ ((Ipv6Binary) mr.getMappingRecordItem().get(0).getMappingRecord()
+ .getLocatorRecord().get(1).getRloc().getAddress()).getIpv6Binary().getValue());
+ assertArrayEquals(new byte[] {10, 10, 10, 10},
+ ((Ipv4Binary) mr.getMappingRecordItem().get(0).getMappingRecord()
+ .getLocatorRecord().get(0).getRloc().getAddress()).getIpv4Binary().getValue());
+ assertEquals(1, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0)
+ .getPriority().byteValue());
+ assertEquals(2, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0)
+ .getWeight().byteValue());
+ assertEquals(3, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0)
+ .getMulticastPriority().byteValue());
+ assertEquals(4, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0)
+ .getMulticastWeight().byteValue());
+ assertEquals(4, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1)
+ .getPriority().byteValue());
+ assertEquals(3, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1)
+ .getWeight().byteValue());
+ assertEquals(2, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1)
+ .getMulticastPriority().byteValue());
+ assertEquals(1, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1)
+ .getMulticastWeight().byteValue());
+ assertEquals(true, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0)
+ .getLocalLocator());
+ assertEquals(true, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0)
+ .getRlocProbed());
+ assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0)
+ .getRouted());
+ assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1)
+ .getLocalLocator());
+ assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1)
+ .getRlocProbed());
+ assertEquals(true, mr.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(1).getRouted());
}
@Test
MappingRecordBuilder recordBuilder = new MappingRecordBuilder();
recordBuilder.setEid(LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:8/128"));
mrBuilder.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).setMappingRecordItemId("xyzzy")
+ .build());
recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("8.2.4.5/32"));
mrBuilder.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).setMappingRecordItemId("xyzzy")
+ .build());
ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
assertEquals(2, packet.get(3));
packet.position(24); // EID in first record
- byte[] expected = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 };
+ byte[] expected = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08 };
byte[] actual = new byte[16];
packet.get(actual);
- ArrayAssert.assertEquals(expected, actual);
+ assertArrayEquals(expected, actual);
packet.position(packet.position() + 12); // EID in second record
assertEquals(0x08020405, packet.getInt());
@Test
public void deserialize__MultipleRecordsWithoutRLOCs() throws Exception {
MapReply mr = MapReplySerializer.getInstance().deserialize(hexToByteBuffer("20 00 00 02 00 00 "
- //
- + "00 00 00 00 00 00 00 00 00 01 00 20 00 00 00 00 00 01 01 02 03 04 00 00 00 00 00 10 30 00 00 02 00 01 04 03 00 00"));
- assertEquals("1.2.3.4/32", ((Ipv4Prefix) mr.getMappingRecordItem().get(0)
- .getMappingRecord().getEid().getAddress()).getIpv4Prefix().getValue());
+ + "00 00 00 00 00 00 00 00 00 01 00 20 00 00 00 00 "
+ + "00 01 01 02 03 04 00 00 00 00 00 10 30 00 00 02 00 01 04 03 00 00"));
+ assertArrayEquals(new byte[] {1, 2, 3, 4}, ((Ipv4PrefixBinary) mr.getMappingRecordItem().get(0)
+ .getMappingRecord().getEid().getAddress()).getIpv4AddressBinary().getValue());
// XXX Why here normalized and other cases not normalized?
- assertEquals("4.3.0.0/16", ((Ipv4Prefix) mr.getMappingRecordItem().get(1)
- .getMappingRecord().getEid().getAddress()).getIpv4Prefix().getValue());
- assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().isAuthoritative());
- assertEquals(true, mr.getMappingRecordItem().get(1).getMappingRecord().isAuthoritative());
+ assertArrayEquals(new byte[] {4, 3, 0, 0}, ((Ipv4PrefixBinary) mr.getMappingRecordItem().get(1)
+ .getMappingRecord().getEid().getAddress()).getIpv4AddressBinary().getValue());
+ assertEquals(false, mr.getMappingRecordItem().get(0).getMappingRecord().getAuthoritative());
+ assertEquals(true, mr.getMappingRecordItem().get(1).getMappingRecord().getAuthoritative());
assertEquals(Action.NoAction, mr.getMappingRecordItem().get(0).getMappingRecord().getAction());
assertEquals(Action.NativelyForward, mr.getMappingRecordItem().get(1).getMappingRecord().getAction());
assertEquals(0, mr.getMappingRecordItem().get(0).getMappingRecord().getMapVersion().shortValue());
assertEquals(2, mr.getMappingRecordItem().get(1).getMappingRecord().getMapVersion().shortValue());
- assertEquals(32, mr.getMappingRecordItem().get(0).getMappingRecord().getMaskLength().shortValue());
- assertEquals(16, mr.getMappingRecordItem().get(1).getMappingRecord().getMaskLength().shortValue());
+ assertEquals(32, MaskUtil.getMaskForAddress(mr.getMappingRecordItem().get(0).getMappingRecord()
+ .getEid().getAddress()));
+ assertEquals(16, MaskUtil.getMaskForAddress(mr.getMappingRecordItem().get(1).getMappingRecord()
+ .getEid().getAddress()));
assertEquals(1, mr.getMappingRecordItem().get(0).getMappingRecord().getRecordTtl().byteValue());
assertEquals(0, mr.getMappingRecordItem().get(1).getMappingRecord().getRecordTtl().byteValue());
}
MappingRecordBuilder recordBuilder = new MappingRecordBuilder();
recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
mrBuilder.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build())
+ .setMappingRecordItemId("xyzzy").build());
ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
recordBuilder.setAction(null);
mrBuilder.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build())
+ .setMappingRecordItemId("xyzzy").build());
ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
eidToLocator1.setAuthoritative(true);
eidToLocator1.setMapVersion((short) 3072);
mrBuilder.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(eidToLocator1.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(eidToLocator1.build()).setMappingRecordItemId("xyzzy")
+ .build());
MappingRecordBuilder eidToLocator2 = new MappingRecordBuilder();
eidToLocator2.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.7/32"));
eidToLocator2.setAuthoritative(false);
eidToLocator2.setMapVersion((short) 29);
mrBuilder.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(eidToLocator2.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(eidToLocator2.build()).setMappingRecordItemId("xyzzy")
+ .build());
ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
eidToLocatorBuilder.setLocatorRecord(new ArrayList<LocatorRecord>());
LocatorRecordBuilder locatorBuilder1 = new LocatorRecordBuilder();
- locatorBuilder1.setPriority((short) 0xF3);
- locatorBuilder1.setWeight((short) 0xF6);
- locatorBuilder1.setMulticastPriority((short) 0xA3);
- locatorBuilder1.setMulticastWeight((short) 0x06);
+ locatorBuilder1.setPriority(Uint8.valueOf(0xF3));
+ locatorBuilder1.setWeight(Uint8.valueOf(0xF6));
+ locatorBuilder1.setMulticastPriority(Uint8.valueOf(0xA3));
+ locatorBuilder1.setMulticastWeight(Uint8.valueOf(0x06));
locatorBuilder1.setRloc(LispAddressUtil.asIpv4Rloc("0.0.0.1"));
locatorBuilder1.setLocalLocator(true);
locatorBuilder1.setRlocProbed(true);
locatorBuilder1.setRouted(true);
+ locatorBuilder1.setLocatorId("someId");
eidToLocatorBuilder.getLocatorRecord().add(locatorBuilder1.build());
LocatorRecordBuilder locatorBuilder2 = new LocatorRecordBuilder();
- locatorBuilder2.setPriority((short) 0x03);
- locatorBuilder2.setWeight((short) 0x06);
- locatorBuilder2.setMulticastPriority((short) 0x03);
- locatorBuilder2.setMulticastWeight((short) 0xF1);
+ locatorBuilder2.setPriority(Uint8.valueOf(0x03));
+ locatorBuilder2.setWeight(Uint8.valueOf(0x06));
+ locatorBuilder2.setMulticastPriority(Uint8.valueOf(0x03));
+ locatorBuilder2.setMulticastWeight(Uint8.valueOf(0xF1));
locatorBuilder2.setRloc(LispAddressUtil.asIpv4Rloc("0.0.0.2"));
locatorBuilder2.setLocalLocator(false);
locatorBuilder2.setRlocProbed(false);
locatorBuilder2.setRouted(false);
+ locatorBuilder2.setLocatorId("otherId");
eidToLocatorBuilder.getLocatorRecord().add(locatorBuilder2.build());
mrBuilder.getMappingRecordItem().add(
- new MappingRecordItemBuilder().setMappingRecord(eidToLocatorBuilder.build()).build());
+ new MappingRecordItemBuilder().setMappingRecord(eidToLocatorBuilder.build())
+ .setMappingRecordItemId("xyzzy").build());
ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());