Migrate IT to use the Karaf 4 distribution
[lispflowmapping.git] / integrationtest / src / test / java / org / opendaylight / lispflowmapping / integrationtest / MappingServiceIntegrationTest.java
index b6d0b3f9f5372d8bcbedf7b55cb03e506b76182e..fdd883e8cd73ce4c641ed4a225b54bce325864d7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Contextream, Inc. and others.  All rights reserved.
+ * Copyright (c) 2014, 2017 Contextream, Inc. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -57,7 +57,7 @@ import org.opendaylight.controller.mdsal.it.base.AbstractMdsalTestBase;
 import org.opendaylight.lispflowmapping.config.ConfigIni;
 import org.opendaylight.lispflowmapping.implementation.LispMappingService;
 import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys;
-import org.opendaylight.lispflowmapping.interfaces.dao.SubscriberRLOC;
+import org.opendaylight.lispflowmapping.interfaces.dao.Subscriber;
 import org.opendaylight.lispflowmapping.interfaces.lisp.IFlowMapping;
 import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingService;
 import org.opendaylight.lispflowmapping.lisp.serializer.MapNotifySerializer;
@@ -65,6 +65,8 @@ import org.opendaylight.lispflowmapping.lisp.serializer.MapRegisterSerializer;
 import org.opendaylight.lispflowmapping.lisp.serializer.MapReplySerializer;
 import org.opendaylight.lispflowmapping.lisp.serializer.MapRequestSerializer;
 import org.opendaylight.lispflowmapping.lisp.type.LispMessage;
+import org.opendaylight.lispflowmapping.lisp.type.MappingData;
+import org.opendaylight.lispflowmapping.lisp.util.ByteUtil;
 import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier;
 import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
 import org.opendaylight.lispflowmapping.type.sbplugin.IConfigLispSouthboundPlugin;
@@ -110,6 +112,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.Ma
 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.MapRequest;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MappingKeepAlive;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MessageType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.OdlLispProtoListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.RequestMapping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId;
@@ -171,6 +174,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
     public static final String ODL = "org.opendaylight.controller";
     public static final String YANG = "org.opendaylight.yangtools";
+    private static final int MULTI_SITE_SLEEP_TIME = 1;
     private static final int MAX_NOTIFICATION_RETRYS = 20;
     private static final MappingAuthkey NULL_AUTH_KEY = new MappingAuthkeyBuilder().setKeyType(0).build();
 
@@ -179,7 +183,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
     public String getKarafDistro() {
         return maven()
                 .groupId("org.opendaylight.lispflowmapping")
-                .artifactId("distribution-karaf")
+                .artifactId("lispflowmapping-karaf")
                 .versionAsInProject()
                 .type("zip")
                 .getURL();
@@ -189,7 +193,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
     public MavenUrlReference getFeatureRepo() {
         return maven()
                 .groupId("org.opendaylight.lispflowmapping")
-                .artifactId("features-lispflowmapping")
+                .artifactId("features4-lispflowmapping")
                 .classifier("features")
                 .type("xml")
                 .versionAsInProject();
@@ -227,7 +231,8 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
     public void before() throws Exception {
         areWeReady();
         mapService.setLookupPolicy(IMappingService.LookupPolicy.NB_FIRST);
-        mapService.setMappingOverwrite(true);
+        mapService.setMappingMerge(false);
+        ConfigIni.getInstance().setSmrRetryCount(1);
 
         locatorEid = LispAddressUtil.asIpv4Rloc("4.3.2.1");
         socket = initSocket(socket, LispMessage.PORT_NUM);
@@ -415,15 +420,18 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
     }
 
     @Test
-    public void testNegativePrefix() throws UnknownHostException {
+    public void testNegativePrefix_gapIntersection() throws UnknownHostException {
         insertMappings();
         testGapIntersection();
+
+        insertMappings();
         testMultipleMappings();
     }
 
     private void testRepeatedSmr() throws SocketTimeoutException, UnknownHostException {
         cleanUP();
         long timeout = ConfigIni.getInstance().getSmrTimeout();
+        ConfigIni.getInstance().setSmrRetryCount(5);
 
         final InstanceIdType iid = new InstanceIdType(1L);
         final Eid eid1 = LispAddressUtil.asIpv4Eid("1.1.1.1", 1L);
@@ -437,7 +445,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         /* add subscribers */
         final String subscriberSrcRloc1 = "127.0.0.3";
         final String subscriberSrcRloc2 = "127.0.0.4";
-        final Set<SubscriberRLOC> subscriberSet1 = Sets.newHashSet(newSubscriber(eid1, subscriberSrcRloc1),
+        final Set<Subscriber> subscriberSet1 = Sets.newHashSet(newSubscriber(eid1, subscriberSrcRloc1),
                 newSubscriber(eid1, subscriberSrcRloc2));
         mapService.addData(MappingOrigin.Southbound, eid1, SubKeys.SUBSCRIBERS, subscriberSet1);
 
@@ -448,9 +456,9 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         /* add mapping */
         final MappingRecord mapping1 = new MappingRecordBuilder()
                 .setEid(eid1).setTimestamp(System.currentTimeMillis()).setRecordTtl(1440).build();
-        mapService.addMapping(MappingOrigin.Northbound, eid1, null, mapping1, false);
+        mapService.addMapping(MappingOrigin.Northbound, eid1, null, new MappingData(mapping1));
 
-        sleepForMilliseconds((timeout * expectedSmrs1) - 1500);
+        sleepForMilliseconds((timeout * expectedSmrs1) - (timeout / 2));
         final List<MapRequest> requests1 = processSmrPackets(reader1, subscriberSrcRloc1, expectedSmrs1);
         final MapReply mapReply1 = lms.handleMapRequest(
                 new MapRequestBuilder(requests1.get(0))
@@ -524,13 +532,13 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         return true;
     }
 
-    private static SubscriberRLOC newSubscriber(Eid srcEid, String srcRlocIp) {
+    private static Subscriber newSubscriber(Eid srcEid, String srcRlocIp) {
         final byte[] addressBinary = InetAddresses.forString(srcRlocIp).getAddress();
         final int timeout = 5;
         final Rloc srcRloc = new RlocBuilder().setAddress(new Ipv4BinaryBuilder()
                 .setIpv4Binary(new Ipv4AddressBinary(addressBinary)).build()).build();
 
-        return new SubscriberRLOC(srcRloc, srcEid, timeout);
+        return new Subscriber(srcRloc, srcEid, timeout);
     }
 
     private void testMultipleMappings() throws UnknownHostException {
@@ -555,10 +563,10 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
                 .setIpv4AddressBinary(new Ipv4AddressBinary(InetAddress.getByName(resultPrefix1).getAddress()))
                 .setIpv4MaskLength((short) 18).build();
 
-        final String resultPrefix2 = "1.1.192.0";
+        final String resultPrefix2 = "1.1.128.0";
         final Address resultMapping2 = new Ipv4PrefixBinaryBuilder()
                 .setIpv4AddressBinary(new Ipv4AddressBinary(InetAddress.getByName(resultPrefix2).getAddress()))
-                .setIpv4MaskLength((short) 18).build();
+                .setIpv4MaskLength((short) 17).build();
 
         final String resultPrefix3 = "1.3.0.0";
         final Address resultNegMapping3 = new Ipv4PrefixBinaryBuilder()
@@ -613,10 +621,14 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         final Eid eid = LispAddressUtil.asIpv4PrefixBinaryEid("0.0.0.0/0", iid);
         mapService.addAuthenticationKey(eid, NULL_AUTH_KEY);
 
-        mapService.addMapping(MappingOrigin.Northbound, mapRecordNbLeft.getEid(), null, mapRecordNbLeft, false);
-        mapService.addMapping(MappingOrigin.Northbound, mapRecordNbRight.getEid(), null, mapRecordNbRight, false);
-        mapService.addMapping(MappingOrigin.Southbound, mapRecordSbLeft.getEid(), null, mapRecordSbLeft, false);
-        mapService.addMapping(MappingOrigin.Southbound, mapRecordSbRight.getEid(), null, mapRecordSbRight, false);
+        mapService.addMapping(MappingOrigin.Northbound, mapRecordNbLeft.getEid(), null,
+                new MappingData(mapRecordNbLeft));
+        mapService.addMapping(MappingOrigin.Northbound, mapRecordNbRight.getEid(), null,
+                new MappingData(mapRecordNbRight));
+        mapService.addMapping(MappingOrigin.Southbound, mapRecordSbLeft.getEid(), null,
+                new MappingData(mapRecordSbLeft, System.currentTimeMillis()));
+        mapService.addMapping(MappingOrigin.Southbound, mapRecordSbRight.getEid(), null,
+                new MappingData(mapRecordSbRight, System.currentTimeMillis()));
 
         restartSocket();
         sleepForSeconds(2);
@@ -634,8 +646,11 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         return new MappingRecordBuilder()
                 .setEid(prefixBinary)
                 .setLocatorRecord(Lists.newArrayList(new LocatorRecordBuilder()
-                        .setRloc(LispAddressUtil.asIpv4Rloc("2.2.2.2")).setLocatorId("loc_id").build()))
-                .setTimestamp(System.currentTimeMillis()).setRecordTtl(1440).build();
+                        .setRloc(LispAddressUtil.asIpv4Rloc("2.2.2.2"))
+                        .setLocatorId("loc_id")
+                        .setPriority((short) 1).build()))
+                .setTimestamp(System.currentTimeMillis())
+                .setRecordTtl(1440).build();
     }
 
     /**
@@ -655,7 +670,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         multiSiteScenario.storeSouthboundMappings(false, SITE_A, SITE_B, SITE_C, SITE_D4, SITE_D5);
         multiSiteScenario.storeNorthMappingSrcDst(SITE_B, SITE_C);
         multiSiteScenario.storeNorthMappingNegative(SITE_C, Action.Drop);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.assertPingWorks(SITE_A, 5, SITE_B, 4);
         multiSiteScenario.assertPingWorks(SITE_B, 5, SITE_C, 4);
         multiSiteScenario.assertPingFails(SITE_A, 1, SITE_C, 4);
@@ -665,7 +680,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 1) 192.0.2.5/32
         // 2) 192.0.1.1/32
         multiSiteScenario.storeNorthMappingSrcDst(SITE_A, SITE_C);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_B.getHost(5), SITE_A.getHost(1));
         multiSiteScenario.assertPingWorks(SITE_A, 5, SITE_C, 4);
         multiSiteScenario.assertPingWorks(SITE_B, 5, SITE_C, 4);
@@ -678,7 +693,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 3) 192.0.1.5/32
         // 4) 192.0.4.5/32
         multiSiteScenario.deleteNorthMappingNegative(SITE_C);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_B.getHost(5), SITE_A.getHost(1), SITE_A
                         .getHost(5),
                 SITE_D4.getHost(5));
@@ -688,7 +703,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // following action should trigger generatting of SMR messages:
         // 1) 192.0.4.5/32
         multiSiteScenario.storeNorthMappingSrcDst(SITE_B, SITE_C_RLOC_10);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_D4.getHost(5));
         //way of testing ping - get RLOC for mapping src-dst and compare it with awaited value doesn't test
         //that ping won't be successfull
@@ -699,7 +714,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 1) 192.0.4.5/32
         // 2) 192.0.2.5/32
         multiSiteScenario.storeNorthMappingNegative(SITE_C, Action.Drop);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_D4.getHost(5), SITE_B.getHost(5));
         multiSiteScenario.assertPingFails(SITE_D4, 5, SITE_C, 4);
 
@@ -708,7 +723,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
         //TEST CASE 7
         multiSiteScenario.deleteNorthMapingSrcDst(SITE_A, SITE_C);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         // following action should trigger generatting of SMR messages:
         // 1) 192.0.4.5/32
         // 2) 192.0.2.5/32
@@ -721,7 +736,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 2) 192.0.2.5/32
         // 3) 192.0.5.5/32
         multiSiteScenario.storeNorthMappingSrcDst(SITE_B, SITE_C);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_D5.getHost(5), SITE_D4.getHost(5),
                 SITE_B.getHost(5));
 
@@ -736,7 +751,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 3) 192.0.5.5/32
         // 4) 192.0.1.1/32
         multiSiteScenario.deleteNorthMapingSrcDst(SITE_B, SITE_C);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_D5.getHost(5), SITE_D4.getHost(5),
                 SITE_B.getHost(5),
                 SITE_A.getHost(1));
@@ -751,7 +766,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 3) 192.0.5.5/32
         // 4) 192.0.1.1/32
         multiSiteScenario.deleteNorthMappingNegative(SITE_C);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_D5.getHost(5), SITE_D4.getHost(5),
                 SITE_B.getHost(5),
                 SITE_A.getHost(1));
@@ -776,7 +791,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         final SocketReader socketReader = SocketReader.startReadingInStandaloneThread(socket);
 
         mapService.setLookupPolicy(IMappingService.LookupPolicy.NB_AND_SB);
-        mapService.setMappingOverwrite(false);
+        mapService.setMappingMerge(true);
 
         //TEST CASE 1
         multiSiteScenario.storeSouthboundMappings(true, SITE_A_SB, SITE_B_SB, SITE_C_WP_100_1_SB, SITE_D_WP_100_1_SB,
@@ -784,7 +799,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         multiSiteScenario.storeNorthMappingIpPrefix(SITE_A_SB);
         multiSiteScenario.storeNorthMappingIpPrefix(SITE_B_SB);
         multiSiteScenario.storeNorthMappingIpPrefix(SITE_C_WP_50_2_SB, SITE_D_WP_50_2_SB);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.assertPingWorks(SITE_A_SB, 5, SITE_C_WP_50_2_SB, 4, SITE_D_WP_50_2_SB);
         multiSiteScenario.assertPingWorks(SITE_B_SB, 5, SITE_C_WP_50_2_SB, 4, SITE_D_WP_50_2_SB);
 
@@ -793,14 +808,14 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 1) 192.0.2.5/32
         // 2) 192.0.1.5/32
         multiSiteScenario.storeNorthMappingSrcDst(SITE_A_SB, SITE_C_WP_50_2_SB, SITE_D_WP_50_2_SB);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_B_SB.getHost(5), SITE_A_SB.getHost(5));
 
         // following action should trigger generatting of SMR messages:
         // 1) 192.0.2.5/32
         // 2) 192.0.1.5/32
         multiSiteScenario.storeNorthMappingNegative(SITE_C_SB, Action.Drop);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_B_SB.getHost(5), SITE_A_SB.getHost(5));
 
         multiSiteScenario.assertPingWorks(SITE_A_SB, 5, SITE_C_WP_50_2_SB, 4, SITE_D_WP_50_2_SB);
@@ -812,13 +827,13 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         // 1) 192.0.2.5/32
         // 2) 192.0.1.5/32
         multiSiteScenario.storeNorthMappingSrcDst(SITE_A_SB, SITE_C_WP_50_2_SB);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_B_SB.getHost(5), SITE_A_SB.getHost(5));
         multiSiteScenario.assertPingWorks(SITE_A_SB, 5, SITE_C_WP_50_2_SB, 4);
 
         //TEST CASE 4
         multiSiteScenario.storeNorthMappingSrcDst(SITE_B_SB, SITE_C_WP_50_2_SB, SITE_D_WP_50_2_SB);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         // following action should trigger generatting of SMR messages:
         // 1) 192.0.2.5/32
         // 2) 192.0.1.5/32
@@ -827,7 +842,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
         //TEST CASE 5
         multiSiteScenario.deleteSouthboundMappings(SITE_D_DELETE_SB);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         // following action should trigger generatting of SMR messages:
         // 1) 192.0.2.5/32
         // 2) 192.0.1.5/32
@@ -837,14 +852,14 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
         //TEST CASE 6
         multiSiteScenario.deleteNorthMapingSrcDst(SITE_A_SB, SITE_C_WP_50_2_SB);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         // following action should trigger generatting of SMR messages:
         // 1) 192.0.2.5/32
         // 2) 192.0.1.5/32
         multiSiteScenario.checkSMR(socketReader, SITE_C.getEidPrefix(), SITE_B_SB.getHost(5), SITE_A_SB.getHost(5));
 
         multiSiteScenario.deleteNorthMapingSrcDst(SITE_B_SB, SITE_C_WP_50_2_SB);
-        sleepForSeconds(2);
+        sleepForSeconds(MULTI_SITE_SLEEP_TIME);
         multiSiteScenario.assertPingFails(SITE_B_SB, 5, SITE_C_WP_50_2_SB, 4);
 
         socketReader.stopReading();
@@ -979,7 +994,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
     public void testMapRegisterOverwritesNoSubkey() throws SocketTimeoutException {
         cleanUP();
-        mapService.setMappingOverwrite(true);
+        mapService.setMappingMerge(false);
         Eid eid = LispAddressUtil.asIpv4PrefixBinaryEid("1.2.3.4/32");
         Rloc rloc1Value = LispAddressUtil.asIpv4Rloc("4.3.2.1");
         Rloc rloc2Value = LispAddressUtil.asIpv4Rloc("4.3.2.2");
@@ -991,7 +1006,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
     public void testMapRegisterDoesntOverwritesNoSubkey() throws SocketTimeoutException {
         cleanUP();
-        mapService.setMappingOverwrite(false);
+        mapService.setMappingMerge(true);
         Eid eid = LispAddressUtil.asIpv4PrefixBinaryEid("1.2.3.4/32");
         Rloc rloc1Value = LispAddressUtil.asIpv4Rloc("4.3.2.1");
         Rloc rloc2Value = LispAddressUtil.asIpv4Rloc("4.3.2.2");
@@ -2011,6 +2026,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
     public void mapRequestMapRegisterAndMapRequestTestTimeout() throws SocketTimeoutException {
         cleanUP();
+        ConfigIni.getInstance().setSmrRetryCount(0);
         Eid eid = LispAddressUtil.asIpv4PrefixBinaryEid("1.2.3.4/32");
         mapService.addAuthenticationKey(eid, NULL_AUTH_KEY);
         sleepForSeconds(1);
@@ -2082,7 +2098,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
 
     private void timedOutMappingRecord() {
         cleanUP();
-        mapService.setMappingOverwrite(false);
+        mapService.setMappingMerge(true);
         // mapping expires after 1 second
         ConfigIni.getInstance().setRegistrationValiditySb(1000L);
 
@@ -2094,7 +2110,6 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
                 .setRloc(LispAddressUtil.asIpv4Rloc("1.1.1.1")).setLocatorId("locator-id").build();
         final MappingRecord mappingRecord = new MappingRecordBuilder()
                 .setEid(eid)
-                .setTimestamp(System.currentTimeMillis())
                 .setSiteId(siteId)
                 .setRecordTtl(1000)
                 .setXtrId(xtrId)
@@ -2104,7 +2119,8 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         mappingRecord.getLocatorRecord().add(locatorRecord);
 
         mapService.addAuthenticationKey(eid, NULL_AUTH_KEY);
-        mapService.addMapping(MappingOrigin.Southbound, eid, siteId, mappingRecord, true);
+        mapService.addMapping(MappingOrigin.Southbound, eid, siteId,
+                new MappingData(mappingRecord, System.currentTimeMillis()));
         sleepForSeconds(2);
 
         MappingRecord resultRecord = (MappingRecord) mapService.getMapping(MappingOrigin.Southbound, eid);
@@ -2334,7 +2350,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
     }
 
     private MapReply receiveMapReply() throws SocketTimeoutException {
-        return MapReplySerializer.getInstance().deserialize(ByteBuffer.wrap(receivePacket().getData()));
+        return receiveMapReply(socket, 1000);
     }
 
     private MapRequest receiveMapRequest(DatagramSocket datagramSocket) throws SocketTimeoutException {
@@ -2398,6 +2414,24 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase {
         }
     }
 
+    private MapReply receiveMapReply(DatagramSocket receivedSocket, int timeout) throws SocketTimeoutException {
+        DatagramPacket packet;
+        try {
+            while (true) {
+                packet = receivePacket(receivedSocket, timeout);
+                final ByteBuffer buff = ByteBuffer.wrap(packet.getData());
+                final int type = ByteUtil.getUnsignedByte(buff, LispMessage.Pos.TYPE) >> 4;
+                final Object lispType = MessageType.forValue(type);
+
+                if (lispType == MessageType.MapReply) {
+                    return MapReplySerializer.getInstance().deserialize(buff);
+                }
+            }
+        } catch (SocketTimeoutException ste) {
+            throw ste;
+        }
+    }
+
     private void sleepForSeconds(int seconds) {
         try {
             Thread.sleep(seconds*1000);