Make SimpleMapCache simple again 78/46778/20
authorLorand Jakab <lojakab@cisco.com>
Mon, 10 Oct 2016 19:22:08 +0000 (22:22 +0300)
committerLorand Jakab <lojakab@cisco.com>
Fri, 9 Dec 2016 08:21:20 +0000 (10:21 +0200)
commit0095029b8f12e4503ad745c71318509c9fbd8724
tree91f9c1035fd98935438127e15ad03622502e4602
parentd65b6ddcbe9f3c6ff93313d3651d4b4296c94b22
Make SimpleMapCache simple again

A lot of logic in SimpleMapCache is intelligence to handle LISP specific
features, like merging mappings from several different xTRs and handling
expiration of mapping state from UDP xTR registrations. This logic does
not belong there architecturally, and should be moved out.

SimpleMapCache still needs to handle some LISP specific functionality,
but methods implementing that functionality should not be part of the
general IMapCache contract, which is implemented by all map caches. This
commit introduces a new interface, ILispMapCache, which is only
implemented by SimpleMapCache, to provide access to xTR-ID specific
mappings.

Since FlatMapCache was not really maitained and tested, this patch
causes the map caches not be built when `iterateMask` is false. It's
better to fail than give undefined behavior to the user.

The patch also updates the mapping system and mapping service interfaces
to use MappingData instead of the immutable MappingRecord (contained
within) so that mapping context can be easily carried in both directions
between layers.

Change-Id: I49dbc68615a360d1b9d1c32b4af23726f173259f
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
36 files changed:
integrationtest/src/test/java/org/opendaylight/lispflowmapping/integrationtest/MappingServiceIntegrationTest.java
integrationtest/src/test/java/org/opendaylight/lispflowmapping/integrationtest/MultiSiteScenario.java
integrationtest/src/test/java/org/opendaylight/lispflowmapping/integrationtest/MultiSiteScenarioUtil.java
mappingservice/api/src/main/java/org/opendaylight/lispflowmapping/interfaces/dao/SubKeys.java
mappingservice/api/src/main/java/org/opendaylight/lispflowmapping/interfaces/mapcache/ILispMapCache.java [new file with mode: 0644]
mappingservice/api/src/main/java/org/opendaylight/lispflowmapping/interfaces/mapcache/IMapCache.java
mappingservice/api/src/main/java/org/opendaylight/lispflowmapping/interfaces/mapcache/IMappingSystem.java
mappingservice/api/src/main/java/org/opendaylight/lispflowmapping/interfaces/mappingservice/IMappingService.java
mappingservice/api/src/main/yang/odl-mappingservice.yang
mappingservice/dsbackend/src/main/java/org/opendaylight/lispflowmapping/dsbackend/DataStoreBackEnd.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingSystem.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolver.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServer.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/MappingDataListener.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/DSBEInputUtil.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/MappingMergeUtil.java
mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/LispMappingServiceTest.java
mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/MappingSystemTest.java
mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolverTest.java
mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServerTest.java
mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MappingServiceTest.java
mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/mdsal/MappingDataListenerTest.java
mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/util/MappingMergeUtilTest.java
mappingservice/lisp-proto/src/main/java/org/opendaylight/lispflowmapping/lisp/type/MappingData.java [new file with mode: 0644]
mappingservice/mapcache/pom.xml
mappingservice/mapcache/src/main/java/org/opendaylight/lispflowmapping/mapcache/ExtendedMappingRecord.java [deleted file]
mappingservice/mapcache/src/main/java/org/opendaylight/lispflowmapping/mapcache/FlatMapCache.java
mappingservice/mapcache/src/main/java/org/opendaylight/lispflowmapping/mapcache/MappingMergeUtil.java [deleted file]
mappingservice/mapcache/src/main/java/org/opendaylight/lispflowmapping/mapcache/MultiTableMapCache.java
mappingservice/mapcache/src/main/java/org/opendaylight/lispflowmapping/mapcache/SimpleMapCache.java
mappingservice/mapcache/src/test/java/org/opendaylight/lispflowmapping/mapcache/FlatMapCacheTest.java
mappingservice/mapcache/src/test/java/org/opendaylight/lispflowmapping/mapcache/MappingMergeUtilTest.java [deleted file]
mappingservice/mapcache/src/test/java/org/opendaylight/lispflowmapping/mapcache/MultiTableMapCacheTest.java
mappingservice/mapcache/src/test/java/org/opendaylight/lispflowmapping/mapcache/SimpleMapCacheTest.java