Bump upstreams for 2022.09 Chlorine
[lispflowmapping.git] / mappingservice / implementation / src / test / java / org / opendaylight / lispflowmapping / implementation / MappingSystemTest.java
index 114bd48ed242200fc5352f6d3ed8f011f60422e8..f129a0e76b03f1152817e2144ef5f6e5be4760eb 100644 (file)
@@ -19,22 +19,30 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.EnumMap;
 import java.util.List;
+import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.lispflowmapping.config.ConfigIni;
 import org.opendaylight.lispflowmapping.dsbackend.DataStoreBackEnd;
-import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
 import org.opendaylight.lispflowmapping.implementation.util.MappingMergeUtil;
 import org.opendaylight.lispflowmapping.inmemorydb.HashMapDb;
 import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
 import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys;
+import org.opendaylight.lispflowmapping.interfaces.mapcache.IAuthKeyDb;
+import org.opendaylight.lispflowmapping.interfaces.mapcache.ILispMapCache;
 import org.opendaylight.lispflowmapping.interfaces.mapcache.IMapCache;
 import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingService;
+import org.opendaylight.lispflowmapping.lisp.type.MappingData;
+import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier;
 import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ExplicitLocatorPathLcaf;
@@ -55,18 +63,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.Xt
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
 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;
+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.authkey.container.MappingAuthkey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.authkey.container.MappingAuthkeyBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord;
-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.rloc.container.Rloc;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.RlocBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.EidUri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKeyBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKeyKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingKey;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint8;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
@@ -77,12 +90,14 @@ import org.powermock.modules.junit4.PowerMockRunnerDelegate;
 @PrepareForTest(MappingMergeUtil.class)
 public class MappingSystemTest {
 
-    private static ILispDAO daoMock = Mockito.mock(ILispDAO.class);
-    @Mock private static IMapCache smcMock;
+    private static ILispDAO dao = new HashMapDb();
+    @Mock private static ILispMapCache smcMock;
     @Mock private static IMapCache pmcMock;
+    @Mock private static IAuthKeyDb akdbMock;
     @Mock private static DataStoreBackEnd dsbeMock;
+    @Mock private static NotificationPublishService npsMock;
     @Mock private static EnumMap<MappingOrigin, IMapCache> tableMapMock;
-    @InjectMocks private static MappingSystem mappingSystem = new MappingSystem(daoMock, false, true, true);
+    @InjectMocks private static MappingSystem mappingSystem = new MappingSystem(dao, false, npsMock, true);
 
     private static final String IPV4_SRC =      "127.0.0.1";
     private static final String IPV4_DST =      "192.168.0.1";
@@ -96,8 +111,9 @@ public class MappingSystemTest {
     private static final Eid EID_IPV4_1 = LispAddressUtil.asIpv4Eid(IPV4_STRING_1);
     private static final Eid EID_IPV4_2 = LispAddressUtil.asIpv4Eid(IPV4_STRING_2);
     private static final Eid EID_SERVICE_PATH = new EidBuilder().setAddress(getDefaultServicePath((short) 253)).build();
+    // with index out of bounds
     private static final Eid EID_SERVICE_PATH_INDEX_OOB = new EidBuilder()
-            .setAddress(getDefaultServicePath((short) 200)).build(); // with index out of bounds
+            .setAddress(getDefaultServicePath((short) 200)).build();
 
     public static final SimpleAddress SIMPLE_ADDR_1 = new SimpleAddress(new IpAddress(new Ipv4Address(IPV4_STRING_1)));
     public static final SimpleAddress SIMPLE_ADDR_2 = new SimpleAddress(new IpAddress(new Ipv4Address(IPV4_STRING_2)));
@@ -108,7 +124,7 @@ public class MappingSystemTest {
     private static final Hop HOP_3 = new HopBuilder().setHopId("hop-id-3").setAddress(SIMPLE_ADDR_3).build();
 
     private static final MappingAuthkeyBuilder MAPPING_AUTHKEY_BUILDER = new MappingAuthkeyBuilder()
-            .setKeyType(1).setKeyString("pass-1");
+            .setKeyType(Uint16.ONE).setKeyString("pass-1");
     private static final Rloc RLOC = LispAddressUtil.toRloc(new Ipv4Address(IPV4_STRING_2));
     private static final ConfigIni CONFIG_INI = ConfigIni.getInstance();
     private static final long REGISTRATION_VALIDITY = CONFIG_INI.getRegistrationValiditySb();
@@ -120,9 +136,6 @@ public class MappingSystemTest {
 
     @Before
     public void init() throws Exception {
-        Mockito.when(daoMock.putTable(MappingOrigin.Southbound.toString())).thenReturn(Mockito.mock(HashMapDb.class));
-        Mockito.when(daoMock.putTable(MappingOrigin.Northbound.toString())).thenReturn(Mockito.mock(HashMapDb.class));
-
         Mockito.when(tableMapMock.get(MappingOrigin.Southbound)).thenReturn(smcMock);
         Mockito.when(tableMapMock.get(MappingOrigin.Northbound)).thenReturn(pmcMock);
 
@@ -150,7 +163,7 @@ public class MappingSystemTest {
     /**
      * This method changes the lookup policy.
      */
-    private static void setLookupPolicy(IMappingService.LookupPolicy policy) throws NoSuchFieldException,
+    private static void setLookupPolicy(final IMappingService.LookupPolicy policy) throws NoSuchFieldException,
             IllegalAccessException {
         final Field lookupPolicy = ConfigIni.class.getDeclaredField("lookupPolicy");
         lookupPolicy.setAccessible(true);
@@ -162,16 +175,16 @@ public class MappingSystemTest {
      */
     @Test
     public void getMappingTest_NbFirst_withNullExpiredNbMapping() {
-        final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
-                .setTimestamp(EXPIRED_DATE.getTime()).build();
+        final MappingData mappingData = getDefaultMappingData();
+        mappingData.setTimestamp(EXPIRED_DATE);
         Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(null);
-        Mockito.when(smcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(mappingRecord);
+        Mockito.when(smcMock.getMapping(EID_IPV4_DST, (XtrId) null)).thenReturn(mappingData, null);
 
         final Mapping mapping = new MappingBuilder()
-                .setEidUri(new EidUri("ipv4:1.2.3.0"))
+                .setEidUri(new EidUri("ipv4:" + IPV4_DST))
                 .setOrigin(MappingOrigin.Southbound)
-                .setSiteId(Lists.newArrayList(SITE_ID))
-                .setMappingRecord(mappingRecord).build();
+                .setSiteId(Set.of(SITE_ID))
+                .setMappingRecord(mappingData.getRecord()).build();
 
         assertNull(mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
         Mockito.verify(dsbeMock).removeMapping(mapping);
@@ -183,11 +196,11 @@ public class MappingSystemTest {
      */
     @Test
     public void getMappingTest_NbFirst_withNullNbMapping() {
-        final MappingRecord mappingRecord = getDefaultMappingRecordBuilder().build();
+        final MappingData mappingData = getDefaultMappingData();
         Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(null);
-        Mockito.when(smcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(mappingRecord);
+        Mockito.when(smcMock.getMapping(EID_IPV4_DST, (XtrId) null)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
     }
 
     /**
@@ -198,11 +211,13 @@ public class MappingSystemTest {
     public void getMappingTest_NbFirst_withServicePathDestinationAddress_multipleLocatorRecords() {
         final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
                 .setLocatorRecord(Lists.newArrayList(
-                        getDefaultLocatorRecordBuilder().build(), // set two locators
+                        // set two locators
+                        getDefaultLocatorRecordBuilder().build(),
                         getDefaultLocatorRecordBuilder().build())).build();
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingRecord);
+        final MappingData mappingData = getDefaultMappingData(mappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
     }
 
     /**
@@ -213,10 +228,12 @@ public class MappingSystemTest {
     public void getMappingTest_NbFirst_withServicePathDestinationAddress_singleIpv4LocatorRecord() {
         final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
                 .setLocatorRecord(Lists.newArrayList(
-                        getDefaultLocatorRecordBuilder().build())).build(); // Ipv4 type Rloc
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingRecord);
+                        // Ipv4 type Rloc
+                        getDefaultLocatorRecordBuilder().build())).build();
+        final MappingData mappingData = getDefaultMappingData(mappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
     }
 
     /**
@@ -229,9 +246,10 @@ public class MappingSystemTest {
                 .setLocatorRecord(Lists.newArrayList(
                         getDefaultLocatorRecordBuilder()
                                 .setRloc(getELPTypeRloc()).build())).build();
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH_INDEX_OOB)).thenReturn(mappingRecord);
+        final MappingData mappingData = getDefaultMappingData(mappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH_INDEX_OOB)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH_INDEX_OOB));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH_INDEX_OOB));
     }
 
     /**
@@ -245,10 +263,11 @@ public class MappingSystemTest {
                 .setLocatorRecord(Lists.newArrayList(
                         getDefaultLocatorRecordBuilder()
                                 .setRloc(getELPTypeRloc()).build())).build();
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingRecord);
+        final MappingData mappingData = getDefaultMappingData(mappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingData);
 
-        final MappingRecord result = (MappingRecord) mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH);
-        final Ipv4Binary ipv4Result = (Ipv4Binary) result.getLocatorRecord().get(0).getRloc().getAddress();
+        final MappingData result = mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH);
+        final Ipv4Binary ipv4Result = (Ipv4Binary) result.getRecord().getLocatorRecord().get(0).getRloc().getAddress();
         assertTrue(Arrays
                 .equals(InetAddress.getByName(IPV4_STRING_3).getAddress(), ipv4Result.getIpv4Binary().getValue()));
     }
@@ -263,9 +282,10 @@ public class MappingSystemTest {
                 .setLocatorRecord(Lists.newArrayList(
                         getDefaultLocatorRecordBuilder()
                                 .setRloc(getIpPrefixTypeRloc()).build())).build();
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingRecord);
+        final MappingData mappingData = getDefaultMappingData(mappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
     }
 
     /**
@@ -276,9 +296,10 @@ public class MappingSystemTest {
         final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
                 .setLocatorRecord(Lists.newArrayList(
                         getDefaultLocatorRecordBuilder().build())).build();
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(mappingRecord);
+        final MappingData mappingData = getDefaultMappingData(mappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
     }
 
     /**
@@ -303,10 +324,12 @@ public class MappingSystemTest {
         setLookupPolicy(IMappingService.LookupPolicy.NB_AND_SB);
         final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
                 .setLocatorRecord(Lists.newArrayList(
-                        getDefaultLocatorRecordBuilder().build())).build(); // Ipv4 type Rloc
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingRecord);
+                        // Ipv4 type Rloc
+                        getDefaultLocatorRecordBuilder().build())).build();
+        final MappingData mappingData = getDefaultMappingData(mappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_SERVICE_PATH));
     }
 
     /**
@@ -318,25 +341,24 @@ public class MappingSystemTest {
             IllegalAccessException {
         setLookupPolicy(IMappingService.LookupPolicy.NB_AND_SB);
 
-        final MappingRecord nbMappingRecord = getDefaultMappingRecordBuilder()
-                .setLocatorRecord(Lists.newArrayList(
-                        getDefaultLocatorRecordBuilder().build())).build(); // Ipv4 type Rloc
-
-        final MappingRecord sbMappingRecord = getDefaultMappingRecordBuilder()
-                .setTimestamp(EXPIRED_DATE.getTime())
+        final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
                 .setLocatorRecord(Lists.newArrayList(
-                        getDefaultLocatorRecordBuilder().build())).build(); // Ipv4 type Rloc
+                        // Ipv4 type Rloc
+                        getDefaultLocatorRecordBuilder().build())).build();
+        MappingData nbMappingData = getDefaultMappingData(mappingRecord);
+        MappingData sbMappingData = getDefaultMappingData(mappingRecord);
+        sbMappingData.setTimestamp(EXPIRED_DATE);
 
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(nbMappingRecord);
-        Mockito.when(smcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(sbMappingRecord);
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(nbMappingData);
+        Mockito.when(smcMock.getMapping(EID_IPV4_DST, (XtrId) null)).thenReturn(sbMappingData, null);
 
         final Mapping mapping = new MappingBuilder()
-                .setEidUri(new EidUri("ipv4:1.2.3.0"))
+                .setEidUri(new EidUri("ipv4:" + IPV4_DST))
                 .setOrigin(MappingOrigin.Southbound)
-                .setSiteId(Lists.newArrayList(SITE_ID))
-                .setMappingRecord(sbMappingRecord).build();
+                .setSiteId(Set.of(SITE_ID))
+                .setMappingRecord(mappingRecord).build();
 
-        assertEquals(nbMappingRecord, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
+        assertEquals(nbMappingData, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
         Mockito.verify(dsbeMock).removeMapping(mapping);
     }
 
@@ -349,21 +371,19 @@ public class MappingSystemTest {
             IllegalAccessException {
         setLookupPolicy(IMappingService.LookupPolicy.NB_AND_SB);
 
-        final MappingRecord nbMappingRecord = getDefaultMappingRecordBuilder()
-                .setLocatorRecord(Lists.newArrayList(
-                        getDefaultLocatorRecordBuilder().build())).build();
-
-        final MappingRecord sbMappingRecord = getDefaultMappingRecordBuilder()
+        final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
                 .setLocatorRecord(Lists.newArrayList(
                         getDefaultLocatorRecordBuilder().build())).build();
+        final MappingData nbMappingData = getDefaultMappingData(mappingRecord);
+        final MappingData sbMappingData = getDefaultMappingData(mappingRecord);
 
         // this mock will be ultimately returned when MappingMergeUtil.computeNbSbIntersection is called
-        final MappingRecord resultMock = Mockito.mock(MappingRecord.class);
+        final MappingData resultMock = Mockito.mock(MappingData.class);
 
         PowerMockito.mockStatic(MappingMergeUtil.class);
-        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(nbMappingRecord);
-        Mockito.when(smcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(sbMappingRecord);
-        PowerMockito.when(MappingMergeUtil.computeNbSbIntersection(nbMappingRecord, sbMappingRecord))
+        Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(nbMappingData);
+        Mockito.when(smcMock.getMapping(EID_IPV4_DST, (XtrId) null)).thenReturn(sbMappingData);
+        PowerMockito.when(MappingMergeUtil.computeNbSbIntersection(nbMappingData, sbMappingData))
                 .thenReturn(resultMock);
 
         assertEquals(resultMock, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
@@ -374,11 +394,11 @@ public class MappingSystemTest {
      */
     @Test
     public void getMappingTest_withSrcNull() {
-        final MappingRecord mappingRecord = getDefaultMappingRecordBuilder().build();
+        final MappingData mappingData = getDefaultMappingData();
         Mockito.when(pmcMock.getMapping(null, EID_IPV4_DST)).thenReturn(null);
-        Mockito.when(smcMock.getMapping(null, EID_IPV4_DST)).thenReturn(mappingRecord);
+        Mockito.when(smcMock.getMapping(EID_IPV4_DST, (XtrId) null)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(EID_IPV4_DST));
+        assertEquals(mappingData, mappingSystem.getMapping(EID_IPV4_DST));
     }
 
     /**
@@ -386,13 +406,12 @@ public class MappingSystemTest {
      */
     @Test
     public void getMappingTest_withXtrId() {
-        final MappingRecord mappingRecord = getDefaultMappingRecordBuilder()
-                .setXtrId(XTR_ID).build();
+        final MappingData mappingData = getDefaultMappingData();
+        mappingData.setXtrId(XTR_ID);
 
-        Mockito.when(smcMock.getMapping(null, EID_IPV4_DST, XTR_ID.getValue()))
-                .thenReturn(mappingRecord);
+        Mockito.when(smcMock.getMapping(EID_IPV4_DST, XTR_ID)).thenReturn(mappingData);
 
-        assertEquals(mappingRecord, mappingSystem.getMapping(null, EID_IPV4_DST, XTR_ID));
+        assertEquals(mappingData, mappingSystem.getMapping(null, EID_IPV4_DST, XTR_ID));
     }
 
     /**
@@ -400,8 +419,11 @@ public class MappingSystemTest {
      */
     @Test
     public void getMappingTest_withMappingOrigin() {
+        final MappingData mappingData = getDefaultMappingData();
+        Mockito.when(smcMock.getMapping(EID_IPV4_SRC, (XtrId) null)).thenReturn(mappingData);
+
         mappingSystem.getMapping(MappingOrigin.Southbound, EID_IPV4_SRC);
-        Mockito.verify(smcMock).getMapping(null, EID_IPV4_SRC);
+        Mockito.verify(smcMock).getMapping(EID_IPV4_SRC, (XtrId) null);
 
         mappingSystem.getMapping(MappingOrigin.Northbound, EID_IPV4_SRC);
         Mockito.verify(pmcMock).getMapping(null, EID_IPV4_SRC);
@@ -415,7 +437,7 @@ public class MappingSystemTest {
         Mockito.when(tableMapMock.get(MappingOrigin.Northbound)).thenReturn(pmcMock);
 
         mappingSystem.removeMapping(MappingOrigin.Northbound, EID_IPV4_1);
-        Mockito.verify(pmcMock).removeMapping(EID_IPV4_1, true);
+        Mockito.verify(pmcMock).removeMapping(EID_IPV4_1);
     }
 
     /**
@@ -423,23 +445,12 @@ public class MappingSystemTest {
      */
     @Test
     public void removeMappingTest_sb() throws NoSuchFieldException, IllegalAccessException {
-        mappingSystem = new MappingSystem(daoMock, false, true, false);
+        mappingSystem = new MappingSystem(dao, false, npsMock, false);
         injectMocks();
         Mockito.when(tableMapMock.get(MappingOrigin.Southbound)).thenReturn(smcMock);
 
         mappingSystem.removeMapping(MappingOrigin.Southbound, EID_IPV4_1);
-        Mockito.verify(smcMock).removeMapping(EID_IPV4_1, false);
-    }
-
-    /**
-     * Tests {@link MappingSystem#updateMappingRegistration} method.
-     */
-    @Test
-    public void updateMappingRegistrationTest() {
-        Mockito.when(tableMapMock.get(MappingOrigin.Northbound)).thenReturn(pmcMock);
-
-        mappingSystem.updateMappingRegistration(MappingOrigin.Northbound, EID_IPV4_1, 1L);
-        Mockito.verify(pmcMock).updateMappingRegistration(EID_IPV4_1, 1L);
+        Mockito.verify(smcMock).removeMapping(EID_IPV4_1);
     }
 
     /**
@@ -448,37 +459,47 @@ public class MappingSystemTest {
     @Test
     public void restoreDaoFromDatastoreTest() {
         final Mapping mapping_1 = new MappingBuilder()
+                .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_1)),
+                        MappingOrigin.Northbound))
                 .setOrigin(MappingOrigin.Northbound)
                 .setMappingRecord(getDefaultMappingRecordBuilder()
-                        .setEid(EID_IPV4_1)
-                        .setTimestamp(EXPIRED_DATE.getTime()).build()).build();
+                        .setEid(EID_IPV4_1).build()).build();
         final Mapping mapping_2 = new MappingBuilder()
+                .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_2)),
+                        MappingOrigin.Northbound))
                 .setOrigin(MappingOrigin.Northbound)
                 .setMappingRecord(getDefaultMappingRecordBuilder()
                         .setEid(EID_IPV4_2).build()).build();
 
         final MappingAuthkey mappingAuthkey_1 = MAPPING_AUTHKEY_BUILDER.build();
         final AuthenticationKey authenticationKey_1 = new AuthenticationKeyBuilder()
+                .withKey(new AuthenticationKeyKey(new EidUri("uri-1")))
                 .setMappingAuthkey(mappingAuthkey_1)
                 .setEid(EID_IPV4_1).build();
 
         final MappingAuthkey mappingAuthkey_2 = MAPPING_AUTHKEY_BUILDER.setKeyString("pass-2").build();
         final AuthenticationKey authenticationKey_2 = new AuthenticationKeyBuilder()
+                .withKey(new AuthenticationKeyKey(new EidUri("uri-2")))
                 .setMappingAuthkey(mappingAuthkey_2)
                 .setEid(EID_IPV4_2).build();
 
         final List<Mapping> mappings = Lists.newArrayList(mapping_1, mapping_2);
         final List<AuthenticationKey> authenticationKeys = Lists.newArrayList(authenticationKey_1, authenticationKey_2);
 
-        Mockito.when(dsbeMock.getAllMappings()).thenReturn(mappings);
+        Mockito.when(dsbeMock.getLastUpdateTimestamp()).thenReturn(System.currentTimeMillis());
+        Mockito.when(dsbeMock.getAllMappings(LogicalDatastoreType.CONFIGURATION)).thenReturn(mappings);
         Mockito.when(dsbeMock.getAllAuthenticationKeys()).thenReturn(authenticationKeys);
         Mockito.when(tableMapMock.get(MappingOrigin.Northbound)).thenReturn(pmcMock);
 
         mappingSystem.initialize();
-        Mockito.verify(dsbeMock, Mockito.times(1)).removeMapping(mapping_1);
-        Mockito.verify(pmcMock).addMapping(EID_IPV4_2, mapping_2.getMappingRecord(), true, false);
-        Mockito.verify(smcMock).addAuthenticationKey(EID_IPV4_1, mappingAuthkey_1);
-        Mockito.verify(smcMock).addAuthenticationKey(EID_IPV4_2, mappingAuthkey_2);
+
+        ArgumentCaptor<MappingData> captor = ArgumentCaptor.forClass(MappingData.class);
+        Mockito.verify(pmcMock).addMapping(Mockito.eq(EID_IPV4_1), captor.capture());
+        assertEquals(captor.getValue().getRecord(), mapping_1.getMappingRecord());
+        Mockito.verify(pmcMock).addMapping(Mockito.eq(EID_IPV4_2), captor.capture());
+        assertEquals(captor.getValue().getRecord(), mapping_2.getMappingRecord());
+        Mockito.verify(akdbMock).addAuthenticationKey(EID_IPV4_1, mappingAuthkey_1);
+        Mockito.verify(akdbMock).addAuthenticationKey(EID_IPV4_2, mappingAuthkey_2);
     }
 
     /**
@@ -487,7 +508,7 @@ public class MappingSystemTest {
     @Test
     public void addAuthenticationKeyTest() {
         mappingSystem.addAuthenticationKey(EID_IPV4_1, MAPPING_AUTHKEY_BUILDER.build());
-        Mockito.verify(smcMock).addAuthenticationKey(EID_IPV4_1, MAPPING_AUTHKEY_BUILDER.build());
+        Mockito.verify(akdbMock).addAuthenticationKey(EID_IPV4_1, MAPPING_AUTHKEY_BUILDER.build());
     }
 
     /**
@@ -495,7 +516,7 @@ public class MappingSystemTest {
      */
     @Test
     public void getAuthenticationKeyTest() {
-        Mockito.when(smcMock.getAuthenticationKey(EID_IPV4_1)).thenReturn(MAPPING_AUTHKEY_BUILDER.build());
+        Mockito.when(akdbMock.getAuthenticationKey(EID_IPV4_1)).thenReturn(MAPPING_AUTHKEY_BUILDER.build());
         assertEquals(MAPPING_AUTHKEY_BUILDER.build(), mappingSystem.getAuthenticationKey(EID_IPV4_1));
     }
 
@@ -505,7 +526,7 @@ public class MappingSystemTest {
     @Test
     public void removeAuthenticationKeyTest() {
         mappingSystem.removeAuthenticationKey(EID_IPV4_1);
-        Mockito.verify(smcMock).removeAuthenticationKey(EID_IPV4_1);
+        Mockito.verify(akdbMock).removeAuthenticationKey(EID_IPV4_1);
     }
 
     /**
@@ -541,15 +562,6 @@ public class MappingSystemTest {
         Mockito.verify(pmcMock).removeData(EID_IPV4_1, SubKeys.RECORD);
     }
 
-    /**
-     * Tests {@link MappingSystem#cleanCaches} method.
-     */
-    @Test
-    public void cleanCachesTest() {
-        mappingSystem.cleanCaches();
-        Mockito.verify(daoMock).removeAll();
-    }
-
     /**
      * Following test are executed for coverage-increase purpose.
      */
@@ -560,27 +572,37 @@ public class MappingSystemTest {
         Mockito.verify(smcMock).printMappings();
 
         mappingSystem.destroy();
-        mappingSystem = new MappingSystem(daoMock, true, true, true);
+        mappingSystem = new MappingSystem(dao, true, npsMock, true);
         mappingSystem.setDataStoreBackEnd(dsbeMock);
-        mappingSystem.setOverwritePolicy(true);
+        mappingSystem.setMappingMerge(false);
         mappingSystem.setIterateMask(true);
     }
 
+    private static MappingData getDefaultMappingData() {
+        return getDefaultMappingData(null);
+    }
+
+    private static MappingData getDefaultMappingData(MappingRecord mappingRecord) {
+        if (mappingRecord == null) {
+            mappingRecord = getDefaultMappingRecordBuilder().build();
+        }
+        return new MappingData(mappingRecord, System.currentTimeMillis());
+    }
+
     private static MappingRecordBuilder getDefaultMappingRecordBuilder() {
         return new MappingRecordBuilder()
-                .setTimestamp(System.currentTimeMillis())
                 .setSiteId(SITE_ID)
-                .setEid(EID_IPV4_1);
+                .setEid(EID_IPV4_DST);
     }
 
-    private static ServicePath getDefaultServicePath(short index) {
+    private static ServicePath getDefaultServicePath(final short index) {
         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address
                 .service.path.ServicePathBuilder servicePathBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params
                 .xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path.ServicePathBuilder();
 
         return new ServicePathBuilder().setServicePath(servicePathBuilder
-                .setServiceIndex(index)
-                .setServicePathId(new ServicePathIdType(1L)).build())
+                .setServiceIndex(Uint8.valueOf(index))
+                .setServicePathId(new ServicePathIdType(Uint32.ONE)).build())
                 .build();
     }
 
@@ -599,7 +621,7 @@ public class MappingSystemTest {
 
         return new RlocBuilder()
                 .setAddress(explicitLocatorPath)
-                .setAddressType(ExplicitLocatorPathLcaf.class).build();
+                .setAddressType(ExplicitLocatorPathLcaf.VALUE).build();
     }
 
     private static Rloc getIpPrefixTypeRloc() {
@@ -609,6 +631,6 @@ public class MappingSystemTest {
 
         return new RlocBuilder()
                 .setAddress(address)
-                .setAddressType(Ipv4PrefixAfi.class).build();
+                .setAddressType(Ipv4PrefixAfi.VALUE).build();
     }
 }