From fff56adeda975a76f441425d9c650dd93e19ae1c Mon Sep 17 00:00:00 2001 From: Jan Srnicek Date: Fri, 25 Nov 2016 08:43:57 +0100 Subject: HONEYCOMB-277 - Keep-alive timeout exported Timeout exported to configurable property Change-Id: Ic095469be4d95f6726fdcabe17a6d2e4e51ba856 Signed-off-by: Jan Srnicek --- .../io/fd/hc2vpp/v3po/VppStateHoneycombReaderFactory.java | 12 ++++++++---- .../java/io/fd/hc2vpp/v3po/cfgattrs/V3poConfiguration.java | 8 ++++++++ .../resources/honeycomb-minimal-resources/config/v3po.json | 3 ++- .../src/test/java/io/fd/hc2vpp/v3po/V3poModuleTest.java | 14 ++++++++++++-- v3po/v3po2vpp/src/test/resources/v3po.json | 3 +++ 5 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 v3po/v3po2vpp/src/test/resources/v3po.json (limited to 'v3po/v3po2vpp/src') diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/VppStateHoneycombReaderFactory.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/VppStateHoneycombReaderFactory.java index 03da2c755..8fcad8f49 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/VppStateHoneycombReaderFactory.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/VppStateHoneycombReaderFactory.java @@ -18,6 +18,10 @@ package io.fd.hc2vpp.v3po; import com.google.inject.Inject; import com.google.inject.name.Named; +import io.fd.hc2vpp.common.translate.util.NamingContext; +import io.fd.hc2vpp.common.translate.util.ReadTimeoutException; +import io.fd.hc2vpp.common.translate.util.VppStatusListener; +import io.fd.hc2vpp.v3po.cfgattrs.V3poConfiguration; import io.fd.hc2vpp.v3po.vppstate.BridgeDomainCustomizer; import io.fd.hc2vpp.v3po.vppstate.L2FibEntryCustomizer; import io.fd.hc2vpp.v3po.vppstate.VersionCustomizer; @@ -26,9 +30,6 @@ import io.fd.honeycomb.translate.impl.read.GenericReader; import io.fd.honeycomb.translate.read.ReaderFactory; import io.fd.honeycomb.translate.read.registry.ModifiableReaderRegistryBuilder; import io.fd.honeycomb.translate.util.read.KeepaliveReaderWrapper; -import io.fd.hc2vpp.common.translate.util.NamingContext; -import io.fd.hc2vpp.common.translate.util.ReadTimeoutException; -import io.fd.hc2vpp.common.translate.util.VppStatusListener; import io.fd.vpp.jvpp.core.future.FutureJVppCore; import java.util.concurrent.ScheduledExecutorService; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.VppState; @@ -50,6 +51,9 @@ public final class VppStateHoneycombReaderFactory implements ReaderFactory { private final ScheduledExecutorService keepaliveExecutor; private final VppStatusListener vppStatusListener; + @Inject + private V3poConfiguration v3poConfiguration; + @Inject public VppStateHoneycombReaderFactory(final FutureJVppCore jVpp, @Named("interface-context") final NamingContext ifcCtx, @@ -73,7 +77,7 @@ public final class VppStateHoneycombReaderFactory implements ReaderFactory { // Relying on VersionCustomizer to provide a "timing out read" registry.add(new KeepaliveReaderWrapper<>( new GenericReader<>(vppStateId.child(Version.class), new VersionCustomizer(jVpp)), - keepaliveExecutor, ReadTimeoutException.class, 30, vppStatusListener)); + keepaliveExecutor, ReadTimeoutException.class, v3poConfiguration.getKeepaliveDelay(), vppStatusListener)); // BridgeDomains(Structural) final InstanceIdentifier bridgeDomainsId = vppStateId.child(BridgeDomains.class); registry.addStructuralReader(bridgeDomainsId, BridgeDomainsBuilder.class); diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/cfgattrs/V3poConfiguration.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/cfgattrs/V3poConfiguration.java index 6676956d8..f7b52accd 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/cfgattrs/V3poConfiguration.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/cfgattrs/V3poConfiguration.java @@ -17,8 +17,16 @@ package io.fd.hc2vpp.v3po.cfgattrs; import net.jmob.guice.conf.core.BindConfig; +import net.jmob.guice.conf.core.InjectConfig; import net.jmob.guice.conf.core.Syntax; @BindConfig(value = "v3po", syntax = Syntax.JSON) public class V3poConfiguration { + + @InjectConfig("keepalive-delay") + private String keepaliveDelay; + + public int getKeepaliveDelay() { + return Integer.valueOf(this.keepaliveDelay); + } } diff --git a/v3po/v3po2vpp/src/main/resources/honeycomb-minimal-resources/config/v3po.json b/v3po/v3po2vpp/src/main/resources/honeycomb-minimal-resources/config/v3po.json index 7a73a41bf..9ea66efe8 100644 --- a/v3po/v3po2vpp/src/main/resources/honeycomb-minimal-resources/config/v3po.json +++ b/v3po/v3po2vpp/src/main/resources/honeycomb-minimal-resources/config/v3po.json @@ -1,2 +1,3 @@ { -} \ No newline at end of file + "keepalive-delay": "30" +} diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/V3poModuleTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/V3poModuleTest.java index 3366af64f..66231b2ff 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/V3poModuleTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/V3poModuleTest.java @@ -19,6 +19,7 @@ package io.fd.hc2vpp.v3po; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.Matchers.empty; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.mockito.MockitoAnnotations.initMocks; @@ -28,18 +29,19 @@ import com.google.inject.Inject; import com.google.inject.name.Named; import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; +import io.fd.hc2vpp.v3po.cfgattrs.V3poConfiguration; import io.fd.honeycomb.translate.MappingContext; -import io.fd.honeycomb.translate.read.ReaderFactory; import io.fd.honeycomb.translate.impl.read.registry.CompositeReaderRegistryBuilder; 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.core.future.FutureJVppCore; 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 io.fd.vpp.jvpp.core.future.FutureJVppCore; public class V3poModuleTest { @@ -68,6 +70,9 @@ public class V3poModuleTest { @Inject private Set writerFactories = new HashSet<>(); + @Inject + private V3poConfiguration configuration; + @Before public void setUp() { initMocks(this); @@ -93,4 +98,9 @@ public class V3poModuleTest { writerFactories.stream().forEach(factory -> factory.init(registryBuilder)); assertNotNull(registryBuilder.build()); } + + @Test + public void testConfiguration() { + assertEquals(30, configuration.getKeepaliveDelay()); + } } \ No newline at end of file diff --git a/v3po/v3po2vpp/src/test/resources/v3po.json b/v3po/v3po2vpp/src/test/resources/v3po.json new file mode 100644 index 000000000..9ea66efe8 --- /dev/null +++ b/v3po/v3po2vpp/src/test/resources/v3po.json @@ -0,0 +1,3 @@ +{ + "keepalive-delay": "30" +} -- cgit 1.2.3-korg