use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.map.register.cache.key.container.MapRegisterCacheKeyBuilder in project lispflowmapping by opendaylight.
the class MapRegisterPartialDeserializer method createKeyFromBytes.
private static MapRegisterCacheKey createKeyFromBytes(final ByteBuffer buffer, int authDataLength) {
byte typeAndFlags = buffer.get();
buffer.position(0);
boolean xtrSiteIdPresent = ByteUtil.extractBit(typeAndFlags, XTR_SITE_ID);
if (!xtrSiteIdPresent) {
return null;
}
final MapRegisterCacheKeyBuilder mapRegisterCacheKeyBuilder = new MapRegisterCacheKeyBuilder();
final byte[] eidPrefix = extractEidPrefix(buffer, authDataLength);
if (eidPrefix == null) {
return null;
}
mapRegisterCacheKeyBuilder.setEidPrefix(eidPrefix);
if (xtrSiteIdPresent) {
buffer.position(0);
final int bufferLength = buffer.remaining();
buffer.position(bufferLength - MapRegisterSerializer.Length.XTRID_SIZE - MapRegisterSerializer.Length.SITEID_SIZE);
byte[] xtrId = new byte[MapRegisterSerializer.Length.XTRID_SIZE];
buffer.get(xtrId);
mapRegisterCacheKeyBuilder.setXtrId(xtrId);
byte[] siteId = new byte[MapRegisterSerializer.Length.SITEID_SIZE];
buffer.get(siteId);
mapRegisterCacheKeyBuilder.setSiteId(siteId);
}
return mapRegisterCacheKeyBuilder.build();
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.map.register.cache.key.container.MapRegisterCacheKeyBuilder in project lispflowmapping by opendaylight.
the class LispSouthboundHandlerTest method cacheRecordExpirationTest.
private void cacheRecordExpirationTest(boolean cacheRecordTimeouted) throws InterruptedException {
mapRegisterCache = Mockito.mock(MapRegisterCache.class);
Mockito.when(mockLispSouthboundPlugin.getMapRegisterCache()).thenReturn(mapRegisterCache);
final byte[] eidPrefixAfi = new byte[] { 0x00, 0x01 };
final byte[] eidPrefix = new byte[] { 0x0a, 0x0a, 0x0a, 0x0a };
MapRegisterCacheKeyBuilder cacheKeyBld = new MapRegisterCacheKeyBuilder();
cacheKeyBld.setXtrId(XTR_ID);
cacheKeyBld.setEidPrefix(eidPrefix);
cacheKeyBld.setSiteId(SITE_ID);
MapRegisterCacheMetadataBuilder cacheMetadataBld = new MapRegisterCacheMetadataBuilder();
cacheMetadataBld.setTimestamp(System.currentTimeMillis() - (cacheRecordTimeouted ? CACHE_RECORD_TIMEOUT : 0L));
cacheMetadataBld.setWantMapNotify(false);
MapRegisterCacheValueBuilder cacheValueBld = new MapRegisterCacheValueBuilder();
cacheValueBld.setMapRegisterCacheMetadata(cacheMetadataBld.build());
cacheValueBld.setPacketData(MapRegisterCacheTestUtil.joinArrays(DATA1, KEY_ID, DATA2, eidPrefixAfi, eidPrefix, DATA3, XTR_ID, SITE_ID));
final MapRegisterCacheKey cacheKey = cacheKeyBld.build();
final MapRegisterCacheValue cacheValue = cacheValueBld.build();
Mockito.when(mapRegisterCache.getEntry(Mockito.eq(cacheKey))).thenReturn(cacheRecordTimeouted ? null : cacheValue);
Mockito.when(mapRegisterCache.refreshEntry(Mockito.eq(cacheKey))).thenReturn(cacheValue);
mapRegisterInvocationForCacheTest(eidPrefixAfi, eidPrefix);
Mockito.verify(mockLispSouthboundPlugin, Mockito.atLeastOnce()).sendNotificationIfPossible(Mockito.any(AddMapping.class));
InOrder inOrder = Mockito.inOrder(mapRegisterCache);
inOrder.verify(mapRegisterCache).getEntry(Mockito.eq(cacheKey));
if (cacheRecordTimeouted) {
inOrder.verify(mapRegisterCache).addEntry(Mockito.eq(cacheKey), AdditionalMatchers.not(Mockito.eq(cacheValue)));
} else {
inOrder.verify(mapRegisterCache).refreshEntry(Mockito.eq(cacheKey));
}
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.map.register.cache.key.container.MapRegisterCacheKeyBuilder in project lispflowmapping by opendaylight.
the class MapRegisterCacheTestUtil method createMapRegisterCacheKey.
static MapRegisterCacheKey createMapRegisterCacheKey(final byte[] eidPrefix) {
final MapRegisterCacheKeyBuilder mapRegisterCacheKeyBuilder = new MapRegisterCacheKeyBuilder();
mapRegisterCacheKeyBuilder.setXtrId(XTR_ID);
mapRegisterCacheKeyBuilder.setSiteId(SITE_ID);
mapRegisterCacheKeyBuilder.setEidPrefix(eidPrefix);
return mapRegisterCacheKeyBuilder.build();
}
Aggregations