From 1e1547b7c39f8081ac3621264d0e27d88ba3ffc8 Mon Sep 17 00:00:00 2001 From: Michal Cmarada Date: Thu, 10 May 2018 10:14:07 +0200 Subject: HC2VPP-317 - Add FibService and FibTableService VPP doesn`t support auto create for Fib tables anymore, when adding a new route. Adding FibService to check if table exists and FibTableService to add or delete ipv4/6 fib tables. Note: Need to implement full support for Fib Table management later. Change-Id: I15bd1b62357ab24a5eac970113bfcd2a52d29491 Signed-off-by: Michal Cmarada --- .../routing/read/Ipv4RouteCustomizerTest.java | 3 +- .../routing/read/Ipv6RouteCustomizerTest.java | 3 +- .../routing/services/FibTableServiceImplTest.java | 110 +++++++++++++++++++++ .../write/ControlPlaneProtocolCustomizerTest.java | 7 +- 4 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/services/FibTableServiceImplTest.java (limited to 'routing/routing-impl/src/test') diff --git a/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/read/Ipv4RouteCustomizerTest.java b/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/read/Ipv4RouteCustomizerTest.java index 5e319e370..0ba1fe576 100644 --- a/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/read/Ipv4RouteCustomizerTest.java +++ b/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/read/Ipv4RouteCustomizerTest.java @@ -139,6 +139,7 @@ public class Ipv4RouteCustomizerTest extends ListReaderCustomizerTest argumentCaptor; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + when(api.ipTableAddDel(any())).thenReturn(future(new IpTableAddDelReply())); + when(api.ipFibDump(any())).thenReturn(future(new IpFibDetailsReplyDump())); + when(api.ip6FibDump(any())).thenReturn(future(new Ip6FibDetailsReplyDump())); + when(modificationCache.get(any())).thenReturn(null); + + } + + @Test(expected = FibTableService.FibTableDoesNotExistException.class) + public void checkTableExistTest() throws ReadFailedException, FibTableService.FibTableDoesNotExistException { + FibTableServiceImpl fibService = new FibTableServiceImpl(api, ctx.getModificationCache()); + + fibService.checkTableExist(FIB_TABLE_ID, modificationCache); + } + + @Test + public void writeIpv4Test() throws WriteFailedException { + FibTableServiceImpl fibTableService = new FibTableServiceImpl(api, ctx.getModificationCache()); + fibTableService.write(RoutingIIds.ROUTING, FIB_TABLE_ID, FIB_TABLE_NAME, false); + + verify(api, times(1)).ipTableAddDel(argumentCaptor.capture()); + + final IpTableAddDel jvppRequest = argumentCaptor.getValue(); + assertTableAddDelRequest(jvppRequest, true, false); + } + + @Test + public void writeIpv6Test() throws WriteFailedException { + FibTableServiceImpl fibTableService = new FibTableServiceImpl(api, ctx.getModificationCache()); + fibTableService.write(RoutingIIds.ROUTING, FIB_TABLE_ID, FIB_TABLE_NAME, true); + + verify(api, times(1)).ipTableAddDel(argumentCaptor.capture()); + + final IpTableAddDel jvppRequest = argumentCaptor.getValue(); + assertTableAddDelRequest(jvppRequest, true, true); + } + + private void assertTableAddDelRequest(IpTableAddDel jvppRequest, boolean isAdd, boolean isIpv6) { + assertEquals(ByteDataTranslator.INSTANCE.booleanToByte(isAdd), jvppRequest.isAdd); + assertEquals(ByteDataTranslator.INSTANCE.booleanToByte(isIpv6), jvppRequest.isIpv6); + assertEquals(FIB_TABLE_ID, jvppRequest.tableId); + Assert.assertArrayEquals(FIB_TABLE_NAME.getBytes(), jvppRequest.name); + } +} diff --git a/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/ControlPlaneProtocolCustomizerTest.java b/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/ControlPlaneProtocolCustomizerTest.java index fa25520ca..b4cf64ead 100644 --- a/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/ControlPlaneProtocolCustomizerTest.java +++ b/routing/routing-impl/src/test/java/io/fd/hc2vpp/routing/write/ControlPlaneProtocolCustomizerTest.java @@ -23,9 +23,11 @@ import static org.junit.Assert.fail; import io.fd.hc2vpp.common.test.write.WriterCustomizerTest; import io.fd.hc2vpp.common.translate.util.NamingContext; +import io.fd.hc2vpp.routing.services.FibTableService; import io.fd.honeycomb.translate.write.WriteFailedException; import org.junit.Before; import org.junit.Test; +import org.mockito.Mock; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Direct; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Static; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.routing.control.plane.protocols.ControlPlaneProtocol; @@ -45,6 +47,9 @@ public class ControlPlaneProtocolCustomizerTest extends WriterCustomizerTest { private ControlPlaneProtocolCustomizer customizer; private NamingContext routingProtocolContext; + @Mock + protected FibTableService fibTableService; + @Before public void init() { validId = InstanceIdentifier.create(ControlPlaneProtocol.class); @@ -73,7 +78,7 @@ public class ControlPlaneProtocolCustomizerTest extends WriterCustomizerTest { .build(); routingProtocolContext = new NamingContext("routing-protocol", "routing-protocol-context"); - customizer = new ControlPlaneProtocolCustomizer(routingProtocolContext); + customizer = new ControlPlaneProtocolCustomizer(routingProtocolContext, fibTableService); } @Test -- cgit 1.2.3-korg