diff options
author | Sagar Srivastav <sagsriva@cisco.com> | 2016-12-19 01:42:11 -0800 |
---|---|---|
committer | Sagar Srivastav <sagsriva@cisco.com> | 2017-02-06 22:45:26 -0800 |
commit | fd88a38ef0c95452953deb2c52a07eb1232a82a5 (patch) | |
tree | 6e52e8ee92669a1924e1a6ff9fa25095f3cf219f /ioam/impl/src/test | |
parent | ffc4005f85536f9d19379cab26a1d8dd9b3c4b10 (diff) |
ioam: export plugin - support for ioam-export plugin in hc2vpp
Change-Id: I2314a2de3b9c2a1d9c2e5950659e44cb9bdda985
Signed-off-by: Sagar Srivastav <sagsriva@cisco.com>
Diffstat (limited to 'ioam/impl/src/test')
-rw-r--r-- | ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/VppIoamModuleTest.java | 35 | ||||
-rw-r--r-- | ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamExportWriterCustomizerTest.java | 165 |
2 files changed, 188 insertions, 12 deletions
diff --git a/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/VppIoamModuleTest.java b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/VppIoamModuleTest.java index c11ee2dc4..45b673218 100644 --- a/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/VppIoamModuleTest.java +++ b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/VppIoamModuleTest.java @@ -16,6 +16,14 @@ package io.fd.hc2vpp.vppioam.impl; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.Matchers.empty; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.MockitoAnnotations.initMocks; + import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Provider; @@ -27,24 +35,16 @@ import io.fd.honeycomb.translate.impl.write.registry.FlatWriterRegistryBuilder; import io.fd.honeycomb.translate.read.ReaderFactory; import io.fd.honeycomb.translate.write.WriterFactory; import io.fd.vpp.jvpp.JVppRegistry; +import io.fd.vpp.jvpp.ioamexport.future.FutureJVppIoamexportFacade; import io.fd.vpp.jvpp.ioampot.future.FutureJVppIoampotFacade; import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtraceFacade; +import java.util.HashSet; +import java.util.Set; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import java.util.HashSet; -import java.util.Set; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.Matchers.empty; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.MockitoAnnotations.initMocks; - public class VppIoamModuleTest { @@ -73,7 +73,10 @@ public class VppIoamModuleTest { initMocks(this); - Guice.createInjector(new VppIoamModule(MockJVppIoamTraceProvider.class,MockJVppIoamPotProvider.class), BoundFieldModule.of(this)).injectMembers(this); + Guice.createInjector(new VppIoamModule(MockJVppIoamTraceProvider.class, + MockJVppIoamPotProvider.class, + MockJVppIoamExportProvider.class), + BoundFieldModule.of(this)).injectMembers(this); } @Test @@ -109,5 +112,13 @@ public class VppIoamModuleTest { return mock(FutureJVppIoampotFacade.class); } } + + private static final class MockJVppIoamExportProvider implements Provider<FutureJVppIoamexportFacade> { + + @Override + public FutureJVppIoamexportFacade get() { + return mock(FutureJVppIoamexportFacade.class); + } + } } diff --git a/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamExportWriterCustomizerTest.java b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamExportWriterCustomizerTest.java new file mode 100644 index 000000000..b2dfaf308 --- /dev/null +++ b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamExportWriterCustomizerTest.java @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2016 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.vppioam.impl.config; + +import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; + +import io.fd.hc2vpp.common.test.write.WriterCustomizerTest; +import io.fd.hc2vpp.common.translate.util.Ipv4Translator; +import io.fd.honeycomb.translate.write.WriteFailedException; +import io.fd.vpp.jvpp.ioamexport.dto.IoamExportIp6EnableDisable; +import io.fd.vpp.jvpp.ioamexport.dto.IoamExportIp6EnableDisableReply; +import io.fd.vpp.jvpp.ioamexport.future.FutureJVppIoamexport; +import org.junit.Test; +import org.mockito.Mock; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.export.rev170206.IoamExport; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.export.rev170206.IoamExportBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class IoamExportWriterCustomizerTest extends WriterCustomizerTest + implements Ipv4Translator{ + + @Mock + FutureJVppIoamexport jVppIoamexport; + + private IoamExportWriterCustomizer customizer; + + private static final Logger LOG = LoggerFactory.getLogger(IoamExportWriterCustomizerTest.class); + + @Override + public void setUpTest() throws Exception { + customizer = new IoamExportWriterCustomizer(jVppIoamexport); + } + + private static IoamExport generateExportProfile(){ + IoamExportBuilder builder = new IoamExportBuilder(); + builder.setDisable(false); + builder.setSourceAddress(new Ipv4Address("127.0.0.1")); + builder.setCollectorAddress(new Ipv4Address("127.0.0.2")); + return builder.build(); + } + + private void whenExportAddThenSuccess() { + final IoamExportIp6EnableDisableReply reply = new IoamExportIp6EnableDisableReply(); + reply.context = 1; + doReturn(future(reply)).when(jVppIoamexport).ioamExportIp6EnableDisable(any(IoamExportIp6EnableDisable.class)); + } + + private void whenExportAddThenFailure() { + doReturn(failedFuture()).when(jVppIoamexport).ioamExportIp6EnableDisable(any(IoamExportIp6EnableDisable.class)); + } + + private void whenExportDelThenSuccess() { + final IoamExportIp6EnableDisableReply reply = new IoamExportIp6EnableDisableReply(); + reply.context = 1; + doReturn(future(reply)).when(jVppIoamexport).ioamExportIp6EnableDisable(any(IoamExportIp6EnableDisable.class)); + } + + private void whenExportDelThenFailure() { + doReturn(failedFuture()).when(jVppIoamexport).ioamExportIp6EnableDisable(any(IoamExportIp6EnableDisable.class)); + } + + private IoamExportIp6EnableDisable generateIoamExportIp6EnableDisable(boolean disable) { + IoamExportIp6EnableDisable request = new IoamExportIp6EnableDisable(); + request.isDisable = (byte)(disable?1:0); + request.srcAddress = ipv4AddressNoZoneToArray("127.0.0.1"); + request.collectorAddress = ipv4AddressNoZoneToArray("127.0.0.2"); + + return request; + } + + @Test + public void testCreate() throws Exception { + final IoamExport ioamExport = generateExportProfile(); + final InstanceIdentifier<IoamExport> id = InstanceIdentifier.create(IoamExport.class); + + whenExportAddThenSuccess(); + + customizer.writeCurrentAttributes(id, ioamExport, writeContext); + + verify(jVppIoamexport).ioamExportIp6EnableDisable(generateIoamExportIp6EnableDisable(false)); + } + + @Test + public void testCreateFailed() throws Exception { + final IoamExport ioamExport = generateExportProfile(); + final InstanceIdentifier<IoamExport> id = InstanceIdentifier.create(IoamExport.class); + + whenExportAddThenFailure(); + + try { + customizer.writeCurrentAttributes(id, ioamExport, writeContext); + } catch (WriteFailedException e) { + verify(jVppIoamexport).ioamExportIp6EnableDisable(generateIoamExportIp6EnableDisable(false)); + + return; + } + fail("WriteFailedException.CreateFailedException was expected"); + } + + @Test + public void testDelete() throws Exception { + final IoamExport ioamExport = generateExportProfile(); + final InstanceIdentifier<IoamExport> id = InstanceIdentifier.create(IoamExport.class); + + whenExportDelThenSuccess(); + + customizer.deleteCurrentAttributes(id, ioamExport, writeContext); + + verify(jVppIoamexport).ioamExportIp6EnableDisable(generateIoamExportIp6EnableDisable(true)); + } + + @Test + public void testDeleteFailed() throws Exception { + final IoamExport ioamExport = generateExportProfile(); + final InstanceIdentifier<IoamExport> id = InstanceIdentifier.create(IoamExport.class); + + whenExportDelThenFailure(); + + try { + customizer.deleteCurrentAttributes(id, ioamExport, writeContext); + } catch (WriteFailedException e) { + verify(jVppIoamexport).ioamExportIp6EnableDisable(generateIoamExportIp6EnableDisable(true)); + + return; + } + fail("WriteFailedException.CreateFailedException was expected"); + } + + @Test + public void testCreateWithMissingDisabledField() throws Exception { + IoamExportBuilder builder = new IoamExportBuilder(); + builder.setSourceAddress(new Ipv4Address("127.0.0.1")); + builder.setCollectorAddress(new Ipv4Address("127.0.0.2")); + final IoamExport ioamExport = builder.build(); + final InstanceIdentifier<IoamExport> id = InstanceIdentifier.create(IoamExport.class); + + whenExportAddThenSuccess(); + + customizer.writeCurrentAttributes(id, ioamExport, writeContext); + + verify(jVppIoamexport).ioamExportIp6EnableDisable(generateIoamExportIp6EnableDisable(true)); + } + +} |