Remove use of junit-addons
[lispflowmapping.git] / mappingservice / lisp-proto / src / test / java / org / opendaylight / lispflowmapping / serializer / MapReplySerializationTest.java
index a7b9a19de41181f15a782cde709d8a7991a221e8..74799536a6f2e9873208b2f7108fd61656dfb713 100644 (file)
@@ -5,28 +5,31 @@
  * 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.LispAFIConvertor;
+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.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord.Action;
+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.eidtolocatorrecords.EidToLocatorRecord;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder;
 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.mapreplymessage.MapReplyBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class MapReplySerializationTest extends BaseTestCase {
 
@@ -41,10 +44,12 @@ public class MapReplySerializationTest extends BaseTestCase {
     @Test
     public void serialize__SomeFlags() throws Exception {
         MapReplyBuilder mr = new MapReplyBuilder();
-        mr.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
-        mr.getEidToLocatorRecord().add(
-                new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")))
-                        .build());
+        mr.setMappingRecordItem(new ArrayList<MappingRecordItem>());
+        MappingRecordBuilder recordBuilder = new MappingRecordBuilder();
+        recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
+        mr.getMappingRecordItem().add(
+                new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).setMappingRecordItemId("xyzzy")
+                    .build());
         mr.setProbe(true);
         mr.setEchoNonceEnabled(false);
 
@@ -64,111 +69,137 @@ public class MapReplySerializationTest extends BaseTestCase {
     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(LispAFIConvertor.asIPv4Address(("1.2.3.4")), mr.getEidToLocatorRecord().get(0)
-                .getLispAddressContainer());
-        assertEquals(LispAFIConvertor.asIPv4Prefix(("4.3.2.1"), 16), mr.getEidToLocatorRecord().get(1)
-                .getLispAddressContainer());
-        assertEquals(false, mr.getEidToLocatorRecord().get(0).isAuthoritative());
-        assertEquals(true, mr.getEidToLocatorRecord().get(1).isAuthoritative());
-        assertEquals(Action.NoAction, mr.getEidToLocatorRecord().get(0).getAction());
-        assertEquals(Action.NativelyForward, mr.getEidToLocatorRecord().get(1).getAction());
-        assertEquals(0, mr.getEidToLocatorRecord().get(0).getMapVersion().shortValue());
-        assertEquals(2, mr.getEidToLocatorRecord().get(1).getMapVersion().shortValue());
-        assertEquals(32, mr.getEidToLocatorRecord().get(0).getMaskLength().shortValue());
-        assertEquals(16, mr.getEidToLocatorRecord().get(1).getMaskLength().shortValue());
-        assertEquals(2, mr.getEidToLocatorRecord().get(0).getRecordTtl().byteValue());
-        assertEquals(0, mr.getEidToLocatorRecord().get(1).getRecordTtl().byteValue());
-        assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress(("1:2:3:4:5:6:7:8"))), mr.getEidToLocatorRecord().get(0)
-                .getLocatorRecord().get(1).getLispAddressContainer());
-        assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress(("10.10.10.10"))), mr.getEidToLocatorRecord().get(0)
-                .getLocatorRecord().get(0).getLispAddressContainer());
-        assertEquals(1, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(0).getPriority().byteValue());
-        assertEquals(2, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(0).getWeight().byteValue());
-        assertEquals(3, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(0).getMulticastPriority().byteValue());
-        assertEquals(4, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(0).getMulticastWeight().byteValue());
-        assertEquals(4, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(1).getPriority().byteValue());
-        assertEquals(3, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(1).getWeight().byteValue());
-        assertEquals(2, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(1).getMulticastPriority().byteValue());
-        assertEquals(1, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(1).getMulticastWeight().byteValue());
-        assertEquals(true, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(0).isLocalLocator());
-        assertEquals(true, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(0).isRlocProbed());
-        assertEquals(false, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(0).isRouted());
-        assertEquals(false, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(1).isLocalLocator());
-        assertEquals(false, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(1).isRlocProbed());
-        assertEquals(true, mr.getEidToLocatorRecord().get(0).getLocatorRecord().get(1).isRouted());
+        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?
+        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, 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());
+        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
     public void serialize__MultipleRecordsWithoutRLOCs() throws Exception {
         MapReplyBuilder mrBuilder = new MapReplyBuilder();
-        mrBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
-        mrBuilder.getEidToLocatorRecord().add(
-                new EidToLocatorRecordBuilder().setLispAddressContainer(
-                        LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress(("0:0:0:0:0:0:0:8")))).build());
-        mrBuilder.getEidToLocatorRecord().add(
-                new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("8.2.4.5")))
-                        .build());
+        mrBuilder.setMappingRecordItem(new ArrayList<MappingRecordItem>());
+        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()).setMappingRecordItemId("xyzzy")
+                    .build());
+
+        recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("8.2.4.5/32"));
+        mrBuilder.getMappingRecordItem().add(
+                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 };
+        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[] actual = new byte[16];
         packet.get(actual);
-        ArrayAssert.assertEquals(expected, actual);
+        assertArrayEquals(expected, actual);
 
-        packet.position(packet.position() + 12); /* EID in second record */
+        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(LispAFIConvertor.asIPv4Address(("1.2.3.4")), mr.getEidToLocatorRecord().get(0)
-                .getLispAddressContainer());
-        assertEquals(LispAFIConvertor.asIPv4Prefix("4.3.2.1", 16), mr.getEidToLocatorRecord().get(1)
-                .getLispAddressContainer());
-        assertEquals(false, mr.getEidToLocatorRecord().get(0).isAuthoritative());
-        assertEquals(true, mr.getEidToLocatorRecord().get(1).isAuthoritative());
-        assertEquals(Action.NoAction, mr.getEidToLocatorRecord().get(0).getAction());
-        assertEquals(Action.NativelyForward, mr.getEidToLocatorRecord().get(1).getAction());
-        assertEquals(0, mr.getEidToLocatorRecord().get(0).getMapVersion().shortValue());
-        assertEquals(2, mr.getEidToLocatorRecord().get(1).getMapVersion().shortValue());
-        assertEquals(32, mr.getEidToLocatorRecord().get(0).getMaskLength().shortValue());
-        assertEquals(16, mr.getEidToLocatorRecord().get(1).getMaskLength().shortValue());
-        assertEquals(1, mr.getEidToLocatorRecord().get(0).getRecordTtl().byteValue());
-        assertEquals(0, mr.getEidToLocatorRecord().get(1).getRecordTtl().byteValue());
+                + "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?
+        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, 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());
     }
 
     @Test
     public void serialize__EidRecordDefaultAction() throws Exception {
         MapReplyBuilder mrBuilder = new MapReplyBuilder();
-        mrBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
-        mrBuilder.getEidToLocatorRecord().add(
-                new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress(("0.0.0.1"))))
-                        .build());
+        mrBuilder.setMappingRecordItem(new ArrayList<MappingRecordItem>());
+        MappingRecordBuilder recordBuilder = new MappingRecordBuilder();
+        recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
+        mrBuilder.getMappingRecordItem().add(
+                new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build())
+                    .setMappingRecordItemId("xyzzy").build());
 
         ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
 
@@ -179,10 +210,13 @@ public class MapReplySerializationTest extends BaseTestCase {
     @Test
     public void serialize__EidRecordNullActionShouldTranslateToDefault() throws Exception {
         MapReplyBuilder mrBuilder = new MapReplyBuilder();
-        mrBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
-        mrBuilder.getEidToLocatorRecord().add(
-                new EidToLocatorRecordBuilder().setAction(null)
-                        .setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress(("0.0.0.1")))).build());
+        mrBuilder.setMappingRecordItem(new ArrayList<MappingRecordItem>());
+        MappingRecordBuilder recordBuilder = new MappingRecordBuilder();
+        recordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
+        recordBuilder.setAction(null);
+        mrBuilder.getMappingRecordItem().add(
+                new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build())
+                    .setMappingRecordItemId("xyzzy").build());
 
         ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
 
@@ -193,81 +227,87 @@ public class MapReplySerializationTest extends BaseTestCase {
     @Test
     public void serialize__EidRecordFields() throws Exception {
         MapReplyBuilder mrBuilder = new MapReplyBuilder();
-        mrBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
+        mrBuilder.setMappingRecordItem(new ArrayList<MappingRecordItem>());
 
-        EidToLocatorRecordBuilder eidToLocator1 = new EidToLocatorRecordBuilder();
-        eidToLocator1.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")));
+        MappingRecordBuilder eidToLocator1 = new MappingRecordBuilder();
+        eidToLocator1.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
         eidToLocator1.setRecordTtl(7);
         eidToLocator1.setAction(Action.SendMapRequest);
         eidToLocator1.setAuthoritative(true);
         eidToLocator1.setMapVersion((short) 3072);
-        mrBuilder.getEidToLocatorRecord().add(eidToLocator1.build());
+        mrBuilder.getMappingRecordItem().add(
+                new MappingRecordItemBuilder().setMappingRecord(eidToLocator1.build()).setMappingRecordItemId("xyzzy")
+                    .build());
 
-        EidToLocatorRecordBuilder eidToLocator2 = new EidToLocatorRecordBuilder();
-        eidToLocator2.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.7")));
+        MappingRecordBuilder eidToLocator2 = new MappingRecordBuilder();
+        eidToLocator2.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.7/32"));
         eidToLocator2.setRecordTtl(1000000);
         eidToLocator2.setAction(Action.Drop);
         eidToLocator2.setAuthoritative(false);
         eidToLocator2.setMapVersion((short) 29);
-        mrBuilder.getEidToLocatorRecord().add(eidToLocator2.build());
+        mrBuilder.getMappingRecordItem().add(
+                new MappingRecordItemBuilder().setMappingRecord(eidToLocator2.build()).setMappingRecordItemId("xyzzy")
+                    .build());
 
         ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
 
-        packet.position(12); /* First record */
+        packet.position(12); // First record
         assertEquals(7, packet.getInt());
-        packet.position(packet.position() + 2); /*
-                                                 * skip Locator Count & Mask-len
-                                                 */
+        packet.position(packet.position() + 2); // skip Locator Count & Mask-len
+
         assertHexEquals((byte) 0x50, packet.get());
-        packet.position(packet.position() + 1); /* skip Reserved byte */
+        packet.position(packet.position() + 1); // skip Reserved byte
         assertEquals((short) 3072, packet.getShort());
 
-        packet.position(packet.position() + 6); /* Second record */
+        packet.position(packet.position() + 6); // Second record
         assertEquals(1000000, packet.getInt());
-        packet.position(packet.position() + 2); /*
-                                                 * skip Locator Count & Mask-len
-                                                 */
+        packet.position(packet.position() + 2); // skip Locator Count & Mask-len
+
         assertHexEquals((byte) 0x60, packet.get());
-        packet.position(packet.position() + 1); /* skip Reserved byte */
+        packet.position(packet.position() + 1); // skip Reserved byte
         assertEquals((short) 29, packet.getShort());
     }
 
     @Test
     public void serialize__LocatorRecordFields() throws Exception {
         MapReplyBuilder mrBuilder = new MapReplyBuilder();
-        mrBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
+        mrBuilder.setMappingRecordItem(new ArrayList<MappingRecordItem>());
 
-        EidToLocatorRecordBuilder eidToLocatorBuilder = new EidToLocatorRecordBuilder();
-        eidToLocatorBuilder.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")));
+        MappingRecordBuilder eidToLocatorBuilder = new MappingRecordBuilder();
+        eidToLocatorBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"));
         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.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")));
+        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.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.2")));
+        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.getEidToLocatorRecord().add(eidToLocatorBuilder.build());
+        mrBuilder.getMappingRecordItem().add(
+                new MappingRecordItemBuilder().setMappingRecord(eidToLocatorBuilder.build())
+                    .setMappingRecordItemId("xyzzy").build());
 
         ByteBuffer packet = MapReplySerializer.getInstance().serialize(mrBuilder.build());
 
-        packet.position(12 + 16); /* First locator record */
+        packet.position(12 + 16); // First locator record
         assertHexEquals((byte) 0xF3, packet.get());
         assertHexEquals((byte) 0xF6, packet.get());
         assertHexEquals((byte) 0xA3, packet.get());
@@ -275,7 +315,7 @@ public class MapReplySerializationTest extends BaseTestCase {
         packet.position(packet.position() + 1);
         assertHexEquals((byte) 0x07, packet.get());
 
-        packet.position(packet.position() + 6); /* Second locator record */
+        packet.position(packet.position() + 6); // Second locator record
         assertHexEquals((byte) 0x03, packet.get());
         assertHexEquals((byte) 0x06, packet.get());
         assertHexEquals((byte) 0x03, packet.get());