HONEYCOMB-277 - Keep-alive timeout exported 57/3957/1
authorJan Srnicek <jsrnicek@cisco.com>
Fri, 25 Nov 2016 07:43:57 +0000 (08:43 +0100)
committerJan Srnicek <jsrnicek@cisco.com>
Fri, 25 Nov 2016 07:44:13 +0000 (08:44 +0100)
Timeout exported to configurable property

Change-Id: Ic095469be4d95f6726fdcabe17a6d2e4e51ba856
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/VppStateHoneycombReaderFactory.java
v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/cfgattrs/V3poConfiguration.java
v3po/v3po2vpp/src/main/resources/honeycomb-minimal-resources/config/v3po.json
v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/V3poModuleTest.java
v3po/v3po2vpp/src/test/resources/v3po.json [new file with mode: 0644]

index 03da2c7..8fcad8f 100644 (file)
@@ -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<BridgeDomains> bridgeDomainsId = vppStateId.child(BridgeDomains.class);
         registry.addStructuralReader(bridgeDomainsId, BridgeDomainsBuilder.class);
index 6676956..f7b52ac 100644 (file)
 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);
+    }
 }
index 3366af6..66231b2 100644 (file)
@@ -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<WriterFactory> 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 (file)
index 0000000..9ea66ef
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "keepalive-delay": "30"
+}