X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=integrationtest%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Flispflowmapping%2Fintegrationtest%2FMappingServiceIntegrationTest.java;h=25036867fbb685d609d86022f7b0727a78603ec2;hb=15055070109b84d31e4eb2630988a303e8c0f740;hp=f38708ddf52f43bb8daff820f03bb828464df754;hpb=febde1e212feb996486eaee39e179e5da8753de4;p=lispflowmapping.git diff --git a/integrationtest/src/test/java/org/opendaylight/lispflowmapping/integrationtest/MappingServiceIntegrationTest.java b/integrationtest/src/test/java/org/opendaylight/lispflowmapping/integrationtest/MappingServiceIntegrationTest.java index f38708ddf..25036867f 100644 --- a/integrationtest/src/test/java/org/opendaylight/lispflowmapping/integrationtest/MappingServiceIntegrationTest.java +++ b/integrationtest/src/test/java/org/opendaylight/lispflowmapping/integrationtest/MappingServiceIntegrationTest.java @@ -7,6 +7,30 @@ */ package org.opendaylight.lispflowmapping.integrationtest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_A; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_A_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_B; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_B_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_RLOC_10; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_WP_100_1_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_WP_50_2_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D4; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D5; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D_DELETE_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D_WP_100_1_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D_WP_50_2_SB; +import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_E_SB; +import static org.ops4j.pax.exam.CoreOptions.composite; +import static org.ops4j.pax.exam.CoreOptions.maven; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut; + import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.net.InetAddresses; @@ -27,14 +51,13 @@ import javax.inject.Inject; import org.junit.After; import org.junit.Assert; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; 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; @@ -42,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; @@ -87,8 +112,11 @@ 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; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrReplyMapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrRequestMapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; @@ -125,29 +153,6 @@ import org.osgi.framework.InvalidSyntaxException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_A; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_A_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_B; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_B_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_RLOC_10; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_WP_100_1_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_C_WP_50_2_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D4; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D5; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D_DELETE_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D_WP_100_1_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_D_WP_50_2_SB; -import static org.opendaylight.lispflowmapping.integrationtest.MultiSiteScenarioUtil.SITE_E_SB; -import static org.ops4j.pax.exam.CoreOptions.composite; -import static org.ops4j.pax.exam.CoreOptions.maven; -import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut; - @RunWith(PaxExam.class) @ExamReactorStrategy(PerClass.class) public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { @@ -169,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(); @@ -217,16 +223,16 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { if (socket != null) { socket.close(); } -// if (connection != null) { -// connection.disconnect(); -// } + // reset mapping record validity to default value + ConfigIni.getInstance().setRegistrationValiditySb(200000L); } @Before 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); @@ -389,6 +395,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { @Test public void testTimeOuts() throws Exception { + timedOutMappingRecord(); mapRequestMapRegisterAndMapRequestTestTimeout(); //mapRequestMapRegisterAndMapRequestTestNativelyForwardTimeoutResponse(); TODO commented because it needs NB } @@ -406,7 +413,6 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { testRepeatedSmr(); } - @Ignore @Test public void testMultiSite() throws Exception { testMultiSiteScenarioA(); @@ -414,19 +420,23 @@ 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); - final Eid eid2 = LispAddressUtil.asIpv4Eid("2.2.2.2", 1L); + final int expectedSmrs1 = 2; + final int expectedSmrs2 = 3; /* set auth */ final Eid eid = LispAddressUtil.asIpv4PrefixBinaryEid("0.0.0.0/0", iid); @@ -435,12 +445,9 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { /* add subscribers */ final String subscriberSrcRloc1 = "127.0.0.3"; final String subscriberSrcRloc2 = "127.0.0.4"; - final Set subscriberSet = Sets.newHashSet( - newSubscriber(eid1, subscriberSrcRloc1), newSubscriber(eid2, subscriberSrcRloc2)); - mapService.addData(MappingOrigin.Southbound, eid1, SubKeys.SUBSCRIBERS, subscriberSet); - - final int expectedSmrs1 = 2; - final int expectedSmrs2 = 3; + final Set subscriberSet1 = Sets.newHashSet(newSubscriber(eid1, subscriberSrcRloc1), + newSubscriber(eid1, subscriberSrcRloc2)); + mapService.addData(MappingOrigin.Southbound, eid1, SubKeys.SUBSCRIBERS, subscriberSet1); final SocketReader reader1 = startSocketReader(subscriberSrcRloc1, 15000); final SocketReader reader2 = startSocketReader(subscriberSrcRloc2, 15000); @@ -449,10 +456,10 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { /* add mapping */ final MappingRecord mapping1 = new MappingRecordBuilder() .setEid(eid1).setTimestamp(System.currentTimeMillis()).setRecordTtl(1440).build(); - mapService.addMapping(MappingOrigin.Northbound, mapping1.getEid(), null, mapping1, false); + mapService.addMapping(MappingOrigin.Northbound, eid1, null, new MappingData(mapping1)); - sleepForMilliseconds((timeout * expectedSmrs1) - 1500); - final List requests1 = processBuffers(reader1, subscriberSrcRloc1, expectedSmrs1); + sleepForMilliseconds((timeout * expectedSmrs1) - (timeout / 2)); + final List requests1 = processSmrPackets(reader1, subscriberSrcRloc1, expectedSmrs1); final MapReply mapReply1 = lms.handleMapRequest( new MapRequestBuilder(requests1.get(0)) .setItrRloc(Lists.newArrayList(new ItrRlocBuilder() @@ -463,12 +470,12 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { // sleep to get 1 extra smr request sleepForMilliseconds(timeout * 1); - final List requests2 = processBuffers(reader2, subscriberSrcRloc2, expectedSmrs2); + final List requests2 = processSmrPackets(reader2, subscriberSrcRloc2, expectedSmrs2); final MapReply mapReply2 = lms.handleMapRequest( new MapRequestBuilder(requests2.get(0)) .setItrRloc(Lists.newArrayList(new ItrRlocBuilder() .setRloc(LispAddressUtil.asIpv4Rloc(subscriberSrcRloc2)).build())) - .setEidItem(Lists.newArrayList(new EidItemBuilder().setEid(eid2).build())) + .setEidItem(Lists.newArrayList(new EidItemBuilder().setEid(eid1).build())) .setSmrInvoked(true) .setSmr(false).build()); @@ -495,7 +502,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { return SocketReader.startReadingInStandaloneThread(receivingSocket, timeout); } - private List processBuffers(SocketReader reader, String address, int expectedSmrs) { + private List processSmrPackets(SocketReader reader, String address, int expectedSmrs) { InetAddress inetAddress = null; try { inetAddress = InetAddress.getByName(address); @@ -525,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 { @@ -614,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); @@ -644,6 +655,7 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { */ public void testMultiSiteScenarioA() throws IOException { cleanUP(); + ConfigIni.getInstance().setSmrRetryCount(1); final MultiSiteScenario multiSiteScenario = new MultiSiteScenario(mapService, lms); multiSiteScenario.setCommonAuthentication(); @@ -655,7 +667,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 +677,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 +690,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 +700,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 +711,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 +720,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 +733,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 +748,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 +763,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 +788,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 +796,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 +805,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 +824,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 +839,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 +849,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 +991,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 +1003,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 +2023,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); @@ -2080,6 +2093,37 @@ public class MappingServiceIntegrationTest extends AbstractMdsalTestBase { } + private void timedOutMappingRecord() { + cleanUP(); + mapService.setMappingMerge(true); + // mapping expires after 1 second + ConfigIni.getInstance().setRegistrationValiditySb(1000L); + + final Eid eid = LispAddressUtil.asIpv4PrefixBinaryEid("1.2.3.4/32", new InstanceIdType(10L)); + final XtrId xtrId = new XtrId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}); + final SiteId siteId = new SiteId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8}); + + final LocatorRecord locatorRecord = new LocatorRecordBuilder() + .setRloc(LispAddressUtil.asIpv4Rloc("1.1.1.1")).setLocatorId("locator-id").build(); + final MappingRecord mappingRecord = new MappingRecordBuilder() + .setEid(eid) + .setSiteId(siteId) + .setRecordTtl(1000) + .setXtrId(xtrId) + .setAction(Action.NoAction) + .setAuthoritative(true) + .setLocatorRecord(Lists.newArrayList()).build(); + mappingRecord.getLocatorRecord().add(locatorRecord); + + mapService.addAuthenticationKey(eid, NULL_AUTH_KEY); + mapService.addMapping(MappingOrigin.Southbound, eid, siteId, + new MappingData(mappingRecord, System.currentTimeMillis())); + sleepForSeconds(2); + + MappingRecord resultRecord = (MappingRecord) mapService.getMapping(MappingOrigin.Southbound, eid); + assertNull(resultRecord); + } + private void testTTLAfterClean(MapRequest mapRequest) throws SocketTimeoutException { MapReply mapReply; sendMapRequest(mapRequest); @@ -2303,7 +2347,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 { @@ -2367,6 +2411,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);