2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.lispflowmapping.implementation.lisp;
10 import static org.junit.Assert.assertEquals;
12 import com.google.common.collect.ImmutableSet;
13 import com.google.common.collect.Lists;
14 import com.google.common.collect.Sets;
15 import java.lang.reflect.Field;
16 import java.util.ArrayList;
17 import java.util.Date;
18 import java.util.HashSet;
19 import java.util.List;
21 import org.junit.Before;
22 import org.junit.Ignore;
23 import org.junit.Test;
24 import org.junit.runner.RunWith;
25 import org.mockito.ArgumentCaptor;
26 import org.mockito.Mock;
27 import org.mockito.Mockito;
28 import org.mockito.Spy;
29 import org.mockito.junit.MockitoJUnitRunner;
30 import org.opendaylight.controller.md.sal.binding.api.NotificationService;
31 import org.opendaylight.lispflowmapping.config.ConfigIni;
32 import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys;
33 import org.opendaylight.lispflowmapping.interfaces.dao.Subscriber;
34 import org.opendaylight.lispflowmapping.interfaces.lisp.IMapNotifyHandler;
35 import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingService;
36 import org.opendaylight.lispflowmapping.lisp.type.LispMessage;
37 import org.opendaylight.lispflowmapping.lisp.type.MappingData;
38 import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
39 import org.opendaylight.lispflowmapping.lisp.util.SourceDestKeyHelper;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.IpAddressBinary;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv4AddressBinary;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifymessage.MapNotifyBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.authkey.container.MappingAuthkey;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.authkey.container.MappingAuthkeyBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItem;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemKey;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapregistermessage.MapRegisterBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequest;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddress;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddressBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin;
64 @RunWith(MockitoJUnitRunner.class)
65 public class MapServerTest {
67 @Mock private static IMappingService mapService;
68 @Mock private static IMapNotifyHandler notifyHandler;
69 @Mock private static NotificationService notificationService;
71 @Spy private static Set<Subscriber> subscriberSetMock_1 = new HashSet<>();
72 @Spy private static Set<Subscriber> subscriberSetMock_2 = new HashSet<>();
73 @Spy private static Set<Subscriber> subscriberSetMock_3 = new HashSet<>();
74 private static MapServer mapServer;
75 private static MapRegister mapRegister;
76 private static MappingData mappingData;
78 private static final String IPV4_STRING_1 = "1.2.3.0";
79 private static final String IPV4_STRING_2 = "1.2.4.0";
80 private static final String IPV4_STRING_3 = "192.168.0.1";
81 private static final String IPV4_STRING_4 = "192.168.0.2";
82 private static final String IPV4_STRING_5 = "192.168.0.3";
83 private static final String IPV4_STRING_6 = "192.168.0.4";
84 private static final String IPV4_SOURCE_STRING_1 = "127.0.0.1";
85 private static final String IPV4_SOURCE_STRING_2 = "127.0.0.2";
86 private static final String IPV4_SOURCE_STRING_3 = "127.0.0.3";
87 private static final String IPV4_SOURCE_STRING_4 = "127.0.0.4";
88 private static final String IPV4_SOURCE_STRING_5 = "127.0.0.5";
89 private static final String IPV4_SOURCE_STRING_6 = "127.0.0.6";
90 private static final String IPV4_PREFIX_1 = "/24";
91 private static final String IPV4_PREFIX_2 = "/16";
92 private static final int MASK = 24;
93 private static final int VNI = 10;
95 private static final Eid IPV4_EID_1 = LispAddressUtil.asIpv4Eid(IPV4_STRING_1);
96 private static final Eid IPV4_EID_2 = LispAddressUtil.asIpv4Eid(IPV4_STRING_2);
97 private static final Eid IPV4_PREFIX_EID_1 = LispAddressUtil.asIpv4PrefixBinaryEid(IPV4_STRING_1 + IPV4_PREFIX_1);
98 private static final Eid IPV4_PREFIX_EID_2 = LispAddressUtil.asIpv4PrefixBinaryEid(IPV4_STRING_1 + IPV4_PREFIX_2);
99 private static final Eid IPV4_SOURCE_EID_1 = LispAddressUtil.asIpv4Eid(IPV4_SOURCE_STRING_1);
100 private static final Eid IPV4_SOURCE_EID_2 = LispAddressUtil.asIpv4Eid(IPV4_SOURCE_STRING_2);
101 private static final Eid IPV4_SOURCE_EID_3 = LispAddressUtil.asIpv4Eid(IPV4_SOURCE_STRING_3);
102 private static final Eid IPV4_SOURCE_EID_4 = LispAddressUtil.asIpv4Eid(IPV4_SOURCE_STRING_4);
103 private static final Eid IPV4_SOURCE_EID_5 = LispAddressUtil.asIpv4Eid(IPV4_SOURCE_STRING_5);
104 private static final Eid IPV4_SOURCE_EID_6 = LispAddressUtil.asIpv4Eid(IPV4_SOURCE_STRING_6);
105 private static final Rloc RLOC_1 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_1);
106 private static final Rloc RLOC_2 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_2);
107 private static final Rloc RLOC_3 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_3);
108 private static final Rloc RLOC_4 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_4);
109 private static final Rloc RLOC_5 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_5);
110 private static final Rloc RLOC_6 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_6);
112 private static final IpAddressBinary IPV4_BINARY_1 =
113 new IpAddressBinary(new Ipv4AddressBinary(new byte[] {1, 2, 3, 0}));
114 private static final IpAddressBinary IPV4_BINARY_2 =
115 new IpAddressBinary(new Ipv4AddressBinary(new byte[] {1, 2, 4, 0}));
117 private static final long TWO_DAYS = 86400000L * 2;
119 // timedOut() == true
120 private static final Subscriber SUBSCRIBER_RLOC_1 = new Subscriber(RLOC_1,
121 IPV4_SOURCE_EID_1, Subscriber.DEFAULT_SUBSCRIBER_TIMEOUT,
122 new Date(System.currentTimeMillis() - TWO_DAYS));
123 // timedOut() == false
124 private static final Subscriber SUBSCRIBER_RLOC_2 = new Subscriber(RLOC_2,
125 IPV4_SOURCE_EID_2, Subscriber.DEFAULT_SUBSCRIBER_TIMEOUT);
126 // timedOut() == true
127 private static final Subscriber SUBSCRIBER_RLOC_3 = new Subscriber(RLOC_3,
128 IPV4_SOURCE_EID_3, Subscriber.DEFAULT_SUBSCRIBER_TIMEOUT,
129 new Date(System.currentTimeMillis() - TWO_DAYS));
130 // timedOut() == false
131 private static final Subscriber SUBSCRIBER_RLOC_4 = new Subscriber(RLOC_4,
132 IPV4_SOURCE_EID_4, Subscriber.DEFAULT_SUBSCRIBER_TIMEOUT);
133 // timedOut() == true
134 private static final Subscriber SUBSCRIBER_RLOC_5 = new Subscriber(RLOC_5,
135 IPV4_SOURCE_EID_5, Subscriber.DEFAULT_SUBSCRIBER_TIMEOUT,
136 new Date(System.currentTimeMillis() - TWO_DAYS));
137 // timedOut() == false
138 private static final Subscriber SUBSCRIBER_RLOC_6 = new Subscriber(RLOC_6,
139 IPV4_SOURCE_EID_6, Subscriber.DEFAULT_SUBSCRIBER_TIMEOUT);
141 private static final Eid SOURCE_DEST_KEY_EID = LispAddressUtil
142 .asSrcDstEid(IPV4_STRING_1, IPV4_STRING_2, MASK, MASK, VNI);
143 private static final MappingAuthkey MAPPING_AUTHKEY = new MappingAuthkeyBuilder().setKeyType(0).build();
144 private static final ConfigIni CONFIG_INI = ConfigIni.getInstance();
146 private static final LocatorRecord LOCATOR_RECORD_1 = new LocatorRecordBuilder().setRloc(RLOC_1).build();
147 private static final LocatorRecord LOCATOR_RECORD_2 = new LocatorRecordBuilder().setRloc(RLOC_2).build();
149 private static final MappingRecord OLD_MAPPING_RECORD_1 = getDefaultMappingRecordBuilder()
150 .setLocatorRecord(Lists.newArrayList(LOCATOR_RECORD_1)).build();
151 private static final MappingRecord OLD_MAPPING_RECORD_2 = getDefaultMappingRecordBuilder()
152 .setLocatorRecord(Lists.newArrayList(LOCATOR_RECORD_2)).build();
153 private static final MappingData OLD_MAPPING_DATA_1 = new MappingData(OLD_MAPPING_RECORD_1);
154 private static final MappingData OLD_MAPPING_DATA_2 = new MappingData(OLD_MAPPING_RECORD_2);
156 private static final Set<IpAddressBinary> DEFAULT_IP_ADDRESS_SET = getDefaultIpAddressSet();
159 public void init() throws NoSuchFieldException, IllegalAccessException {
160 mapServer = new MapServer(mapService, true, notifyHandler, notificationService);
161 subscriberSetMock_1.add(SUBSCRIBER_RLOC_1);
162 subscriberSetMock_1.add(SUBSCRIBER_RLOC_2);
163 subscriberSetMock_2.add(SUBSCRIBER_RLOC_3);
164 subscriberSetMock_2.add(SUBSCRIBER_RLOC_4);
165 subscriberSetMock_3.add(SUBSCRIBER_RLOC_5);
166 subscriberSetMock_3.add(SUBSCRIBER_RLOC_6);
167 mapRegister = getDefaultMapRegisterBuilder().build();
168 mappingData = new MappingData(mapRegister.getMappingRecordItem().iterator().next().getMappingRecord(),
169 System.currentTimeMillis());
170 setConfigIniMappingMergeField(false);
174 public void handleMapRegisterTest_MappingMergeFalse() throws NoSuchFieldException, IllegalAccessException {
175 Mockito.when(mapService.getMapping(MappingOrigin.Southbound, IPV4_EID_1)).thenReturn(OLD_MAPPING_DATA_1);
177 mappingData.setMergeEnabled(false);
178 mapServer.handleMapRegister(mapRegister);
180 final ArgumentCaptor<MappingData> captor = ArgumentCaptor.forClass(MappingData.class);
181 Mockito.verify(mapService).addMapping(Mockito.eq(MappingOrigin.Southbound), Mockito.eq(IPV4_EID_1),
182 Mockito.eq(mapRegister.getSiteId()), captor.capture());
183 assertEquals(captor.getValue().getRecord(), mappingData.getRecord());
184 Mockito.verify(notifyHandler).handleMapNotify(getDefaultMapNotifyBuilder(mapRegister)
185 .setAuthenticationData(null).build(), null);
187 // only 1 subscriber has timed out.
188 assertEquals(2, subscriberSetMock_1.size());
192 public void handleMapRegisterTest_MappingMergeTrue() throws NoSuchFieldException, IllegalAccessException {
193 setConfigIniMappingMergeField(true);
195 final MappingRecordItemBuilder mappingRecordItemBuilder = new MappingRecordItemBuilder()
196 .setMappingRecord(OLD_MAPPING_RECORD_1);
197 final MapNotifyBuilder mapNotifyBuilder = getDefaultMapNotifyBuilder(mapRegister)
198 .setMappingRecordItem(new ArrayList<>());
199 mapNotifyBuilder.getMappingRecordItem().add(mappingRecordItemBuilder.build());
201 // no mapping changes
202 Mockito.when(mapService.getMapping(MappingOrigin.Southbound, IPV4_EID_1))
203 .thenReturn(OLD_MAPPING_DATA_1);
205 mappingData.setMergeEnabled(true);
206 mapServer.handleMapRegister(mapRegister);
208 final ArgumentCaptor<MappingData> captor = ArgumentCaptor.forClass(MappingData.class);
209 Mockito.verify(mapService).addMapping(Mockito.eq(MappingOrigin.Southbound), Mockito.eq(IPV4_EID_1),
210 Mockito.eq(mapRegister.getSiteId()), captor.capture());
211 assertEquals(captor.getValue().getRecord(), mappingData.getRecord());
212 Mockito.verify(notifyHandler).handleMapNotify(mapNotifyBuilder.setAuthenticationData(null).build(), null);
217 public void handleMapRegisterTest_findNegativeSubscribers() throws NoSuchFieldException, IllegalAccessException {
218 setConfigIniMappingMergeField(true);
220 mapRegister.getMappingRecordItem().clear();
221 mapRegister.getMappingRecordItem().add(getDefaultMappingRecordItemBuilder(IPV4_PREFIX_EID_1).build());
223 final MappingRecordBuilder mappingRecordBuilder_1 = getDefaultMappingRecordBuilder()
225 .setEid(IPV4_PREFIX_EID_2);
226 final MappingRecordBuilder mappingRecordBuilder_2 = getDefaultMappingRecordBuilder();
227 final Eid maskedEid1 = LispAddressUtil.asIpv4Eid("1.2.0.0");
229 final Subscriber subscriber1 = Mockito.mock(Subscriber.class);
230 Mockito.when(subscriber1.timedOut()).thenReturn(true);
231 Mockito.when(subscriber1.toString()).thenReturn("sub1");
233 final Set<Subscriber> set1 = Sets.newHashSet(subscriber1);
235 Mockito.when(mapService.getAuthenticationKey(IPV4_PREFIX_EID_1)).thenReturn(MAPPING_AUTHKEY);
236 Mockito.when(mapService.getData(MappingOrigin.Southbound, IPV4_PREFIX_EID_1, SubKeys.SRC_RLOCS))
237 .thenReturn(DEFAULT_IP_ADDRESS_SET);
239 Mockito.when(mapService.getParentPrefix(IPV4_PREFIX_EID_1)).thenReturn(maskedEid1);
240 Mockito.when(mapService.getData(MappingOrigin.Southbound, IPV4_PREFIX_EID_1, SubKeys.SUBSCRIBERS))
242 Mockito.when(mapService.getData(MappingOrigin.Southbound, maskedEid1, SubKeys.SUBSCRIBERS)).thenReturn(set1);
244 Mockito.when(mapService.getMapping(MappingOrigin.Southbound, IPV4_PREFIX_EID_1))
245 .thenReturn(getDefaultMappingData(mappingRecordBuilder_1.build()))
246 .thenReturn(getDefaultMappingData(mappingRecordBuilder_2.build()))
249 mapServer.handleMapRegister(mapRegister);
250 Mockito.verify(subscriber1).timedOut();
254 public void handleMapRegisterTest_verifyTransportAddresses() throws NoSuchFieldException, IllegalAccessException {
255 setConfigIniMappingMergeField(true);
258 Mockito.when(mapService.getAuthenticationKey(IPV4_EID_1)).thenReturn(MAPPING_AUTHKEY);
259 Mockito.when(mapService.getMapping(MappingOrigin.Southbound, IPV4_EID_1))
260 .thenReturn(OLD_MAPPING_DATA_1)
261 .thenReturn(OLD_MAPPING_DATA_2)
262 .thenReturn(getDefaultMappingData(getDefaultMappingRecordBuilder().build()));
263 Mockito.when(mapService.getData(MappingOrigin.Southbound, IPV4_EID_1, SubKeys.SRC_RLOCS))
264 .thenReturn(DEFAULT_IP_ADDRESS_SET);
267 final List<TransportAddress> transportAddressList = getTransportAddressList();
268 final MapNotifyBuilder mapNotifyBuilder = getDefaultMapNotifyBuilder(mapRegister);
269 mapNotifyBuilder.setMappingRecordItem(new ArrayList<>());
270 mapNotifyBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder()
271 .setMappingRecord(getDefaultMappingRecordBuilder().build()).build());
273 mapServer.handleMapRegister(mapRegister);
274 Mockito.verify(notifyHandler).handleMapNotify(mapNotifyBuilder.build(), transportAddressList);
279 public void handleMapRegisterTest_withTwoMappingRecords() throws NoSuchFieldException, IllegalAccessException {
280 setConfigIniMappingMergeField(true);
283 // Add a MappingRecord with SrcDestKey Eid Type
284 final MappingRecordItemBuilder mappingRecordItemBuilder = new MappingRecordItemBuilder()
285 .setMappingRecord(getDefaultMappingRecordBuilder().setEid(SOURCE_DEST_KEY_EID).build());
286 final MapRegisterBuilder mapRegisterSrcDstBuilder = getDefaultMapRegisterBuilder();
288 final List<MappingRecordItem> list = mapRegisterSrcDstBuilder.getMappingRecordItem();
289 list.add(mappingRecordItemBuilder.build());
291 // ------------- Stubbing for SourceDestKey type Eid mapping -------------------
293 Mockito.when(mapService.getAuthenticationKey(SOURCE_DEST_KEY_EID)).thenReturn(MAPPING_AUTHKEY);
294 Mockito.when(mapService.getMapping(MappingOrigin.Southbound, SOURCE_DEST_KEY_EID))
295 // ensure mappings are different
296 .thenReturn(OLD_MAPPING_DATA_1)
297 .thenReturn(OLD_MAPPING_DATA_2)
298 .thenReturn(OLD_MAPPING_DATA_2);
299 // return a subscriberSet for SrcDestKeyEid MappingRecord
300 Mockito.when(mapService.getData(MappingOrigin.Southbound, SOURCE_DEST_KEY_EID, SubKeys.SUBSCRIBERS))
301 .thenReturn(subscriberSetMock_1);
303 // return a subscriberSet for SrcDestKeyEid destination MappingRecord
304 Mockito.when(mapService.getData(MappingOrigin.Southbound, SourceDestKeyHelper.getDstBinary(SOURCE_DEST_KEY_EID),
305 SubKeys.SUBSCRIBERS)).thenReturn(subscriberSetMock_2);
307 // ----------------- Stubbing for Ipv4 type Eid mapping ------------------------
309 Mockito.when(mapService.getAuthenticationKey(IPV4_EID_1)).thenReturn(MAPPING_AUTHKEY);
310 Mockito.when(mapService.getMapping(MappingOrigin.Southbound, IPV4_EID_1))
311 // ensure mappings are different
312 .thenReturn(OLD_MAPPING_DATA_1)
313 .thenReturn(OLD_MAPPING_DATA_2);
314 // return a subscriberSet for Ipv4Eid MappingRecord
315 Mockito.when(mapService.getData(MappingOrigin.Southbound, IPV4_EID_1,SubKeys.SUBSCRIBERS))
316 .thenReturn(subscriberSetMock_3);
318 // -----------------------------------------------------------------------------
321 mapServer.handleMapRegister(mapRegisterSrcDstBuilder.build());
323 // for SrcDstKey mapping
324 final ArgumentCaptor<MapRequest> captor_1 = ArgumentCaptor.forClass(MapRequest.class);
325 Mockito.verify(notifyHandler, Mockito.times(1)).handleSMR(captor_1.capture(), Mockito.eq(RLOC_2));
326 final Eid resultEid_1 = captor_1.getValue().getEidItem().iterator().next().getEid();
327 assertEquals(IPV4_SOURCE_EID_2, resultEid_1);
329 // for SrcDst destination mapping
330 final ArgumentCaptor<MapRequest> captor_2 = ArgumentCaptor.forClass(MapRequest.class);
331 Mockito.verify(notifyHandler, Mockito.times(1)).handleSMR(captor_2.capture(), Mockito.eq(RLOC_4));
332 final Eid resultEid_2 = captor_2.getValue().getEidItem().iterator().next().getEid();
333 assertEquals(IPV4_SOURCE_EID_4, resultEid_2);
336 final ArgumentCaptor<MapRequest> captor_3 = ArgumentCaptor.forClass(MapRequest.class);
337 Mockito.verify(notifyHandler, Mockito.times(2)).handleSMR(captor_3.capture(), Mockito.eq(RLOC_6));
338 final Eid resultEid_3 = captor_3.getValue().getEidItem().iterator().next().getEid();
339 assertEquals(IPV4_SOURCE_EID_6, resultEid_3);
342 private static MapRegisterBuilder getDefaultMapRegisterBuilder() {
343 final MapRegisterBuilder mapRegisterBuilder = new MapRegisterBuilder()
344 .setProxyMapReply(true)
345 .setWantMapNotify(true)
347 .setMappingRecordItem(new ArrayList<>())
348 .setMergeEnabled(true)
350 .setSiteId(new SiteId(new byte[]{0, 1, 2, 3, 4, 5, 6, 7}))
351 .setXtrId(new XtrId(new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}))
352 .setXtrSiteIdPresent(true);
353 mapRegisterBuilder.getMappingRecordItem().add(getDefaultMappingRecordItemBuilder().build());
355 return mapRegisterBuilder;
358 private static MappingData getDefaultMappingData(MappingRecord mappingRecord) {
359 if (mappingRecord == null) {
360 mappingRecord = getDefaultMappingRecordBuilder().build();
362 return new MappingData(mappingRecord, System.currentTimeMillis());
365 private static MappingRecordItemBuilder getDefaultMappingRecordItemBuilder() {
366 return getDefaultMappingRecordItemBuilder(IPV4_EID_1);
369 private static MappingRecordItemBuilder getDefaultMappingRecordItemBuilder(Eid eid) {
370 return new MappingRecordItemBuilder()
371 .setMappingRecordItemId("mapping-record-item-id")
372 .withKey(new MappingRecordItemKey("mapping-record-item-key"))
373 .setMappingRecord(getDefaultMappingRecordBuilder(eid).build());
376 private static MappingRecordBuilder getDefaultMappingRecordBuilder() {
377 return getDefaultMappingRecordBuilder(IPV4_EID_1);
380 private static MappingRecordBuilder getDefaultMappingRecordBuilder(Eid eid) {
381 return new MappingRecordBuilder()
382 .setAction(MappingRecord.Action.NoAction)
383 .setAuthoritative(false)
384 .setLocatorRecord(new ArrayList<>())
385 .setMapVersion((short) 0)
390 private static MapNotifyBuilder getDefaultMapNotifyBuilder(MapRegister mr) {
391 final MapNotifyBuilder mapNotifyBuilder = new MapNotifyBuilder()
392 .setXtrSiteIdPresent(mr.isXtrSiteIdPresent())
393 .setSiteId(mr.getSiteId())
394 .setXtrId(mr.getXtrId())
395 .setNonce(mr.getNonce())
396 .setKeyId(mr.getKeyId())
397 .setMergeEnabled(mr.isMergeEnabled())
398 .setMappingRecordItem(new ArrayList<>())
399 .setAuthenticationData(new byte[]{});
400 mapNotifyBuilder.getMappingRecordItem().add(getDefaultMappingRecordItemBuilder().build());
402 return mapNotifyBuilder;
405 private static void setConfigIniMappingMergeField(boolean value) throws NoSuchFieldException,
406 IllegalAccessException {
407 final Field mappingMergeField = CONFIG_INI.getClass().getDeclaredField("mappingMerge");
408 mappingMergeField.setAccessible(true);
409 mappingMergeField.setBoolean(CONFIG_INI, value);
412 private static Set<IpAddressBinary> getDefaultIpAddressSet() {
413 return ImmutableSet.of(IPV4_BINARY_1, IPV4_BINARY_2);
416 private static List<TransportAddress> getTransportAddressList() {
417 TransportAddressBuilder transportAddressBuilder1 = new TransportAddressBuilder()
418 .setIpAddress(IPV4_BINARY_1)
419 .setPort(new PortNumber(LispMessage.PORT_NUM));
421 TransportAddressBuilder transportAddressBuilder2 = new TransportAddressBuilder()
422 .setIpAddress(IPV4_BINARY_2)
423 .setPort(new PortNumber(LispMessage.PORT_NUM));
425 final List<TransportAddress> transportAddressList = Lists.newArrayList(
426 transportAddressBuilder1.build(),
427 transportAddressBuilder2.build());
429 return transportAddressList;