summaryrefslogtreecommitdiffstats
path: root/v3po/v3po2vpp/src/test/java/io/fd
diff options
context:
space:
mode:
authorJan Srnicek <jsrnicek@cisco.com>2017-02-07 13:50:59 +0100
committerJan Srnicek <jsrnicek@cisco.com>2017-02-08 08:29:29 +0000
commit3cecf2cd177bbcb87ad0d5eb19e8e0c80a016a5d (patch)
tree54c7c6df14bf0013a7a8ac7de259388b60a3a9f6 /v3po/v3po2vpp/src/test/java/io/fd
parent1e562c89ed44a33ffafd310a9e58a45bad65339e (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')
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/InterfaceChildNodeTest.java195
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4AddressCustomizerTest.java (renamed from v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/Ipv4AddressCustomizerTest.java)32
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4CustomizerTest.java (renamed from v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/Ipv4CustomizerTest.java)7
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/Ipv4NeighbourCustomizerTest.java77
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/subinterface/SubInterfaceIpv4AddressCustomizerTest.java (renamed from v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/SubInterfaceIpv4AddressCustomizerTest.java)32
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v4/subinterface/SubInterfaceIpv4NeighbourCustomizerTest.java84
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6AddressCustomizerTest.java78
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/Ipv6NeighbourCustomizerTest.java80
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6AddressCustomizerTest.java74
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/ip/v6/subinterface/SubInterfaceIpv6NeighbourCustomizerTest.java85
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