From b613264e15f74cd594fb5cf02f0b602825b4936e Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Fri, 13 May 2016 10:04:11 +0200 Subject: Check expected interface type in sub-Interface nodes + Pass full WriteContext to the write customizers, making them more flexible Change-Id: I75c55aed02f9300eee20eabb4a3e84e294ed1e0f Signed-off-by: Maros Marsalek --- .../v3po/interfaces/InterfaceTypeTestUtils.java | 39 ++++++++++++++++++++++ .../v3po/interfaces/TapCustomizerTest.java | 19 +++++++---- .../v3po/interfaces/VhostUserCustomizerTest.java | 20 ++++++----- .../v3po/interfaces/VxlanCustomizerTest.java | 18 +++++----- 4 files changed, 72 insertions(+), 24 deletions(-) create mode 100644 v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/InterfaceTypeTestUtils.java (limited to 'v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces') 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 new file mode 100644 index 000000000..ff96131b1 --- /dev/null +++ b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/InterfaceTypeTestUtils.java @@ -0,0 +1,39 @@ +/* + * 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.Context; +import io.fd.honeycomb.v3po.translate.write.WriteContext; +import org.mockito.Matchers; +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; + +final class InterfaceTypeTestUtils { + + private InterfaceTypeTestUtils() {} + + static void setupWriteContext(final WriteContext writeContext, final Class ifcType) { + doReturn(new Context()).when(writeContext).getContext(); + 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/TapCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/TapCustomizerTest.java index 668eed4cf..8ae04f017 100644 --- 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 @@ -24,8 +24,8 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import io.fd.honeycomb.v3po.translate.Context; 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; @@ -53,12 +53,17 @@ public class TapCustomizerTest { @Mock private FutureJVpp vppApi; + @Mock + private WriteContext writeContext; + private NamingContext ctx; 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); ctx = new NamingContext("ifcintest"); tapCustomizer = new TapCustomizer(vppApi, ctx); } @@ -80,8 +85,8 @@ public class TapCustomizerTest { } }).when(vppApi).tapConnect(any(TapConnect.class)); - tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), new Context()); - tapCustomizer.writeCurrentAttributes(getTapId("tap2"), getTapData("tap2", "ff:ff:ff:ff:ff:ff"), new Context()); + 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)); assertTrue(ctx.containsIndex("tap")); @@ -103,8 +108,8 @@ public class TapCustomizerTest { replyModif.complete(tmodif); doReturn(replyModif).when(vppApi).tapModify(any(TapModify.class)); - tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), new Context()); - tapCustomizer.updateCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), getTapData("tap", "ff:ff:ff:ff:ff:f1"), new Context()); + tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), writeContext); + 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)); @@ -126,8 +131,8 @@ public class TapCustomizerTest { replyDelete.complete(tmodif); doReturn(replyDelete).when(vppApi).tapDelete(any(TapDelete.class)); - tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), new Context()); - tapCustomizer.deleteCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), new Context()); + tapCustomizer.writeCurrentAttributes(getTapId("tap"), getTapData("tap", "ff:ff:ff:ff:ff:ff"), writeContext); + 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)); 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 index 076df6783..15b2a75c1 100644 --- 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 @@ -29,10 +29,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.initMocks; -import io.fd.honeycomb.v3po.translate.Context; import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext; import io.fd.honeycomb.v3po.translate.v3po.util.VppApiInvocationException; import io.fd.honeycomb.v3po.translate.v3po.utils.V3poUtils; +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; @@ -62,7 +62,7 @@ public class VhostUserCustomizerTest { @Mock private FutureJVpp api; @Mock - private Context ctx; + private WriteContext writeContext; private NamingContext namingContext; private VhostUserCustomizer customizer; @@ -75,6 +75,8 @@ public class VhostUserCustomizerTest { @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); namingContext = new NamingContext("generatedInterfaceName"); // TODO create base class for tests using vppApi customizer = new VhostUserCustomizer(api, namingContext); @@ -182,7 +184,7 @@ public class VhostUserCustomizerTest { whenCreateVhostUserIfThenSuccess(); - customizer.writeCurrentAttributes(ID, vhostUser, ctx); + customizer.writeCurrentAttributes(ID, vhostUser, writeContext); verifyCreateVhostUserIfWasInvoked(vhostUser); assertTrue(namingContext.containsIndex(IFACE_NAME)); } @@ -194,7 +196,7 @@ public class VhostUserCustomizerTest { whenVxlanAddDelTunnelThenFailure(); try { - customizer.writeCurrentAttributes(ID, vhostUser, ctx); + customizer.writeCurrentAttributes(ID, vhostUser, writeContext); } catch (WriteFailedException.CreateFailedException e) { assertEquals(VppApiInvocationException.class, e.getCause().getClass()); verifyCreateVhostUserIfWasInvoked(vhostUser); @@ -212,7 +214,7 @@ public class VhostUserCustomizerTest { whenModifyVhostUserIfThenSuccess(); - customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, ctx); + customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, writeContext); verifyModifyVhostUserIfWasInvoked(vhostUserAfter, IFACE_ID); } @@ -220,7 +222,7 @@ public class VhostUserCustomizerTest { public void testUpdateCurrentAttributesNoUpdate() throws Exception { final VhostUser vhostUserBefore = generateVhostUser(VhostUserRole.Server, "socketName"); final VhostUser vhostUserAfter = generateVhostUser(VhostUserRole.Server, "socketName"); - customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, ctx); + customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, writeContext); verify(api, never()).modifyVhostUserIf(any(ModifyVhostUserIf.class)); } @@ -233,7 +235,7 @@ public class VhostUserCustomizerTest { whenModifyVhostUserIfThenFailure(); try { - customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, ctx); + customizer.updateCurrentAttributes(ID, vhostUserBefore, vhostUserAfter, writeContext); } catch (WriteFailedException.UpdateFailedException e) { assertEquals(VppApiInvocationException.class, e.getCause().getClass()); verifyModifyVhostUserIfWasInvoked(vhostUserAfter, IFACE_ID); @@ -249,7 +251,7 @@ public class VhostUserCustomizerTest { whenDeleteVhostUserIfThenSuccess(); - customizer.deleteCurrentAttributes(ID, vhostUser, ctx); + customizer.deleteCurrentAttributes(ID, vhostUser, writeContext); verifyDeleteVhostUserIfWasInvoked(IFACE_ID); assertFalse(namingContext.containsIndex(IFACE_NAME)); } @@ -262,7 +264,7 @@ public class VhostUserCustomizerTest { whenDeleteVhostUserIfThenFailure(); try { - customizer.deleteCurrentAttributes(ID, vhostUser, ctx); + customizer.deleteCurrentAttributes(ID, vhostUser, writeContext); } catch (WriteFailedException.DeleteFailedException e) { assertEquals(VppApiInvocationException.class, e.getCause().getClass()); verifyDeleteVhostUserIfWasInvoked(IFACE_ID); 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 index a599d7565..af7b4df17 100644 --- 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 @@ -29,9 +29,9 @@ import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.initMocks; import com.google.common.net.InetAddresses; -import io.fd.honeycomb.v3po.translate.Context; import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext; import io.fd.honeycomb.v3po.translate.v3po.util.VppApiInvocationException; +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; @@ -62,7 +62,7 @@ public class VxlanCustomizerTest { @Mock private FutureJVpp api; @Mock - private Context ctx; + private WriteContext writeContext; private VxlanCustomizer customizer; private NamingContext namingContext; @@ -72,6 +72,8 @@ public class VxlanCustomizerTest { @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 = new NamingContext("generateInterfaceNAme"); customizer = new VxlanCustomizer(api, namingContext); @@ -140,7 +142,7 @@ public class VxlanCustomizerTest { whenVxlanAddDelTunnelThenSuccess(); - customizer.writeCurrentAttributes(id, vxlan, ctx); + customizer.writeCurrentAttributes(id, vxlan, writeContext); verifyVxlanAddWasInvoked(vxlan); assertTrue(namingContext.containsIndex(ifaceName)); } @@ -152,7 +154,7 @@ public class VxlanCustomizerTest { whenVxlanAddDelTunnelThenFailure(); try { - customizer.writeCurrentAttributes(id, vxlan, ctx); + customizer.writeCurrentAttributes(id, vxlan, writeContext); } catch (WriteFailedException.CreateFailedException e) { assertEquals(VppApiInvocationException.class, e.getCause().getClass()); verifyVxlanAddWasInvoked(vxlan); @@ -165,7 +167,7 @@ public class VxlanCustomizerTest { @Test public void testUpdateCurrentAttributes() throws Exception { try { - customizer.updateCurrentAttributes(id, generateVxlan(10), generateVxlan(11), ctx); + customizer.updateCurrentAttributes(id, generateVxlan(10), generateVxlan(11), writeContext); } catch (WriteFailedException.UpdateFailedException e) { assertEquals(UnsupportedOperationException.class, e.getCause().getClass()); return; @@ -175,7 +177,7 @@ public class VxlanCustomizerTest { @Test public void testUpdateCurrentAttributesNoUpdate() throws Exception { - customizer.updateCurrentAttributes(id, generateVxlan(), generateVxlan(), ctx); + customizer.updateCurrentAttributes(id, generateVxlan(), generateVxlan(), writeContext); verify(api, never()).vxlanAddDelTunnel(any(VxlanAddDelTunnel.class)); } @@ -186,7 +188,7 @@ public class VxlanCustomizerTest { whenVxlanAddDelTunnelThenSuccess(); namingContext.addName(1, ifaceName); - customizer.deleteCurrentAttributes(id, vxlan, ctx); + customizer.deleteCurrentAttributes(id, vxlan, writeContext); verifyVxlanDeleteWasInvoked(vxlan); assertFalse(namingContext.containsIndex(ifaceName)); } @@ -199,7 +201,7 @@ public class VxlanCustomizerTest { namingContext.addName(1, ifaceName); try { - customizer.deleteCurrentAttributes(id, vxlan, ctx); + customizer.deleteCurrentAttributes(id, vxlan, writeContext); } catch (WriteFailedException.DeleteFailedException e) { assertEquals(VppApiInvocationException.class, e.getCause().getClass()); verifyVxlanDeleteWasInvoked(vxlan); -- cgit 1.2.3-korg