summaryrefslogtreecommitdiffstats
path: root/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces
diff options
context:
space:
mode:
authorMaros Marsalek <mmarsale@cisco.com>2016-07-29 16:27:12 +0200
committerMaros Marsalek <mmarsale@cisco.com>2016-07-29 16:32:17 +0200
commite3c31cee916480b2d9d169c1f5afb1c42efaabe1 (patch)
treec88b0ca3e7296dd7e68628db6d5f33ffd1e1b55e /v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces
parent0578156b721fa01c8c645b8f9625ecebdb6449e4 (diff)
HONEYCOMB-130: Rename infra packages(remove vpp/v3po)
Change-Id: Ic5b90e397e3743623d01b206bc60bc5c7df6b981 Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
Diffstat (limited to 'v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces')
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/AclCustomizerTest.java221
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/InterfaceTypeTestUtils.java47
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/RewriteCustomizerTest.java245
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/SubInterfaceCustomizerTest.java319
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/TapCustomizerTest.java157
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VhostUserCustomizerTest.java290
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanCustomizerTest.java253
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizerTest.java259
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4AddressCustomizerTest.java292
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4NeighbourCustomizerTest.java147
10 files changed, 0 insertions, 2230 deletions
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/AclCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/AclCustomizerTest.java
deleted file mode 100644
index f08ffd46f..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/AclCustomizerTest.java
+++ /dev/null
@@ -1,221 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMapping;
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMappingIid;
-import static junit.framework.TestCase.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.verify;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.Lists;
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.v3po.test.TestHelperUtils;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.Mappings;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.MappingsBuilder;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.Mapping;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.MappingKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.acl.base.attributes.L2Acl;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.acl.base.attributes.L2AclBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.Acl;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.AclBuilder;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-import org.openvpp.jvpp.VppBaseCallException;
-import org.openvpp.jvpp.dto.InputAclSetInterface;
-import org.openvpp.jvpp.dto.InputAclSetInterfaceReply;
-import org.openvpp.jvpp.dto.L2InterfaceVlanTagRewriteReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class AclCustomizerTest {
-
- @Mock
- private FutureJVpp api;
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
-
- private NamingContext interfaceContext;
- private NamingContext classifyTableContext;
- private AclCustomizer customizer;
-
- private static final String IFC_TEST_INSTANCE = "ifc-test-instance";
- private static final String CT_TEST_INSTANCE = "ct-test-instance";
- private static final String IF_NAME = "local0";
- private static final int IF_INDEX = 1;
-
- private static final int ACL_TABLE_INDEX = 0;
- private static final String ACL_TABLE_NAME = "table0";
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
- interfaceContext = new NamingContext("generatedInterfaceName", IFC_TEST_INSTANCE);
- classifyTableContext = new NamingContext("generatedClassifyTable", CT_TEST_INSTANCE);
- doReturn(mappingContext).when(writeContext).getMappingContext();
- customizer = new AclCustomizer(api, interfaceContext, classifyTableContext);
-
- final KeyedInstanceIdentifier<Mapping, MappingKey> ifcMappingKey = getMappingIid(IF_NAME, IFC_TEST_INSTANCE);
- final Optional<Mapping> ifcMapping = getMapping(IF_NAME, IF_INDEX);
- doReturn(ifcMapping).when(mappingContext).read(ifcMappingKey);
-
- final KeyedInstanceIdentifier<Mapping, MappingKey> ctMappingKey =
- getMappingIid(ACL_TABLE_NAME, CT_TEST_INSTANCE);
- final Optional<Mapping> ctMapping = getMapping(ACL_TABLE_NAME, ACL_TABLE_INDEX);
- doReturn(ctMapping).when(mappingContext).read(ctMappingKey);
-
- final List<Mapping> allCtMappings = Lists.newArrayList(ctMapping.get());
- final Mappings allCtMappingsBaObject = new MappingsBuilder().setMapping(allCtMappings).build();
- doReturn(Optional.of(allCtMappingsBaObject)).when(mappingContext)
- .read(ctMappingKey.firstIdentifierOf(Mappings.class));
- }
-
-
- private InstanceIdentifier<Acl> getAclId(final String name) {
- return InstanceIdentifier.create(Interfaces.class).child(Interface.class, new InterfaceKey(name)).augmentation(
- VppInterfaceAugmentation.class).child(Acl.class);
- }
-
- private Acl generateAcl(final String tableName) {
- final AclBuilder builder = new AclBuilder();
- final L2Acl l2Acl = new L2AclBuilder().setClassifyTable(tableName).build();
- builder.setL2Acl(l2Acl);
- return builder.build();
- }
-
- private void whenInputAclSetInterfaceThenSuccess() throws ExecutionException, InterruptedException {
- final CompletableFuture<InputAclSetInterfaceReply> replyFuture = new CompletableFuture<>();
- final InputAclSetInterfaceReply reply = new InputAclSetInterfaceReply();
- replyFuture.complete(reply);
- doReturn(replyFuture).when(api).inputAclSetInterface(any(InputAclSetInterface.class));
- }
-
- private void whenInputAclSetInterfaceThenFailure() throws ExecutionException, InterruptedException {
- doReturn(TestHelperUtils.<L2InterfaceVlanTagRewriteReply>createFutureException()).when(api)
- .inputAclSetInterface(any(InputAclSetInterface.class));
- }
-
- private void verifyInputAclSetInterfaceWasInvoked(final InputAclSetInterface expected) {
- final ArgumentCaptor<InputAclSetInterface> argumentCaptor = ArgumentCaptor.forClass(InputAclSetInterface.class);
- verify(api).inputAclSetInterface(argumentCaptor.capture());
- final InputAclSetInterface actual = argumentCaptor.getValue();
- assertEquals(expected.swIfIndex, actual.swIfIndex);
- assertEquals(expected.l2TableIndex, actual.l2TableIndex);
- assertEquals(expected.ip4TableIndex, actual.ip4TableIndex);
- assertEquals(expected.ip6TableIndex, actual.ip6TableIndex);
- assertEquals(expected.isAdd, actual.isAdd);
- }
-
- private void verifyInputAclSetInterfaceDisableWasInvoked(final InputAclSetInterface expected) {
- final ArgumentCaptor<InputAclSetInterface> argumentCaptor = ArgumentCaptor.forClass(InputAclSetInterface.class);
- verify(api).inputAclSetInterface(argumentCaptor.capture());
- final InputAclSetInterface actual = argumentCaptor.getValue();
- assertEquals(expected.swIfIndex, actual.swIfIndex);
- assertEquals(expected.l2TableIndex, actual.l2TableIndex);
- assertEquals(0, actual.isAdd);
- }
-
- private static InputAclSetInterface generateInputAclSetInterface(final byte isAdd, final int ifIndex,
- final int l2TableIndex) {
- final InputAclSetInterface request = new InputAclSetInterface();
- request.isAdd = isAdd;
- request.l2TableIndex = l2TableIndex;
- request.ip4TableIndex = ~0;
- request.ip6TableIndex = ~0;
- request.swIfIndex = ifIndex;
- return request;
- }
-
- @Test
- public void testCreate() throws Exception {
- final Acl acl = generateAcl(ACL_TABLE_NAME);
- final InstanceIdentifier<Acl> id = getAclId(IF_NAME);
-
- whenInputAclSetInterfaceThenSuccess();
-
- customizer.writeCurrentAttributes(id, acl, writeContext);
-
- verifyInputAclSetInterfaceWasInvoked(generateInputAclSetInterface((byte) 1, IF_INDEX, ACL_TABLE_INDEX));
- }
-
- @Test
- public void testCreateFailed() throws Exception {
- final Acl acl = generateAcl(ACL_TABLE_NAME);
- final InstanceIdentifier<Acl> id = getAclId(IF_NAME);
-
- whenInputAclSetInterfaceThenFailure();
-
- try {
- customizer.writeCurrentAttributes(id, acl, writeContext);
- } catch (WriteFailedException.CreateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyInputAclSetInterfaceWasInvoked(generateInputAclSetInterface((byte) 1, IF_INDEX, ACL_TABLE_INDEX));
- return;
- }
- fail("WriteFailedException.CreateFailedException was expected");
- }
-
- @Test
- public void testDelete() throws Exception {
- final Acl acl = generateAcl(ACL_TABLE_NAME);
- final InstanceIdentifier<Acl> id = getAclId(IF_NAME);
-
- whenInputAclSetInterfaceThenSuccess();
-
- customizer.deleteCurrentAttributes(id, acl, writeContext);
-
- verifyInputAclSetInterfaceDisableWasInvoked(generateInputAclSetInterface((byte) 0, IF_INDEX, ACL_TABLE_INDEX));
- }
-
- @Test
- public void testDeleteFailed() throws Exception {
- final Acl acl = generateAcl(ACL_TABLE_NAME);
- final InstanceIdentifier<Acl> id = getAclId(IF_NAME);
-
- whenInputAclSetInterfaceThenFailure();
-
- try {
- customizer.deleteCurrentAttributes(id, acl, writeContext);
- } catch (WriteFailedException.DeleteFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyInputAclSetInterfaceDisableWasInvoked(
- generateInputAclSetInterface((byte) 0, IF_INDEX, ACL_TABLE_INDEX));
- return;
- }
- fail("WriteFailedException.DeleteFailedException was expected");
- }
-} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/InterfaceTypeTestUtils.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/InterfaceTypeTestUtils.java
deleted file mode 100644
index fbb47b5d4..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/InterfaceTypeTestUtils.java
+++ /dev/null
@@ -1,47 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static org.mockito.Mockito.doReturn;
-
-import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.translate.ModificationCache;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import org.mockito.Matchers;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.Contexts;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.NamingContextKey;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.Mappings;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.Mapping;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.MappingBuilder;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.MappingKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-
-final class InterfaceTypeTestUtils {
-
- private InterfaceTypeTestUtils() {}
-
- static void setupWriteContext(final WriteContext writeContext, final Class<? extends InterfaceType> ifcType) {
- doReturn(new ModificationCache()).when(writeContext).getModificationCache();
- doReturn(Optional.of(new InterfaceBuilder()
- .setType(ifcType)
- .build())).when(writeContext).readAfter(Matchers.any(InstanceIdentifier.class));
- }
-
-}
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/RewriteCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/RewriteCustomizerTest.java
deleted file mode 100644
index 45eaf9ec9..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/RewriteCustomizerTest.java
+++ /dev/null
@@ -1,245 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMapping;
-import static junit.framework.TestCase.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.verify;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.v3po.test.TestHelperUtils;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.v3po.util.TagRewriteOperation;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.Mapping;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubinterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527._802dot1q;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.SubInterfaces;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterface;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.l2.Rewrite;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.l2.RewriteBuilder;
-import org.opendaylight.yangtools.yang.binding.ChildOf;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.VppBaseCallException;
-import org.openvpp.jvpp.VppInvocationException;
-import org.openvpp.jvpp.dto.L2InterfaceVlanTagRewrite;
-import org.openvpp.jvpp.dto.L2InterfaceVlanTagRewriteReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class RewriteCustomizerTest {
-
- @Mock
- private FutureJVpp api;
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
-
- private NamingContext namingContext;
- private RewriteCustomizer customizer;
-
- public static final String VLAN_IF_NAME = "local0.1";
- public static final int VLAN_IF_ID = 1;
- public static final int VLAN_IF_INDEX = 11;
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
- namingContext = new NamingContext("generatedSubInterfaceName", "test-instance");
- doReturn(mappingContext).when(writeContext).getMappingContext();
- customizer = new RewriteCustomizer(api, namingContext);
-
- final Optional<Mapping> ifcMapping = getMapping(VLAN_IF_NAME, VLAN_IF_INDEX);
- doReturn(ifcMapping).when(mappingContext).read(any());
- }
-
- private InstanceIdentifier<Rewrite> getVlanTagRewriteId(final String name, final long index) {
- final Class<ChildOf<? super SubInterface>> child = (Class)Rewrite.class;
- final InstanceIdentifier id =
- InstanceIdentifier.create(Interfaces.class).child(Interface.class, new InterfaceKey(name)).augmentation(
- SubinterfaceAugmentation.class).child(SubInterfaces.class)
- .child(SubInterface.class, new SubInterfaceKey(index))
- .child(child);
- return id;
- }
-
- private Rewrite generateRewrite(final TagRewriteOperation op) {
- final RewriteBuilder builder = new RewriteBuilder();
- builder.setPopTags((short) op.getPopTags());
- builder.setVlanType(_802dot1q.class);
- return builder.build();
- }
-
- private L2InterfaceVlanTagRewrite generateL2InterfaceVlanTagRewrite(final int swIfIndex,
- final TagRewriteOperation op) {
- final L2InterfaceVlanTagRewrite request = new L2InterfaceVlanTagRewrite();
- request.swIfIndex = swIfIndex;
- request.vtrOp = op.ordinal();
- request.pushDot1Q = 1;
- return request;
- }
-
- /**
- * Positive response
- */
- private void whenL2InterfaceVlanTagRewriteThenSuccess()
- throws ExecutionException, InterruptedException, VppInvocationException {
- final CompletableFuture<L2InterfaceVlanTagRewriteReply> replyFuture = new CompletableFuture<>();
- final L2InterfaceVlanTagRewriteReply reply = new L2InterfaceVlanTagRewriteReply();
- replyFuture.complete(reply);
- doReturn(replyFuture).when(api).l2InterfaceVlanTagRewrite(any(L2InterfaceVlanTagRewrite.class));
- }
-
- /**
- * Failure response send
- */
- private void whenL2InterfaceVlanTagRewriteThenFailure()
- throws ExecutionException, InterruptedException, VppInvocationException {
- doReturn(TestHelperUtils.<L2InterfaceVlanTagRewriteReply>createFutureException()).when(api)
- .l2InterfaceVlanTagRewrite(any(L2InterfaceVlanTagRewrite.class));
- }
-
- private void verifyL2InterfaceVlanTagRewriteWasInvoked(final L2InterfaceVlanTagRewrite expected)
- throws VppInvocationException {
- ArgumentCaptor<L2InterfaceVlanTagRewrite> argumentCaptor =
- ArgumentCaptor.forClass(L2InterfaceVlanTagRewrite.class);
- verify(api).l2InterfaceVlanTagRewrite(argumentCaptor.capture());
- final L2InterfaceVlanTagRewrite actual = argumentCaptor.getValue();
- assertEquals(expected.swIfIndex, actual.swIfIndex);
- assertEquals(expected.vtrOp, actual.vtrOp);
- assertEquals(expected.pushDot1Q, actual.pushDot1Q);
- assertEquals(expected.tag1, actual.tag1);
- assertEquals(expected.tag2, actual.tag2);
- }
-
- private void verifyL2InterfaceVlanTagRewriteDeleteWasInvoked() throws VppInvocationException {
- final L2InterfaceVlanTagRewrite request = new L2InterfaceVlanTagRewrite();
- request.swIfIndex = VLAN_IF_INDEX;
- verifyL2InterfaceVlanTagRewriteWasInvoked(request);
- }
-
- @Test
- public void testCreate() throws Exception {
- final TagRewriteOperation op = TagRewriteOperation.pop_2;
- final Rewrite vlanTagRewrite = generateRewrite(op);
- final InstanceIdentifier<Rewrite> id = getVlanTagRewriteId(VLAN_IF_NAME, VLAN_IF_ID);
-
- whenL2InterfaceVlanTagRewriteThenSuccess();
-
- customizer.writeCurrentAttributes(id, vlanTagRewrite, writeContext);
-
- verifyL2InterfaceVlanTagRewriteWasInvoked(generateL2InterfaceVlanTagRewrite(VLAN_IF_INDEX, op));
- }
-
- @Test
- public void testCreateFailed() throws Exception {
- final TagRewriteOperation op = TagRewriteOperation.pop_2;
- final Rewrite vlanTagRewrite = generateRewrite(op);
- final String subIfaceName = "local0.11";
- final int subifIndex = 1;
- final InstanceIdentifier<Rewrite> id = getVlanTagRewriteId(subIfaceName, subifIndex);
-
- whenL2InterfaceVlanTagRewriteThenFailure();
-
- try {
- customizer.writeCurrentAttributes(id, vlanTagRewrite, writeContext);
- } catch (WriteFailedException.CreateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyL2InterfaceVlanTagRewriteWasInvoked(generateL2InterfaceVlanTagRewrite(VLAN_IF_INDEX, op));
- return;
- }
- fail("WriteFailedException.CreateFailedException was expected");
- }
-
- @Test
- public void testUpdate() throws Exception {
- final Rewrite before = generateRewrite(TagRewriteOperation.pop_2);
- final Rewrite after = generateRewrite(TagRewriteOperation.pop_1);
- final InstanceIdentifier<Rewrite> id = getVlanTagRewriteId(VLAN_IF_NAME, VLAN_IF_ID);
-
- whenL2InterfaceVlanTagRewriteThenSuccess();
-
- customizer.updateCurrentAttributes(id, before, after, writeContext);
-
- verifyL2InterfaceVlanTagRewriteWasInvoked(
- generateL2InterfaceVlanTagRewrite(VLAN_IF_INDEX, TagRewriteOperation.pop_1));
- }
-
- @Test
- public void testUpdateFailed() throws Exception {
- final Rewrite before = generateRewrite(TagRewriteOperation.pop_2);
- final Rewrite after = generateRewrite(TagRewriteOperation.pop_1);
- final InstanceIdentifier<Rewrite> id = getVlanTagRewriteId(VLAN_IF_NAME, VLAN_IF_ID);
-
- whenL2InterfaceVlanTagRewriteThenFailure();
-
- try {
- customizer.updateCurrentAttributes(id, before, after, writeContext);
- } catch (WriteFailedException.UpdateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyL2InterfaceVlanTagRewriteWasInvoked(generateL2InterfaceVlanTagRewrite(VLAN_IF_INDEX,
- TagRewriteOperation.pop_1));
- return;
- }
- fail("WriteFailedException.UpdateFailedException was expected");
- }
-
- @Test
- public void testDelete() throws Exception {
- final InstanceIdentifier<Rewrite> id = getVlanTagRewriteId(VLAN_IF_NAME, VLAN_IF_ID);
-
- whenL2InterfaceVlanTagRewriteThenSuccess();
-
- customizer.deleteCurrentAttributes(id, null, writeContext);
-
- verifyL2InterfaceVlanTagRewriteDeleteWasInvoked();
- }
-
- @Test
- public void testDeleteFailed() throws Exception {
- final InstanceIdentifier<Rewrite> id = getVlanTagRewriteId(VLAN_IF_NAME, VLAN_IF_ID);
-
- whenL2InterfaceVlanTagRewriteThenFailure();
-
- try {
- customizer.deleteCurrentAttributes(id, null, writeContext);
- } catch (WriteFailedException.DeleteFailedException e) {
- Assert.assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyL2InterfaceVlanTagRewriteDeleteWasInvoked();
- return;
- }
- fail("WriteFailedException.DeleteFailedException was expected");
- }
-} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/SubInterfaceCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/SubInterfaceCustomizerTest.java
deleted file mode 100644
index 3e15acb0c..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/SubInterfaceCustomizerTest.java
+++ /dev/null
@@ -1,319 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMapping;
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMappingIid;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.v3po.test.TestHelperUtils;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.Mapping;
-import org.opendaylight.yang.gen.v1.urn.ieee.params.xml.ns.yang.dot1q.types.rev150626.CVlan;
-import org.opendaylight.yang.gen.v1.urn.ieee.params.xml.ns.yang.dot1q.types.rev150626.Dot1qTagVlanType;
-import org.opendaylight.yang.gen.v1.urn.ieee.params.xml.ns.yang.dot1q.types.rev150626.Dot1qVlanId;
-import org.opendaylight.yang.gen.v1.urn.ieee.params.xml.ns.yang.dot1q.types.rev150626.SVlan;
-import org.opendaylight.yang.gen.v1.urn.ieee.params.xml.ns.yang.dot1q.types.rev150626.dot1q.tag.or.any.Dot1qTag;
-import org.opendaylight.yang.gen.v1.urn.ieee.params.xml.ns.yang.dot1q.types.rev150626.dot1q.tag.or.any.Dot1qTagBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.SubinterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527._802dot1ad;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.SubInterfaces;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterface;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterfaceBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.interfaces._interface.sub.interfaces.SubInterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.match.attributes.match.type.vlan.tagged.VlanTaggedBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.Match;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.MatchBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.TagsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.tags.Tag;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.tags.TagBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.sub._interface.base.attributes.tags.TagKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.VppBaseCallException;
-import org.openvpp.jvpp.dto.CreateSubif;
-import org.openvpp.jvpp.dto.CreateSubifReply;
-import org.openvpp.jvpp.dto.SwInterfaceSetFlags;
-import org.openvpp.jvpp.dto.SwInterfaceSetFlagsReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class SubInterfaceCustomizerTest {
-
- @Mock
- private FutureJVpp api;
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
-
- private NamingContext namingContext;
- private SubInterfaceCustomizer customizer;
-
- public static final String SUPER_IF_NAME = "local0";
- public static final int SUPER_IF_ID = 1;
- private static final String SUB_IFACE_NAME = "local0.11";
- private static final int SUBIF_INDEX = 11;
-
- private static final short STAG_ID = 100;
- private static final short CTAG_ID = 200;
- private static final short CTAG_ANY_ID = 0; // only the *IdAny flag is set
-
- private final Tag STAG_100;
- private final Tag CTAG_200;
- private final Tag CTAG_ANY;
-
- public SubInterfaceCustomizerTest() {
- STAG_100 = generateTag((short) 0, SVlan.class, new Dot1qTag.VlanId(new Dot1qVlanId((int) STAG_ID)));
- CTAG_200 = generateTag((short) 1, CVlan.class, new Dot1qTag.VlanId(new Dot1qVlanId(200)));
- CTAG_ANY = generateTag((short) 1, CVlan.class, new Dot1qTag.VlanId(Dot1qTag.VlanId.Enumeration.Any));
- }
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
- namingContext = new NamingContext("generatedSubInterfaceName", "test-instance");
- doReturn(mappingContext).when(writeContext).getMappingContext();
- // TODO create base class for tests using vppApi
- customizer = new SubInterfaceCustomizer(api, namingContext);
- doReturn(getMapping(SUPER_IF_NAME, SUPER_IF_ID)).when(mappingContext)
- .read(getMappingIid(SUPER_IF_NAME, "test-instance"));
- }
-
- private SubInterface generateSubInterface(final boolean enabled, final List<Tag> tagList) {
- SubInterfaceBuilder builder = new SubInterfaceBuilder();
- builder.setVlanType(_802dot1ad.class);
- builder.setIdentifier(11L);
- final TagsBuilder tags = new TagsBuilder();
-
- tags.setTag(tagList);
-
- builder.setTags(tags.build());
-
- builder.setMatch(generateMatch());
- builder.setEnabled(enabled);
- return builder.build();
- }
-
- private static Tag generateTag(final short index, final Class<? extends Dot1qTagVlanType> tagType,
- final Dot1qTag.VlanId vlanId) {
- TagBuilder tag = new TagBuilder();
- tag.setIndex(index);
- tag.setKey(new TagKey(index));
- final Dot1qTagBuilder dtag = new Dot1qTagBuilder();
- dtag.setTagType(tagType);
- dtag.setVlanId(vlanId);
- tag.setDot1qTag(dtag.build());
- return tag.build();
- }
-
- private static Match generateMatch() {
- final MatchBuilder match = new MatchBuilder();
- final VlanTaggedBuilder tagged = new VlanTaggedBuilder();
- tagged.setMatchExactTags(true);
- match.setMatchType(
- new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev150527.match.attributes.match.type.VlanTaggedBuilder()
- .setVlanTagged(tagged.build()).build());
- return match.build();
- }
-
- private CreateSubif generateSubInterfaceRequest(final int superIfId, final short innerVlanId,
- final boolean isInnerAny) {
- CreateSubif request = new CreateSubif();
- request.subId = 11;
- request.swIfIndex = superIfId;
- request.twoTags = 1;
- request.innerVlanId = innerVlanId;
- request.innerVlanIdAny = (byte) (isInnerAny
- ? 1
- : 0);
- request.dot1Ad = 1;
- request.outerVlanId = STAG_ID;
- return request;
- }
-
- private SwInterfaceSetFlags generateSwInterfaceEnableRequest(final int swIfIndex) {
- SwInterfaceSetFlags request = new SwInterfaceSetFlags();
- request.swIfIndex = swIfIndex;
- request.adminUpDown = 1;
- return request;
- }
-
- private InstanceIdentifier<SubInterface> getSubInterfaceId(final String name, final long index) {
- return InstanceIdentifier.create(Interfaces.class).child(Interface.class, new InterfaceKey(name)).augmentation(
- SubinterfaceAugmentation.class).child(SubInterfaces.class)
- .child(SubInterface.class, new SubInterfaceKey(index));
- }
-
- private void whenCreateSubifThenSuccess() throws ExecutionException, InterruptedException, VppBaseCallException {
- final CompletableFuture<CreateSubifReply> replyFuture = new CompletableFuture<>();
- final CreateSubifReply reply = new CreateSubifReply();
- replyFuture.complete(reply);
- doReturn(replyFuture).when(api).createSubif(any(CreateSubif.class));
- }
-
- /**
- * Failure response send
- */
- private void whenCreateSubifThenFailure() throws ExecutionException, InterruptedException, VppBaseCallException {
- doReturn(TestHelperUtils.<CreateSubifReply>createFutureException()).when(api)
- .createSubif(any(CreateSubif.class));
- }
-
- private void whenSwInterfaceSetFlagsThenSuccess()
- throws ExecutionException, InterruptedException, VppBaseCallException {
- final CompletableFuture<SwInterfaceSetFlagsReply> replyFuture = new CompletableFuture<>();
- final SwInterfaceSetFlagsReply reply = new SwInterfaceSetFlagsReply();
- replyFuture.complete(reply);
- doReturn(replyFuture).when(api).swInterfaceSetFlags(any(SwInterfaceSetFlags.class));
- }
-
- private CreateSubif verifyCreateSubifWasInvoked(final CreateSubif expected) throws VppBaseCallException {
- ArgumentCaptor<CreateSubif> argumentCaptor = ArgumentCaptor.forClass(CreateSubif.class);
- verify(api).createSubif(argumentCaptor.capture());
- final CreateSubif actual = argumentCaptor.getValue();
-
- assertEquals(expected.swIfIndex, actual.swIfIndex);
- assertEquals(expected.subId, actual.subId);
- assertEquals(expected.noTags, actual.noTags);
- assertEquals(expected.oneTag, actual.oneTag);
- assertEquals(expected.twoTags, actual.twoTags);
- assertEquals(expected.dot1Ad, actual.dot1Ad);
- assertEquals(expected.exactMatch, actual.exactMatch);
- assertEquals(expected.defaultSub, actual.defaultSub);
- assertEquals(expected.outerVlanIdAny, actual.outerVlanIdAny);
- assertEquals(expected.innerVlanIdAny, actual.innerVlanIdAny);
- assertEquals(expected.outerVlanId, actual.outerVlanId);
- assertEquals(expected.innerVlanId, actual.innerVlanId);
- return actual;
- }
-
- private SwInterfaceSetFlags verifySwInterfaceSetFlagsWasInvoked(final SwInterfaceSetFlags expected)
- throws VppBaseCallException {
- ArgumentCaptor<SwInterfaceSetFlags> argumentCaptor = ArgumentCaptor.forClass(SwInterfaceSetFlags.class);
- verify(api).swInterfaceSetFlags(argumentCaptor.capture());
- final SwInterfaceSetFlags actual = argumentCaptor.getValue();
-
- assertEquals(expected.swIfIndex, actual.swIfIndex);
- assertEquals(expected.adminUpDown, actual.adminUpDown);
- return actual;
- }
-
- @Test
- public void testCreateTwoTags() throws Exception {
- final SubInterface subInterface = generateSubInterface(false, Arrays.asList(STAG_100, CTAG_200));
- final InstanceIdentifier<SubInterface> id = getSubInterfaceId(SUPER_IF_NAME, SUBIF_INDEX);
-
- whenCreateSubifThenSuccess();
- whenSwInterfaceSetFlagsThenSuccess();
-
- customizer.writeCurrentAttributes(id, subInterface, writeContext);
-
- verifyCreateSubifWasInvoked(generateSubInterfaceRequest(SUPER_IF_ID, CTAG_ID, false));
- verify(mappingContext)
- .put(eq(getMappingIid(SUB_IFACE_NAME, "test-instance")), eq(getMapping(SUB_IFACE_NAME, 0).get()));
- }
-
- @Test
- public void testCreateDot1qAnyTag() throws Exception {
- final SubInterface subInterface = generateSubInterface(false, Arrays.asList(STAG_100, CTAG_ANY));
- final InstanceIdentifier<SubInterface> id = getSubInterfaceId(SUPER_IF_NAME, SUBIF_INDEX);
-
- whenCreateSubifThenSuccess();
- whenSwInterfaceSetFlagsThenSuccess();
-
- customizer.writeCurrentAttributes(id, subInterface, writeContext);
-
- verifyCreateSubifWasInvoked(generateSubInterfaceRequest(SUPER_IF_ID, CTAG_ANY_ID, true));
- verify(mappingContext)
- .put(eq(getMappingIid(SUB_IFACE_NAME, "test-instance")), eq(getMapping(SUB_IFACE_NAME, 0).get()));
- }
-
- @Test
- public void testCreateFailed() throws Exception {
- final SubInterface subInterface = generateSubInterface(false, Arrays.asList(STAG_100, CTAG_200));
- final InstanceIdentifier<SubInterface> id = getSubInterfaceId(SUPER_IF_NAME, SUBIF_INDEX);
-
- whenCreateSubifThenFailure();
-
- try {
- customizer.writeCurrentAttributes(id, subInterface, writeContext);
- } catch (WriteFailedException.CreateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyCreateSubifWasInvoked(generateSubInterfaceRequest(SUPER_IF_ID, CTAG_ID, false));
- verify(mappingContext, times(0)).put(
- eq(getMappingIid(SUPER_IF_NAME, "test-instance")),
- eq(getMapping(SUPER_IF_NAME, 0).get()));
- return;
- }
- fail("WriteFailedException.CreateFailedException was expected");
- }
-
- @Test
- public void testUpdate() throws Exception {
- final List<Tag> tags = Arrays.asList(STAG_100, CTAG_200);
- final SubInterface before = generateSubInterface(false, tags);
- final SubInterface after = generateSubInterface(true, tags);
- final InstanceIdentifier<SubInterface> id = getSubInterfaceId(SUPER_IF_NAME, SUBIF_INDEX);
-
- whenSwInterfaceSetFlagsThenSuccess();
- final Optional<Mapping> ifcMapping = getMapping(SUPER_IF_NAME, SUBIF_INDEX);
- doReturn(ifcMapping).when(mappingContext).read(any());
-
- customizer.updateCurrentAttributes(id, before, after, writeContext);
-
- verifySwInterfaceSetFlagsWasInvoked(generateSwInterfaceEnableRequest(SUBIF_INDEX));
- }
-
- @Test
- public void testUpdateNoStateChange() throws Exception {
- final List<Tag> tags = Arrays.asList(STAG_100, CTAG_200);
- final SubInterface before = generateSubInterface(false, tags);
- final SubInterface after = generateSubInterface(false, tags);
- customizer.updateCurrentAttributes(null, before, after, writeContext);
-
- verify(api, never()).swInterfaceSetFlags(any());
- }
-
- @Test(expected = UnsupportedOperationException.class)
- public void testDelete() throws Exception {
- final SubInterface subInterface = generateSubInterface(false, Arrays.asList(STAG_100, CTAG_200));
- customizer.deleteCurrentAttributes(null, subInterface, writeContext);
- }
-} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/TapCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/TapCustomizerTest.java
deleted file mode 100644
index ea6990f60..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/TapCustomizerTest.java
+++ /dev/null
@@ -1,157 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMapping;
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMappingIid;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.ModificationCache;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import java.util.concurrent.CompletableFuture;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.Tap;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.TapBuilder;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.dto.TapConnect;
-import org.openvpp.jvpp.dto.TapConnectReply;
-import org.openvpp.jvpp.dto.TapDelete;
-import org.openvpp.jvpp.dto.TapDeleteReply;
-import org.openvpp.jvpp.dto.TapModify;
-import org.openvpp.jvpp.dto.TapModifyReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class TapCustomizerTest {
-
- @Mock
- private FutureJVpp vppApi;
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
-
- private TapCustomizer tapCustomizer;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- InterfaceTypeTestUtils.setupWriteContext(writeContext,
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.Tap.class);
- final NamingContext ctx = new NamingContext("ifcintest", "test-instance");
- final ModificationCache toBeReturned = new ModificationCache();
- doReturn(toBeReturned).when(writeContext).getModificationCache();
- doReturn(mappingContext).when(writeContext).getMappingContext();
-
- tapCustomizer = new TapCustomizer(vppApi, ctx);
- }
-
- @Test
- public void testCreate() throws Exception {
- doAnswer(new Answer() {
-
- int idx = 0;
-
- @Override
- public Object answer(final InvocationOnMock invocation) throws Throwable {
- final CompletableFuture<Object> reply = new CompletableFuture<>();
- final TapConnectReply t = new TapConnectReply();
- t.swIfIndex = idx++;
- reply.complete(t);
- return reply;
- }
- }).when(vppApi).tapConnect(any(TapConnect.class));
-
- tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), writeContext);
- tapCustomizer.writeCurrentAttributes(getTapId("tap2"), getTapData("tap2", "ff:ff:ff:ff:ff:ff"), writeContext);
-
- verify(vppApi, times(2)).tapConnect(any(TapConnect.class));
- verify(mappingContext).put(eq(getMappingIid("tap", "test-instance")), eq(getMapping("tap", 0).get()));
- verify(mappingContext).put(eq(getMappingIid("tap2", "test-instance")), eq(getMapping("tap2", 1).get()));
- }
-
- @Test
- public void testModify() throws Exception {
- final CompletableFuture<TapConnectReply> reply = new CompletableFuture<>();
- final TapConnectReply t = new TapConnectReply();
- t.swIfIndex = 0;
- reply.complete(t);
- doReturn(reply).when(vppApi).tapConnect(any(TapConnect.class));
-
- final CompletableFuture<TapModifyReply> replyModif = new CompletableFuture<>();
- final TapModifyReply tmodif = new TapModifyReply();
- tmodif.swIfIndex = 0;
- replyModif.complete(tmodif);
- doReturn(replyModif).when(vppApi).tapModify(any(TapModify.class));
-
- tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), writeContext);
- doReturn(getMapping("tap", 1)).when(mappingContext).read(getMappingIid("tap", "test-instance"));
- tapCustomizer.updateCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), getTapData("tap", "ff:ff:ff:ff:ff:f1"), writeContext);
-
- verify(vppApi).tapConnect(any(TapConnect.class));
- verify(vppApi).tapModify(any(TapModify.class));
-
- verify(mappingContext).put(eq(getMappingIid("tap", "test-instance")), eq(getMapping("tap", 0).get()));
- }
-
- @Test
- public void testDelete() throws Exception {
- final CompletableFuture<TapConnectReply> reply = new CompletableFuture<>();
- final TapConnectReply t = new TapConnectReply();
- t.swIfIndex = 0;
- reply.complete(t);
- doReturn(reply).when(vppApi).tapConnect(any(TapConnect.class));
-
- final CompletableFuture<TapDeleteReply> replyDelete = new CompletableFuture<>();
- final TapDeleteReply tmodif = new TapDeleteReply();
- replyDelete.complete(tmodif);
- doReturn(replyDelete).when(vppApi).tapDelete(any(TapDelete.class));
-
- tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), writeContext);
- doReturn(getMapping("tap", 1)).when(mappingContext).read(getMappingIid("tap", "test-instance"));
- tapCustomizer.deleteCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), writeContext);
-
- verify(vppApi).tapConnect(any(TapConnect.class));
- verify(vppApi).tapDelete(any(TapDelete.class));
- verify(mappingContext).delete(eq(getMappingIid("tap", "test-instance")));
- }
-
- private InstanceIdentifier<Tap> getTapId(final String tap) {
- return InstanceIdentifier.create(Interfaces.class).child(Interface.class, new InterfaceKey(tap)).augmentation(
- VppInterfaceAugmentation.class).child(Tap.class);
- }
-
- private Tap getTapData(final String tap, final String mac) {
- return new TapBuilder().setTapName(tap).setMac(new PhysAddress(mac)).build();
- }
-} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VhostUserCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VhostUserCustomizerTest.java
deleted file mode 100644
index 959d6eb4a..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VhostUserCustomizerTest.java
+++ /dev/null
@@ -1,290 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMapping;
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMappingIid;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.eq;
-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 static org.mockito.MockitoAnnotations.initMocks;
-
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.ModificationCache;
-import io.fd.honeycomb.v3po.translate.v3po.test.TestHelperUtils;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.v3po.util.TranslateUtils;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VhostUserRole;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUser;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUserBuilder;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.VppBaseCallException;
-import org.openvpp.jvpp.VppInvocationException;
-import org.openvpp.jvpp.dto.CreateVhostUserIf;
-import org.openvpp.jvpp.dto.CreateVhostUserIfReply;
-import org.openvpp.jvpp.dto.DeleteVhostUserIf;
-import org.openvpp.jvpp.dto.DeleteVhostUserIfReply;
-import org.openvpp.jvpp.dto.ModifyVhostUserIf;
-import org.openvpp.jvpp.dto.ModifyVhostUserIfReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class VhostUserCustomizerTest {
-
- @Mock
- private FutureJVpp api;
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
-
- private VhostUserCustomizer customizer;
- private static final int IFACE_ID = 1;
- private static final String IFACE_NAME = "eth0";
- private static final InstanceIdentifier<VhostUser> ID =
- InstanceIdentifier.create(Interfaces.class).child(Interface.class, new InterfaceKey(IFACE_NAME))
- .augmentation(VppInterfaceAugmentation.class).child(VhostUser.class);
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
- InterfaceTypeTestUtils.setupWriteContext(writeContext,
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VhostUser.class);
- final NamingContext namingContext = new NamingContext("generatedInterfaceName", "test-instance");
- final ModificationCache toBeReturned = new ModificationCache();
- doReturn(toBeReturned).when(writeContext).getModificationCache();
- doReturn(mappingContext).when(writeContext).getMappingContext();
-
- // TODO create base class for tests using vppApi
- customizer = new VhostUserCustomizer(api, namingContext);
- }
-
- private void whenCreateVhostUserIfThenSuccess()
- throws ExecutionException, InterruptedException, VppInvocationException, TimeoutException {
- final CompletionStage<CreateVhostUserIfReply> replyCS = mock(CompletionStage.class);
- final CompletableFuture<CreateVhostUserIfReply> replyFuture = mock(CompletableFuture.class);
- when(replyCS.toCompletableFuture()).thenReturn(replyFuture);
- final CreateVhostUserIfReply reply = new CreateVhostUserIfReply();
- when(replyFuture.get(anyLong(), eq(TimeUnit.SECONDS))).thenReturn(reply);
- when(api.createVhostUserIf(any(CreateVhostUserIf.class))).thenReturn(replyCS);
- }
-
- /**
- * Failure response send
- */
- private void whenCreateVhostUserIfThenFailure()
- throws ExecutionException, InterruptedException, VppInvocationException {
- doReturn(TestHelperUtils.<CreateVhostUserIfReply>createFutureException()).when(api)
- .createVhostUserIf(any(CreateVhostUserIf.class));
- }
-
- private void whenModifyVhostUserIfThenSuccess()
- throws ExecutionException, InterruptedException, VppInvocationException, TimeoutException {
- final CompletionStage<ModifyVhostUserIfReply> replyCS = mock(CompletionStage.class);
- final CompletableFuture<ModifyVhostUserIfReply> replyFuture = mock(CompletableFuture.class);
- when(replyCS.toCompletableFuture()).thenReturn(replyFuture);
- final ModifyVhostUserIfReply reply = new ModifyVhostUserIfReply();
- when(replyFuture.get(anyLong(), eq(TimeUnit.SECONDS))).thenReturn(reply);
- when(api.modifyVhostUserIf(any(ModifyVhostUserIf.class))).thenReturn(replyCS);
- }
-
- /**
- * Failure response send
- */
- private void whenModifyVhostUserIfThenFailure()
- throws ExecutionException, InterruptedException, VppInvocationException {
- doReturn(TestHelperUtils.<ModifyVhostUserIfReply>createFutureException()).when(api)
- .modifyVhostUserIf(any(ModifyVhostUserIf.class));
- }
-
- private void whenDeleteVhostUserIfThenSuccess()
- throws ExecutionException, InterruptedException, VppInvocationException, TimeoutException {
- final CompletionStage<DeleteVhostUserIfReply> replyCS = mock(CompletionStage.class);
- final CompletableFuture<DeleteVhostUserIfReply> replyFuture = mock(CompletableFuture.class);
- when(replyCS.toCompletableFuture()).thenReturn(replyFuture);
- final DeleteVhostUserIfReply reply = new DeleteVhostUserIfReply();
- when(replyFuture.get(anyLong(), eq(TimeUnit.SECONDS))).thenReturn(reply);
- when(api.deleteVhostUserIf(any(DeleteVhostUserIf.class))).thenReturn(replyCS);
- }
-
- /**
- * Failure response send
- */
- private void whenDeleteVhostUserIfThenFailure()
- throws ExecutionException, InterruptedException, VppInvocationException {
- doReturn(TestHelperUtils.<DeleteVhostUserIfReply>createFutureException()).when(api)
- .deleteVhostUserIf(any(DeleteVhostUserIf.class));
- }
-
- private CreateVhostUserIf verifyCreateVhostUserIfWasInvoked(final VhostUser vhostUser) throws VppInvocationException {
- ArgumentCaptor<CreateVhostUserIf> argumentCaptor = ArgumentCaptor.forClass(CreateVhostUserIf.class);
- verify(api).createVhostUserIf(argumentCaptor.capture());
- final CreateVhostUserIf actual = argumentCaptor.getValue();
- assertEquals(0, actual.customDevInstance);
-
- assertEquals(TranslateUtils.booleanToByte(VhostUserRole.Server.equals(vhostUser.getRole())), actual.isServer);
- assertEquals(0, actual.renumber);
- assertEquals(0, actual.useCustomMac);
- assertArrayEquals(vhostUser.getSocket().getBytes(), actual.sockFilename);
- assertNotNull(actual.macAddress);
- return actual;
- }
-
- private ModifyVhostUserIf verifyModifyVhostUserIfWasInvoked(final VhostUser vhostUser, final int swIfIndex)
- throws VppInvocationException {
- ArgumentCaptor<ModifyVhostUserIf> argumentCaptor = ArgumentCaptor.forClass(ModifyVhostUserIf.class);
- verify(api).modifyVhostUserIf(argumentCaptor.capture());
- final ModifyVhostUserIf actual = argumentCaptor.getValue();
- assertEquals(0, actual.customDevInstance);
-
- assertEquals(TranslateUtils.booleanToByte(VhostUserRole.Server.equals(vhostUser.getRole())), actual.isServer);
- assertEquals(0, actual.renumber);
- assertEquals(swIfIndex, actual.swIfIndex);
- assertArrayEquals(vhostUser.getSocket().getBytes(), actual.sockFilename);
- return actual;
- }
-
- private DeleteVhostUserIf verifyDeleteVhostUserIfWasInvoked(final int swIfIndex) throws VppInvocationException {
- ArgumentCaptor<DeleteVhostUserIf> argumentCaptor = ArgumentCaptor.forClass(DeleteVhostUserIf.class);
- verify(api).deleteVhostUserIf(argumentCaptor.capture());
- final DeleteVhostUserIf actual = argumentCaptor.getValue();
- assertEquals(swIfIndex, actual.swIfIndex);
- return actual;
- }
-
- private static VhostUser generateVhostUser(final VhostUserRole role, final String socketName) {
- VhostUserBuilder builder = new VhostUserBuilder();
- builder.setRole(role);
- builder.setSocket(socketName);
- return builder.build();
- }
-
- @Test
- public void testWriteCurrentAttributes() throws Exception {
- final VhostUser vhostUser = generateVhostUser(VhostUserRole.Server, "socketName");
-
- whenCreateVhostUserIfThenSuccess();
-
- customizer.writeCurrentAttributes(ID, vhostUser, writeContext);
- verifyCreateVhostUserIfWasInvoked(vhostUser);
- verify(mappingContext).put(eq(getMappingIid(IFACE_NAME, "test-instance")), eq(getMapping(IFACE_NAME, 0).get()));
- }
-
- @Test
- public void testWriteCurrentAttributesFailed() throws Exception {
- final VhostUser vhostUser = generateVhostUser(VhostUserRole.Client, "socketName");
-
- whenCreateVhostUserIfThenFailure();
-
- try {
- customizer.writeCurrentAttributes(ID, vhostUser, writeContext);
- } catch (WriteFailedException.CreateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyCreateVhostUserIfWasInvoked(vhostUser);
- verifyZeroInteractions(mappingContext);
- return;
- }
- fail("WriteFailedException.CreateFailedException was expected");
- }
-
- @Test
- public void testUpdateCurrentAttributes() throws Exception {
- final VhostUser vhostUserBefore = generateVhostUser(VhostUserRole.Client, "socketName0");
- final VhostUser vhostUserAfter = generateVhostUser(VhostUserRole.Server, "socketName1");
- doReturn(getMapping(IFACE_NAME, IFACE_ID)).when(mappingContext).read(getMappingIid(IFACE_NAME, "test-instance"));
-
- whenModifyVhostUserIfThenSuccess();
-
- customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, writeContext);
- verifyModifyVhostUserIfWasInvoked(vhostUserAfter, IFACE_ID);
- }
-
- @Test
- public void testUpdateCurrentAttributesFailed() throws Exception {
- final VhostUser vhostUserBefore = generateVhostUser(VhostUserRole.Client, "socketName0");
- final VhostUser vhostUserAfter = generateVhostUser(VhostUserRole.Server, "socketName1");
- doReturn(getMapping(IFACE_NAME, IFACE_ID)).when(mappingContext).read(getMappingIid(IFACE_NAME, "test-instance"));
-
- whenModifyVhostUserIfThenFailure();
-
- try {
- customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, writeContext);
- } catch (WriteFailedException.UpdateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyModifyVhostUserIfWasInvoked(vhostUserAfter, IFACE_ID);
- return;
- }
- fail("WriteFailedException.UpdateFailedException was expected");
- }
-
- @Test
- public void testDeleteCurrentAttributes() throws Exception {
- final VhostUser vhostUser = generateVhostUser(VhostUserRole.Client, "socketName");
- doReturn(getMapping(IFACE_NAME, IFACE_ID)).when(mappingContext).read(getMappingIid(IFACE_NAME, "test-instance"));
-
- whenDeleteVhostUserIfThenSuccess();
-
- customizer.deleteCurrentAttributes(ID, vhostUser, writeContext);
- verifyDeleteVhostUserIfWasInvoked(IFACE_ID);
- verify(mappingContext).delete(eq(getMappingIid(IFACE_NAME, "test-instance")));
- }
-
- @Test
- public void testDeleteCurrentAttributesFailed() throws Exception {
- final VhostUser vhostUser = generateVhostUser(VhostUserRole.Client, "socketName");
- doReturn(getMapping(IFACE_NAME, IFACE_ID)).when(mappingContext).read(getMappingIid(IFACE_NAME, "test-instance"));
-
- whenDeleteVhostUserIfThenFailure();
-
- try {
- customizer.deleteCurrentAttributes(ID, vhostUser, writeContext);
- } catch (WriteFailedException.DeleteFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyDeleteVhostUserIfWasInvoked(IFACE_ID);
- // Delete from context not invoked if delete from VPP failed
- verify(mappingContext, times(0)).delete(eq(getMappingIid(IFACE_NAME, "test-instance")));
- verify(mappingContext).read(eq(getMappingIid(IFACE_NAME, "test-instance")));
- return;
- }
- fail("WriteFailedException.DeleteFailedException was expected");
- }
-} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanCustomizerTest.java
deleted file mode 100644
index 1d00e2f11..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanCustomizerTest.java
+++ /dev/null
@@ -1,253 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMapping;
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMappingIid;
-import static java.util.Collections.singletonList;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.eq;
-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.when;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import com.google.common.base.Optional;
-import com.google.common.net.InetAddresses;
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.ModificationCache;
-import io.fd.honeycomb.v3po.translate.v3po.test.TestHelperUtils;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.Mappings;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.MappingsBuilder;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.Mapping;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanVni;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.Vxlan;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanBuilder;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.VppBaseCallException;
-import org.openvpp.jvpp.VppInvocationException;
-import org.openvpp.jvpp.dto.VxlanAddDelTunnel;
-import org.openvpp.jvpp.dto.VxlanAddDelTunnelReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class VxlanCustomizerTest {
-
- private static final byte ADD_VXLAN = 1;
- private static final byte DEL_VXLAN = 0;
-
- @Mock
- private FutureJVpp api;
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
-
- private VxlanCustomizer customizer;
- private String ifaceName;
- private InstanceIdentifier<Vxlan> id;
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
- InterfaceTypeTestUtils.setupWriteContext(writeContext,
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanTunnel.class);
- // TODO create base class for tests using vppApi
- NamingContext namingContext = new NamingContext("generateInterfaceNAme", "test-instance");
- final ModificationCache toBeReturned = new ModificationCache();
- doReturn(toBeReturned).when(writeContext).getModificationCache();
- doReturn(mappingContext).when(writeContext).getMappingContext();
-
- customizer = new VxlanCustomizer(api, namingContext);
-
- ifaceName = "eth0";
- id = InstanceIdentifier.create(Interfaces.class).child(Interface.class, new InterfaceKey(ifaceName))
- .augmentation(VppInterfaceAugmentation.class).child(Vxlan.class);
- }
-
- private void whenVxlanAddDelTunnelThenSuccess()
- throws ExecutionException, InterruptedException, VppInvocationException, TimeoutException {
- final CompletionStage<VxlanAddDelTunnelReply> replyCS = mock(CompletionStage.class);
- final CompletableFuture<VxlanAddDelTunnelReply> replyFuture = mock(CompletableFuture.class);
- when(replyCS.toCompletableFuture()).thenReturn(replyFuture);
- final VxlanAddDelTunnelReply reply = new VxlanAddDelTunnelReply();
- when(replyFuture.get(anyLong(), eq(TimeUnit.SECONDS))).thenReturn(reply);
- when(api.vxlanAddDelTunnel(any(VxlanAddDelTunnel.class))).thenReturn(replyCS);
- }
-
- /**
- * Failure response send
- */
- private void whenVxlanAddDelTunnelThenFailure()
- throws ExecutionException, InterruptedException, VppInvocationException {
- doReturn(TestHelperUtils.<VxlanAddDelTunnelReply>createFutureException()).when(api)
- .vxlanAddDelTunnel(any(VxlanAddDelTunnel.class));
- }
-
- private VxlanAddDelTunnel verifyVxlanAddDelTunnelWasInvoked(final Vxlan vxlan) throws VppInvocationException {
- ArgumentCaptor<VxlanAddDelTunnel> argumentCaptor = ArgumentCaptor.forClass(VxlanAddDelTunnel.class);
- verify(api).vxlanAddDelTunnel(argumentCaptor.capture());
- final VxlanAddDelTunnel actual = argumentCaptor.getValue();
- assertEquals(0, actual.isIpv6);
- assertEquals(-1, actual.decapNextIndex);
- assertArrayEquals(InetAddresses.forString(vxlan.getSrc().getIpv4Address().getValue()).getAddress(),
- actual.srcAddress);
- assertArrayEquals(InetAddresses.forString(vxlan.getDst().getIpv4Address().getValue()).getAddress(),
- actual.dstAddress);
- assertEquals(vxlan.getEncapVrfId().intValue(), actual.encapVrfId);
- assertEquals(vxlan.getVni().getValue().intValue(), actual.vni);
- return actual;
- }
-
- private void verifyVxlanAddWasInvoked(final Vxlan vxlan) throws VppInvocationException {
- final VxlanAddDelTunnel actual = verifyVxlanAddDelTunnelWasInvoked(vxlan);
- assertEquals(ADD_VXLAN, actual.isAdd);
- }
-
- private void verifyVxlanDeleteWasInvoked(final Vxlan vxlan) throws VppInvocationException {
- final VxlanAddDelTunnel actual = verifyVxlanAddDelTunnelWasInvoked(vxlan);
- assertEquals(DEL_VXLAN, actual.isAdd);
- }
-
- private static Vxlan generateVxlan(long vni) {
- final VxlanBuilder builder = new VxlanBuilder();
- builder.setSrc(new IpAddress(new Ipv4Address("192.168.20.10")));
- builder.setDst(new IpAddress(new Ipv4Address("192.168.20.11")));
- builder.setEncapVrfId(Long.valueOf(123));
- builder.setVni(new VxlanVni(Long.valueOf(vni)));
- return builder.build();
- }
-
- private static Vxlan generateVxlan() {
- return generateVxlan(Long.valueOf(11));
- }
-
- @Test
- public void testWriteCurrentAttributes() throws Exception {
- final Vxlan vxlan = generateVxlan();
-
- whenVxlanAddDelTunnelThenSuccess();
-
- doReturn(Optional.absent())
- .when(mappingContext).read(getMappingIid(ifaceName, "test-instance").firstIdentifierOf(Mappings.class));
-
- customizer.writeCurrentAttributes(id, vxlan, writeContext);
- verifyVxlanAddWasInvoked(vxlan);
- verify(mappingContext).put(eq(getMappingIid(ifaceName, "test-instance")), eq(getMapping(ifaceName, 0).get()));
- }
-
- @Test
- public void testWriteCurrentAttributesMappingAlreadyPresent() throws Exception {
- final Vxlan vxlan = generateVxlan();
-
- whenVxlanAddDelTunnelThenSuccess();
- final Optional<Mapping> ifcMapping = getMapping(ifaceName, 0);
-
- doReturn(Optional.of(new MappingsBuilder().setMapping(singletonList(ifcMapping.get())).build()))
- .when(mappingContext).read(getMappingIid(ifaceName, "test-instance").firstIdentifierOf(Mappings.class));
-
- customizer.writeCurrentAttributes(id, vxlan, writeContext);
- verifyVxlanAddWasInvoked(vxlan);
-
- // Remove the first mapping before putting in the new one
- verify(mappingContext).delete(eq(getMappingIid(ifaceName, "test-instance")));
- verify(mappingContext).put(eq(getMappingIid(ifaceName, "test-instance")), eq(ifcMapping.get()));
- }
-
- @Test
- public void testWriteCurrentAttributesFailed() throws Exception {
- final Vxlan vxlan = generateVxlan();
-
- whenVxlanAddDelTunnelThenFailure();
-
- try {
- customizer.writeCurrentAttributes(id, vxlan, writeContext);
- } catch (WriteFailedException.CreateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyVxlanAddWasInvoked(vxlan);
- // Mapping not stored due to failure
- verify(mappingContext, times(0)).put(eq(getMappingIid(ifaceName, "test-instance")), eq(getMapping(ifaceName, 0).get()));
- return;
- }
- fail("WriteFailedException.CreateFailedException was expected");
- }
-
- @Test
- public void testUpdateCurrentAttributes() throws Exception {
- try {
- customizer.updateCurrentAttributes(id, generateVxlan(10), generateVxlan(11), writeContext);
- } catch (WriteFailedException.UpdateFailedException e) {
- assertEquals(UnsupportedOperationException.class, e.getCause().getClass());
- return;
- }
- fail("WriteFailedException.UpdateFailedException was expected");
- }
-
- @Test
- public void testDeleteCurrentAttributes() throws Exception {
- final Vxlan vxlan = generateVxlan();
-
- whenVxlanAddDelTunnelThenSuccess();
- doReturn(getMapping(ifaceName, 1)).when(mappingContext).read(getMappingIid(ifaceName, "test-instance"));
-
- customizer.deleteCurrentAttributes(id, vxlan, writeContext);
- verifyVxlanDeleteWasInvoked(vxlan);
- verify(mappingContext).delete(eq(getMappingIid(ifaceName, "test-instance")));
- }
-
- @Test
- public void testDeleteCurrentAttributesaFailed() throws Exception {
- final Vxlan vxlan = generateVxlan();
-
- whenVxlanAddDelTunnelThenFailure();
- doReturn(getMapping(ifaceName, 1)).when(mappingContext).read(getMappingIid(ifaceName, "test-instance"));
-
- try {
- customizer.deleteCurrentAttributes(id, vxlan, writeContext);
- } catch (WriteFailedException.DeleteFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyVxlanDeleteWasInvoked(vxlan);
- verify(mappingContext, times(0)).delete(eq(getMappingIid(ifaceName, "test-instance")));
- return;
- }
- fail("WriteFailedException.DeleteFailedException was expected");
- }
-} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizerTest.java
deleted file mode 100644
index 12424999f..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizerTest.java
+++ /dev/null
@@ -1,259 +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.honeycomb.v3po.translate.v3po.interfaces;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMapping;
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.getMappingIid;
-import static java.util.Collections.singletonList;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.eq;
-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.when;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import com.google.common.base.Optional;
-import com.google.common.net.InetAddresses;
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.ModificationCache;
-import io.fd.honeycomb.v3po.translate.v3po.test.TestHelperUtils;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.Mappings;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.MappingsBuilder;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.Mapping;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeNextProtocol;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeVni;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanGpe;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanGpeBuilder;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.VppBaseCallException;
-import org.openvpp.jvpp.dto.VxlanAddDelTunnelReply;
-import org.openvpp.jvpp.dto.VxlanGpeAddDelTunnel;
-import org.openvpp.jvpp.dto.VxlanGpeAddDelTunnelReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class VxlanGpeCustomizerTest {
-
- private static final byte ADD_VXLAN_GPE = 1;
- private static final byte DEL_VXLAN_GPE = 0;
-
- @Mock
- private FutureJVpp api;
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
-
- private VxlanGpeCustomizer customizer;
- private String ifaceName;
- private InstanceIdentifier<VxlanGpe> id;
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
- InterfaceTypeTestUtils.setupWriteContext(writeContext,
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeTunnel.class);
- // TODO create base class for tests using vppApi
- NamingContext namingContext = new NamingContext("generateInterfaceNAme", "test-instance");
- final ModificationCache toBeReturned = new ModificationCache();
- doReturn(toBeReturned).when(writeContext).getModificationCache();
- doReturn(mappingContext).when(writeContext).getMappingContext();
-
- customizer = new VxlanGpeCustomizer(api, namingContext);
-
- ifaceName = "eth0";
- id = InstanceIdentifier.create(Interfaces.class).child(Interface.class, new InterfaceKey(ifaceName))
- .augmentation(VppInterfaceAugmentation.class).child(VxlanGpe.class);
- }
-
- private void whenVxlanGpeAddDelTunnelThenSuccess()
- throws ExecutionException, InterruptedException, VppBaseCallException, TimeoutException {
- final CompletionStage<VxlanGpeAddDelTunnelReply> replyCS = mock(CompletionStage.class);
- final CompletableFuture<VxlanGpeAddDelTunnelReply> replyFuture = mock(CompletableFuture.class);
- when(replyCS.toCompletableFuture()).thenReturn(replyFuture);
- final VxlanGpeAddDelTunnelReply reply = new VxlanGpeAddDelTunnelReply();
- when(replyFuture.get(anyLong(), eq(TimeUnit.SECONDS))).thenReturn(reply);
- when(api.vxlanGpeAddDelTunnel(any(VxlanGpeAddDelTunnel.class))).thenReturn(replyCS);
- }
-
- /**
- * Failure response send
- */
- private void whenVxlanGpeAddDelTunnelThenFailure()
- throws ExecutionException, InterruptedException, VppBaseCallException {
- doReturn(TestHelperUtils.<VxlanAddDelTunnelReply>createFutureException()).when(api)
- .vxlanGpeAddDelTunnel(any(VxlanGpeAddDelTunnel.class));
- }
-
- private VxlanGpeAddDelTunnel verifyVxlanGpeAddDelTunnelWasInvoked(final VxlanGpe vxlanGpe)
- throws VppBaseCallException {
- ArgumentCaptor<VxlanGpeAddDelTunnel> argumentCaptor = ArgumentCaptor.forClass(VxlanGpeAddDelTunnel.class);
- verify(api).vxlanGpeAddDelTunnel(argumentCaptor.capture());
- final VxlanGpeAddDelTunnel actual = argumentCaptor.getValue();
- assertEquals(0, actual.isIpv6);
- assertArrayEquals(InetAddresses.forString(vxlanGpe.getLocal().getIpv4Address().getValue()).getAddress(),
- actual.local);
- assertArrayEquals(InetAddresses.forString(vxlanGpe.getRemote().getIpv4Address().getValue()).getAddress(),
- actual.remote);
- assertEquals(vxlanGpe.getVni().getValue().intValue(), actual.vni);
- assertEquals(vxlanGpe.getNextProtocol().getIntValue(), actual.protocol);
- assertEquals(vxlanGpe.getEncapVrfId().intValue(), actual.encapVrfId);
- assertEquals(vxlanGpe.getDecapVrfId().intValue(), actual.decapVrfId);
- return actual;
- }
-
- private void verifyVxlanGpeAddWasInvoked(final VxlanGpe vxlanGpe) throws VppBaseCallException {
- final VxlanGpeAddDelTunnel actual = verifyVxlanGpeAddDelTunnelWasInvoked(vxlanGpe);
- assertEquals(ADD_VXLAN_GPE, actual.isAdd);
- }
-
- private void verifyVxlanGpeDeleteWasInvoked(final VxlanGpe vxlanGpe) throws VppBaseCallException{
- final VxlanGpeAddDelTunnel actual = verifyVxlanGpeAddDelTunnelWasInvoked(vxlanGpe);
- assertEquals(DEL_VXLAN_GPE, actual.isAdd);
- }
-
- private static VxlanGpe generateVxlanGpe(long vni) {
- final VxlanGpeBuilder builder = new VxlanGpeBuilder();
- builder.setLocal(new IpAddress(new Ipv4Address("192.168.20.10")));
- builder.setRemote(new IpAddress(new Ipv4Address("192.168.20.11")));
- builder.setVni(new VxlanGpeVni(Long.valueOf(vni)));
- builder.setNextProtocol(VxlanGpeNextProtocol.forValue(1));
- builder.setEncapVrfId(Long.valueOf(123));
- builder.setDecapVrfId(Long.valueOf(456));
- return builder.build();
- }
-
- private static VxlanGpe generateVxlanGpe() {
- return generateVxlanGpe(Long.valueOf(11));
- }
-
- @Test
- public void testWriteCurrentAttributes() throws Exception {
- final VxlanGpe vxlanGpe = generateVxlanGpe();
-
- whenVxlanGpeAddDelTunnelThenSuccess();
-
- doReturn(Optional.absent())
- .when(mappingContext).read(getMappingIid(ifaceName, "test-instance").firstIdentifierOf(Mappings.class));
-
- customizer.writeCurrentAttributes(id, vxlanGpe, writeContext);
- verifyVxlanGpeAddWasInvoked(vxlanGpe);
- verify(mappingContext).put(eq(getMappingIid(ifaceName, "test-instance")), eq(getMapping(ifaceName, 0).get()));
- }
-
- @Test
- public void testWriteCurrentAttributesMappingAlreadyPresent() throws Exception {
- final VxlanGpe vxlanGpe = generateVxlanGpe();
-
- whenVxlanGpeAddDelTunnelThenSuccess();
- final Optional<Mapping> ifcMapping = getMapping(ifaceName, 0);
-
- doReturn(Optional.of(new MappingsBuilder().setMapping(singletonList(ifcMapping.get())).build()))
- .when(mappingContext).read(getMappingIid(ifaceName, "test-instance").firstIdentifierOf(Mappings.class));
-
- customizer.writeCurrentAttributes(id, vxlanGpe, writeContext);
- verifyVxlanGpeAddWasInvoked(vxlanGpe);
-
- // Remove the first mapping before putting in the new one
- verify(mappingContext).delete(eq(getMappingIid(ifaceName, "test-instance")));
- verify(mappingContext).put(eq(getMappingIid(ifaceName, "test-instance")), eq(ifcMapping.get()));
- }
-
- @Test
- public void testWriteCurrentAttributesFailed() throws Exception {
- final VxlanGpe vxlanGpe = generateVxlanGpe();
-
- whenVxlanGpeAddDelTunnelThenFailure();
-
- try {
- customizer.writeCurrentAttributes(id, vxlanGpe, writeContext);
- } catch (WriteFailedException.CreateFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyVxlanGpeAddWasInvoked(vxlanGpe);
- // Mapping not stored due to failure
- verify(mappingContext, times(0))
- .put(eq(getMappingIid(ifaceName, "test-instance")), eq(getMapping(ifaceName, 0).get()));
- return;
- }
- fail("WriteFailedException.CreateFailedException was expected");
- }
-
- @Test
- public void testUpdateCurrentAttributes() throws Exception {
- try {
- customizer.updateCurrentAttributes(id, generateVxlanGpe(10), generateVxlanGpe(11), writeContext);
- } catch (WriteFailedException.UpdateFailedException e) {
- assertEquals(UnsupportedOperationException.class, e.getCause().getClass());
- return;
- }
- fail("WriteFailedException.UpdateFailedException was expected");
- }
-
- @Test
- public void testDeleteCurrentAttributes() throws Exception {
- final VxlanGpe vxlanGpe = generateVxlanGpe();
-
- whenVxlanGpeAddDelTunnelThenSuccess();
- doReturn(getMapping(ifaceName, 1)).when(mappingContext).read(getMappingIid(ifaceName, "test-instance"));
-
- customizer.deleteCurrentAttributes(id, vxlanGpe, writeContext);
- verifyVxlanGpeDeleteWasInvoked(vxlanGpe);
- verify(mappingContext).delete(eq(getMappingIid(ifaceName, "test-instance")));
- }
-
- @Test
- public void testDeleteCurrentAttributesaFailed() throws Exception {
- final VxlanGpe vxlanGpe = generateVxlanGpe();
-
- whenVxlanGpeAddDelTunnelThenFailure();
- doReturn(getMapping(ifaceName, 1)).when(mappingContext).read(getMappingIid(ifaceName, "test-instance"));
-
- try {
- customizer.deleteCurrentAttributes(id, vxlanGpe, writeContext);
- } catch (WriteFailedException.DeleteFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifyVxlanGpeDeleteWasInvoked(vxlanGpe);
- verify(mappingContext, times(0)).delete(eq(getMappingIid(ifaceName, "test-instance")));
- return;
- }
- fail("WriteFailedException.DeleteFailedException was expected");
- }
-} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4AddressCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4AddressCustomizerTest.java
deleted file mode 100644
index 21deb9135..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4AddressCustomizerTest.java
+++ /dev/null
@@ -1,292 +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.honeycomb.v3po.translate.v3po.interfaces.ip;
-
-import static io.fd.honeycomb.v3po.translate.v3po.test.ContextTestUtils.mockMapping;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.verify;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.v3po.test.TestHelperUtils;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.concurrent.CompletableFuture;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.Interface1;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.Ipv4;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.AddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.address.subnet.Netmask;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.address.subnet.NetmaskBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.address.subnet.PrefixLength;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.address.subnet.PrefixLengthBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DottedQuad;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.VppBaseCallException;
-import org.openvpp.jvpp.VppInvocationException;
-import org.openvpp.jvpp.dto.SwInterfaceAddDelAddress;
-import org.openvpp.jvpp.dto.SwInterfaceAddDelAddressReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class Ipv4AddressCustomizerTest {
-
- private static final String IFC_CTX_NAME = "ifc-test-instance";
- private static final String IFACE_NAME = "eth0";
- private static final int IFACE_ID = 123;
-
- @Mock
- private WriteContext writeContext;
- @Mock
- private MappingContext mappingContext;
- @Mock
- private FutureJVpp api;
-
- private NamingContext interfaceContext;
- private Ipv4AddressCustomizer customizer;
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
- doReturn(mappingContext).when(writeContext).getMappingContext();
- interfaceContext = new NamingContext("generatedlIfaceName", IFC_CTX_NAME);
-
- customizer = new Ipv4AddressCustomizer(api, interfaceContext);
- }
-
- private static InstanceIdentifier<Address> getAddressId(final String ifaceName) {
- return InstanceIdentifier.builder(Interfaces.class)
- .child(Interface.class, new InterfaceKey(ifaceName))
- .augmentation(Interface1.class)
- .child(Ipv4.class)
- .child(Address.class)
- .build();
- }
-
- private void whenSwInterfaceAddDelAddressThenSuccess() {
- final CompletableFuture<SwInterfaceAddDelAddressReply> replyFuture = new CompletableFuture<>();
- final SwInterfaceAddDelAddressReply reply = new SwInterfaceAddDelAddressReply();
- replyFuture.complete(reply);
- doReturn(replyFuture).when(api).swInterfaceAddDelAddress(any(SwInterfaceAddDelAddress.class));
- }
-
- private void whenSwInterfaceAddDelAddressThenFailure() {
- doReturn(TestHelperUtils.createFutureException()).when(api)
- .swInterfaceAddDelAddress(any(SwInterfaceAddDelAddress.class));
- }
-
- private void verifySwInterfaceAddDelAddressWasInvoked(final SwInterfaceAddDelAddress expected) throws
- VppInvocationException {
- ArgumentCaptor<SwInterfaceAddDelAddress> argumentCaptor =
- ArgumentCaptor.forClass(SwInterfaceAddDelAddress.class);
- verify(api).swInterfaceAddDelAddress(argumentCaptor.capture());
- verifySwInterfaceAddDelAddressWasInvoked(expected, argumentCaptor.getValue());
- }
-
- private void verifySwInterfaceAddDelAddressWasInvoked(final SwInterfaceAddDelAddress expected,
- final SwInterfaceAddDelAddress actual) throws
- VppInvocationException {
- assertArrayEquals(expected.address, actual.address);
- assertEquals(expected.addressLength, actual.addressLength);
- assertEquals(expected.delAll, actual.delAll);
- assertEquals(expected.isAdd, actual.isAdd);
- assertEquals(expected.isIpv6, actual.isIpv6);
- assertEquals(expected.swIfIndex, actual.swIfIndex);
- }
-
- @Test
- public void testAddPrefixLengthIpv4Address() throws Exception {
- final InstanceIdentifier<Address> id = getAddressId(IFACE_NAME);
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- PrefixLength length = new PrefixLengthBuilder().setPrefixLength(new Integer(24).shortValue()).build();
- Address data = new AddressBuilder().setIp(noZoneIp).setSubnet(length).build();
-
- mockMapping(mappingContext, IFACE_NAME, IFACE_ID, IFC_CTX_NAME);
- whenSwInterfaceAddDelAddressThenSuccess();
-
- customizer.writeCurrentAttributes(id, data, writeContext);
-
- verifySwInterfaceAddDelAddressWasInvoked(generateSwInterfaceAddDelAddressRequest(new byte[] {-64, -88, 2, 1},
- (byte) 1, (byte) 24));
- }
-
- @Test
- public void testAddPrefixLengthIpv4AddressFailed() throws Exception {
- final InstanceIdentifier<Address> id = getAddressId(IFACE_NAME);
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- PrefixLength length = new PrefixLengthBuilder().setPrefixLength(new Integer(24).shortValue()).build();
- Address data = new AddressBuilder().setIp(noZoneIp).setSubnet(length).build();
-
- mockMapping(mappingContext, IFACE_NAME, IFACE_ID, IFC_CTX_NAME);
- whenSwInterfaceAddDelAddressThenFailure();
-
- try {
- customizer.writeCurrentAttributes(id, data, writeContext);
- } catch (WriteFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifySwInterfaceAddDelAddressWasInvoked(
- generateSwInterfaceAddDelAddressRequest(new byte[] {-64, -88, 2, 1},
- (byte) 1, (byte) 24));
- return;
- }
- fail("WriteFailedException was expected");
- }
-
- private SwInterfaceAddDelAddress generateSwInterfaceAddDelAddressRequest(final byte[] address, final byte isAdd,
- final byte prefixLength) {
- final SwInterfaceAddDelAddress request = new SwInterfaceAddDelAddress();
- request.swIfIndex = IFACE_ID;
- request.isAdd = isAdd;
- request.isIpv6 = 0;
- request.delAll = 0;
- request.addressLength = prefixLength;
- request.address = address;
- return request;
- }
-
- @Test
- public void testDeletePrefixLengthIpv4Address() throws Exception {
- final InstanceIdentifier<Address> id = getAddressId(IFACE_NAME);
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- PrefixLength length = new PrefixLengthBuilder().setPrefixLength(new Integer(24).shortValue()).build();
- Address data = new AddressBuilder().setIp(noZoneIp).setSubnet(length).build();
-
- mockMapping(mappingContext, IFACE_NAME, IFACE_ID, IFC_CTX_NAME);
- whenSwInterfaceAddDelAddressThenSuccess();
-
- customizer.deleteCurrentAttributes(id, data, writeContext);
-
- verifySwInterfaceAddDelAddressWasInvoked(generateSwInterfaceAddDelAddressRequest(new byte[] {-64, -88, 2, 1},
- (byte) 0, (byte) 24));
- }
-
- @Test
- public void testDeletePrefixLengthIpv4AddressFailed() throws Exception {
- final InstanceIdentifier<Address> id = getAddressId(IFACE_NAME);
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- PrefixLength length = new PrefixLengthBuilder().setPrefixLength(new Integer(24).shortValue()).build();
- Address data = new AddressBuilder().setIp(noZoneIp).setSubnet(length).build();
-
- mockMapping(mappingContext, IFACE_NAME, IFACE_ID, IFC_CTX_NAME);
- whenSwInterfaceAddDelAddressThenFailure();
-
- try {
- customizer.deleteCurrentAttributes(id, data, writeContext);
- } catch (WriteFailedException e) {
- assertTrue(e.getCause() instanceof VppBaseCallException);
- verifySwInterfaceAddDelAddressWasInvoked(
- generateSwInterfaceAddDelAddressRequest(new byte[] {-64, -88, 2, 1},
- (byte) 0, (byte) 24));
- return;
- }
- fail("WriteFailedException was expec16ted");
- }
-
- private void testSingleNetmask(final int expectedPrefixLength, final String stringMask) throws Exception {
- final InstanceIdentifier<Address> id = getAddressId(IFACE_NAME);
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- Netmask subnet = new NetmaskBuilder().setNetmask(new DottedQuad(stringMask)).build();
- Address data = new AddressBuilder().setIp(noZoneIp).setSubnet(subnet).build();
-
- mockMapping(mappingContext, IFACE_NAME, IFACE_ID, IFC_CTX_NAME);
-
- final CompletableFuture<SwInterfaceAddDelAddressReply> replyFuture = new CompletableFuture<>();
- replyFuture.complete(new SwInterfaceAddDelAddressReply());
- ArgumentCaptor<SwInterfaceAddDelAddress> argumentCaptor =
- ArgumentCaptor.forClass(SwInterfaceAddDelAddress.class);
- doReturn(replyFuture).when(api).swInterfaceAddDelAddress(argumentCaptor.capture());
-
- customizer.writeCurrentAttributes(id, data, writeContext);
-
- verifySwInterfaceAddDelAddressWasInvoked(generateSwInterfaceAddDelAddressRequest(new byte[] {-64, -88, 2, 1},
- (byte) 1, (byte) expectedPrefixLength), argumentCaptor.getValue());
- }
-
- private void testSingleIllegalNetmask(final String stringMask) throws Exception {
- try {
- final InstanceIdentifier<Address> id = getAddressId(IFACE_NAME);
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- Netmask subnet = new NetmaskBuilder().setNetmask(new DottedQuad(stringMask)).build();
- Address data = new AddressBuilder().setIp(noZoneIp).setSubnet(subnet).build();
-
- mockMapping(mappingContext, IFACE_NAME, IFACE_ID, IFC_CTX_NAME);
-
- final CompletableFuture<SwInterfaceAddDelAddressReply> replyFuture = new CompletableFuture<>();
- replyFuture.complete(new SwInterfaceAddDelAddressReply());
- ArgumentCaptor<SwInterfaceAddDelAddress> argumentCaptor =
- ArgumentCaptor.forClass(SwInterfaceAddDelAddress.class);
- doReturn(replyFuture).when(api).swInterfaceAddDelAddress(argumentCaptor.capture());
-
- customizer.writeCurrentAttributes(id, data, writeContext);
- } catch (IllegalArgumentException e) {
- return;
- }
- fail("IllegalArgumentException expected");
-
- }
-
- /**
- * Test contiguous netmask length from QuadDotted notation
- */
- @Test
- public void testNetmaskLength() throws Exception {
- testSingleNetmask(1, "128.0.0.0");
- testSingleNetmask(2, "192.0.0.0");
- testSingleNetmask(8, "255.0.0.0");
- testSingleNetmask(9, "255.128.0.0");
- testSingleNetmask(16, "255.255.0.0");
- testSingleNetmask(24, "255.255.255.0");
- }
-
- @Test
- public void testNetmaskIllegal() throws Exception {
- testSingleIllegalNetmask("");
- testSingleIllegalNetmask(".");
- testSingleIllegalNetmask(".255");
- testSingleIllegalNetmask("255");
- testSingleIllegalNetmask("255.");
- testSingleIllegalNetmask("255.255");
- testSingleIllegalNetmask("255.255.0");
- testSingleIllegalNetmask("255.255.255.");
- testSingleIllegalNetmask("255.255.255.256");
- testSingleIllegalNetmask("0.0.0.0");
- testSingleIllegalNetmask("10.10.10.10");
- testSingleIllegalNetmask("255.1.255.0");
- testSingleIllegalNetmask("255.255.255.255");
- }
-
-}
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4NeighbourCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4NeighbourCustomizerTest.java
deleted file mode 100644
index 7026ee2a4..000000000
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/ip/Ipv4NeighbourCustomizerTest.java
+++ /dev/null
@@ -1,147 +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.honeycomb.v3po.translate.v3po.interfaces.ip;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import com.google.common.io.BaseEncoding;
-import io.fd.honeycomb.v3po.translate.MappingContext;
-import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.v3po.translate.v3po.util.TranslateUtils;
-import io.fd.honeycomb.v3po.translate.write.WriteContext;
-import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
-import java.util.concurrent.CompletableFuture;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.naming.context.rev160513.contexts.naming.context.mappings.Mapping;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.Interface1;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.Ipv4;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.Neighbor;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv4.NeighborBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.dto.IpNeighborAddDel;
-import org.openvpp.jvpp.dto.IpNeighborAddDelReply;
-import org.openvpp.jvpp.future.FutureJVpp;
-
-public class Ipv4NeighbourCustomizerTest {
-
- @Mock
- private FutureJVpp jvpp;
-
- @Mock
- private WriteContext context;
-
- @Mock
- private MappingContext mappingContext;
-
- @Mock
- private Mapping mapping;
-
- private ArgumentCaptor<IpNeighborAddDel> requestCaptor;
- private Ipv4NeighbourCustomizer customizer;
- private NamingContext namingContext;
-
-
- @Before
- public void init() {
- MockitoAnnotations.initMocks(this);
-
- namingContext = new NamingContext("prefix", "instance");
- namingContext.addName(5, "parent", mappingContext);
-
- customizer = new Ipv4NeighbourCustomizer(jvpp,namingContext);
-
- requestCaptor = ArgumentCaptor.forClass(IpNeighborAddDel.class);
-
- CompletableFuture<IpNeighborAddDelReply> future = new CompletableFuture<>();
- future.complete(new IpNeighborAddDelReply());
-
- when(context.getMappingContext()).thenReturn(mappingContext);
- when(mapping.getIndex()).thenReturn(5);
- when(mapping.getName()).thenReturn("parent");
- when(mappingContext.read(Mockito.any())).thenReturn(Optional.fromNullable(mapping));
- when(jvpp.ipNeighborAddDel(Mockito.any(IpNeighborAddDel.class))).thenReturn(future);
- }
-
- @Test
- public void testWriteCurrentAttributes() throws WriteFailedException {
-
- InterfaceKey intfKey = new InterfaceKey("parent");
-
- InstanceIdentifier<Neighbor> id = InstanceIdentifier.builder(Interfaces.class).child(Interface.class, intfKey)
- .augmentation(Interface1.class).child(Ipv4.class).child(Neighbor.class).build();
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- PhysAddress mac = new PhysAddress("aa:bb:cc:ee:11:22");
-
- Neighbor data = new NeighborBuilder().setIp(noZoneIp).setLinkLayerAddress(mac).build();
-
- customizer.writeCurrentAttributes(id, data, context);
-
- verify(jvpp, times(1)).ipNeighborAddDel(requestCaptor.capture());
-
- IpNeighborAddDel request = requestCaptor.getValue();
-
- assertEquals(0, request.isIpv6);
- assertEquals(1, request.isAdd);
- assertEquals(1, request.isStatic);
- assertEquals("1.2.168.192", TranslateUtils.arrayToIpv4AddressNoZone(request.dstAddress).getValue());
- assertEquals("aabbccee1122", BaseEncoding.base16().lowerCase().encode(request.macAddress));
- assertEquals(5, request.swIfIndex);
- }
-
- @Test
- public void testDeleteCurrentAttributes() throws WriteFailedException {
- InterfaceKey intfKey = new InterfaceKey("parent");
-
- InstanceIdentifier<Neighbor> id = InstanceIdentifier.builder(Interfaces.class).child(Interface.class, intfKey)
- .augmentation(Interface1.class).child(Ipv4.class).child(Neighbor.class).build();
-
- Ipv4AddressNoZone noZoneIp = new Ipv4AddressNoZone(new Ipv4Address("192.168.2.1"));
- PhysAddress mac = new PhysAddress("aa:bb:cc:ee:11:22");
-
- Neighbor data = new NeighborBuilder().setIp(noZoneIp).setLinkLayerAddress(mac).build();
-
- customizer.deleteCurrentAttributes(id, data, context);
-
- verify(jvpp, times(1)).ipNeighborAddDel(requestCaptor.capture());
-
- IpNeighborAddDel request = requestCaptor.getValue();
-
- assertEquals(0, request.isIpv6);
- assertEquals(0, request.isAdd);
- assertEquals(1, request.isStatic);
- assertEquals("1.2.168.192", TranslateUtils.arrayToIpv4AddressNoZone(request.dstAddress).getValue());
- assertEquals("aabbccee1122", BaseEncoding.base16().lowerCase().encode(request.macAddress));
- assertEquals(5, request.swIfIndex);
- }
-
-} \ No newline at end of file