diff options
Diffstat (limited to 'lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write')
3 files changed, 162 insertions, 13 deletions
diff --git a/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/AdjacencyCustomizerTest.java b/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/AdjacencyCustomizerTest.java index bf19ae581..1c487e3ae 100644 --- a/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/AdjacencyCustomizerTest.java +++ b/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/AdjacencyCustomizerTest.java @@ -19,7 +19,9 @@ package io.fd.hc2vpp.lisp.translate.write; import static io.fd.hc2vpp.lisp.translate.AdjacencyData.ADDRESS_ONE; import static io.fd.hc2vpp.lisp.translate.AdjacencyData.ADDRESS_THREE; import static io.fd.hc2vpp.lisp.translate.AdjacencyData.LOCAL_EID_ONE; +import static io.fd.hc2vpp.lisp.translate.AdjacencyData.LOCAL_EID_PREFIX_ONE; import static io.fd.hc2vpp.lisp.translate.AdjacencyData.REMOTE_EID_ONE; +import static io.fd.hc2vpp.lisp.translate.AdjacencyData.REMOTE_EID_PREFIX_ONE; import static io.fd.hc2vpp.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.IPV4; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; @@ -28,6 +30,7 @@ import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import io.fd.hc2vpp.common.test.write.WriterCustomizerTest; @@ -42,10 +45,12 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType; 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.MacAfi; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.MacBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MappingId; @@ -81,9 +86,13 @@ public class AdjacencyCustomizerTest extends WriterCustomizerTest implements Eid private InstanceIdentifier<Adjacency> emptyId; private InstanceIdentifier<Adjacency> validId; - private Adjacency emptyData; + private Adjacency failDataBefore; + private Adjacency failDataAfter; + private Adjacency ignoreDataBefore; + private Adjacency ignoreDataAfter; private Adjacency invalidData; private Adjacency validData; + private Adjacency validDataPrefixBased; @Before public void init() { @@ -100,7 +109,41 @@ public class AdjacencyCustomizerTest extends WriterCustomizerTest implements Eid .child(Adjacencies.class) .child(Adjacency.class, new AdjacencyKey("adj-one")); - emptyData = new AdjacencyBuilder().build(); + failDataBefore = new AdjacencyBuilder().setLocalEid(new LocalEidBuilder() + .setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.1/24")) + .build()) + .build()).build(); + + failDataAfter = new AdjacencyBuilder().setLocalEid(new LocalEidBuilder() + .setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.1/16")) + .build()) + .build()).build(); + + ignoreDataBefore = new AdjacencyBuilder().setLocalEid(new LocalEidBuilder() + .setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.1/24")) + .build()) + .build()) + .setRemoteEid(new RemoteEidBuilder() + .setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.3.1/24")) + .build()) + .build()) + .build(); + + ignoreDataAfter = new AdjacencyBuilder().setLocalEid(new LocalEidBuilder() + .setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.0/24")) + .build()) + .build()) + .setRemoteEid(new RemoteEidBuilder() + .setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.3.4/24")) + .build()) + .build()) + .build(); invalidData = new AdjacencyBuilder().setId("ID").setLocalEid( new LocalEidBuilder() @@ -126,13 +169,25 @@ public class AdjacencyCustomizerTest extends WriterCustomizerTest implements Eid .setAddressType(Ipv4Afi.class) .setAddress(new Ipv4Builder().setIpv4(ADDRESS_THREE).build()).build()).build(); + validDataPrefixBased = new AdjacencyBuilder() + .setLocalEid(new LocalEidBuilder() + .setAddressType(LOCAL_EID_PREFIX_ONE.getAddressType()) + .setVirtualNetworkId(LOCAL_EID_PREFIX_ONE.getVirtualNetworkId()) + .setAddress(LOCAL_EID_PREFIX_ONE.getAddress()).build()) + .setRemoteEid(new RemoteEidBuilder() + .setVirtualNetworkId(REMOTE_EID_PREFIX_ONE.getVirtualNetworkId()) + .setAddressType(REMOTE_EID_PREFIX_ONE.getAddressType()) + .setAddress(REMOTE_EID_PREFIX_ONE.getAddress()) + .build()) + .build(); + when(api.oneAddDelAdjacency(any())).thenReturn(future(new OneAddDelAdjacencyReply())); } @Test public void writeCurrentAttributesNoKey() throws Exception { try { - customizer.writeCurrentAttributes(emptyId, emptyData, writeContext); + customizer.writeCurrentAttributes(emptyId, failDataBefore, writeContext); } catch (NullPointerException e) { verify(api, times(0)).oneAddDelAdjacency(any()); return; @@ -161,7 +216,19 @@ public class AdjacencyCustomizerTest extends WriterCustomizerTest implements Eid customizer.writeCurrentAttributes(validId, validData, writeContext); verify(api, times(1)).oneAddDelAdjacency(requestCaptor.capture()); verifyRequest(requestCaptor.getValue(), 1, new byte[]{-64, -88, 2, 1}, 32, new byte[]{-64, -88, 2, 3}, - 32, IPV4.getValue(), 2); + 32, IPV4.getVppTypeBinding(), 2); + verify(adjacenciesMappingContext, times(1)) + .addEidPair("adj-one", "local-eid-one", "remote-eid-one", mappingContext); + } + + @Test + public void writeCurrentAttributesPrefixBased() throws Exception { + defineEidMapping(mappingContext, LOCAL_EID_PREFIX_ONE, new MappingId("local-eid-one"), "local-mapping-context"); + defineEidMapping(mappingContext, REMOTE_EID_PREFIX_ONE, new MappingId("remote-eid-one"), "remote-mapping-context"); + customizer.writeCurrentAttributes(validId, validDataPrefixBased, writeContext); + verify(api, times(1)).oneAddDelAdjacency(requestCaptor.capture()); + verifyRequest(requestCaptor.getValue(), 1, new byte[]{-64, -88, 2, 1}, 24, new byte[]{-64, -88, 2, 3}, + 16, IPV4.getVppTypeBinding(), 2); verify(adjacenciesMappingContext, times(1)) .addEidPair("adj-one", "local-eid-one", "remote-eid-one", mappingContext); } @@ -196,14 +263,21 @@ public class AdjacencyCustomizerTest extends WriterCustomizerTest implements Eid } @Test(expected = UnsupportedOperationException.class) - public void updateCurrentAttributes() throws Exception { - customizer.updateCurrentAttributes(emptyId, emptyData, emptyData, writeContext); + public void updateCurrentAttributesFail() throws Exception { + customizer.updateCurrentAttributes(emptyId, failDataBefore, failDataAfter, writeContext); + } + + @Test + public void updateCurrentAttributesIgnore() throws Exception { + // should not throw in this case + customizer.updateCurrentAttributes(emptyId, ignoreDataBefore, ignoreDataAfter, writeContext); + verifyZeroInteractions(api); } @Test public void deleteCurrentAttributesNoKey() throws Exception { try { - customizer.deleteCurrentAttributes(emptyId, emptyData, writeContext); + customizer.deleteCurrentAttributes(emptyId, failDataBefore, writeContext); } catch (NullPointerException e) { verify(api, times(0)).oneAddDelAdjacency(any()); return; @@ -222,7 +296,7 @@ public class AdjacencyCustomizerTest extends WriterCustomizerTest implements Eid customizer.deleteCurrentAttributes(validId, validData, writeContext); verify(api, times(1)).oneAddDelAdjacency(requestCaptor.capture()); verifyRequest(requestCaptor.getValue(), 0, new byte[]{-64, -88, 2, 1}, 32, new byte[]{-64, -88, 2, 3}, - 32, IPV4.getValue(), 2); + 32, IPV4.getVppTypeBinding(), 2); verify(adjacenciesMappingContext, times(1)).removeForIndex("adj-one", mappingContext); } diff --git a/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/LocalMappingCustomizerTest.java b/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/LocalMappingCustomizerTest.java index f945415a1..c49823f7a 100755 --- a/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/LocalMappingCustomizerTest.java +++ b/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/LocalMappingCustomizerTest.java @@ -24,6 +24,7 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import io.fd.hc2vpp.common.test.write.WriterCustomizerTest; @@ -41,8 +42,10 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; 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.lisp.address.address.Ipv4Builder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.HmacKeyType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MappingId; @@ -70,6 +73,12 @@ public class LocalMappingCustomizerTest extends WriterCustomizerTest implements private InstanceIdentifier<LocalMapping> id; private LocalMapping mapping; private LocalMapping mappingWithHmacKey; + + private LocalMapping failUpdateBefore; + private LocalMapping failUpdateAfter; + private LocalMapping ignoreUpdateBefore; + private LocalMapping ignoreUpdateAfter; + private LocalMappingCustomizer customizer; @Override @@ -95,6 +104,28 @@ public class LocalMappingCustomizerTest extends WriterCustomizerTest implements .build()) .build(); + failUpdateBefore = new LocalMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.1/24")) + .build()).build()) + .build(); + failUpdateAfter = new LocalMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.1/16")) + .build()).build()) + .build(); + + ignoreUpdateBefore = new LocalMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.1/24")) + .build()).build()) + .build(); + ignoreUpdateAfter = new LocalMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv4PrefixBuilder() + .setIpv4Prefix(new Ipv4Prefix("192.168.2.4/24")) + .build()).build()) + .build(); + id = InstanceIdentifier.builder(Lisp.class) .child(LispFeatureData.class) .child(EidTable.class) @@ -171,8 +202,14 @@ public class LocalMappingCustomizerTest extends WriterCustomizerTest implements } @Test(expected = UnsupportedOperationException.class) - public void testUpdateCurrentAttributes() throws WriteFailedException { - customizer.updateCurrentAttributes(null, null, null, writeContext); + public void testUpdateCurrentAttributesFail() throws WriteFailedException { + customizer.updateCurrentAttributes(null, failUpdateBefore, failUpdateAfter, writeContext); + } + + @Test + public void testUpdateCurrentAttributesIgnore() throws WriteFailedException { + customizer.updateCurrentAttributes(null, ignoreUpdateBefore, ignoreUpdateAfter, writeContext); + verifyZeroInteractions(api); } @Test @@ -194,7 +231,8 @@ public class LocalMappingCustomizerTest extends WriterCustomizerTest implements } @Test - public void testDeleteCurrentAttributesWithHmacKey() throws WriteFailedException, InterruptedException, ExecutionException { + public void testDeleteCurrentAttributesWithHmacKey() + throws WriteFailedException, InterruptedException, ExecutionException { when(eidMappingContext.containsEid(any(), eq(mappingContext))).thenReturn(true); customizer.deleteCurrentAttributes(id, mappingWithHmacKey, writeContext); diff --git a/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/RemoteMappingCustomizerTest.java b/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/RemoteMappingCustomizerTest.java index 35cc87689..62823df73 100755 --- a/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/RemoteMappingCustomizerTest.java +++ b/lisp/lisp2vpp/src/test/java/io/fd/hc2vpp/lisp/translate/write/RemoteMappingCustomizerTest.java @@ -26,6 +26,7 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import io.fd.hc2vpp.common.test.write.WriterCustomizerTest; @@ -44,8 +45,10 @@ import org.mockito.Captor; import org.mockito.Mock; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; 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.lisp.address.address.Ipv4Builder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6PrefixBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MapReplyAction; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MappingId; @@ -77,6 +80,12 @@ public class RemoteMappingCustomizerTest extends WriterCustomizerTest implements private RemoteMapping negativeMapping; private RemoteMapping positiveMappingNoPrioNoWeight; private RemoteMapping positiveMappingPrioWeight; + + private RemoteMapping failUpdateBefore; + private RemoteMapping failUpdateAfter; + private RemoteMapping ignoreUpdateBefore; + private RemoteMapping ignoreUpdateAfter; + private InstanceIdentifier<RemoteMapping> id; @Mock @@ -95,6 +104,28 @@ public class RemoteMappingCustomizerTest extends WriterCustomizerTest implements mappingId = new MappingId("REMOTE"); final RemoteMappingKey key = new RemoteMappingKey(mappingId); + failUpdateBefore = new RemoteMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv6PrefixBuilder() + .setIpv6Prefix(new Ipv6Prefix("2001:0db8:85a3:0000:0000:8a2e:0370:7334/64")) + .build()).build()) + .build(); + failUpdateAfter = new RemoteMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv6PrefixBuilder() + .setIpv6Prefix(new Ipv6Prefix("2001:0db8:85a3:0000:0000:8a2e:0370:7334/48")) + .build()).build()) + .build(); + + ignoreUpdateBefore = new RemoteMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv6PrefixBuilder() + .setIpv6Prefix(new Ipv6Prefix("2001:0db8:85a3:0000:0000:8a2e:0370:7334/64")) + .build()).build()) + .build(); + ignoreUpdateAfter = new RemoteMappingBuilder() + .setEid(new EidBuilder().setAddress(new Ipv6PrefixBuilder() + .setIpv6Prefix(new Ipv6Prefix("2001:0db8:85a3:0000:0000:8a2e:0370:7348/64")) + .build()).build()) + .build(); + negativeMapping = new RemoteMappingBuilder() .setEid(eid) .setLocatorList(new NegativeMappingBuilder() @@ -205,8 +236,14 @@ public class RemoteMappingCustomizerTest extends WriterCustomizerTest implements } @Test(expected = UnsupportedOperationException.class) - public void testUpdateCurrentAttributes() throws WriteFailedException { - customizer.updateCurrentAttributes(null, null, null, writeContext); + public void testUpdateCurrentAttributesFail() throws WriteFailedException { + customizer.updateCurrentAttributes(null, failUpdateBefore, failUpdateAfter, writeContext); + } + + @Test + public void testUpdateCurrentAttributesIgnore() throws WriteFailedException { + customizer.updateCurrentAttributes(null, ignoreUpdateBefore, ignoreUpdateAfter, writeContext); + verifyZeroInteractions(api); } @Test(expected = NullPointerException.class) |