diff options
author | Sagar Srivastav <sagsriva@cisco.com> | 2016-11-24 22:17:48 -0800 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2016-12-14 11:17:46 +0000 |
commit | 179623414d44d6d85ced60b0e99a2c47a7e0bbf6 (patch) | |
tree | 08f6408c7e80147d4d643fe9392874f8d9ed65cf /ioam/impl/src/test/java | |
parent | 480bb5e951a9fe19b4b306d1e27ca74d717394c9 (diff) |
HC-256: support for iOAM - Proof Of Transit
Change-Id: Ib4260b9b11dbca7016b7b85763d9186d7add0f53
Signed-off-by: Sagar Srivastav <sagsriva@cisco.com>
Diffstat (limited to 'ioam/impl/src/test/java')
3 files changed, 230 insertions, 31 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 68b8a87c7..c11ee2dc4 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,14 +16,6 @@ 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; @@ -34,15 +26,24 @@ import io.fd.honeycomb.translate.impl.read.registry.CompositeReaderRegistryBuild import io.fd.honeycomb.translate.impl.write.registry.FlatWriterRegistryBuilder; import io.fd.honeycomb.translate.read.ReaderFactory; import io.fd.honeycomb.translate.write.WriterFactory; -import java.util.HashSet; -import java.util.Set; +import io.fd.vpp.jvpp.JVppRegistry; +import io.fd.vpp.jvpp.ioampot.future.FutureJVppIoampotFacade; +import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtraceFacade; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtraceFacade; -import io.fd.vpp.jvpp.JVppRegistry; +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 { @@ -72,7 +73,7 @@ public class VppIoamModuleTest { initMocks(this); - Guice.createInjector(new VppIoamModule(MockJVppIoamProvider.class), BoundFieldModule.of(this)).injectMembers(this); + Guice.createInjector(new VppIoamModule(MockJVppIoamTraceProvider.class,MockJVppIoamPotProvider.class), BoundFieldModule.of(this)).injectMembers(this); } @Test @@ -94,13 +95,19 @@ public class VppIoamModuleTest { assertNotNull(registryBuilder.build()); } - - private static final class MockJVppIoamProvider implements Provider<FutureJVppIoamtraceFacade> { - + private static final class MockJVppIoamTraceProvider implements Provider<FutureJVppIoamtraceFacade> { @Override public FutureJVppIoamtraceFacade get() { return mock(FutureJVppIoamtraceFacade.class); } } + + private static final class MockJVppIoamPotProvider implements Provider<FutureJVppIoampotFacade> { + + @Override + public FutureJVppIoampotFacade get() { + return mock(FutureJVppIoampotFacade.class); + } + } } diff --git a/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamPotWriterCustomizerTest.java b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamPotWriterCustomizerTest.java new file mode 100644 index 000000000..eccfd5d50 --- /dev/null +++ b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamPotWriterCustomizerTest.java @@ -0,0 +1,193 @@ +/* + * 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.Matchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; + +import io.fd.hc2vpp.common.test.write.WriterCustomizerTest; +import io.fd.honeycomb.translate.write.WriteFailedException; +import io.fd.vpp.jvpp.ioampot.dto.PotProfileAdd; +import io.fd.vpp.jvpp.ioampot.dto.PotProfileAddReply; +import io.fd.vpp.jvpp.ioampot.dto.PotProfileDel; +import io.fd.vpp.jvpp.ioampot.dto.PotProfileDelReply; +import io.fd.vpp.jvpp.ioampot.future.FutureJVppIoampot; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import org.junit.Test; +import org.mockito.Mock; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.PotProfiles; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.ProfileIndexRange; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.pot.profile.PotProfileList; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.pot.profile.PotProfileListBuilder; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.pot.profile.PotProfileListKey; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.pot.profiles.PotProfileSet; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.pot.profiles.PotProfileSetBuilder; +import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.ioam.sb.pot.rev160615.pot.profiles.PotProfileSetKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + + +public class IoamPotWriterCustomizerTest extends WriterCustomizerTest { + + @Mock + protected FutureJVppIoampot jVppIoampot; + + private IoamPotWriterCustomizer customizer; + + private static final String POT_TEST_NAME = "dummy"; + + @Override + public void setUpTest() throws Exception { + customizer = new IoamPotWriterCustomizer(jVppIoampot); + } + + private static PotProfileList generatePotProfileList() { + final PotProfileListBuilder builder= new PotProfileListBuilder(); + builder.setIndex(new ProfileIndexRange(1)); + builder.setBitmask(new BigInteger("1")); + builder.setKey(new PotProfileListKey(new ProfileIndexRange(1))); + builder.setLpc(new BigInteger("1233")); + builder.setPrimeNumber(new BigInteger("1001")); + builder.setPublicPolynomial(new BigInteger("1234")); + builder.setSecretShare(new BigInteger("1234")); + builder.setValidator(true); + builder.setValidatorKey(new BigInteger("1")); + return builder.build(); + } + + private static PotProfileSet generatePotProfileSet(){ + ArrayList<PotProfileList> potProfiles = new ArrayList<>(); + potProfiles.add(generatePotProfileList()); + PotProfileSetBuilder builder = new PotProfileSetBuilder(); + builder.setActiveProfileIndex(new ProfileIndexRange(1)); + builder.setName(POT_TEST_NAME); + builder.setPotProfileList(potProfiles); + builder.setPathIdentifier("ACL"); + return builder.build(); + } + + private static InstanceIdentifier<PotProfileSet> getPotProfileSetId(String name) { + return InstanceIdentifier.create(PotProfiles.class) + .child(PotProfileSet.class, new PotProfileSetKey(name)); + } + + private void whenPotAddThenSuccess() { + final PotProfileAddReply reply = new PotProfileAddReply(); + reply.context = 1; + doReturn(future(reply)).when(jVppIoampot).potProfileAdd(any(PotProfileAdd.class)); + } + + private void whenPotAddThenFailure() { + doReturn(failedFuture()).when(jVppIoampot).potProfileAdd(any(PotProfileAdd.class)); + } + + private void whenPotDelThenSuccess() { + final PotProfileDelReply reply = new PotProfileDelReply(); + reply.context = 1; + doReturn(future(reply)).when(jVppIoampot).potProfileDel(any(PotProfileDel.class)); + } + + private void whenPotDelThenFailure() { + doReturn(failedFuture()).when(jVppIoampot).potProfileDel(any(PotProfileDel.class)); + } + + private static PotProfileAdd generatePotProfileAdd() { + PotProfileAdd request = new PotProfileAdd(); + request.id = 1; + request.validator = 1; + request.secretKey = 1; + request.secretShare = 1234; + request.prime = 1001; + request.maxBits = 64; + request.lpc = 1233; + request.polynomialPublic = 1234; + request.listNameLen = (byte)POT_TEST_NAME.getBytes(StandardCharsets.UTF_8).length; + request.listName = POT_TEST_NAME.getBytes(StandardCharsets.UTF_8); + + return request; + } + + private static PotProfileDel generatePotProfileDel(String name) { + final PotProfileDel request = new PotProfileDel(); + request.listName = name.getBytes(StandardCharsets.UTF_8); + request.listNameLen = (byte)name.getBytes(StandardCharsets.UTF_8).length; + + return request; + } + + @Test + public void testCreate() throws Exception { + final PotProfileSet potProfileSet = generatePotProfileSet(); + final InstanceIdentifier<PotProfileSet> id = getPotProfileSetId(POT_TEST_NAME); + + whenPotAddThenSuccess(); + + customizer.writeCurrentAttributes(id, potProfileSet, writeContext); + + verify(jVppIoampot).potProfileAdd(generatePotProfileAdd()); + } + + @Test + public void testCreateFailed() throws Exception { + final PotProfileSet potProfileSet = generatePotProfileSet(); + final InstanceIdentifier<PotProfileSet> id = getPotProfileSetId(POT_TEST_NAME); + + whenPotAddThenFailure(); + + try { + customizer.writeCurrentAttributes(id, potProfileSet, writeContext); + } catch (WriteFailedException e) { + verify(jVppIoampot).potProfileAdd(generatePotProfileAdd()); + + return; + } + fail("WriteFailedException.CreateFailedException was expected"); + } + + @Test + public void testDelete() throws Exception { + final PotProfileSet potProfileSet = generatePotProfileSet(); + final InstanceIdentifier<PotProfileSet> id = getPotProfileSetId(POT_TEST_NAME); + + whenPotDelThenSuccess(); + + customizer.deleteCurrentAttributes(id, potProfileSet, writeContext); + + verify(jVppIoampot).potProfileDel(generatePotProfileDel(POT_TEST_NAME)); + } + + @Test + public void testDeleteFailed() throws Exception { + final PotProfileSet potProfileSet = generatePotProfileSet(); + final InstanceIdentifier<PotProfileSet> id = getPotProfileSetId(POT_TEST_NAME); + + whenPotDelThenFailure(); + + try { + customizer.deleteCurrentAttributes(id, potProfileSet, writeContext); + } catch (WriteFailedException e) { + verify(jVppIoampot).potProfileDel(generatePotProfileDel(POT_TEST_NAME)); + return; + } + fail("WriteFailedException.DeleteFailedException was expected"); + + customizer.deleteCurrentAttributes(id, potProfileSet, writeContext); + } +} diff --git a/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamTraceWriterCustomizerTest.java b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamTraceWriterCustomizerTest.java index c7065c0d5..334a73661 100644 --- a/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamTraceWriterCustomizerTest.java +++ b/ioam/impl/src/test/java/io/fd/hc2vpp/vppioam/impl/config/IoamTraceWriterCustomizerTest.java @@ -38,13 +38,12 @@ import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.r import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfigKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest { private static final String TRACE_NAME = "trace_test"; @Mock - protected FutureJVppIoamtrace jvppIoam; + protected FutureJVppIoamtrace jvppIoamtrace; private IoamTraceWriterCustomizer customizer; @@ -53,12 +52,12 @@ public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest { builder.setTraceConfigName(name); builder.setKey(new TraceConfigKey(name)); builder.setAclName(name); - builder.setTraceType(new Short("31")); - builder.setTraceNumElt(new Short("4")); + builder.setTraceType(Short.valueOf("31")); + builder.setTraceNumElt(Short.valueOf("4")); builder.setTraceTsp(TraceTsp.Milliseconds); builder.setTraceOp(TraceOp.Add); - builder.setTraceAppData(new Long("123")); - builder.setNodeId(new Long("1")); + builder.setTraceAppData(Long.valueOf("123")); + builder.setNodeId(Long.valueOf("1")); return builder.build(); } @@ -87,27 +86,27 @@ public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest { @Override public void setUpTest() throws Exception { - customizer = new IoamTraceWriterCustomizer(jvppIoam); + customizer = new IoamTraceWriterCustomizer(jvppIoamtrace); } private void whenTraceAddThenSuccess() { final TraceProfileAddReply reply = new TraceProfileAddReply(); reply.context = 1; - doReturn(future(reply)).when(jvppIoam).traceProfileAdd(any(TraceProfileAdd.class)); + doReturn(future(reply)).when(jvppIoamtrace).traceProfileAdd(any(TraceProfileAdd.class)); } private void whenTraceAddThenFailure() { - doReturn(failedFuture()).when(jvppIoam).traceProfileAdd(any(TraceProfileAdd.class)); + doReturn(failedFuture()).when(jvppIoamtrace).traceProfileAdd(any(TraceProfileAdd.class)); } private void whenTraceDelThenSuccess() { final TraceProfileDelReply reply = new TraceProfileDelReply(); reply.context = 1; - doReturn(future(reply)).when(jvppIoam).traceProfileDel(any(TraceProfileDel.class)); + doReturn(future(reply)).when(jvppIoamtrace).traceProfileDel(any(TraceProfileDel.class)); } private void whenTraceDelThenFailure() { - doReturn(failedFuture()).when(jvppIoam).traceProfileDel(any(TraceProfileDel.class)); + doReturn(failedFuture()).when(jvppIoamtrace).traceProfileDel(any(TraceProfileDel.class)); } @Test @@ -119,7 +118,7 @@ public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest { customizer.writeCurrentAttributes(id, traceConfig, writeContext); - verify(jvppIoam).traceProfileAdd(generateTraceProfileAdd()); + verify(jvppIoamtrace).traceProfileAdd(generateTraceProfileAdd()); } @Test @@ -133,7 +132,7 @@ public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest { customizer.writeCurrentAttributes(id, traceConfig, writeContext); } catch (WriteFailedException e) { //assertTrue(e.getCause() instanceof VppBaseCallException); - verify(jvppIoam).traceProfileAdd(generateTraceProfileAdd()); + verify(jvppIoamtrace).traceProfileAdd(generateTraceProfileAdd()); return; } @@ -150,7 +149,7 @@ public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest { customizer.deleteCurrentAttributes(id, traceConfig, writeContext); - verify(jvppIoam).traceProfileDel(generateTraceProfileDel()); + verify(jvppIoamtrace).traceProfileDel(generateTraceProfileDel()); } @Test @@ -165,7 +164,7 @@ public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest { customizer.deleteCurrentAttributes(id, traceConfig, writeContext); } catch (WriteFailedException e) { //assertTrue(e.getCause() instanceof VppBaseCallException); - verify(jvppIoam).traceProfileDel(generateTraceProfileDel()); + verify(jvppIoamtrace).traceProfileDel(generateTraceProfileDel()); return; } |