diff options
author | Michal Cmarada <mcmarada@cisco.com> | 2019-05-27 13:54:02 +0200 |
---|---|---|
committer | Michal Cmarada <mcmarada@cisco.com> | 2019-05-27 13:54:02 +0200 |
commit | 5543345d32514bfa38292a5080e57b915e39ea1d (patch) | |
tree | 6d759a5eb22bb020f47c299e928e7a65f7a84b2f /v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate | |
parent | 5c416ebacf4baad25de6213661c3cdfff31c0482 (diff) |
HC2VPP-411: remove deprecated interface-state
- new ietf-interfaces obsoletes interfaces-state container,
only interfaces container should be used from now on.
Change-Id: Ifb24611a3dca987bdf6b029d32e01d9b1f479fe8
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
Diffstat (limited to 'v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate')
19 files changed, 0 insertions, 2412 deletions
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/AfPacketCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/AfPacketCustomizerTest.java deleted file mode 100644 index 66b1f6c75..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/AfPacketCustomizerTest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2018 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; - -import static io.fd.hc2vpp.v3po.interfacesstate.AfPacketCustomizer.getCfgId; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.InitializingReaderCustomizerTest; -import io.fd.hc2vpp.common.test.util.InterfaceDumpHelper; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.AfPacketDetails; -import io.fd.jvpp.core.dto.AfPacketDetailsReplyDump; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import java.util.Collections; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.AfPacket; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.AfPacketBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class AfPacketCustomizerTest extends InitializingReaderCustomizerTest<AfPacket, AfPacketBuilder> - implements InterfaceDumpHelper { - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "host-veth1"; - private static final int IF_INDEX = 1; - private static final InstanceIdentifier<AfPacket> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(AfPacket.class); - - private NamingContext interfaceContext; - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public AfPacketCustomizerTest() { - super(AfPacket.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - protected void setUp() throws Exception { - interfaceContext = new NamingContext("generatedInterfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_INDEX, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<AfPacket, AfPacketBuilder> initCustomizer() { - return new AfPacketCustomizer(api, interfaceContext, dumpCacheManager); - } - - @Test - public void testRead() throws ReadFailedException { - final AfPacketBuilder builder = mock(AfPacketBuilder.class); - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IF_NAME)).thenReturn(ifaceDetails()); - when(api.afPacketDump(any())).thenReturn(future(afPacketReplyDump())); - - getCustomizer().readCurrentAttributes(IID, builder, ctx); - - verify(builder).setMac(new PhysAddress("01:02:03:04:05:06")); - } - - @Test - public void testReadFailed() throws ReadFailedException { - final AfPacketBuilder builder = mock(AfPacketBuilder.class); - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IF_NAME)).thenReturn(null); - - getCustomizer().readCurrentAttributes(IID, builder, ctx); - - verifyZeroInteractions(builder); - } - - @Test - public void testInit() { - final AfPacket operData = new AfPacketBuilder() - .setHostInterfaceName(IF_NAME) - .setMac(new PhysAddress("11:22:33:44:55:66")).build(); - final org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces._interface.AfPacket - cfgData = - new org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces._interface.AfPacketBuilder() - .setHostInterfaceName(IF_NAME) - .setMac(new PhysAddress("11:22:33:44:55:66")).build(); - invokeInitTest(IID, operData, getCfgId(IID), cfgData); - } - - private SwInterfaceDetails ifaceDetails() { - final SwInterfaceDetails details = new SwInterfaceDetails(); - details.swIfIndex = IF_INDEX; - details.interfaceName = IF_NAME.getBytes(); - details.l2Address = new byte[] {1, 2, 3, 4, 5, 6}; - return details; - } - - private AfPacketDetailsReplyDump afPacketReplyDump() { - final AfPacketDetailsReplyDump reply = new AfPacketDetailsReplyDump(); - final AfPacketDetails details0 = new AfPacketDetails(); - details0.swIfIndex = IF_INDEX; - details0.hostIfName = IF_NAME.getBytes(); - reply.afPacketDetails = Collections.singletonList(details0); - return reply; - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/EthernetCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/EthernetCustomizerTest.java deleted file mode 100644 index cb8ce5413..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/EthernetCustomizerTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.test.util.InterfaceDumpHelper; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.EthernetStateAttributes; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.Ethernet; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.EthernetBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class EthernetCustomizerTest extends ReaderCustomizerTest<Ethernet, EthernetBuilder> implements - InterfaceDumpHelper { - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "local0"; - private static final int IF_INDEX = 1; - private static final InstanceIdentifier<Ethernet> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(Ethernet.class); - private NamingContext interfaceContext; - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public EthernetCustomizerTest() { - super(Ethernet.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - protected void setUp() throws Exception { - interfaceContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_INDEX, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<Ethernet, EthernetBuilder> initCustomizer() { - return new EthernetCustomizer(dumpCacheManager); - } - - private void testRead(final int linkDuplex, final EthernetStateAttributes.Duplex duplex) - throws ReadFailedException { - final EthernetBuilder builder = mock(EthernetBuilder.class); - final short mtu = 123; - when(dumpCacheManager.getInterfaceDetail(any(), any(), any())).thenReturn(ifaceDetails(mtu, linkDuplex)); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - verify(builder).setMtu((int) mtu); - verify(builder).setDuplex(duplex); - } - - private SwInterfaceDetails ifaceDetails(final short mtu, final int duplex) { - final SwInterfaceDetails details = new SwInterfaceDetails(); - details.swIfIndex = IF_INDEX; - details.linkMtu = mtu; - details.linkDuplex = (byte) duplex; - return details; - } - - @Test - public void testReadHalfDuplex() throws ReadFailedException { - testRead(1, EthernetStateAttributes.Duplex.Half); - } - - @Test - public void testReadFullDuplex() throws ReadFailedException { - testRead(2, EthernetStateAttributes.Duplex.Full); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java deleted file mode 100644 index 969a98c3b..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import com.google.common.collect.Lists; -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.AddressTranslator; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.VppInvocationException; -import io.fd.jvpp.core.dto.GreTunnelDetails; -import io.fd.jvpp.core.dto.GreTunnelDetailsReplyDump; -import io.fd.jvpp.core.dto.GreTunnelDump; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.types.Address; -import io.fd.jvpp.core.types.GreTunnel; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.Gre; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.GreBuilder; -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.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class GreCustomizerTest extends ReaderCustomizerTest<Gre, GreBuilder> implements AddressTranslator { - - private static final String IFACE_NAME = "ifc1"; - private static final int IFACE_ID = 0; - private static final String IFC_CTX_NAME = "ifc-test-instance"; - - private NamingContext interfacesContext; - static final InstanceIdentifier<Gre> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IFACE_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(Gre.class); - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public GreCustomizerTest() { - super(Gre.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - public void setUp() throws VppInvocationException, ReadFailedException { - interfacesContext = new NamingContext("gre-tunnel", IFC_CTX_NAME); - defineMapping(mappingContext, IFACE_NAME, IFACE_ID, IFC_CTX_NAME); - - final SwInterfaceDetails v = new SwInterfaceDetails(); - v.interfaceName = "gre-tunnel4".getBytes(); - - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IFACE_NAME)).thenReturn(v); - - final GreTunnelDetailsReplyDump value = new GreTunnelDetailsReplyDump(); - final GreTunnelDetails greTunnelDetails = new GreTunnelDetails(); - greTunnelDetails.tunnel = new GreTunnel(); - greTunnelDetails.tunnel.isIpv6 = 0; - greTunnelDetails.tunnel.dst = ipv4AddressToAddress(new Ipv4Address("1.2.3.4")); - greTunnelDetails.tunnel.src = ipv4AddressToAddress(new Ipv4Address("1.2.3.5")); - greTunnelDetails.tunnel.outerFibId = 55; - greTunnelDetails.tunnel.swIfIndex = 0; - value.greTunnelDetails = Lists.newArrayList(greTunnelDetails); - - doReturn(future(value)).when(api).greTunnelDump(any(GreTunnelDump.class)); - } - - @Test - public void testReadCurrentAttributes() throws Exception { - final GreBuilder builder = getCustomizer().getBuilder(IID); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - - assertEquals(55, builder.getOuterFibId().intValue()); - - assertNull(builder.getSrc().getIpv6AddressNoZone()); - assertNotNull(builder.getSrc().getIpv4AddressNoZone()); - assertEquals("1.2.3.5", builder.getSrc().getIpv4AddressNoZone().getValue()); - - assertNull(builder.getDst().getIpv6AddressNoZone()); - assertNotNull(builder.getDst().getIpv4AddressNoZone()); - assertEquals("1.2.3.4", builder.getDst().getIpv4AddressNoZone().getValue()); - - verify(api).greTunnelDump(any(GreTunnelDump.class)); - } - - @Test - public void testReadCurrentAttributesWrongType() throws Exception { - final SwInterfaceDetails v = new SwInterfaceDetails(); - v.interfaceName = "tap-2".getBytes(); - - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IFACE_NAME)).thenReturn(v); - - final GreBuilder builder = getCustomizer().getBuilder(IID); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - verifyZeroInteractions(api); - } - - @Override - protected ReaderCustomizer<Gre, GreBuilder> initCustomizer() { - return new GreCustomizer(api, interfacesContext, dumpCacheManager); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceCustomizerTest.java deleted file mode 100644 index a3188b426..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceCustomizerTest.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.doReturn; -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.read.ListReaderCustomizerTest; -import io.fd.hc2vpp.common.test.util.InterfaceDumpHelper; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.DisabledInterfacesManager; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.dto.SwInterfaceDump; -import io.fd.jvpp.core.types.InterfaceIndex; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Stream; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesStateBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class InterfaceCustomizerTest extends ListReaderCustomizerTest<Interface, InterfaceKey, InterfaceBuilder> - implements InterfaceDataTranslator, InterfaceDumpHelper { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IFACE0_NAME = "eth0"; - private static final String IFACE1_NAME = "eth1"; - private static final String SUB_IFACE_NAME = "eth1.1"; - private static final int IFACE0_ID = 0; - private static final int IFACE1_ID = 1; - private static final int SUB_IFACE_ID = 2; - - private NamingContext interfacesContext; - @Mock - private DisabledInterfacesManager interfaceDisableContext; - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public InterfaceCustomizerTest() { - super(Interface.class, InterfacesStateBuilder.class); - } - - @Override - public void setUp() { - interfacesContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, IFACE0_NAME, IFACE0_ID, IFC_CTX_NAME); - defineMapping(mappingContext, IFACE1_NAME, IFACE1_ID, IFC_CTX_NAME); - defineMapping(mappingContext, SUB_IFACE_NAME, SUB_IFACE_ID, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<Interface, InterfaceBuilder> initCustomizer() { - return new InterfaceCustomizer(interfacesContext, interfaceDisableContext, dumpCacheManager); - } - - private void assertIfacesAreEqual(final Interface iface, final SwInterfaceDetails details) { - assertEquals(iface.getName(), new String(details.interfaceName)); - assertEquals(yangIfIndexToVpp(iface.getIfIndex().intValue()), details.swIfIndex); - assertEquals(iface.getPhysAddress().getValue(), vppPhysAddrToYang(details.l2Address)); - } - - @Test - public void testReadCurrentAttributes() throws Exception { - final InstanceIdentifier<Interface> id = InstanceIdentifier.create(InterfacesState.class) - .child(Interface.class, new InterfaceKey(IFACE0_NAME)); - final InterfaceBuilder builder = getCustomizer().getBuilder(id); - - final SwInterfaceDetails iface = new SwInterfaceDetails(); - iface.interfaceName = IFACE0_NAME.getBytes(); - iface.swIfIndex = 0; - iface.linkSpeed = 1; - iface.l2AddressLength = 6; - iface.l2Address = new byte[iface.l2AddressLength]; - when(dumpCacheManager.getInterfaceDetail(id, ctx, IFACE0_NAME)).thenReturn(iface); - - getCustomizer().readCurrentAttributes(id, builder, ctx); - - final SwInterfaceDump request = new SwInterfaceDump(); - request.swIfIndex = new InterfaceIndex(); - request.swIfIndex.interfaceindex =~0; - request.nameFilter = IFACE0_NAME.getBytes(); - request.nameFilterValid = 1; - - assertIfacesAreEqual(builder.build(), iface); - verify(dumpCacheManager, times(1)).getInterfaceDetail(id, ctx, IFACE0_NAME); - } - - @Test - public void testReadSubInterface() throws Exception { - final InstanceIdentifier<Interface> id = InstanceIdentifier.create(InterfacesState.class) - .child(Interface.class, new InterfaceKey(SUB_IFACE_NAME)); - final InterfaceBuilder builder = mock(InterfaceBuilder.class); - - final SwInterfaceDetails iface = new SwInterfaceDetails(); - iface.interfaceName = SUB_IFACE_NAME.getBytes(); - iface.swIfIndex = 2; - iface.supSwIfIndex = 1; - iface.subId = 1; - when(dumpCacheManager.getInterfaceDetail(id, ctx, SUB_IFACE_NAME)).thenReturn(iface); - - getCustomizer().readCurrentAttributes(id, builder, ctx); - - final SwInterfaceDump request = new SwInterfaceDump(); - request.swIfIndex = new InterfaceIndex(); - request.swIfIndex.interfaceindex =~0; - request.nameFilter = SUB_IFACE_NAME.getBytes(); - request.nameFilterValid = 1; - - verifyZeroInteractions(builder); - verify(dumpCacheManager, times(1)).getInterfaceDetail(id, ctx, SUB_IFACE_NAME); - } - - @Test - public void testGetAllIds() throws Exception { - final InstanceIdentifier<Interface> id = InstanceIdentifier.create(InterfacesState.class) - .child(Interface.class); - - final SwInterfaceDetails swIf0 = new SwInterfaceDetails(); - swIf0.swIfIndex = 0; - swIf0.supSwIfIndex = 0; - swIf0.interfaceName = IFACE0_NAME.getBytes(); - final SwInterfaceDetails swIf1 = new SwInterfaceDetails(); - swIf1.swIfIndex = 1; - swIf1.supSwIfIndex = 1; - swIf1.interfaceName = IFACE1_NAME.getBytes(); - final SwInterfaceDetails swSubIf1 = new SwInterfaceDetails(); - swSubIf1.swIfIndex = 2; - swSubIf1.subId = 1; - swSubIf1.supSwIfIndex = 1; - swSubIf1.interfaceName = SUB_IFACE_NAME.getBytes(); - when(dumpCacheManager.getInterfaces(id, ctx)).thenReturn(Stream.of(swIf0, swIf1, swSubIf1)); - - final List<InterfaceKey> expectedIds = Arrays.asList(new InterfaceKey(IFACE0_NAME), new InterfaceKey( - IFACE1_NAME)); - final List<InterfaceKey> actualIds = getCustomizer().getAllIds(id, ctx); - - final SwInterfaceDump request = new SwInterfaceDump(); - request.swIfIndex = new InterfaceIndex(); - request.swIfIndex.interfaceindex = ~0; - request.nameFilter = "".getBytes(); - request.nameFilterValid = 0; - - // sub-interface should not be on the list - assertEquals(expectedIds, actualIds); - verify(dumpCacheManager, times(1)).getInterfaces(id, ctx); - } - - @Test - public void testGetAllIdsWithDisabled() throws Exception { - final InstanceIdentifier<Interface> id = InstanceIdentifier.create(InterfacesState.class) - .child(Interface.class); - - doReturn(true).when(interfaceDisableContext).isInterfaceDisabled(1, mappingContext); - - final SwInterfaceDetails swIf0 = new SwInterfaceDetails(); - swIf0.swIfIndex = 0; - swIf0.interfaceName = IFACE0_NAME.getBytes(); - final SwInterfaceDetails swIf1 = new SwInterfaceDetails(); - swIf1.swIfIndex = 1; - swIf1.interfaceName = IFACE1_NAME.getBytes(); - when(dumpCacheManager.getInterfaces(id, ctx)).thenReturn(Stream.of(swIf0, swIf1)); - - final List<InterfaceKey> expectedIds = Arrays.asList(new InterfaceKey(IFACE0_NAME)); - final List<InterfaceKey> actualIds = getCustomizer().getAllIds(id, ctx); - - // disabled interface should not be on the list - assertEquals(expectedIds, actualIds); - verify(dumpCacheManager, times(1)).getInterfaces(id, ctx); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceDataTranslatorTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceDataTranslatorTest.java deleted file mode 100644 index 7ea94a921..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceDataTranslatorTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadContext; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import java.nio.charset.StandardCharsets; -import org.junit.Test; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.AfPacket; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.TapV2; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VhostUser; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VxlanGpeTunnel; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VxlanTunnel; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev180703.EthernetCsmacd; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class InterfaceDataTranslatorTest implements InterfaceDataTranslator { - - @Test - public void testVppPhysAddrToYang() throws Exception { - assertEquals("01:02:03:04:05:06", vppPhysAddrToYang(new byte[] {1, 2, 3, 4, 5, 6})); - // Extended (64-bit) MAC addresses are currently not supported (it might require yang model update), - // so test if extended part is ignored - assertEquals("0a:0b:0c:0d:0e:0f", vppPhysAddrToYang(new byte[] {0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0, 0})); - } - - @Test(expected = NullPointerException.class) - public void testVppPhysAddrToYangFailNullArgument() throws Exception { - vppPhysAddrToYang(null); - } - - @Test(expected = IllegalArgumentException.class) - public void testVppPhysAddrToYangInvalidByteArrayLength() throws Exception { - vppPhysAddrToYang(new byte[] {1, 2, 3, 4, 5}); - } - - @Test - public void testGetInterfaceType() { - assertEquals(TapV2.class, getInterfaceType("tap0")); - assertEquals(VxlanTunnel.class, getInterfaceType("vxlan0")); - assertEquals(VxlanGpeTunnel.class, getInterfaceType("vxlan_gpe0")); - assertEquals(VhostUser.class, getInterfaceType("VirtualEthernet0/0/0")); - assertEquals(AfPacket.class, getInterfaceType("host-veth0")); - assertEquals(EthernetCsmacd.class, getInterfaceType("eth0.0")); - assertEquals(EthernetCsmacd.class, getInterfaceType("local0")); - } - - @Test - public void testIsInterfaceOfType() { - assertTrue(isInterfaceOfType(TapV2.class, interfaceDetails("tap0"))); - assertTrue(isInterfaceOfType(VxlanTunnel.class, interfaceDetails("vxlan0"))); - assertTrue(isInterfaceOfType(VxlanGpeTunnel.class, interfaceDetails("vxlan_gpe0"))); - assertTrue(isInterfaceOfType(VhostUser.class, interfaceDetails("VirtualEthernet0/0/0"))); - assertTrue(isInterfaceOfType(AfPacket.class, interfaceDetails("host-veth0"))); - assertTrue(isInterfaceOfType(EthernetCsmacd.class, interfaceDetails("eth0.0"))); - assertTrue(isInterfaceOfType(EthernetCsmacd.class, interfaceDetails("local0"))); - } - - @Test - public void testIsInterfaceOfTypeMissingIfc() throws ReadFailedException { - final InterfaceCacheDumpManager dumpManager = mock(InterfaceCacheDumpManager.class); - final ReadContext ctx = mock(ReadContext.class); - final String ifcName = "tapThatDoesNotExists"; - final InstanceIdentifier<Interface> id = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(ifcName)); - - when(dumpManager.getInterfaceDetail(id, ctx, ifcName)).thenReturn(null); - - assertFalse(isInterfaceOfType(dumpManager, id, ctx, TapV2.class)); - } - - private SwInterfaceDetails interfaceDetails(final String interfaceName) { - final SwInterfaceDetails details = new SwInterfaceDetails(); - details.interfaceName = interfaceName.getBytes(StandardCharsets.UTF_8); - return details; - } - - -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceRoutingCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceRoutingCustomizerTest.java deleted file mode 100644 index b72130939..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceRoutingCustomizerTest.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceGetTableReply; -import org.junit.Test; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.Routing; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.RoutingBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.VniReference; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class InterfaceRoutingCustomizerTest extends ReaderCustomizerTest<Routing, RoutingBuilder> { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "local0"; - private static final int IF_ID = 1; - private static final Long IP4_VRF_ID = 1L; - private static final Long IP6_VRF_ID = 2L; - - private NamingContext interfacesContext; - - public InterfaceRoutingCustomizerTest() { - super(Routing.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - public void setUp() { - interfacesContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_ID, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<Routing, RoutingBuilder> initCustomizer() { - return new InterfaceRoutingCustomizer(api, interfacesContext); - } - - private InstanceIdentifier<Routing> getRoutingId(final String name) { - return InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(name)) - .augmentation(VppInterfaceStateAugmentation.class).child(Routing.class); - } - - @Test - public void testRead() throws Exception { - final RoutingBuilder builder = mock(RoutingBuilder.class); - when(api.swInterfaceGetTable(any())).thenReturn(future(tableReply(IP4_VRF_ID))).thenReturn(future(tableReply(IP6_VRF_ID))); - getCustomizer().readCurrentAttributes(getRoutingId(IF_NAME), builder, ctx); - - verify(builder).setIpv4VrfId(new VniReference(IP4_VRF_ID)); - verify(builder).setIpv6VrfId(new VniReference(IP6_VRF_ID)); - } - - @Test - public void testReadRoutingNotDefined() throws Exception { - final RoutingBuilder builder = mock(RoutingBuilder.class); - final Long vrfId = 0L; - when(api.swInterfaceGetTable(any())).thenReturn(future(tableReply(vrfId))); - getCustomizer().readCurrentAttributes(getRoutingId(IF_NAME), builder, ctx); - verifyZeroInteractions(builder); - } - - private SwInterfaceGetTableReply tableReply(final Long vrfId) { - final SwInterfaceGetTableReply reply = new SwInterfaceGetTableReply(); - reply.vrfId = vrfId.intValue(); - return reply; - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceStatisticsCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceStatisticsCustomizerTest.java deleted file mode 100644 index ae280cd8f..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceStatisticsCustomizerTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2019 PANTHEON.tech. - * - * 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; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceStatisticsManager; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceStatisticsManagerImpl; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.stats.dto.InterfaceStatistics; -import io.fd.jvpp.stats.dto.InterfaceStatisticsDetails; -import io.fd.jvpp.stats.dto.InterfaceStatisticsDetailsReplyDump; -import io.fd.jvpp.stats.future.FutureJVppStatsFacade; -import java.util.Optional; -import org.junit.Assert; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.naming.context.rev160513.contexts.naming.context.mappings.MappingBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state._interface.Statistics; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state._interface.StatisticsBuilder; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class InterfaceStatisticsCustomizerTest extends ReaderCustomizerTest<Statistics, StatisticsBuilder> { - - private static final String IFC_CTX_NAME = "ifc-test-stats-instance"; - private static final String IF_NAME = "testIfc"; - private static final int SW_IF_INDEX = 1; - private static final int OUT_ERRORS = 2; - private static final int OUT_MULTI = 3; - private static final int OUT_UNI = 4; - private static final int OUT_BROAD = 5; - private static final int OUT_BYTES = 6; - private static final int IN_ERRORS = 22; - private static final int IN_MULTI = 33; - private static final int IN_UNI = 44; - private static final int IN_BROAD = 55; - private static final int IN_BYTES = 66; - private NamingContext interfaceContext; - private static final InstanceIdentifier<Statistics> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .child(Statistics.class); - @Mock - private FutureJVppStatsFacade jvppStats; - - private InterfaceStatisticsManager statisticsManager; - - public InterfaceStatisticsCustomizerTest() { - super(Statistics.class, InterfaceBuilder.class); - } - - @Override - public void setUp() { - interfaceContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - interfaceContext.addName(1, IF_NAME, ctx.getMappingContext()); - } - - @Override - protected ReaderCustomizer<Statistics, StatisticsBuilder> initCustomizer() { - statisticsManager = new InterfaceStatisticsManagerImpl(); - return new InterfaceStatisticsCustomizer(interfaceContext, jvppStats, statisticsManager); - } - - @Test - public void testReadStatistics() throws Exception { - statisticsManager.enableStatistics(); - when(ctx.getMappingContext().read(any())) - .thenReturn(Optional.of(new MappingBuilder().setName(IF_NAME).setIndex(SW_IF_INDEX).build())); - when(jvppStats.interfaceStatisticsDump(any())).thenReturn(future(getStatistics())); - StatisticsBuilder statBuilder = new StatisticsBuilder(); - getCustomizer().readCurrentAttributes(IID, statBuilder, ctx); - Statistics stat = statBuilder.build(); - int[] expected = new int[]{SW_IF_INDEX, OUT_ERRORS, OUT_MULTI, OUT_UNI, OUT_BROAD, - OUT_BYTES, IN_ERRORS, IN_MULTI, IN_UNI, IN_BROAD, IN_BYTES}; - int[] actual = new int[]{interfaceContext.getIndex(IF_NAME, ctx.getMappingContext()), - stat.getOutErrors().getValue().intValue(), stat.getOutMulticastPkts().getValue().intValue(), - stat.getOutUnicastPkts().getValue().intValue(), stat.getOutBroadcastPkts().getValue().intValue(), - stat.getOutOctets().getValue().intValue(), stat.getInErrors().getValue().intValue(), - stat.getInMulticastPkts().getValue().intValue(), stat.getInUnicastPkts().getValue().intValue(), - stat.getInBroadcastPkts().getValue().intValue(), stat.getInOctets().getValue().intValue()}; - - Assert.assertArrayEquals(expected, actual); - } - - @Test(expected = ReadFailedException.class) - public void testReadStatisticsFailed() throws Exception { - statisticsManager.enableStatistics(); - when(ctx.getMappingContext().read(any())) - .thenReturn(Optional.of(new MappingBuilder().setName(IF_NAME).setIndex(SW_IF_INDEX).build())); - when(jvppStats.interfaceStatisticsDump(any())).thenReturn(future(null)); - StatisticsBuilder statBuilder = new StatisticsBuilder(); - getCustomizer().readCurrentAttributes(IID, statBuilder, ctx); - } - - private InterfaceStatisticsDetailsReplyDump getStatistics() { - InterfaceStatisticsDetailsReplyDump dumpReply = new InterfaceStatisticsDetailsReplyDump(); - dumpReply.interfaceStatisticsDetails = new InterfaceStatisticsDetails(1, 1); - dumpReply.interfaceStatisticsDetails.interfaceStatistics[0] = - new InterfaceStatistics(SW_IF_INDEX, OUT_ERRORS, OUT_MULTI, OUT_UNI, OUT_BROAD, - OUT_BYTES, IN_ERRORS, IN_MULTI, IN_UNI, IN_BROAD, IN_BYTES); - return dumpReply; - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/L2CustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/L2CustomizerTest.java deleted file mode 100644 index 3a074c664..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/L2CustomizerTest.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.BridgeDomainDetails; -import io.fd.jvpp.core.dto.BridgeDomainDetailsReplyDump; -import io.fd.jvpp.core.dto.BridgeDomainDump; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.types.BridgeDomainSwIf; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.L2; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.L2Builder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.l2.state.attributes.Interconnection; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.l2.state.attributes.interconnection.BridgeBasedBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class L2CustomizerTest extends ReaderCustomizerTest<L2, L2Builder> { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String BD_CTX_NAME = "bd-test-instance"; - private NamingContext interfaceContext; - private NamingContext bridgeDomainContext; - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public L2CustomizerTest() { - super(L2.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - public void setUp() { - interfaceContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - bridgeDomainContext = new NamingContext("generatedBDName", BD_CTX_NAME); - } - - @Override - protected ReaderCustomizer<L2, L2Builder> initCustomizer() { - return new L2Customizer(api, interfaceContext, bridgeDomainContext, dumpCacheManager); - } - - private InstanceIdentifier<L2> getL2Id(final String name) { - return InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(name)) - .augmentation( - VppInterfaceStateAugmentation.class).child(L2.class); - } - - private void whenBridgeDomainDumpThenReturn(final List<BridgeDomainDetails> bridgeDomainDetails) { - final BridgeDomainDetailsReplyDump reply = new BridgeDomainDetailsReplyDump(); - reply.bridgeDomainDetails = bridgeDomainDetails; - when(api.bridgeDomainDump(any(BridgeDomainDump.class))).thenReturn(future(reply)); - } - - - private BridgeDomainSwIf generateBdSwIfDetails(final int ifId) { - final BridgeDomainSwIf bdSwIfDetails = new BridgeDomainSwIf(); - bdSwIfDetails.swIfIndex = ifId; - bdSwIfDetails.shg = 1; - return bdSwIfDetails; - } - - private Interconnection generateInterconnection(final String bdName, final Boolean bvi) { - final BridgeBasedBuilder bbBuilder = new BridgeBasedBuilder(); - bbBuilder.setBridgeDomain(bdName); - bbBuilder.setSplitHorizonGroup((short) 1); - if (bvi != null) { - bbBuilder.setBridgedVirtualInterface(bvi); - } else { - bbBuilder.setBridgedVirtualInterface(false); // false is default - } - return bbBuilder.build(); - } - - @Test - public void testReadBvi() throws Exception { - final int ifId = 1; - final int bdId = 1; - final String bdName = "bd001"; - final String ifName = "eth0.sub0"; - defineMapping(mappingContext, ifName, ifId, IFC_CTX_NAME); - defineMapping(mappingContext, bdName, bdId, BD_CTX_NAME); - - final SwInterfaceDetails ifaceDetails = new SwInterfaceDetails(); - ifaceDetails.subId = ifId; - - // BVIinterfaceContext - whenBridgeDomainDumpThenReturn(Collections.singletonList(generateBdDetails(ifId, ifId, bdId))); - - L2Builder builder = mock(L2Builder.class); - getCustomizer().readCurrentAttributes(getL2Id(ifName), builder, ctx); - - verify(builder).setInterconnection(generateInterconnection(bdName, true)); - } - - // split to separate test to avoid using cached value from previous run(cannot mock cache) - @Test - public void testReadNoBvi() throws Exception { - final Map<Integer, SwInterfaceDetails> cachedInterfaceDump = new HashMap<>(); - final int ifId = 1; - final int bdId = 1; - final String bdName = "bd001"; - final String ifName = "eth0.sub0"; - defineMapping(mappingContext, ifName, ifId, IFC_CTX_NAME); - defineMapping(mappingContext, bdName, bdId, BD_CTX_NAME); - - final SwInterfaceDetails ifaceDetails = new SwInterfaceDetails(); - ifaceDetails.subId = ifId; - cachedInterfaceDump.put(ifId, ifaceDetails); - - // Not BVI - whenBridgeDomainDumpThenReturn(Collections - .singletonList(generateBdDetails(ifId, 99 /* Different ifc is marked as BVI in bd details */, bdId))); - - L2Builder builder = mock(L2Builder.class); - getCustomizer().readCurrentAttributes(getL2Id(ifName), builder, ctx); - - verify(builder).setInterconnection(generateInterconnection(bdName, null)); - } - - private BridgeDomainDetails generateBdDetails(final int ifId, final int bviSwIfIndex, int bdId) { - final BridgeDomainDetails bridgeDomainDetails = new BridgeDomainDetails(); - bridgeDomainDetails.bviSwIfIndex = bviSwIfIndex; - bridgeDomainDetails.bdId = bdId; - bridgeDomainDetails.swIfDetails = new BridgeDomainSwIf[]{generateBdSwIfDetails(ifId)}; - return bridgeDomainDetails; - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/RewriteCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/RewriteCustomizerTest.java deleted file mode 100644 index a64064f84..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/RewriteCustomizerTest.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.common.translate.util.TagRewriteOperation; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import java.util.List; -import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.SubinterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319._802dot1q; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.SubInterfaces; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterface; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterfaceKey; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.rewrite.attributes.Rewrite; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.rewrite.attributes.RewriteBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.sub._interface.l2.state.attributes.L2Builder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.tag.rewrite.PushTags; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.ChildOf; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class RewriteCustomizerTest extends ReaderCustomizerTest<Rewrite, RewriteBuilder> { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "local0"; - private static final String VLAN_IF_NAME = "local0.1"; - private static final int VLAN_IF_INDEX = 11; - private static final int VLAN_ID = 1; - - private NamingContext interfacesContext; - - @Captor - private ArgumentCaptor<List<PushTags>> captor; - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public RewriteCustomizerTest() { - super(Rewrite.class, L2Builder.class); - } - - @Override - public void setUp() { - interfacesContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, VLAN_IF_NAME, VLAN_IF_INDEX, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<Rewrite, RewriteBuilder> initCustomizer() { - return new RewriteCustomizer(dumpCacheManager); - } - - private InstanceIdentifier<Rewrite> getVlanTagRewriteId(final String name, final long index) { - final Class<ChildOf<? super SubInterface>> child = (Class) Rewrite.class; - final InstanceIdentifier id = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(name)) - .augmentation( - SubinterfaceStateAugmentation.class).child(SubInterfaces.class) - .child(SubInterface.class, new SubInterfaceKey(index)) - .child(child); - return id; - } - - @Test - public void testRead() throws ReadFailedException { - final SwInterfaceDetails ifaceDetails = new SwInterfaceDetails(); - ifaceDetails.subId = VLAN_ID; - ifaceDetails.interfaceName = VLAN_IF_NAME.getBytes(); - ifaceDetails.vtrOp = TagRewriteOperation.translate_2_to_2.ordinal(); - ifaceDetails.subNumberOfTags = 2; - ifaceDetails.vtrTag1 = 123; - ifaceDetails.vtrTag2 = 321; - ifaceDetails.vtrPushDot1Q = 1; - ifaceDetails.swIfIndex = VLAN_IF_INDEX; - ifaceDetails.supSwIfIndex = 2; - - final RewriteBuilder builder = mock(RewriteBuilder.class); - final InstanceIdentifier<Rewrite> vlanTagRewriteId = getVlanTagRewriteId(IF_NAME, VLAN_ID); - when(dumpCacheManager.getInterfaceDetail(vlanTagRewriteId, ctx, VLAN_IF_NAME)).thenReturn(ifaceDetails); - getCustomizer().readCurrentAttributes(vlanTagRewriteId, builder, ctx); - - verify(builder).setVlanType(_802dot1q.class); - verify(builder).setPopTags((short) 2); - - verify(builder).setPushTags(captor.capture()); - final List<PushTags> tags = captor.getValue(); - assertEquals(ifaceDetails.subNumberOfTags, tags.size()); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceCustomizerTest.java deleted file mode 100644 index e1afd9c99..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceCustomizerTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ListReaderCustomizerTest; -import io.fd.hc2vpp.common.test.util.InterfaceDumpHelper; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import java.util.List; -import java.util.stream.Stream; -import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.SubinterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.SubInterfaces; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.SubInterfacesBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterface; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterfaceBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterfaceKey; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.match.attributes.match.type.VlanTagged; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.sub._interface.base.attributes.Match; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.sub._interface.base.attributes.Tags; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class SubInterfaceCustomizerTest - extends ListReaderCustomizerTest<SubInterface, SubInterfaceKey, SubInterfaceBuilder> implements - InterfaceDumpHelper { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String SUPER_IF_NAME = "local0"; - private static final int SUPER_IF_INDEX = 1; - private static final String VLAN_IF_NAME = "local0.1"; - private static final int VLAN_IF_ID = 1; - private static final int VLAN_IF_INDEX = 11; - - private NamingContext interfacesContext; - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public SubInterfaceCustomizerTest() { - super(SubInterface.class, SubInterfacesBuilder.class); - } - - @Override - public void setUp() { - interfacesContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, SUPER_IF_NAME, SUPER_IF_INDEX, IFC_CTX_NAME); - defineMapping(mappingContext, VLAN_IF_NAME, VLAN_IF_INDEX, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<SubInterface, SubInterfaceBuilder> initCustomizer() { - return new SubInterfaceCustomizer(api, interfacesContext, dumpCacheManager); - } - - private InstanceIdentifier<SubInterface> getSubInterfaceId(final String name, final long id) { - return InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(name)) - .augmentation( - SubinterfaceStateAugmentation.class).child( - SubInterfaces.class).child(SubInterface.class, new SubInterfaceKey(id)); - } - - @Test - public void testRead() throws ReadFailedException { - - final SwInterfaceDetails ifaceDetails = new SwInterfaceDetails(); - ifaceDetails.subId = VLAN_IF_ID; - ifaceDetails.interfaceName = VLAN_IF_NAME.getBytes(); - ifaceDetails.swIfIndex = 2; - ifaceDetails.supSwIfIndex = SUPER_IF_INDEX; - defineMapping(mappingContext, SUPER_IF_NAME, SUPER_IF_INDEX, IFC_CTX_NAME); - defineMapping(mappingContext, VLAN_IF_NAME, VLAN_IF_INDEX, IFC_CTX_NAME); - ifaceDetails.subNumberOfTags = 2; - ifaceDetails.subOuterVlanIdAny = 1; - ifaceDetails.subInnerVlanIdAny = 1; - ifaceDetails.subExactMatch = 1; - - final SubInterfaceBuilder builder = mock(SubInterfaceBuilder.class); - final InstanceIdentifier<SubInterface> subInterfaceId = getSubInterfaceId(SUPER_IF_NAME, VLAN_IF_ID); - - when(dumpCacheManager.getInterfaceDetail(subInterfaceId, ctx, VLAN_IF_NAME)).thenReturn(ifaceDetails); - getCustomizer().readCurrentAttributes(subInterfaceId, builder, ctx); - - verify(builder).setIdentifier((long) VLAN_IF_ID); - - ArgumentCaptor<Tags> tagCaptor = ArgumentCaptor.forClass(Tags.class); - verify(builder).setTags(tagCaptor.capture()); - assertEquals(ifaceDetails.subNumberOfTags, tagCaptor.getValue().getTag().size()); - - ArgumentCaptor<Match> matchCaptor = ArgumentCaptor.forClass(Match.class); - verify(builder).setMatch(matchCaptor.capture()); - final VlanTagged matchType = (VlanTagged) matchCaptor.getValue().getMatchType(); - assertTrue(matchType.getVlanTagged().isMatchExactTags()); - } - - @Test - public void testGetAllIds() throws Exception { - final SwInterfaceDetails iface = new SwInterfaceDetails(); - iface.interfaceName = VLAN_IF_NAME.getBytes(); - iface.swIfIndex = VLAN_IF_INDEX; - iface.subId = VLAN_IF_ID; - iface.supSwIfIndex = SUPER_IF_INDEX; - - final InstanceIdentifier<SubInterface> subInterfaceId = getSubInterfaceId(SUPER_IF_NAME, VLAN_IF_ID); - when(dumpCacheManager.getInterfaces(subInterfaceId, ctx)).thenReturn(Stream.of(iface)); - final List<SubInterfaceKey> allIds = - getCustomizer().getAllIds(subInterfaceId, ctx); - - assertEquals(1, allIds.size()); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceL2CustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceL2CustomizerTest.java deleted file mode 100644 index 59ff8f497..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceL2CustomizerTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.SubinterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.SubInterfaces; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterface; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterfaceBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterfaceKey; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.sub._interface.l2.state.attributes.L2; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.sub._interface.l2.state.attributes.L2Builder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class SubInterfaceL2CustomizerTest extends ReaderCustomizerTest<L2, L2Builder> { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String BD_CTX_NAME = "bd-test-instance"; - private NamingContext interfaceContext; - private NamingContext bridgeDomainContext; - - private static final String IF_NAME = "local0"; - private static final int IF_INDEX = 1; - private static final String SUB_IF_NAME = "local0.1"; - private static final long SUB_IF_ID = 1; - private static final int SUB_IF_INDEX = 11; - private InstanceIdentifier<L2> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(SubinterfaceStateAugmentation.class) - .child(SubInterfaces.class).child(SubInterface.class, new SubInterfaceKey(SUB_IF_ID)) - .child(L2.class); - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public SubInterfaceL2CustomizerTest() { - super(L2.class, SubInterfaceBuilder.class); - } - - @Override - protected void setUp() { - interfaceContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - bridgeDomainContext = new NamingContext("generatedBDName", BD_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_INDEX, IFC_CTX_NAME); - defineMapping(mappingContext, SUB_IF_NAME, SUB_IF_INDEX, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<L2, L2Builder> initCustomizer() { - return new SubInterfaceL2Customizer(api, interfaceContext, bridgeDomainContext, dumpCacheManager); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceRoutingCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceRoutingCustomizerTest.java deleted file mode 100644 index 33d118a26..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/SubInterfaceRoutingCustomizerTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.ByteDataTranslator; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceGetTable; -import io.fd.jvpp.core.dto.SwInterfaceGetTableReply; -import org.junit.Test; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.SubinterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.SubInterfaces; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterface; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterfaceBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.interfaces.state._interface.sub.interfaces.SubInterfaceKey; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.sub._interface.routing.attributes.Routing; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.vlan.rev180319.sub._interface.routing.attributes.RoutingBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class SubInterfaceRoutingCustomizerTest extends ReaderCustomizerTest<Routing, RoutingBuilder> implements - ByteDataTranslator { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "local0"; - private static final int IF_ID = 1; - private static final String SUBIF_NAME = "local0.4"; - private static final int SUBIF_ID = 4; - private static final InstanceIdentifier<Routing> VALID_ID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(SubinterfaceStateAugmentation.class) - .child(SubInterfaces.class) - .child(SubInterface.class, new SubInterfaceKey((long) SUBIF_ID)) - .child(Routing.class); - private static final int IPV4_VRF = 4; - private static final int IPV6_VRF = 6; - private static final int NO_VRF = 0; - - private NamingContext interfacesContext; - - public SubInterfaceRoutingCustomizerTest() { - super(Routing.class, SubInterfaceBuilder.class); - } - - @Override - protected void setUp() throws Exception { - interfacesContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_ID, IFC_CTX_NAME); - defineMapping(mappingContext, SUBIF_NAME, SUBIF_ID, IFC_CTX_NAME); - } - - @Override - protected ReaderCustomizer<Routing, RoutingBuilder> initCustomizer() { - return new SubInterfaceRoutingCustomizer(api, interfacesContext); - } - - @Test - public void testReadAttributesAllDefined() throws ReadFailedException { - when(api.swInterfaceGetTable(request(false, SUBIF_ID))).thenReturn(future(reply(IPV4_VRF))); - when(api.swInterfaceGetTable(request(true, SUBIF_ID))).thenReturn(future(reply(IPV6_VRF))); - final RoutingBuilder routingBuilder = new RoutingBuilder(); - getCustomizer().readCurrentAttributes(VALID_ID, routingBuilder, ctx); - assertEquals(IPV4_VRF, routingBuilder.getIpv4VrfId().getValue().intValue()); - assertEquals(IPV6_VRF, routingBuilder.getIpv6VrfId().getValue().intValue()); - } - - @Test - public void testReadAttributesOneDefined() throws ReadFailedException { - when(api.swInterfaceGetTable(request(false, SUBIF_ID))).thenReturn(future(reply(IPV4_VRF))); - when(api.swInterfaceGetTable(request(true, SUBIF_ID))).thenReturn(future(reply(NO_VRF))); - final RoutingBuilder routingBuilder = new RoutingBuilder(); - getCustomizer().readCurrentAttributes(VALID_ID, routingBuilder, ctx); - assertEquals(IPV4_VRF, routingBuilder.getIpv4VrfId().getValue().intValue()); - assertNull(routingBuilder.getIpv6VrfId()); - } - - @Test - public void testReadAttributesNoDefined() throws ReadFailedException { - when(api.swInterfaceGetTable(any())).thenReturn(future(reply(NO_VRF))); - final RoutingBuilder routingBuilder = new RoutingBuilder(); - getCustomizer().readCurrentAttributes(VALID_ID, routingBuilder, ctx); - assertNull(routingBuilder.getIpv4VrfId()); - assertNull(routingBuilder.getIpv6VrfId()); - } - - private SwInterfaceGetTable request(final boolean ipv6, final int index) { - SwInterfaceGetTable request = new SwInterfaceGetTable(); - request.isIpv6 = booleanToByte(ipv6); - request.swIfIndex = index; - return request; - } - - private SwInterfaceGetTableReply reply(final int vrf) { - SwInterfaceGetTableReply reply = new SwInterfaceGetTableReply(); - reply.vrfId = vrf; - return reply; - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/TapV2CustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/TapV2CustomizerTest.java deleted file mode 100644 index ce5f491d4..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/TapV2CustomizerTest.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies 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; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.test.util.InterfaceDumpHelper; -import io.fd.hc2vpp.common.translate.util.Ipv4Translator; -import io.fd.hc2vpp.common.translate.util.Ipv6Translator; -import io.fd.hc2vpp.common.translate.util.MacTranslator; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.dto.SwInterfaceTapV2Details; -import io.fd.jvpp.core.dto.SwInterfaceTapV2DetailsReplyDump; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.TapV2; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.TapV2Builder; -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.inet.types.rev130715.Ipv6AddressNoZone; -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.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class TapV2CustomizerTest extends ReaderCustomizerTest<TapV2, TapV2Builder> implements InterfaceDumpHelper, - Ipv4Translator, Ipv6Translator, MacTranslator { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "tapV21"; - private static final String DEVICE_NAME = "testTapV2Device"; - private static final int IF_INDEX = 1; - private static final String HOST_BRIDGE = "TestBridge"; - private static final String HOST_IPV4_PREFIX = "192.168.255.100"; - private static final byte HOST_IPV4_PREFIX_LEN = 24; - private static final String HOST_IPV6_PREFIX = "a::100"; - private static final byte HOST_IPV6_PREFIX_LEN = -128; - private static final int HOST_IPV6_PREFIX_LEN_EXP = 128; - private static final int RX_TX_RING_SIZE = 512; - private static final String HOST_MAC = "00:ee:ee:ee:ee:ee"; - private static final String HOST_NAMESPACE = "testHostNS"; - - private static final InstanceIdentifier<TapV2> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(TapV2.class); - private NamingContext interfaceContext; - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public TapV2CustomizerTest() { - super(TapV2.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - protected void setUp() throws Exception { - interfaceContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_INDEX, IFC_CTX_NAME); - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IF_NAME)).thenReturn(ifaceDetails()); - } - - private SwInterfaceDetails ifaceDetails() { - final SwInterfaceDetails details = new SwInterfaceDetails(); - details.swIfIndex = IF_INDEX; - details.interfaceName = IF_NAME.getBytes(); - details.tag = new byte[64]; - return details; - } - - @Override - protected ReaderCustomizer<TapV2, TapV2Builder> initCustomizer() { - return new TapV2Customizer(api, interfaceContext, dumpCacheManager); - } - - @Test - public void testRead() throws ReadFailedException { - final TapV2Builder builder = mock(TapV2Builder.class); - when(api.swInterfaceTapV2Dump(any())).thenReturn(future(tapDump())); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - verify(builder).setHostInterfaceName(IF_NAME); - verify(builder).setDeviceName(DEVICE_NAME); - verify(builder).setHostBridge(HOST_BRIDGE); - verify(builder) - .setHostIpv4Address(new Ipv4Prefix(String.format("%s/%d", HOST_IPV4_PREFIX, HOST_IPV4_PREFIX_LEN))); - verify(builder) - .setHostIpv6Address(new Ipv6Prefix(String.format("%s/%d", HOST_IPV6_PREFIX, HOST_IPV6_PREFIX_LEN_EXP))); - verify(builder).setTxRingSize(RX_TX_RING_SIZE); - verify(builder).setRxRingSize(RX_TX_RING_SIZE); - verify(builder).setHostNamespace(HOST_NAMESPACE); - verify(builder).setHostMac(new PhysAddress(HOST_MAC)); - } - - @Test(expected = ReadFailedException.class) - public void testReadFailed() throws ReadFailedException { - when(api.swInterfaceTapV2Dump(any())).thenReturn(failedFuture()); - getCustomizer().readCurrentAttributes(IID, mock(TapV2Builder.class), ctx); - } - - private SwInterfaceTapV2DetailsReplyDump tapDump() { - final SwInterfaceTapV2DetailsReplyDump reply = new SwInterfaceTapV2DetailsReplyDump(); - final SwInterfaceTapV2Details details = new SwInterfaceTapV2Details(); - details.devName = DEVICE_NAME.getBytes(UTF_8); - details.swIfIndex = IF_INDEX; - details.hostBridge = HOST_BRIDGE.getBytes(UTF_8); - details.hostNamespace = HOST_NAMESPACE.getBytes(UTF_8); - details.hostIfName = IF_NAME.getBytes(UTF_8); - details.hostIp4PrefixLen = HOST_IPV4_PREFIX_LEN; - details.hostIp4Addr = ipv4AddressNoZoneToArray(HOST_IPV4_PREFIX); - details.hostIp6Addr = ipv6AddressNoZoneToArray(new Ipv6AddressNoZone(HOST_IPV6_PREFIX)); - details.hostIp6PrefixLen = HOST_IPV6_PREFIX_LEN; - details.hostMacAddr = parseMac(HOST_MAC); - details.txRingSz = details.rxRingSz = RX_TX_RING_SIZE; - reply.swInterfaceTapV2Details.add(details); - return reply; - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VhostUserCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VhostUserCustomizerTest.java deleted file mode 100644 index 0f849ed42..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VhostUserCustomizerTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.test.util.InterfaceDumpHelper; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.dto.SwInterfaceVhostUserDetails; -import io.fd.jvpp.core.dto.SwInterfaceVhostUserDetailsReplyDump; -import java.math.BigInteger; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VhostUserRole; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.VhostUser; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.VhostUserBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class VhostUserCustomizerTest extends ReaderCustomizerTest<VhostUser, VhostUserBuilder> implements - InterfaceDumpHelper { - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "VirtualEthernet1"; - private static final int IF_INDEX = 1; - private static final InstanceIdentifier<VhostUser> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(VhostUser.class); - - private NamingContext interfaceContext; - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public VhostUserCustomizerTest() { - super(VhostUser.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - protected void setUp() throws Exception { - interfaceContext = new NamingContext("generatedIfaceName", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_INDEX, IFC_CTX_NAME); - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IF_NAME)).thenReturn(ifaceDetails()); - } - - private SwInterfaceDetails ifaceDetails() { - final SwInterfaceDetails details = new SwInterfaceDetails(); - details.swIfIndex = IF_INDEX; - details.interfaceName = IF_NAME.getBytes(); - details.tag = new byte[64]; - return details; - } - - @Override - protected ReaderCustomizer<VhostUser, VhostUserBuilder> initCustomizer() { - return new VhostUserCustomizer(api, interfaceContext, dumpCacheManager); - } - - @Test - public void testRead() throws ReadFailedException { - final VhostUserBuilder builder = mock(VhostUserBuilder.class); - when(api.swInterfaceVhostUserDump(any())).thenReturn(future(vhostDump())); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - verifyVhostBuilder(builder); - } - - @Test(expected = ReadFailedException.class) - public void testReadFailed() throws ReadFailedException { - when(api.swInterfaceVhostUserDump(any())).thenReturn(failedFuture()); - getCustomizer().readCurrentAttributes(IID, mock(VhostUserBuilder.class), ctx); - } - - private SwInterfaceVhostUserDetailsReplyDump vhostDump() { - final SwInterfaceVhostUserDetailsReplyDump reply = new SwInterfaceVhostUserDetailsReplyDump(); - final SwInterfaceVhostUserDetails details = new SwInterfaceVhostUserDetails(); - details.swIfIndex = IF_INDEX; - details.interfaceName = IF_NAME.getBytes(); - details.isServer = 1; - details.features = 2; - details.numRegions = 3; - details.sockFilename = "socketName".getBytes(); - details.virtioNetHdrSz = 4; - details.sockErrno = 5; - reply.swInterfaceVhostUserDetails.add(details); - return reply; - } - - private void verifyVhostBuilder(final VhostUserBuilder builder) { - verify(builder).setRole(VhostUserRole.Server); - verify(builder).setFeatures(BigInteger.valueOf(2)); - verify(builder).setNumMemoryRegions(3L); - verify(builder).setSocket("socketName"); - verify(builder).setVirtioNetHdrSize(4L); - verify(builder).setConnectError("5"); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VxlanCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VxlanCustomizerTest.java deleted file mode 100644 index 80a8975d1..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VxlanCustomizerTest.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import com.google.common.collect.Lists; -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.AddressTranslator; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.VppInvocationException; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.dto.VxlanTunnelDetails; -import io.fd.jvpp.core.dto.VxlanTunnelDetailsReplyDump; -import io.fd.jvpp.core.dto.VxlanTunnelDump; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.L2Input; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.Vxlan; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.VxlanBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class VxlanCustomizerTest extends ReaderCustomizerTest<Vxlan, VxlanBuilder> { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "ifc1"; - private static final int IF_INDEX = 0; - - private NamingContext interfacesContext; - static final InstanceIdentifier<Vxlan> IID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(Vxlan.class); - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public VxlanCustomizerTest() { - super(Vxlan.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - public void setUp() throws VppInvocationException, ReadFailedException { - interfacesContext = new NamingContext("vxlan-tunnel", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_INDEX, IFC_CTX_NAME); - - final SwInterfaceDetails v = new SwInterfaceDetails(); - v.interfaceName = "vxlan-tunnel4".getBytes(); - - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IF_NAME)).thenReturn(v); - doReturn(future(getVxlanTunnelDetailsReplyDump(55))).when(api).vxlanTunnelDump(any(VxlanTunnelDump.class)); - } - - @Test - public void testRead() throws Exception { - final VxlanBuilder builder = getCustomizer().getBuilder(IID); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - - assertEquals(9, builder.getVni().getValue().intValue()); - assertEquals(55, builder.getEncapVrfId().getValue().intValue()); - assertEquals(L2Input.class, builder.getDecapNext()); - - assertNull(builder.getSrc().getIpv6AddressNoZone()); - assertNotNull(builder.getSrc().getIpv4AddressNoZone()); - assertEquals("1.2.3.5", builder.getSrc().getIpv4AddressNoZone().getValue()); - - assertNull(builder.getDst().getIpv6AddressNoZone()); - assertNotNull(builder.getDst().getIpv4AddressNoZone()); - assertEquals("1.2.3.4", builder.getDst().getIpv4AddressNoZone().getValue()); - - verify(api).vxlanTunnelDump(any(VxlanTunnelDump.class)); - } - - @Test - public void testReadVniOverflow() throws Exception { - final long encapVrfId = 4294967295L; - doReturn(future(getVxlanTunnelDetailsReplyDump((int) encapVrfId))).when(api) - .vxlanTunnelDump(any(VxlanTunnelDump.class)); - final VxlanBuilder builder = getCustomizer().getBuilder(IID); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - - assertEquals(encapVrfId, builder.getEncapVrfId().getValue().longValue()); - verify(api).vxlanTunnelDump(any(VxlanTunnelDump.class)); - } - - @Test(expected = IllegalArgumentException.class) - public void testReadVppNameNotCached() throws Exception { - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IF_NAME)) - .thenThrow(new IllegalArgumentException("Detail for interface not found")); - - final VxlanBuilder builder = getCustomizer().getBuilder(IID); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - } - - @Test - public void testReadWrongType() throws Exception { - final SwInterfaceDetails v = new SwInterfaceDetails(); - v.interfaceName = "tap-2".getBytes(); - - when(dumpCacheManager.getInterfaceDetail(IID, ctx, IF_NAME)).thenReturn(v); - - final VxlanBuilder builder = getCustomizer().getBuilder(IID); - getCustomizer().readCurrentAttributes(IID, builder, ctx); - - // Should be ignored - verifyZeroInteractions(api); - } - - @Override - protected ReaderCustomizer<Vxlan, VxlanBuilder> initCustomizer() { - return new VxlanCustomizer(api, interfacesContext, dumpCacheManager); - } - - private static VxlanTunnelDetailsReplyDump getVxlanTunnelDetailsReplyDump(final int encapVrfId) { - final VxlanTunnelDetailsReplyDump replyDump = new VxlanTunnelDetailsReplyDump(); - final VxlanTunnelDetails vxlanTunnelDetails = new VxlanTunnelDetails(); - vxlanTunnelDetails.isIpv6 = 0; - vxlanTunnelDetails.dstAddress = AddressTranslator.INSTANCE.ipv4AddressNoZoneToArray("1.2.3.4"); - vxlanTunnelDetails.srcAddress = AddressTranslator.INSTANCE.ipv4AddressNoZoneToArray("1.2.3.5"); - vxlanTunnelDetails.encapVrfId = encapVrfId; - vxlanTunnelDetails.swIfIndex = 0; - vxlanTunnelDetails.vni = 9; - vxlanTunnelDetails.decapNextIndex = 1; - replyDump.vxlanTunnelDetails = Lists.newArrayList(vxlanTunnelDetails); - return replyDump; - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VxlanGpeCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VxlanGpeCustomizerTest.java deleted file mode 100644 index e5bd6dc34..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/VxlanGpeCustomizerTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2016 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; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.mockito.ArgumentMatchers.matches; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - -import com.google.common.collect.Lists; -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.AddressTranslator; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManager; -import io.fd.honeycomb.translate.read.ReadFailedException; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.VppBaseCallException; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.dto.VxlanGpeTunnelDetails; -import io.fd.jvpp.core.dto.VxlanGpeTunnelDetailsReplyDump; -import io.fd.jvpp.core.dto.VxlanGpeTunnelDump; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.VxlanGpe; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.VxlanGpeBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class VxlanGpeCustomizerTest extends ReaderCustomizerTest<VxlanGpe, VxlanGpeBuilder> - implements AddressTranslator { - - private static final String IFC_CTX_NAME = "ifc-test-instance"; - private static final String IF_NAME = "ifc2"; - private static final int IF_INDEX = 0; - - private NamingContext interfacesContext; - private static final InstanceIdentifier<VxlanGpe> VXLAN_GPE_ID = - InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IF_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(VxlanGpe.class); - - @Mock - private InterfaceCacheDumpManager dumpCacheManager; - - public VxlanGpeCustomizerTest() { - super(VxlanGpe.class, VppInterfaceStateAugmentationBuilder.class); - } - - @Override - public void setUp() throws VppBaseCallException, ReadFailedException { - interfacesContext = new NamingContext("vxlan_gpe_inf", IFC_CTX_NAME); - defineMapping(mappingContext, IF_NAME, IF_INDEX, IFC_CTX_NAME); - - final SwInterfaceDetails v = new SwInterfaceDetails(); - v.interfaceName = "vxlan_gpe_inf2".getBytes(); - - when(dumpCacheManager.getInterfaceDetail(any(), any(), matches(IF_NAME))).thenReturn(v); - - final VxlanGpeTunnelDetailsReplyDump value = new VxlanGpeTunnelDetailsReplyDump(); - final VxlanGpeTunnelDetails vxlanGpeTunnelDetails = new VxlanGpeTunnelDetails(); - vxlanGpeTunnelDetails.isIpv6 = 0; - vxlanGpeTunnelDetails.local = ipv4AddressNoZoneToArray("1.2.3.4"); - vxlanGpeTunnelDetails.remote = ipv4AddressNoZoneToArray("1.2.3.5"); - vxlanGpeTunnelDetails.vni = 9; - vxlanGpeTunnelDetails.protocol = 1; - vxlanGpeTunnelDetails.encapVrfId = 55; - vxlanGpeTunnelDetails.decapVrfId = 66; - vxlanGpeTunnelDetails.swIfIndex = 0; - value.vxlanGpeTunnelDetails = Lists.newArrayList(vxlanGpeTunnelDetails); - doReturn(future(value)).when(api).vxlanGpeTunnelDump(any(VxlanGpeTunnelDump.class)); - } - - @Test - public void testReadCurrentAttributes() throws Exception { - final VxlanGpeBuilder builder = getCustomizer().getBuilder(VXLAN_GPE_ID); - getCustomizer().readCurrentAttributes(VXLAN_GPE_ID, builder, ctx); - - assertNull(builder.getLocal().getIpv6AddressNoZone()); - assertNotNull(builder.getLocal().getIpv4AddressNoZone()); - assertEquals("1.2.3.4", builder.getLocal().getIpv4AddressNoZone().getValue()); - - assertNull(builder.getRemote().getIpv6AddressNoZone()); - assertNotNull(builder.getRemote().getIpv4AddressNoZone()); - assertEquals("1.2.3.5", builder.getRemote().getIpv4AddressNoZone().getValue()); - - assertEquals(9, builder.getVni().getValue().intValue()); - assertEquals(1, builder.getNextProtocol().getIntValue()); - assertEquals(55, builder.getEncapVrfId().intValue()); - assertEquals(66, builder.getDecapVrfId().intValue()); - - verify(api).vxlanGpeTunnelDump(any(VxlanGpeTunnelDump.class)); - } - - @Test(expected = IllegalArgumentException.class) - public void testReadCurrentAttributesVppNameNotCached() throws Exception { - when(dumpCacheManager.getInterfaceDetail(VXLAN_GPE_ID, ctx, IF_NAME)) - .thenThrow(new IllegalArgumentException("Detail for interface not found")); - - final VxlanGpeBuilder builder = getCustomizer().getBuilder(VXLAN_GPE_ID); - getCustomizer().readCurrentAttributes(VXLAN_GPE_ID, builder, ctx); - } - - @Test - public void testReadCurrentAttributesWrongType() throws Exception { - final SwInterfaceDetails v = new SwInterfaceDetails(); - v.interfaceName = "tap-3".getBytes(); - - when(dumpCacheManager.getInterfaceDetail(VXLAN_GPE_ID, ctx, IF_NAME)).thenReturn(v); - - final VxlanGpeBuilder builder = getCustomizer().getBuilder(VXLAN_GPE_ID); - getCustomizer().readCurrentAttributes(VXLAN_GPE_ID, builder, ctx); - verifyZeroInteractions(api); - } - - @Override - protected ReaderCustomizer<VxlanGpe, VxlanGpeBuilder> initCustomizer() { - return new VxlanGpeCustomizer(api, interfacesContext, dumpCacheManager); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/cache/InterfaceCacheDumpManagerImplTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/cache/InterfaceCacheDumpManagerImplTest.java deleted file mode 100644 index e8d265aa7..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/cache/InterfaceCacheDumpManagerImplTest.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * 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.cache; - -import static io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheDumpManagerImpl.BY_NAME_INDEX_KEY; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; -import static org.mockito.MockitoAnnotations.initMocks; - -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.honeycomb.translate.MappingContext; -import io.fd.honeycomb.translate.ModificationCache; -import io.fd.honeycomb.translate.read.ReadContext; -import io.fd.jvpp.core.dto.SwInterfaceDetails; -import io.fd.jvpp.core.dto.SwInterfaceDetailsReplyDump; -import io.fd.jvpp.core.dto.SwInterfaceDump; -import io.fd.jvpp.core.future.FutureJVppCore; -import io.fd.jvpp.core.types.InterfaceIndex; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.stream.Collectors; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -public class InterfaceCacheDumpManagerImplTest implements NamingContextHelper, FutureProducer { - - private static final String IFACE_0 = "iface-0"; - private static final String IFACE_1 = "iface-1"; - private static final String IFACE_2 = "iface-2"; - private static final String IFACE_3 = "iface-3"; - - @Mock - private FutureJVppCore jvpp; - @Mock - private ReadContext ctx; - @Mock - private MappingContext mappingContext; - - private InstanceIdentifier<Interface> identifier; - private InstanceIdentifier<Interface> identifierThree; - private NamingContext namingContext; - private ModificationCache cache; - private InterfaceCacheDumpManagerImpl manager; - - @Before - public void setUp() throws Exception { - initMocks(this); - namingContext = new NamingContext("interface-", "interface-context"); - cache = new ModificationCache(); - manager = new InterfaceCacheDumpManagerImpl(jvpp, namingContext); - when(ctx.getModificationCache()).thenReturn(cache); - when(ctx.getMappingContext()).thenReturn(mappingContext); - identifier = InstanceIdentifier.create(InterfacesState.class) - .child(Interface.class, new InterfaceKey(IFACE_0)); - - identifierThree = InstanceIdentifier.create(InterfacesState.class) - .child(Interface.class, new InterfaceKey(IFACE_3)); - - when(jvpp.swInterfaceDump(fullRequest())).thenReturn(future(fullReply())); - - // this one is not in full dump - when(jvpp.swInterfaceDump(specificRequest(IFACE_3))).thenReturn(future(specificReplyThree())); - defineMapping(mappingContext, IFACE_0, 0, "interface-context"); - defineMapping(mappingContext, IFACE_1, 1, "interface-context"); - defineMapping(mappingContext, IFACE_2, 2, "interface-context"); - defineMapping(mappingContext, IFACE_3, 3, "interface-context"); - } - - @Test - public void getInterfaces() throws Exception { - assertFalse(cache.containsKey(BY_NAME_INDEX_KEY)); - final List<SwInterfaceDetails> interfaces = manager.getInterfaces(identifier, ctx).collect(Collectors.toList()); - assertEquals(3, interfaces.size()); - assertTrue(interfaces.contains(detailZero())); - assertTrue(interfaces.contains(detailOne())); - assertTrue(interfaces.contains(detailTwo())); - - // first request must call jvpp - verify(jvpp, times(1)).swInterfaceDump(fullRequest()); - assertTrue(cache.containsKey(BY_NAME_INDEX_KEY)); - - // then cached value should be returned - final List<SwInterfaceDetails> cachedInterfaces = - manager.getInterfaces(identifier, ctx).collect(Collectors.toList()); - assertEquals(3, cachedInterfaces.size()); - assertTrue(cachedInterfaces.contains(detailZero())); - assertTrue(cachedInterfaces.contains(detailOne())); - assertTrue(cachedInterfaces.contains(detailTwo())); - - //verify that dump wasn't invoked again - verifyNoMoreInteractions(jvpp); - } - - @Test - public void getInterfaceDetailFromCache() throws Exception { - final HashMap<Object, Object> cachedMap = new HashMap<>(); - final SwInterfaceDetails detailZero = detailZero(); - cachedMap.put(IFACE_0, detailZero); - cache.put(BY_NAME_INDEX_KEY, cachedMap); - when(jvpp.swInterfaceDump(specificRequest(IFACE_0))).thenReturn(future(specificReplyZero())); - final SwInterfaceDetails interfaceDetail = manager.getInterfaceDetail(identifier, ctx, IFACE_0); - assertEquals(detailZero, interfaceDetail); - - // must not call jvpp, just get it from cache - verifyZeroInteractions(jvpp); - } - - @Test - public void getInterfaceDetailNotInFullDump() throws Exception { - assertFalse(cache.containsKey(BY_NAME_INDEX_KEY)); - final SwInterfaceDetails specificDetail = manager.getInterfaceDetail(identifierThree, ctx, IFACE_3); - assertEquals(detailThree(), specificDetail); - - verify(jvpp, times(1)).swInterfaceDump(specificRequest(IFACE_3)); - } - - private SwInterfaceDetailsReplyDump fullReply() { - final SwInterfaceDetailsReplyDump reply = new SwInterfaceDetailsReplyDump(); - reply.swInterfaceDetails = Arrays.asList(detailZero(), detailOne(), detailTwo()); - return reply; - } - - private static SwInterfaceDetails detailTwo() { - SwInterfaceDetails detail3 = new SwInterfaceDetails(); - detail3.swIfIndex = 2; - detail3.interfaceName = IFACE_2.getBytes(); - return detail3; - } - - private static SwInterfaceDetails detailOne() { - SwInterfaceDetails detail2 = new SwInterfaceDetails(); - detail2.swIfIndex = 1; - detail2.interfaceName = IFACE_1.getBytes(); - return detail2; - } - - private static SwInterfaceDetails detailThree() { - SwInterfaceDetails detail2 = new SwInterfaceDetails(); - detail2.swIfIndex = 3; - detail2.interfaceName = IFACE_3.getBytes(); - return detail2; - } - - private static SwInterfaceDetails detailZero() { - SwInterfaceDetails detail1 = new SwInterfaceDetails(); - detail1.swIfIndex = 0; - detail1.interfaceName = IFACE_0.getBytes(); - return detail1; - } - - private SwInterfaceDetailsReplyDump specificReplyThree() { - final SwInterfaceDetailsReplyDump reply = new SwInterfaceDetailsReplyDump(); - reply.swInterfaceDetails = Arrays.asList(detailThree()); - return reply; - } - - private SwInterfaceDetailsReplyDump specificReplyZero() { - final SwInterfaceDetailsReplyDump reply = new SwInterfaceDetailsReplyDump(); - reply.swInterfaceDetails = Arrays.asList(detailZero()); - return reply; - } - - private static SwInterfaceDump specificRequest(final String ifaceName) { - final SwInterfaceDump specificRequest = new SwInterfaceDump(); - specificRequest.swIfIndex = new InterfaceIndex(); - specificRequest.swIfIndex.interfaceindex =~0; - specificRequest.nameFilterValid = 1; - specificRequest.nameFilter = ifaceName.getBytes(); - return specificRequest; - } - - private static SwInterfaceDump fullRequest() { - final SwInterfaceDump fullRequest = new SwInterfaceDump(); - fullRequest.swIfIndex = new InterfaceIndex(); - fullRequest.swIfIndex.interfaceindex = ~0; - fullRequest.nameFilterValid = 0; - fullRequest.nameFilter = "".getBytes(); - return fullRequest; - } -}
\ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/pbb/PbbRewriteStateCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/pbb/PbbRewriteStateCustomizerTest.java deleted file mode 100644 index 07ace6b6a..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/pbb/PbbRewriteStateCustomizerTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2016 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.pbb; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.pbb.rev161214.PbbRewriteStateInterfaceAugmentationBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.pbb.rev161214.interfaces.state._interface.PbbRewriteState; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.pbb.rev161214.interfaces.state._interface.PbbRewriteStateBuilder; - -public class PbbRewriteStateCustomizerTest extends ReaderCustomizerTest<PbbRewriteState, PbbRewriteStateBuilder> { - - public PbbRewriteStateCustomizerTest() { - super(PbbRewriteState.class, PbbRewriteStateInterfaceAugmentationBuilder.class); - } - - @Override - protected ReaderCustomizer<PbbRewriteState, PbbRewriteStateBuilder> initCustomizer() { - return new PbbRewriteStateCustomizer(api); - } -} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/span/MirroredInterfacesCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/span/MirroredInterfacesCustomizerTest.java deleted file mode 100644 index c13775c75..000000000 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/span/MirroredInterfacesCustomizerTest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2016 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.span; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.hasSize; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import io.fd.hc2vpp.common.test.read.ReaderCustomizerTest; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.honeycomb.translate.spi.read.ReaderCustomizer; -import io.fd.jvpp.core.dto.SwInterfaceSpanDetails; -import io.fd.jvpp.core.dto.SwInterfaceSpanDetailsReplyDump; -import java.util.Arrays; -import org.junit.Test; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.SpanState; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.VppInterfaceStateAugmentation; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.Span; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.interfaces.state._interface.SpanBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.span.state.attributes.MirroredInterfaces; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.span.state.attributes.MirroredInterfacesBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.span.state.attributes.mirrored.interfaces.MirroredInterface; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.span.state.attributes.mirrored.interfaces.MirroredInterfaceBuilder; -import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190502.span.state.attributes.mirrored.interfaces.MirroredInterfaceKey; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.InterfacesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.Interface; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220.interfaces.state.InterfaceKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - - -public class MirroredInterfacesCustomizerTest - extends ReaderCustomizerTest<MirroredInterfaces, MirroredInterfacesBuilder> { - - private static final String IFACE_NAME = "iface"; - - private static final String SRC_IFACE_NAME_1 = "src-one"; - private static final String SRC_IFACE_NAME_2 = "src-two"; - private static final String SRC_IFACE_NAME_3 = "src-three"; - - private static final int IFACE_INDEX = 3; - - private NamingContext interfaceContext; - private InstanceIdentifier<MirroredInterfaces> validId; - private MirroredInterface validData; - - public MirroredInterfacesCustomizerTest() { - super(MirroredInterfaces.class, SpanBuilder.class); - } - - @Override - protected void setUp() throws Exception { - interfaceContext = new NamingContext("iface", "iface-context"); - defineMapping(mappingContext, IFACE_NAME, IFACE_INDEX, "iface-context"); - defineMapping(mappingContext, SRC_IFACE_NAME_1, 1, "iface-context"); - defineMapping(mappingContext, SRC_IFACE_NAME_2, 2, "iface-context"); - defineMapping(mappingContext, SRC_IFACE_NAME_3, 3, "iface-context"); - - validId = InstanceIdentifier.create(InterfacesState.class).child(Interface.class, new InterfaceKey(IFACE_NAME)) - .augmentation(VppInterfaceStateAugmentation.class).child(Span.class) - .child(MirroredInterfaces.class); - - SwInterfaceSpanDetailsReplyDump dump = new SwInterfaceSpanDetailsReplyDump(); - SwInterfaceSpanDetails detail1 = new SwInterfaceSpanDetails(); - - detail1.swIfIndexTo = IFACE_INDEX; - detail1.swIfIndexFrom = 1; - detail1.state = 1; - - SwInterfaceSpanDetails detail2 = new SwInterfaceSpanDetails(); - - detail2.swIfIndexTo = IFACE_INDEX; - detail2.swIfIndexFrom = 2; - detail2.state = 3; - - SwInterfaceSpanDetails detail3 = new SwInterfaceSpanDetails(); - - detail3.swIfIndexTo = IFACE_INDEX; - detail3.swIfIndexFrom = 3; - detail3.state = 0; - - dump.swInterfaceSpanDetails = Arrays.asList(detail1, detail2, detail3); - - when(api.swInterfaceSpanDump(any())).thenReturn(future(dump)); - } - - @Test - public void readCurrentAttributes() throws Exception { - MirroredInterfacesBuilder builder = new MirroredInterfacesBuilder(); - getCustomizer().readCurrentAttributes(validId, builder, ctx); - - final MirroredInterfaces data = builder.build(); - // 1,2 should be returned,0 should be filtered out because of disabled state - - assertThat(data.getMirroredInterface(), hasSize(2)); - assertThat(data.getMirroredInterface(), containsInAnyOrder( - mirroredInterface(SRC_IFACE_NAME_1, SpanState.Receive), - mirroredInterface(SRC_IFACE_NAME_2, SpanState.Both))); - } - - private MirroredInterface mirroredInterface(final String ifaceName, final SpanState state) { - return new MirroredInterfaceBuilder() - .setIfaceRef(ifaceName) - .withKey(new MirroredInterfaceKey(ifaceName)) - .setState(state) - .build(); - } - - @Override - protected ReaderCustomizer<MirroredInterfaces, MirroredInterfacesBuilder> initCustomizer() { - return new InterfaceMirroredInterfacesCustomizer(api, interfaceContext); - } -} |