X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=mappingservice%2Fsouthbound%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Flispflowmapping%2Fsouthbound%2Flisp%2FLispSouthboundServiceTest.java;h=2e557b527f0a1035b39030ef210c67340be854a0;hb=bb53240896a70377005d772ba440cf5bbf519f2b;hp=fee28ef8b1a595386f97294cf49087a8d6c3cdec;hpb=970c3dbd56428e43f2c13f7c2fdb13dd0696aeaf;p=lispflowmapping.git diff --git a/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java b/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java index fee28ef8b..2e557b527 100644 --- a/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java +++ b/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java @@ -8,59 +8,62 @@ package org.opendaylight.lispflowmapping.southbound.lisp; +import static io.netty.buffer.Unpooled.wrappedBuffer; +import io.netty.channel.socket.DatagramPacket; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import java.net.DatagramPacket; +import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import junitx.framework.ArrayAssert; -import junitx.framework.Assert; import org.apache.commons.lang3.ArrayUtils; import org.jmock.api.Invocation; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import org.opendaylight.controller.sal.binding.api.NotificationProviderService; -import org.opendaylight.lispflowmapping.lisp.type.AddressFamilyNumberEnum; +import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.lispflowmapping.lisp.type.LispMessage; -import org.opendaylight.lispflowmapping.lisp.type.LispMessageEnum; import org.opendaylight.lispflowmapping.lisp.util.ByteUtil; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.lispflowmapping.lisp.util.MapNotifyBuilderHelper; +import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; import org.opendaylight.lispflowmapping.lisp.serializer.MapNotifySerializer; import org.opendaylight.lispflowmapping.lisp.serializer.MapReplySerializer; import org.opendaylight.lispflowmapping.southbound.lisp.exception.LispMalformedPacketException; import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.AddMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.EidToLocatorRecord.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.LispAFIAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.MapRegister; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.MapRequest; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.RequestMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.eidrecords.EidRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.eidtolocatorrecords.EidToLocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lispaddress.lispaddresscontainer.address.ipv4.Ipv4AddressBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lispaddress.lispaddresscontainer.address.ipv6.Ipv6AddressBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.locatorrecords.LocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.locatorrecords.LocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.mapnotifymessage.MapNotifyBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.mapreplymessage.MapReplyBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana.afn.safi.rev130704.AddressFamily; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.AddMapping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister; +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.MessageType; +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.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; +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.mapnotifymessage.MapNotifyBuilder; +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.MappingRecord.Action; +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.record.list.MappingRecordItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplymessage.MapReplyBuilder; import org.opendaylight.yangtools.yang.binding.Notification; public class LispSouthboundServiceTest extends BaseTestCase { - private LispSouthboundService testedLispService; - private NotificationProviderService nps; + private LispSouthboundHandler testedLispService; + private NotificationPublishService nps; private byte[] mapRequestPacket; private byte[] mapRegisterPacket; private ValueSaverAction lispNotificationSaver; @@ -68,7 +71,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { // private ValueSaverAction mapRequestSaver; private MapNotifyBuilder mapNotifyBuilder; private MapReplyBuilder mapReplyBuilder; - private EidToLocatorRecordBuilder eidToLocatorBuilder; + private MappingRecordBuilder mappingRecordBuilder; private interface MapReplyIpv4SingleLocatorPos { int RECORD_COUNT = 3; @@ -95,8 +98,8 @@ public class LispSouthboundServiceTest extends BaseTestCase { super.before(); // mapResolver = context.mock(IMapResolver.class); // mapServer = context.mock(IMapServer.class); - testedLispService = new LispSouthboundService(); - nps = context.mock(NotificationProviderService.class); + testedLispService = new LispSouthboundHandler(null); + nps = context.mock(NotificationPublishService.class); testedLispService.setNotificationProvider(nps); lispNotificationSaver = new ValueSaverAction(); // mapRegisterSaver = new ValueSaverAction(); @@ -121,20 +124,20 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "0050 2a cd 39 c8 d6 08 00 01 01 02 03 04 00 01 c0 a8 88 0a 00 20 " // + "0060 00 01 01 02 03 04")); mapReplyBuilder = new MapReplyBuilder(); - mapReplyBuilder.setEidToLocatorRecord(new ArrayList()); + mapReplyBuilder.setMappingRecordItem(new ArrayList()); mapReplyBuilder.setNonce((long) 0); mapReplyBuilder.setEchoNonceEnabled(false); mapReplyBuilder.setProbe(true); mapReplyBuilder.setSecurityEnabled(true); - eidToLocatorBuilder = new EidToLocatorRecordBuilder(); + mappingRecordBuilder = new MappingRecordBuilder(); String ip = "0.0.0.0"; - eidToLocatorBuilder.setLispAddressContainer(LispAFIConvertor.asIPv4Prefix(ip, 0)); - eidToLocatorBuilder.setLocatorRecord(new ArrayList()); - eidToLocatorBuilder.setRecordTtl(10); - eidToLocatorBuilder.setMapVersion((short) 0); - eidToLocatorBuilder.setMaskLength((short) 0); - eidToLocatorBuilder.setAction(Action.NativelyForward); - eidToLocatorBuilder.setAuthoritative(false); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid(ip + "/0")); + mappingRecordBuilder.setLocatorRecord(new ArrayList()); + mappingRecordBuilder.setRecordTtl(10); + mappingRecordBuilder.setMapVersion((short) 0); + mappingRecordBuilder.setMaskLength((short) 0); + mappingRecordBuilder.setAction(Action.NativelyForward); + mappingRecordBuilder.setAuthoritative(false); // eidToLocatorBuilder.setPrefix(new LispIpv4Address(0)); // mapReply.addEidToLocator(eidToLocatorBuilder); @@ -227,16 +230,16 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "0060 ff 00 00 05 00 01 0a 01 00 6e 06 64 ff 00 00 05 " // + "0070 00 01 c0 a8 88 33")); - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); handleMapRegisterPacket(mapRegisterPacket); - List eidRecords = lastMapRegister().getEidToLocatorRecord(); + List eidRecords = lastMapRegister().getMappingRecordItem(); assertEquals(1, eidRecords.size()); - EidToLocatorRecord eidRecord = eidRecords.get(0); + MappingRecord eidRecord = eidRecords.get(0).getMappingRecord(); assertEquals(2, eidRecord.getLocatorRecord().size()); - assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.1.0.110")), eidRecord.getLocatorRecord().get(0).getLispAddressContainer()); - assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.51")), eidRecord.getLocatorRecord().get(1).getLispAddressContainer()); + assertEquals(LispAddressUtil.asIpv4Rloc("10.1.0.110"), eidRecord.getLocatorRecord().get(0).getRloc()); + assertEquals(LispAddressUtil.asIpv4Rloc("192.168.136.51"), eidRecord.getLocatorRecord().get(1).getRloc()); } @Test @@ -262,34 +265,34 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "0060 01 92 00 00 00 00 00 00 00 01 01 64 ff 00 00 05 " // + "0070 00 01 0a 00 3a 9c")); - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); handleMapRegisterPacket(mapRegisterPacket); - EidToLocatorRecord eidToLocatorRecord = lastMapRegister().getEidToLocatorRecord().get(0); - assertEquals(LispAFIConvertor.asIPv6Address("2610:d0:ffff:192:0:0:0:1"), eidToLocatorRecord.getLispAddressContainer()); - assertEquals(AddressFamilyNumberEnum.IP6, - AddressFamilyNumberEnum.valueOf(LispAFIConvertor.toAFI(eidToLocatorRecord.getLispAddressContainer()).getAfi())); + MappingRecord eidToLocatorRecord = lastMapRegister().getMappingRecordItem().get(0).getMappingRecord(); + assertEquals("2610:d0:ffff:192:0:0:0:1/128", + ((Ipv6Prefix) eidToLocatorRecord.getEid().getAddress()).getIpv6Prefix().getValue()); + assertEquals(Ipv6PrefixAfi.class, eidToLocatorRecord.getEid().getAddressType()); - assertEquals(LispAFIConvertor.asIPAfiAddress("10.0.58.156"), LispAFIConvertor.toAFI(eidToLocatorRecord.getLocatorRecord().get(0).getLispAddressContainer())); + assertEquals(LispAddressUtil.asIpv4Rloc("10.0.58.156"), eidToLocatorRecord.getLocatorRecord().get(0).getRloc()); } @Test public void mapRegister__VerifyBasicFields() throws Exception { - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); handleMapRegisterPacket(mapRegisterPacket); - EidToLocatorRecord eidToLocator = lastMapRegister().getEidToLocatorRecord().get(0); - assertEquals(LispAFIConvertor.asIPv4Address("153.16.254.1"), eidToLocator.getLispAddressContainer()); + MappingRecord eidToLocator = lastMapRegister().getMappingRecordItem().get(0).getMappingRecord(); + assertEquals(LispAddressUtil.asIpv4PrefixEid("153.16.254.1/32"), eidToLocator.getEid()); assertEquals(1, eidToLocator.getLocatorRecord().size()); - assertEquals(LispAFIConvertor.asIPAfiAddress("192.168.136.10"), LispAFIConvertor.toAFI(eidToLocator.getLocatorRecord().get(0).getLispAddressContainer())); + assertEquals(LispAddressUtil.asIpv4Rloc("192.168.136.10"), eidToLocator.getLocatorRecord().get(0).getRloc()); } @Test @Ignore public void mapRegister__NoResponseFromMapServerShouldReturnNullPacket() throws Exception { - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); mapNotifyBuilder = null; assertNull(handleMapRegisterPacket(mapRegisterPacket)); @@ -349,39 +352,39 @@ public class LispSouthboundServiceTest extends BaseTestCase { System.arraycopy(mapRegisterPacket, 0, extraDataPacket, 0, mapRegisterPacket.length); stubMapRegister(true); - DatagramPacket dp = new DatagramPacket(extraDataPacket, extraDataPacket.length); - dp.setLength(mapRegisterPacket.length); + DatagramPacket dp = new DatagramPacket(wrappedBuffer(extraDataPacket), new InetSocketAddress(0), new InetSocketAddress(0)); testedLispService.handlePacket(dp); // Check map register fields. // XXX: test // byte[] notifyResult = testedLispService.handlePacket(dp).getData(); - byte[] notifyResult = lastMapNotifyPacket().getData(); + byte[] notifyResult = lastMapNotifyPacket().content().array(); assertEquals(mapRegisterPacket.length, notifyResult.length); } private DatagramPacket lastMapReplyPacket() { ByteBuffer serialize = MapReplySerializer.getInstance().serialize(mapReplyBuilder.build()); - return new DatagramPacket(serialize.array(), serialize.array().length); + return new DatagramPacket(wrappedBuffer(serialize), new InetSocketAddress(0), new InetSocketAddress(0)); } private DatagramPacket lastMapNotifyPacket() { - if (mapNotifyBuilder.getEidToLocatorRecord() == null) { - mapNotifyBuilder.setEidToLocatorRecord(new ArrayList()); + if (mapNotifyBuilder.getMappingRecordItem() == null) { + mapNotifyBuilder.setMappingRecordItem(new ArrayList()); } - mapNotifyBuilder.getEidToLocatorRecord().add(eidToLocatorBuilder.build()); + mapNotifyBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord( + mappingRecordBuilder.build()).build()); mapNotifyBuilder.setNonce((long) 0); mapNotifyBuilder.setKeyId((short) 0); mapNotifyBuilder.setAuthenticationData(new byte[0]); ByteBuffer serialize = MapNotifySerializer.getInstance().serialize(mapNotifyBuilder.build()); - return new DatagramPacket(serialize.array(), serialize.array().length); + return new DatagramPacket(wrappedBuffer(serialize), new InetSocketAddress(0), new InetSocketAddress(0)); } @Test @Ignore public void mapNotify__VerifyBasicFields() throws Exception { byte registerType = mapRegisterPacket[0]; - assertEquals(LispMessageEnum.MapRegister.getValue(), registerType >> 4); + assertEquals(MessageType.MapRegister.getIntValue(), registerType >> 4); stubMapRegister(true); @@ -389,7 +392,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { assertEquals(mapRegisterPacket.length, result.length); - byte expectedType = (byte) (LispMessageEnum.MapNotify.getValue() << 4); + byte expectedType = (byte) (MessageType.MapNotify.getIntValue() << 4); assertHexEquals(expectedType, result[0]); assertHexEquals((byte) 0x00, result[1]); assertHexEquals((byte) 0x00, result[2]); @@ -407,23 +410,19 @@ public class LispSouthboundServiceTest extends BaseTestCase { stubMapRegister(true); DatagramPacket notifyPacket = handleMapRegisterPacket(mapRegisterPacket); - assertEquals(LispMessage.PORT_NUM, notifyPacket.getPort()); + assertEquals(LispMessage.PORT_NUM, notifyPacket.recipient().getPort()); } @Test public void mapRequest__VerifyBasicFields() throws Exception { - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); handleMapRequestAsByteArray(mapRequestPacket); - List eids = lastMapRequest().getEidRecord(); + List eids = lastMapRequest().getEidItem(); assertEquals(1, eids.size()); - LispAddressContainer lispAddress = eids.get(0).getLispAddressContainer(); - assertTrue(LispAFIConvertor.toAFI(lispAddress) instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lispaddress.lispaddresscontainer.address.ipv4.Ipv4Address); - assertEquals(LispAFIConvertor.asIPv4Address("1.2.3.4"), lispAddress); - assertEquals((byte) 0x20, eids.get(0).getMask().byteValue()); + Eid lispAddress = eids.get(0).getEid(); + assertEquals(Ipv4PrefixAfi.class, lispAddress.getAddressType()); + assertEquals(LispAddressUtil.asIpv4PrefixEid("1.2.3.4/32"), lispAddress); assertEquals(0x3d8d2acd39c8d608L, lastMapRequest().getNonce().longValue()); - // assertEquals(AddressFamilyNumberEnum.RESERVED, - // AddressFamilyNumberEnum.valueOf(LispAFIToContainerConvertorFactory.toAFI( - // lastMapRequest().getSourceEid().getLispAddressContainer()).getAfi())); } @Test @@ -452,12 +451,12 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "00a0 00 02 26 10 00 d0 ff ff 01 92 00 00 00 00 00 00 " // + "00b0 00 01 01 64 ff 00 00 05 00 01 0a 00 3a 9c")); - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); // ret(mapReply); handleMapRequestAsByteArray(mapRequestPacket); - assertEquals(LispAFIConvertor.asIPv6AfiAddress("2610:d0:ffff:192:0:0:0:1"), LispAFIConvertor.toAFI(lastMapRequest().getSourceEid().getLispAddressContainer())); - assertEquals(LispAFIConvertor.asIPv6Address("2610:d0:ffff:192:0:0:0:2"), lastMapRequest().getEidRecord().get(0).getLispAddressContainer()); + assertEquals(LispAddressUtil.asIpv6Eid("2610:d0:ffff:192:0:0:0:1"), lastMapRequest().getSourceEid().getEid()); + assertEquals(LispAddressUtil.asIpv6PrefixEid("2610:d0:ffff:192:0:0:0:2/128"), lastMapRequest().getEidItem().get(0).getEid()); } @Ignore @@ -480,11 +479,11 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "0090 00 00 00 00 00 02 00 00 00 0a 01 80 10 00 00 00 " // + "00a0 00 02 26 10 00 d0 ff ff 01 92 00 00 00 00 00 00 " // + "00b0 00 01 01 64 ff 00 00 05 00 01 0a 00 3a 9c")); - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); // ret(mapReply); DatagramPacket replyPacket = handleMapRequestPacket(mapRequestPacket); - assertEquals(4342, replyPacket.getPort()); + assertEquals(4342, replyPacket.recipient().getPort()); } @Test @@ -502,18 +501,18 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "0070 10 00 00 00 00 01 99 10 fe 01 01 64 ff 00 00 05 " // + "0080 00 01 0a 00 01 26")); - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); // ret(mapReply); handleMapRequestAsByteArray(mapRequestPacket); - Assert.assertNotEquals(AddressFamilyNumberEnum.IP, LispAFIConvertor.toAFI(lastMapRequest().getSourceEid().getLispAddressContainer())); + assertEquals(Ipv4Afi.class, lastMapRequest().getSourceEid().getEid().getAddressType()); } @Test @Ignore public void mapReply__VerifyBasicIPv4Fields() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x20).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.0.20.200"))); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32")); mapReplyBuilder.setNonce(0x3d8d2acd39c8d608L); stubHandleRequest(); @@ -529,15 +528,15 @@ public class LispSouthboundServiceTest extends BaseTestCase { byte expectedRecordCount = (byte) 1; assertEquals(expectedRecordCount, result[MapReplyIpv4SingleLocatorPos.RECORD_COUNT]); - assertEquals(eidToLocatorBuilder.getMaskLength().byteValue(), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); - assertEquals(AddressFamilyNumberEnum.IP.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); + assertEquals(MaskUtil.getMaskForAddress(mappingRecordBuilder.getEid().getAddress()), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); + assertEquals(AddressFamily.IpV4.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); assertEquals(0x0a0014c8, ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.EID_PREFIX)); } @Test @Ignore public void mapReply__VerifyBasicIPv6() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x80).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1"))); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:1/128")); stubHandleRequest(); @@ -548,8 +547,8 @@ public class LispSouthboundServiceTest extends BaseTestCase { byte expectedRecordCount = (byte) 1; assertEquals(expectedRecordCount, result[MapReplyIpv4SingleLocatorPos.RECORD_COUNT]); - assertEquals(eidToLocatorBuilder.getMaskLength().byteValue(), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); - assertEquals(AddressFamilyNumberEnum.IP6.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); + assertEquals(MaskUtil.getMaskForAddress(mappingRecordBuilder.getEid().getAddress()), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); + assertEquals(AddressFamily.IpV6.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); byte[] expectedIpv6 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; ArrayAssert.assertEquals(expectedIpv6, Arrays.copyOfRange(result, 24, 40)); @@ -558,9 +557,9 @@ public class LispSouthboundServiceTest extends BaseTestCase { @Test @Ignore public void mapReply__VerifyIPv6EidAndLocator() throws Exception { - eidToLocatorBuilder.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1"))); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:2"))).build()); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:1/128")); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:2")).build()); stubHandleRequest(); @@ -580,15 +579,15 @@ public class LispSouthboundServiceTest extends BaseTestCase { public void mapReply__UseEncapsulatedUdpPort() throws Exception { stubHandleRequest(); - assertEquals(LispMessage.PORT_NUM, handleMapRequestPacket(mapRequestPacket).getPort()); + assertEquals(LispMessage.PORT_NUM, handleMapRequestPacket(mapRequestPacket).recipient().getPort()); } @Test @Ignore public void mapReply__WithNonRoutableSingleLocator() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x20).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.0.20.200"))); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(false).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))).build()); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32")); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(false).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build()); stubHandleRequest(); byte[] result = handleMapRequestAsByteArray(mapRequestPacket); @@ -598,10 +597,9 @@ public class LispSouthboundServiceTest extends BaseTestCase { @Test @Ignore public void mapReply__WithSingleLocator() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x20)// - .setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.0.20.200"))); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(true).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))).build()); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32")); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build()); stubHandleRequest(); byte[] result = handleMapRequestAsByteArray(mapRequestPacket); @@ -610,7 +608,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { byte expectedLocCount = 1; assertEquals(expectedLocCount, result[MapReplyIpv4SingleLocatorPos.LOCATOR_COUNT]); - assertEquals(AddressFamilyNumberEnum.IP.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); + assertEquals(AddressFamily.IpV4.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); assertEquals(0x04030201, ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOCATOR)); assertEquals(0x01, result[MapReplyIpv4SingleLocatorPos.LOCATOR_RBIT] & 0x01); @@ -619,10 +617,10 @@ public class LispSouthboundServiceTest extends BaseTestCase { @Test @Ignore public void mapReply__WithMultipleLocator() throws Exception { - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(true).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))).build()); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(true).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1"))).build()); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build()); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:1")).build()); stubHandleRequest(); byte[] result = handleMapRequestAsByteArray(mapRequestPacket); @@ -630,11 +628,11 @@ public class LispSouthboundServiceTest extends BaseTestCase { assertEquals(2, result[MapReplyIpv4SingleLocatorPos.LOCATOR_COUNT]); - assertEquals(AddressFamilyNumberEnum.IP.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); + assertEquals(AddressFamily.IpV4.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); assertEquals(0x04030201, ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOCATOR)); assertEquals(0x01, result[MapReplyIpv4SingleLocatorPos.LOCATOR_RBIT] & 0x01); - assertEquals(AddressFamilyNumberEnum.IP6.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SecondLocatorPos.LOC_AFI)); + assertEquals(AddressFamily.IpV6.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SecondLocatorPos.LOC_AFI)); byte[] expectedIpv6Rloc = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; ArrayAssert.assertEquals(expectedIpv6Rloc, @@ -677,13 +675,16 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "0080 01 64 ff 00 00 05 00 01 0a 01 00 6f 06 64 ff 00 " // + "0090 00 05 00 01 c0 a8 88 33")); - oneOf(nps).publish(with(lispNotificationSaver)); + oneOf(nps).putNotification(with(lispNotificationSaver)); handleMapRequestAsByteArray(mapRequestPacket); } private void stubMapRegister(final boolean setNotifyFromRegister) { - allowing(nps).publish(with(lispNotificationSaver)); + try { + allowing(nps).putNotification(with(lispNotificationSaver)); + } catch (InterruptedException e) { + } will(new SimpleAction() { @Override @@ -697,33 +698,36 @@ public class LispSouthboundServiceTest extends BaseTestCase { } private void stubHandleRequest() { - allowing(nps).publish(wany(Notification.class)); + try { + allowing(nps).putNotification(wany(Notification.class)); + } catch (InterruptedException e) { + } } private byte[] handleMapRequestAsByteArray(byte[] inPacket) { handleMapRequestPacket(inPacket); - return lastMapReplyPacket().getData(); + return lastMapReplyPacket().content().array(); } private byte[] handleMapRegisterAsByteArray(byte[] inPacket) { handleMapRegisterPacket(inPacket); - return lastMapNotifyPacket().getData(); + return lastMapNotifyPacket().content().array(); } private DatagramPacket handleMapRequestPacket(byte[] inPacket) { - DatagramPacket dp = new DatagramPacket(inPacket, inPacket.length); + DatagramPacket dp = new DatagramPacket(wrappedBuffer(inPacket), new InetSocketAddress(0), new InetSocketAddress(0)); // Unless we explicitly set the source port, it will be -1, which breaks some tests // This is till not the real port number, but it's better - dp.setPort(LispMessage.PORT_NUM); + //dp.setPort(LispMessage.PORT_NUM); testedLispService.handlePacket(dp); return lastMapReplyPacket(); } private DatagramPacket handleMapRegisterPacket(byte[] inPacket) { - DatagramPacket dp = new DatagramPacket(inPacket, inPacket.length); + DatagramPacket dp = new DatagramPacket(wrappedBuffer(inPacket), new InetSocketAddress(0), new InetSocketAddress(0)); // Unless we explicitly set the source port, it will be -1, which breaks some tests // This is till not the real port number, but it's better - dp.setPort(LispMessage.PORT_NUM); + //dp.setPort(LispMessage.PORT_NUM); testedLispService.handlePacket(dp); if (mapNotifyBuilder == null) { return null; @@ -734,7 +738,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { private DatagramPacket handlePacket(byte[] inPacket) { // TODO get from mock - testedLispService.handlePacket(new DatagramPacket(inPacket, inPacket.length)); + testedLispService.handlePacket(new DatagramPacket(wrappedBuffer(inPacket), new InetSocketAddress(0), new InetSocketAddress(0))); return null; } @@ -777,7 +781,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { // + "40 05 c0 a8 88 0a 01 02 " // MAC (ITR-RLOC #1 of 2) // + "00 01 01 02 03 04 " // IP (ITR-RLOC #2 of 2) // + "00 20 00 01 01 02 03 04").array(); - // oneOf(nps).publish(with(lispNotificationSaver)); + // oneOf(nps).putNotification(with(lispNotificationSaver)); // // ret(mapReply); // DatagramPacket packet = handleMapRequestPacket(mapRequestPacket); // assertEquals(2, lastMapRequest().getItrRlocs().size()); @@ -794,7 +798,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { // + "00 01 01 02 03 04 " // IP (ITR-RLOC #1 of 2) // + "00 01 c0 a8 88 0a " // MAC (ITR-RLOC #2 of 2) // + "00 20 00 01 01 02 03 04").array(); - // oneOf(nps).publish(with(lispNotificationSaver)); + // oneOf(nps).putNotification(with(lispNotificationSaver)); // // ret(mapReply); // DatagramPacket packet = handleMapRequestPacket(mapRequestPacket); // assertEquals(2, lastMapRequest().getItrRloc().size());