diff options
author | Jan Srnicek <jsrnicek@cisco.com> | 2017-02-07 13:50:59 +0100 |
---|---|---|
committer | Jan Srnicek <jsrnicek@cisco.com> | 2017-02-08 08:29:29 +0000 |
commit | 3cecf2cd177bbcb87ad0d5eb19e8e0c80a016a5d (patch) | |
tree | 54c7c6df14bf0013a7a8ac7de259388b60a3a9f6 /v3po/v3po2vpp/src/test/java/io/fd | |
parent | 1e562c89ed44a33ffafd310a9e58a45bad65339e (diff) |
HC2VPP-11/HC2VPP-12 - refactored ipv4/6 logic/tests
- all dumping logic moved under common abstract classes
- added tests
Change-Id: Ifdee84795bd8cf6f0d29349dd2cfcf9b2bbec1c9
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'v3po/v3po2vpp/src/test/java/io/fd')
10 files changed, 700 insertions, 44 deletions
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/InterfaceChildNodeTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/InterfaceChildNodeTest.java new file mode 100644 index 000000000..4e323e45d --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/InterfaceChildNodeTest.java @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.fd.hc2vpp.v3po.interfacesstate.ip; + +import io.fd.hc2vpp.common.test.util.FutureProducer; +import io.fd.hc2vpp.common.test.util.NamingContextHelper; +import io.fd.hc2vpp.common.translate.util.NamingContext; +import io.fd.vpp.jvpp.core.dto.*; +import io.fd.vpp.jvpp.core.future.FutureJVppCore; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress; + +import javax.annotation.Nonnull; +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasSize; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +public interface InterfaceChildNodeTest extends NamingContextHelper, FutureProducer { + + String INTERFACE_CONTEXT_NAME = "iface-context"; + NamingContext INTERFACE_CONTEXT = new NamingContext("prefix", INTERFACE_CONTEXT_NAME); + + String IFACE_NAME = "eth0"; + int IFACE_ID = 1; + + String SUB_IFACE_NAME = "eth0.4"; + int SUB_IFACE_ID = 4; + + String IFACE_2_NAME = "eth1"; + int IFACE_2_ID = 2; + + String SUB_IFACE_2_NAME = "eth1.7"; + int SUB_IFACE_2_ID = 7; + + String IPV6_ONE_COMPRESSED = "2001:db8:a0b:12f0::1"; + byte[] IPV6_ONE_BYTES = {32, 1, 13, -72, 10, 11, 18, -16, 0, 0, 0, 0, 0, 0, 0, 1}; + byte IPV6_ONE_PREFIX = 64; + Ipv6AddressNoZone IPV6_ONE_ADDRESS_COMPRESSED = new Ipv6AddressNoZone(IPV6_ONE_COMPRESSED); + + String IPV6_TWO_COMPRESSED = "2001:db8:a0b:12f0::2"; + byte[] IPV6_TWO_BYTES = {32, 1, 13, -72, 10, 11, 18, -16, 0, 0, 0, 0, 0, 0, 0, 2}; + byte IPV6_TWO_PREFIX = 48; + Ipv6AddressNoZone IPV6_TWO_ADDRESS_COMPRESSED = new Ipv6AddressNoZone(IPV6_TWO_COMPRESSED); + + String IPV4_ONE = "192.168.2.1"; + byte[] IPV4_ONE_BYTES = {-64, -88, 2, 1}; + byte IPV4_ONE_PREFIX = 24; + Ipv4AddressNoZone IPV4_ONE_ADDRESS = new Ipv4AddressNoZone(IPV4_ONE); + + String IPV4_TWO = "192.168.2.2"; + byte[] IPV4_TWO_BYTES = {-64, -88, 2, 2}; + byte IPV4_TWO_PREFIX = 24; + Ipv4AddressNoZone IPV4_TWO_ADDRESS = new Ipv4AddressNoZone(IPV4_TWO); + + String MAC_ONE = "00:00:00:00:00:00"; + byte[] MAC_ONE_BYTES = {0, 0, 0, 0, 0, 0}; + PhysAddress MAC_ONE_ADDRESS = new PhysAddress(MAC_ONE); + + String MAC_TWO = "00:00:00:00:00:01"; + byte[] MAC_TWO_BYTES = {0, 0, 0, 0, 0, 1}; + PhysAddress MAC_TWO_ADDRESS = new PhysAddress(MAC_TWO); + + String MAC_THREE = "00:00:00:00:00:02"; + byte[] MAC_THREE_BYTES = {0, 0, 0, 0, 0, 2}; + PhysAddress MAC_THREE_ADDRESS = new PhysAddress(MAC_THREE); + + String MAC_FOUR = "00:00:00:00:00:03"; + byte[] MAC_FOUR_BYTES = {0, 0, 0, 0, 0, 3}; + PhysAddress MAC_FOUR_ADDRESS = new PhysAddress(MAC_FOUR); + + default void mockNeighborDump(@Nonnull final FutureJVppCore api, + @Nonnull final IpNeighborDump request, + @Nonnull final IpNeighborDetailsReplyDump reply) { + when(api.ipNeighborDump(request)).thenReturn(future(reply)); + } + + default void mockAddressDump(@Nonnull final FutureJVppCore api, + @Nonnull final IpAddressDump request, + @Nonnull final IpAddressDetailsReplyDump reply) { + when(api.ipAddressDump(request)).thenReturn(future(reply)); + } + + default IpAddressDump dumpV6AddressesIfaceTwo() { + IpAddressDump request = new IpAddressDump(); + request.isIpv6 = 1; + request.swIfIndex = IFACE_2_ID; + return request; + } + + default IpAddressDump dumpV6AddressesSubIfaceOne() { + IpAddressDump request = new IpAddressDump(); + request.swIfIndex = SUB_IFACE_ID; + request.isIpv6 = 1; + return request; + } + + + default IpNeighborDump dumpV4NeighborIfaceOne() { + IpNeighborDump request = new IpNeighborDump(); + request.swIfIndex = IFACE_ID; + request.isIpv6 = 0; + return request; + } + + default IpNeighborDump dumpV6NeighborsIfaceOne() { + IpNeighborDump request = new IpNeighborDump(); + request.swIfIndex = IFACE_ID; + request.isIpv6 = 1; + return request; + } + + default IpNeighborDump dumpV6NeighborsSubIfaceTwo() { + IpNeighborDump request = new IpNeighborDump(); + request.swIfIndex = SUB_IFACE_2_ID; + request.isIpv6 = 1; + return request; + } + + default IpNeighborDump dumpV4NeighborsSubIfaceOne() { + IpNeighborDump request = new IpNeighborDump(); + request.swIfIndex = SUB_IFACE_ID; + request.isIpv6 = 0; + return request; + } + + default void verifyList(@Nonnull final List<?> expected, @Nonnull final List<?> current) { + assertThat(current, hasSize(expected.size())); + assertTrue(expected.containsAll(current)); + } + + default IpNeighborDetailsReplyDump v4Neighbors() { + IpNeighborDetailsReplyDump fullDump = new IpNeighborDetailsReplyDump(); + fullDump.ipNeighborDetails = Arrays.asList( + neighborDump(IPV4_ONE_BYTES, 0, MAC_ONE_BYTES), + neighborDump(IPV4_TWO_BYTES, 0, MAC_TWO_BYTES)); + return fullDump; + } + + default IpNeighborDetailsReplyDump v6Neighbors() { + IpNeighborDetailsReplyDump fullDump = new IpNeighborDetailsReplyDump(); + fullDump.ipNeighborDetails = Arrays.asList( + neighborDump(IPV6_ONE_BYTES, 1, MAC_THREE_BYTES), + neighborDump(IPV6_TWO_BYTES, 1, MAC_FOUR_BYTES)); + return fullDump; + } + + default IpAddressDetailsReplyDump v4Addresses() { + IpAddressDetailsReplyDump fullDump = new IpAddressDetailsReplyDump(); + fullDump.ipAddressDetails = Arrays.asList( + addressDump(IPV4_ONE_BYTES, IPV4_ONE_PREFIX), + addressDump(IPV4_TWO_BYTES, IPV4_TWO_PREFIX)); + return fullDump; + } + + default IpAddressDetailsReplyDump v6Addresses() { + IpAddressDetailsReplyDump fullDump = new IpAddressDetailsReplyDump(); + fullDump.ipAddressDetails = Arrays.asList( + addressDump(IPV6_ONE_BYTES, IPV6_ONE_PREFIX), + addressDump(IPV6_TWO_BYTES, IPV6_TWO_PREFIX)); + return fullDump; + } + + static IpNeighborDetails neighborDump(byte[] address, int isIpv6, byte[] mac) { + IpNeighborDetails detail = new IpNeighborDetails(); + detail.ipAddress = address; + detail.isIpv6 = (byte) isIpv6; + detail.macAddress = mac; + return detail; + } + + static IpAddressDetails addressDump(byte[] address, byte prefix) { + IpAddressDetails details = new IpAddressDetails(); + details.ip = address; + details.prefixLength = prefix; + return details; + } +} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/Ipv4AddressCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4AddressCustomizerTest.java index e1b199ecc..58077d6e9 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/Ipv4AddressCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4AddressCustomizerTest.java @@ -14,23 +14,15 @@ * limitations under the License. */ -package io.fd.hc2vpp.v3po.interfacesstate.ip; +package io.fd.hc2vpp.v3po.interfacesstate.ip.v4; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.when; - import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; import io.fd.hc2vpp.common.translate.util.Ipv4Translator; import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.ip.v4.Ipv4AddressCustomizer; +import io.fd.hc2vpp.v3po.interfacesstate.ip.InterfaceChildNodeTest; import io.fd.honeycomb.translate.read.ReadFailedException; import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; import io.fd.honeycomb.translate.util.read.cache.CacheKeyFactory; @@ -38,10 +30,6 @@ import io.fd.honeycomb.translate.util.read.cache.TypeAwareIdentifierCacheKeyFact import io.fd.vpp.jvpp.core.dto.IpAddressDetails; import io.fd.vpp.jvpp.core.dto.IpAddressDetailsReplyDump; import io.fd.vpp.jvpp.core.dto.IpAddressDump; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; import org.hamcrest.Matchers; import org.junit.Test; import org.mockito.Mockito; @@ -59,13 +47,19 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev14061 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv4.address.subnet.PrefixLength; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; +import static org.mockito.Mockito.when; + public class Ipv4AddressCustomizerTest extends ListReaderCustomizerTest<Address, AddressKey, AddressBuilder> implements - Ipv4Translator { + Ipv4Translator,InterfaceChildNodeTest { + - private static final String IFACE_NAME = "eth0"; - private static final String IFACE_2_NAME = "eth1"; - private static final int IFACE_ID = 1; - private static final int IFACE_2_ID = 2; private static final String IFC_CTX_NAME = "ifc-test-instance"; private NamingContext interfacesContext; diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/Ipv4CustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4CustomizerTest.java index 9475d4664..da2213027 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/Ipv4CustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4CustomizerTest.java @@ -14,18 +14,17 @@ * limitations under the License. */ -package io.fd.hc2vpp.v3po.interfacesstate.ip; - -import static org.mockito.Mockito.verifyZeroInteractions; +package io.fd.hc2vpp.v3po.interfacesstate.ip.v4; import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.v3po.interfacesstate.ip.v4.Ipv4Customizer; import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.Interface2Builder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv4; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv4Builder; +import static org.mockito.Mockito.verifyZeroInteractions; + public class Ipv4CustomizerTest extends ReaderCustomizerTest<Ipv4, Ipv4Builder> { public Ipv4CustomizerTest() { diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4NeighbourCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4NeighbourCustomizerTest.java new file mode 100644 index 000000000..d540dfa3b --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4NeighbourCustomizerTest.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.fd.hc2vpp.v3po.interfacesstate.ip.v4; + +import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; +import io.fd.hc2vpp.v3po.interfacesstate.ip.InterfaceChildNodeTest; +import io.fd.honeycomb.translate.read.ReadFailedException; +import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; +import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.Interface2; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv4; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv4Builder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv4.Neighbor; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv4.NeighborBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv4.NeighborKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; + +public class Ipv4NeighbourCustomizerTest extends ListReaderCustomizerTest<Neighbor, NeighborKey, NeighborBuilder> + implements InterfaceChildNodeTest { + + private InstanceIdentifier<Neighbor> instanceIdentifier; + + public Ipv4NeighbourCustomizerTest() { + super(Neighbor.class, Ipv4Builder.class); + } + + @Override + protected void setUp() throws Exception { + instanceIdentifier = InstanceIdentifier.create(InterfacesState.class) + .child(Interface.class, new InterfaceKey(IFACE_NAME)) + .augmentation(Interface2.class) + .child(Ipv4.class) + .child(Neighbor.class, new NeighborKey(IPV4_ONE_ADDRESS)); + defineMapping(mappingContext, IFACE_NAME, IFACE_ID, INTERFACE_CONTEXT_NAME); + mockNeighborDump(api, dumpV4NeighborIfaceOne(), v4Neighbors()); + } + + @Test + public void testGetAll() throws ReadFailedException { + verifyList(Arrays.asList(new NeighborKey(IPV4_ONE_ADDRESS), new NeighborKey(IPV4_TWO_ADDRESS)), + getCustomizer().getAllIds(instanceIdentifier, ctx)); + } + + @Test + public void readCurrent() throws ReadFailedException { + final NeighborBuilder builder = new NeighborBuilder(); + getCustomizer().readCurrentAttributes(instanceIdentifier, builder, ctx); + + assertEquals(IPV4_ONE_ADDRESS, builder.getIp()); + assertEquals(MAC_ONE_ADDRESS, builder.getLinkLayerAddress()); + } + + @Override + protected ReaderCustomizer<Neighbor, NeighborBuilder> initCustomizer() { + return new Ipv4NeighbourCustomizer(api, INTERFACE_CONTEXT); + } +}
\ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/SubInterfaceIpv4AddressCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/subinterface/SubInterfaceIpv4AddressCustomizerTest.java index cfc7bc6dd..736ff0031 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/SubInterfaceIpv4AddressCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/subinterface/SubInterfaceIpv4AddressCustomizerTest.java @@ -14,33 +14,18 @@ * limitations under the License. */ -package io.fd.hc2vpp.v3po.interfacesstate.ip; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +package io.fd.hc2vpp.v3po.interfacesstate.ip.v4.subinterface; import com.google.common.collect.ImmutableSet; import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; import io.fd.hc2vpp.common.translate.util.Ipv4Translator; import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.ip.v4.subinterface.SubInterfaceIpv4AddressCustomizer; import io.fd.honeycomb.translate.read.ReadFailedException; import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer; import io.fd.honeycomb.translate.util.read.cache.CacheKeyFactory; import io.fd.honeycomb.translate.util.read.cache.TypeAwareIdentifierCacheKeyFactory; import io.fd.vpp.jvpp.core.dto.IpAddressDetails; import io.fd.vpp.jvpp.core.dto.IpAddressDetailsReplyDump; -import java.util.Arrays; -import java.util.List; import org.junit.Assert; import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -61,6 +46,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip4.attributes.ipv4.address.subnet.PrefixLengthBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.*; + public class SubInterfaceIpv4AddressCustomizerTest extends ListReaderCustomizerTest<Address, AddressKey, AddressBuilder> implements Ipv4Translator { @@ -160,11 +155,6 @@ public class SubInterfaceIpv4AddressCustomizerTest extends ListReaderCustomizerT } @Test - public void testCacheScope() { - - } - - @Test public void testCachingScopeSpecificRequest() throws ReadFailedException { fillCacheForTwoIfaces(); final AddressBuilder ifaceOneAddressBuilder = new AddressBuilder(); diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/subinterface/SubInterfaceIpv4NeighbourCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/subinterface/SubInterfaceIpv4NeighbourCustomizerTest.java new file mode 100644 index 000000000..02fe52457 --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/subinterface/SubInterfaceIpv4NeighbourCustomizerTest.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.fd.hc2vpp.v3po.interfacesstate.ip.v4.subinterface; + +import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; +import io.fd.hc2vpp.v3po.interfacesstate.ip.InterfaceChildNodeTest; +import io.fd.honeycomb.translate.read.ReadFailedException; +import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; +import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.SubinterfaceStateAugmentation; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.SubInterfaces; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.sub.interfaces.SubInterface; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.sub.interfaces.SubInterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip4.attributes.Ipv4; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip4.attributes.Ipv4Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip4.attributes.ipv4.Neighbor; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip4.attributes.ipv4.NeighborBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip4.attributes.ipv4.NeighborKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; + +public class SubInterfaceIpv4NeighbourCustomizerTest extends ListReaderCustomizerTest<Neighbor, NeighborKey, NeighborBuilder> + implements InterfaceChildNodeTest { + + private InstanceIdentifier<Neighbor> instanceIdentifier; + + public SubInterfaceIpv4NeighbourCustomizerTest() { + super(Neighbor.class, Ipv4Builder.class); + } + + @Override + protected void setUp() throws Exception { + instanceIdentifier = InstanceIdentifier.create(InterfacesState.class) + .child(Interface.class, new InterfaceKey(IFACE_NAME)) + .augmentation(SubinterfaceStateAugmentation.class) + .child(SubInterfaces.class) + .child(SubInterface.class, new SubInterfaceKey((long) SUB_IFACE_ID)) + .child(Ipv4.class) + .child(Neighbor.class, new NeighborKey(IPV4_TWO_ADDRESS)); + + defineMapping(mappingContext, IFACE_NAME, IFACE_ID, INTERFACE_CONTEXT_NAME); + defineMapping(mappingContext, SUB_IFACE_NAME, SUB_IFACE_ID, INTERFACE_CONTEXT_NAME); + mockNeighborDump(api, dumpV4NeighborsSubIfaceOne(), v4Neighbors()); + } + + @Test + public void testGetAll() throws ReadFailedException { + verifyList(Arrays.asList(new NeighborKey(IPV4_ONE_ADDRESS), new NeighborKey(IPV4_TWO_ADDRESS)), + getCustomizer().getAllIds(instanceIdentifier, ctx)); + } + + @Test + public void testReadCurrent() throws ReadFailedException { + final NeighborBuilder neighborBuilder = new NeighborBuilder(); + getCustomizer().readCurrentAttributes(instanceIdentifier, neighborBuilder, ctx); + + assertEquals(MAC_TWO_ADDRESS, neighborBuilder.getLinkLayerAddress()); + assertEquals(IPV4_TWO_ADDRESS, neighborBuilder.getIp()); + } + + @Override + protected ReaderCustomizer<Neighbor, NeighborBuilder> initCustomizer() { + return new SubInterfaceIpv4NeighbourCustomizer(api, INTERFACE_CONTEXT); + } +}
\ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6AddressCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6AddressCustomizerTest.java new file mode 100644 index 000000000..487f56918 --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6AddressCustomizerTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.fd.hc2vpp.v3po.interfacesstate.ip.v6; + +import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; +import io.fd.hc2vpp.v3po.interfacesstate.ip.InterfaceChildNodeTest; +import io.fd.honeycomb.translate.read.ReadFailedException; +import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; +import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.Interface2; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv6; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv6Builder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv6.Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv6.AddressBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv6.AddressKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; + +public class Ipv6AddressCustomizerTest extends ListReaderCustomizerTest<Address, AddressKey, AddressBuilder> + implements InterfaceChildNodeTest { + + private InstanceIdentifier<Address> instanceIdentifier; + + public Ipv6AddressCustomizerTest() { + super(Address.class, Ipv6Builder.class); + } + + @Override + protected void setUp() throws Exception { + instanceIdentifier = InstanceIdentifier.create(InterfacesState.class) + .child(Interface.class, new InterfaceKey(IFACE_2_NAME)) + .augmentation(Interface2.class) + .child(Ipv6.class) + .child(Address.class, new AddressKey(IPV6_TWO_ADDRESS_COMPRESSED)); + defineMapping(mappingContext, IFACE_2_NAME, IFACE_2_ID, INTERFACE_CONTEXT_NAME); + mockAddressDump(api, dumpV6AddressesIfaceTwo(), v6Addresses()); + } + + @Override + protected ReaderCustomizer<Address, AddressBuilder> initCustomizer() { + return new Ipv6AddressCustomizer(api, INTERFACE_CONTEXT); + } + + @Test + public void testGetAll() throws ReadFailedException { + verifyList(Arrays.asList( + new AddressKey(IPV6_ONE_ADDRESS_COMPRESSED), new AddressKey(IPV6_TWO_ADDRESS_COMPRESSED)), + getCustomizer().getAllIds(instanceIdentifier, ctx)); + } + + @Test + public void testReadCurrent() throws ReadFailedException { + AddressBuilder builder = new AddressBuilder(); + getCustomizer().readCurrentAttributes(instanceIdentifier, builder, ctx); + + assertEquals(IPV6_TWO_ADDRESS_COMPRESSED, builder.getIp()); + assertEquals(IPV6_TWO_PREFIX, builder.getPrefixLength().longValue()); + } +}
\ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6NeighbourCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6NeighbourCustomizerTest.java new file mode 100644 index 000000000..6f5a08abb --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6NeighbourCustomizerTest.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.fd.hc2vpp.v3po.interfacesstate.ip.v6; + +import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; +import io.fd.hc2vpp.v3po.interfacesstate.ip.InterfaceChildNodeTest; +import io.fd.honeycomb.translate.read.ReadFailedException; +import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; +import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.Interface2; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv6; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.Ipv6Builder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv6.Neighbor; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv6.NeighborBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces.state._interface.ipv6.NeighborKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; + + +public class Ipv6NeighbourCustomizerTest extends ListReaderCustomizerTest<Neighbor, NeighborKey, NeighborBuilder> + implements InterfaceChildNodeTest { + + private InstanceIdentifier<Neighbor> instanceIdentifier; + + public Ipv6NeighbourCustomizerTest() { + super(Neighbor.class, Ipv6Builder.class); + } + + @Override + protected void setUp() throws Exception { + instanceIdentifier = InstanceIdentifier.create(InterfacesState.class) + .child(Interface.class, new InterfaceKey(IFACE_NAME)) + .augmentation(Interface2.class) + .child(Ipv6.class) + .child(Neighbor.class, new NeighborKey(IPV6_ONE_ADDRESS_COMPRESSED)); + defineMapping(mappingContext, IFACE_NAME, IFACE_ID, INTERFACE_CONTEXT_NAME); + mockNeighborDump(api, dumpV6NeighborsIfaceOne(), v6Neighbors()); + } + + @Test + public void testGetAll() throws ReadFailedException { + verifyList(Arrays.asList( + new NeighborKey(IPV6_ONE_ADDRESS_COMPRESSED), + new NeighborKey(IPV6_TWO_ADDRESS_COMPRESSED)), + getCustomizer().getAllIds(instanceIdentifier, ctx)); + } + + @Test + public void readCurrent() throws ReadFailedException { + final NeighborBuilder builder = new NeighborBuilder(); + getCustomizer().readCurrentAttributes(instanceIdentifier, builder, ctx); + + assertEquals(IPV6_ONE_ADDRESS_COMPRESSED, builder.getIp()); + assertEquals(MAC_THREE_ADDRESS, builder.getLinkLayerAddress()); + } + + @Override + protected ReaderCustomizer<Neighbor, NeighborBuilder> initCustomizer() { + return new Ipv6NeighbourCustomizer(api, INTERFACE_CONTEXT); + } +}
\ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6AddressCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6AddressCustomizerTest.java new file mode 100644 index 000000000..51d9f603f --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6AddressCustomizerTest.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.fd.hc2vpp.v3po.interfacesstate.ip.v6.subinterface; + +import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; +import io.fd.hc2vpp.v3po.interfacesstate.ip.InterfaceChildNodeTest; +import io.fd.honeycomb.translate.read.ReadFailedException; +import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; +import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.SubinterfaceStateAugmentation; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.SubInterfaces; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.sub.interfaces.SubInterface; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.sub.interfaces.SubInterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.Ipv6; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.Ipv6Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.ipv6.Address; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.ipv6.AddressBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.ipv6.AddressKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +import java.util.Arrays; + +public class SubInterfaceIpv6AddressCustomizerTest extends ListReaderCustomizerTest<Address, AddressKey, AddressBuilder> + implements InterfaceChildNodeTest { + + private InstanceIdentifier<Address> instanceIdentifier; + + public SubInterfaceIpv6AddressCustomizerTest() { + super(Address.class, Ipv6Builder.class); + } + + @Override + protected void setUp() throws Exception { + instanceIdentifier = InstanceIdentifier.create(InterfacesState.class) + .child(Interface.class, new InterfaceKey(IFACE_NAME)) + .augmentation(SubinterfaceStateAugmentation.class) + .child(SubInterfaces.class) + .child(SubInterface.class, new SubInterfaceKey((long) SUB_IFACE_ID)) + .child(Ipv6.class) + .child(Address.class, new AddressKey(IPV6_TWO_ADDRESS_COMPRESSED)); + + defineMapping(mappingContext, IFACE_NAME, IFACE_ID, INTERFACE_CONTEXT_NAME); + defineMapping(mappingContext, SUB_IFACE_NAME, SUB_IFACE_ID, INTERFACE_CONTEXT_NAME); + mockAddressDump(api, dumpV6AddressesSubIfaceOne(), v6Addresses()); + } + + @Test + public void testGetAll() throws ReadFailedException { + verifyList(Arrays.asList( + new AddressKey(IPV6_ONE_ADDRESS_COMPRESSED), new AddressKey(IPV6_TWO_ADDRESS_COMPRESSED)), + getCustomizer().getAllIds(instanceIdentifier, ctx)); + } + + @Override + protected ReaderCustomizer<Address, AddressBuilder> initCustomizer() { + return new SubInterfaceIpv6AddressCustomizer(api, INTERFACE_CONTEXT); + } +}
\ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6NeighbourCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6NeighbourCustomizerTest.java new file mode 100644 index 000000000..24fd17eb8 --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6NeighbourCustomizerTest.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.fd.hc2vpp.v3po.interfacesstate.ip.v6.subinterface; + +import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; +import io.fd.hc2vpp.v3po.interfacesstate.ip.InterfaceChildNodeTest; +import io.fd.honeycomb.translate.read.ReadFailedException; +import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; +import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.SubinterfaceStateAugmentation; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.SubInterfaces; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.sub.interfaces.SubInterface; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.interfaces.state._interface.sub.interfaces.SubInterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.Ipv6; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.Ipv6Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.ipv6.Neighbor; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.ipv6.NeighborBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev161214.sub._interface.ip6.attributes.ipv6.NeighborKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; + +public class SubInterfaceIpv6NeighbourCustomizerTest extends ListReaderCustomizerTest<Neighbor, NeighborKey, NeighborBuilder> + implements InterfaceChildNodeTest { + + private InstanceIdentifier<Neighbor> instanceIdentifier; + + public SubInterfaceIpv6NeighbourCustomizerTest() { + super(Neighbor.class, Ipv6Builder.class); + } + + @Override + protected void setUp() throws Exception { + instanceIdentifier = InstanceIdentifier.create(InterfacesState.class) + .child(Interface.class, new InterfaceKey(IFACE_2_NAME)) + .augmentation(SubinterfaceStateAugmentation.class) + .child(SubInterfaces.class) + .child(SubInterface.class, new SubInterfaceKey((long) SUB_IFACE_2_ID)) + .child(Ipv6.class) + .child(Neighbor.class, new NeighborKey(IPV6_TWO_ADDRESS_COMPRESSED)); + defineMapping(mappingContext, IFACE_2_NAME, IFACE_2_ID, INTERFACE_CONTEXT_NAME); + defineMapping(mappingContext, SUB_IFACE_2_NAME, SUB_IFACE_2_ID, INTERFACE_CONTEXT_NAME); + mockNeighborDump(api, dumpV6NeighborsSubIfaceTwo(), v6Neighbors()); + } + + @Test + public void testGetAll() throws ReadFailedException { + verifyList(Arrays.asList( + new NeighborKey(IPV6_ONE_ADDRESS_COMPRESSED), + new NeighborKey(IPV6_TWO_ADDRESS_COMPRESSED)), + getCustomizer().getAllIds(instanceIdentifier, ctx)); + } + + @Test + public void readCurrent() throws ReadFailedException { + NeighborBuilder builder = new NeighborBuilder(); + getCustomizer().readCurrentAttributes(instanceIdentifier, builder, ctx); + + assertEquals(IPV6_TWO_ADDRESS_COMPRESSED, builder.getIp()); + assertEquals(MAC_FOUR_ADDRESS, builder.getLinkLayerAddress()); + } + + @Override + protected ReaderCustomizer<Neighbor, NeighborBuilder> initCustomizer() { + return new SubInterfaceIpv6NeighbourCustomizer(api, INTERFACE_CONTEXT); + } +}
\ No newline at end of file |