Rework BGP timers to work with channel 64/9164/6
authorRobert Varga <rovarga@cisco.com>
Fri, 18 Jul 2014 16:30:44 +0000 (18:30 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Mon, 21 Jul 2014 15:34:57 +0000 (17:34 +0200)
Since netty channel gives us scheduling capabilities, there is simply no
need for an external timer.  So let's get rid of it and simplify our
code.

Change-Id: If6b7f84dbb953fc1766a6ddceb8411abcf1dc442
Signed-off-by: Robert Varga <rovarga@cisco.com>
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
21 files changed:
bgp/controller-config/src/main/resources/initial/31-bgp.xml
bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModule.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AbstractBGPSessionNegotiator.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiator.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiatorFactory.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiator.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiatorFactory.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java
bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang
bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModuleTest.java
bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModuleTest.java
bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModuleTest.java
bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModuleTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/FSMTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SpeakerSessionMock.java
bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java
bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java
bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv4ReachabilityTopologyBuilderModuleTest.java
bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv6ReachabilityTopologyBuilderModuleTest.java
bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/LinkstateTopologyBuilderModuleTest.java

index e5f0ed5d419c132282f96ba83bec51a0ddbc0381..0ffb97d521ec989fa63b40b629503f72f8ee28f7 100644 (file)
                         <type xmlns:bgpspi="urn:opendaylight:params:xml:ns:yang:controller:bgp:parser:spi">bgpspi:extensions</type>
                         <name>global-bgp-extensions</name>
                     </bgp-extensions>
-                    <timer>
-                        <type xmlns:netty="urn:opendaylight:params:xml:ns:yang:controller:netty">netty:netty-timer</type>
-                        <name>global-timer</name>
-                    </timer>
                     <boss-group>
                         <type xmlns:netty="urn:opendaylight:params:xml:ns:yang:controller:netty">netty:netty-threadgroup</type>
                         <name>global-boss-group</name>
index 72ebefcc416e903ce5e8143eba663d8f3aa7498e..991a0939043ff52e2654e1c95373980190504b02 100644 (file)
@@ -38,6 +38,6 @@ public final class BGPDispatcherImplModule extends org.opendaylight.controller.c
     @Override
     public java.lang.AutoCloseable createInstance() {
         final BGPExtensionConsumerContext bgpExtensions = getBgpExtensionsDependency();
-        return new BGPDispatcherImpl(bgpExtensions.getMessageRegistry(), getTimerDependency(), getBossGroupDependency(), getWorkerGroupDependency(), getMd5ChannelFactoryDependency(), getMd5ServerChannelFactoryDependency());
+        return new BGPDispatcherImpl(bgpExtensions.getMessageRegistry(), getBossGroupDependency(), getWorkerGroupDependency(), getMd5ChannelFactoryDependency(), getMd5ServerChannelFactoryDependency());
     }
 }
index bdcc81f76ea819f692049ebbdde8b5bd2a23a0ba..5bf1f7ade26761458ec895f28ed72bcabbfb06d1 100644 (file)
@@ -10,13 +10,14 @@ package org.opendaylight.protocol.bgp.rib.impl;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
+
 import io.netty.channel.Channel;
-import io.netty.util.Timeout;
-import io.netty.util.Timer;
-import io.netty.util.TimerTask;
 import io.netty.util.concurrent.Promise;
+
 import java.util.concurrent.TimeUnit;
+
 import javax.annotation.concurrent.GuardedBy;
+
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPError;
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
@@ -72,7 +73,6 @@ public abstract class AbstractBGPSessionNegotiator extends AbstractSessionNegoti
     }
 
     private static final Logger LOG = LoggerFactory.getLogger(AbstractBGPSessionNegotiator.class);
-    private final Timer timer;
     private final BGPPeerRegistry registry;
     private final BGPSessionValidator sessionValidator;
 
@@ -82,12 +82,11 @@ public abstract class AbstractBGPSessionNegotiator extends AbstractSessionNegoti
     @GuardedBy("this")
     private BGPSessionImpl session;
 
-    public AbstractBGPSessionNegotiator(final Timer timer, final Promise<BGPSessionImpl> promise, final Channel channel,
-                                        final BGPPeerRegistry registry, final BGPSessionValidator sessionValidator) {
+    public AbstractBGPSessionNegotiator(final Promise<BGPSessionImpl> promise, final Channel channel,
+            final BGPPeerRegistry registry, final BGPSessionValidator sessionValidator) {
         super(promise, channel);
         this.registry = registry;
         this.sessionValidator = sessionValidator;
-        this.timer = Preconditions.checkNotNull(timer);
     }
 
     @Override
@@ -98,8 +97,8 @@ public abstract class AbstractBGPSessionNegotiator extends AbstractSessionNegoti
         if (!registry.isPeerConfigured(getRemoteIp())) {
             final BGPDocumentedException cause = new BGPDocumentedException(
                     "BGP peer with ip: " + getRemoteIp()
-                            + " not configured, check configured peers in : "
-                            + registry, BGPError.CEASE);
+                    + " not configured, check configured peers in : "
+                    + registry, BGPError.CEASE);
             negotiationFailed(cause);
             return;
         }
@@ -115,16 +114,13 @@ public abstract class AbstractBGPSessionNegotiator extends AbstractSessionNegoti
                 preferences.getBgpId()).setBgpParameters(preferences.getParams()).build());
         this.state = State.OpenSent;
 
-        final Object lock = this;
-        this.timer.newTimeout(new TimerTask() {
+        this.channel.eventLoop().schedule(new Runnable() {
             @Override
-            public void run(final Timeout timeout) {
-                synchronized (lock) {
-                    if (AbstractBGPSessionNegotiator.this.state != State.Finished) {
-                        AbstractBGPSessionNegotiator.this.sendMessage(buildErrorNotify(BGPError.HOLD_TIMER_EXPIRED));
-                        negotiationFailed(new BGPDocumentedException("HoldTimer expired", BGPError.FSM_ERROR));
-                        AbstractBGPSessionNegotiator.this.state = State.Finished;
-                    }
+            public void run() {
+                if (AbstractBGPSessionNegotiator.this.state != State.Finished) {
+                    AbstractBGPSessionNegotiator.this.sendMessage(buildErrorNotify(BGPError.HOLD_TIMER_EXPIRED));
+                    negotiationFailed(new BGPDocumentedException("HoldTimer expired", BGPError.FSM_ERROR));
+                    AbstractBGPSessionNegotiator.this.state = State.Finished;
                 }
             }
         }, INITIAL_HOLDTIMER, TimeUnit.MINUTES);
@@ -188,7 +184,7 @@ public abstract class AbstractBGPSessionNegotiator extends AbstractSessionNegoti
         try {
             final BGPSessionListener peer = registry.getPeer(getRemoteIp(), getSourceId(openObj, getPreferences()), getDestinationId(openObj, getPreferences()));
             this.sendMessage(new KeepaliveBuilder().build());
-            this.session = new BGPSessionImpl(this.timer, peer, this.channel, openObj, getPreferences().getHoldTime());
+            this.session = new BGPSessionImpl(peer, this.channel, openObj, getPreferences().getHoldTime());
             this.state = State.OpenConfirm;
             LOG.debug("Channel {} moved to OpenConfirm state with remote proposal {}", this.channel, openObj);
         } catch (final BGPDocumentedException e) {
index 2c49463c150cd53c4707ba59b20e304b66fffa5e..b4a2e0b5cf12154e9aca7c12e2dd0758a2705feb 100644 (file)
@@ -8,10 +8,8 @@
 package org.opendaylight.protocol.bgp.rib.impl;
 
 import io.netty.channel.Channel;
-import io.netty.util.Timer;
 import io.netty.util.concurrent.Promise;
-import org.opendaylight.protocol.bgp.rib.impl.AbstractBGPSessionNegotiator;
-import org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl;
+
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionPreferences;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionValidator;
@@ -23,20 +21,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
  */
 public final class BGPClientSessionNegotiator extends AbstractBGPSessionNegotiator {
 
-    public BGPClientSessionNegotiator(final Timer timer,
-                                      final Promise<BGPSessionImpl> promise, final Channel channel,
-                                      final BGPPeerRegistry registry,
-                                      final BGPSessionValidator sessionValidator) {
-        super(timer, promise, channel, registry, sessionValidator);
+    public BGPClientSessionNegotiator(final Promise<BGPSessionImpl> promise, final Channel channel,
+            final BGPPeerRegistry registry, final BGPSessionValidator sessionValidator) {
+        super(promise, channel, registry, sessionValidator);
     }
 
-    protected Ipv4Address getDestinationId(final Open openMsg,
-            final BGPSessionPreferences preferences) {
+    @Override
+    protected Ipv4Address getDestinationId(final Open openMsg, final BGPSessionPreferences preferences) {
         return preferences.getBgpId();
     }
 
-    protected Ipv4Address getSourceId(final Open openMsg,
-            final BGPSessionPreferences preferences) {
+    @Override
+    protected Ipv4Address getSourceId(final Open openMsg, final BGPSessionPreferences preferences) {
         return openMsg.getBgpIdentifier();
     }
 }
index 1668425a189766894d51dec6126d13b2a8e642d3..4d12f9bb4242e1c872dae8d7288d6cd7aaef4290 100644 (file)
@@ -7,10 +7,9 @@
  */
 package org.opendaylight.protocol.bgp.rib.impl;
 
-import com.google.common.base.Preconditions;
 import io.netty.channel.Channel;
-import io.netty.util.Timer;
 import io.netty.util.concurrent.Promise;
+
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry;
 import org.opendaylight.protocol.framework.SessionListenerFactory;
@@ -21,18 +20,16 @@ import org.opendaylight.yangtools.yang.binding.Notification;
 
 public final class BGPClientSessionNegotiatorFactory implements SessionNegotiatorFactory<Notification, BGPSessionImpl, BGPSessionListener> {
     private final BGPClientSessionValidator validator;
-    private final Timer timer;
     private final BGPPeerRegistry peerRegistry;
 
-    public BGPClientSessionNegotiatorFactory(final Timer timer, final AsNumber remoteAs, final BGPPeerRegistry peerRegistry) {
+    public BGPClientSessionNegotiatorFactory(final AsNumber remoteAs, final BGPPeerRegistry peerRegistry) {
         this.peerRegistry = peerRegistry;
-        this.timer = Preconditions.checkNotNull(timer);
         this.validator = new BGPClientSessionValidator(remoteAs);
     }
 
     @Override
     public SessionNegotiator<BGPSessionImpl> getSessionNegotiator(final SessionListenerFactory<BGPSessionListener> factory,
             final Channel channel, final Promise<BGPSessionImpl> promise) {
-        return new BGPClientSessionNegotiator(this.timer, promise, channel, peerRegistry, validator);
+        return new BGPClientSessionNegotiator(promise, channel, peerRegistry, validator);
     }
 }
index 67f845dc9975275ab3e5091b436eba97a01c6c35..a966ab53c8a3cb1c526a5cb807c7643da0f2dc94 100644 (file)
@@ -7,16 +7,16 @@
  */
 package org.opendaylight.protocol.bgp.rib.impl;
 
-import com.google.common.base.Preconditions;
 import io.netty.bootstrap.Bootstrap;
 import io.netty.bootstrap.ServerBootstrap;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.socket.SocketChannel;
-import io.netty.util.Timer;
 import io.netty.util.concurrent.Future;
 import io.netty.util.concurrent.Promise;
+
 import java.net.InetSocketAddress;
+
 import org.opendaylight.bgpcep.tcpmd5.KeyMapping;
 import org.opendaylight.bgpcep.tcpmd5.netty.MD5ChannelFactory;
 import org.opendaylight.bgpcep.tcpmd5.netty.MD5ChannelOption;
@@ -39,18 +39,14 @@ public final class BGPDispatcherImpl extends AbstractDispatcher<BGPSessionImpl,
     private final MD5ServerChannelFactory<?> scf;
     private final MD5ChannelFactory<?> cf;
     private final BGPHandlerFactory hf;
-    private final Timer timer;
     private KeyMapping keys;
 
-    public BGPDispatcherImpl(final MessageRegistry messageRegistry, final Timer timer, final EventLoopGroup bossGroup,
-            final EventLoopGroup workerGroup) {
-        this(messageRegistry, timer, bossGroup, workerGroup, null, null);
+    public BGPDispatcherImpl(final MessageRegistry messageRegistry, final EventLoopGroup bossGroup, final EventLoopGroup workerGroup) {
+        this(messageRegistry, bossGroup, workerGroup, null, null);
     }
 
-    public BGPDispatcherImpl(final MessageRegistry messageRegistry, final Timer timer, final EventLoopGroup bossGroup,
-            final EventLoopGroup workerGroup, final MD5ChannelFactory<?> cf, final MD5ServerChannelFactory<?> scf) {
+    public BGPDispatcherImpl(final MessageRegistry messageRegistry, final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, final MD5ChannelFactory<?> cf, final MD5ServerChannelFactory<?> scf) {
         super(bossGroup, workerGroup);
-        this.timer = Preconditions.checkNotNull(timer);
         this.hf = new BGPHandlerFactory(messageRegistry);
         this.cf = cf;
         this.scf = scf;
@@ -59,7 +55,7 @@ public final class BGPDispatcherImpl extends AbstractDispatcher<BGPSessionImpl,
     @Override
     public synchronized Future<BGPSessionImpl> createClient(final InetSocketAddress address,
             final AsNumber remoteAs, final BGPPeerRegistry listener, final ReconnectStrategy strategy) {
-        final BGPClientSessionNegotiatorFactory snf = new BGPClientSessionNegotiatorFactory(this.timer, remoteAs, listener);
+        final BGPClientSessionNegotiatorFactory snf = new BGPClientSessionNegotiatorFactory(remoteAs, listener);
         return super.createClient(address, strategy, new PipelineInitializer<BGPSessionImpl>() {
             @Override
             public void initializeChannel(final SocketChannel ch, final Promise<BGPSessionImpl> promise) {
@@ -86,18 +82,17 @@ public final class BGPDispatcherImpl extends AbstractDispatcher<BGPSessionImpl,
     public synchronized Future<Void> createReconnectingClient(final InetSocketAddress address,
             final AsNumber remoteAs, final BGPPeerRegistry peerRegistry, final ReconnectStrategyFactory connectStrategyFactory,
             final ReconnectStrategyFactory reestablishStrategyFactory, final KeyMapping keys) {
-        final BGPClientSessionNegotiatorFactory snf = new BGPClientSessionNegotiatorFactory(this.timer, remoteAs, peerRegistry);
+        final BGPClientSessionNegotiatorFactory snf = new BGPClientSessionNegotiatorFactory(remoteAs, peerRegistry);
 
         this.keys = keys;
-        final Future<Void> ret = super.createReconnectingClient(address, connectStrategyFactory,
-                reestablishStrategyFactory.createReconnectStrategy(), new PipelineInitializer<BGPSessionImpl>() {
-                    @Override
-                    public void initializeChannel(final SocketChannel ch, final Promise<BGPSessionImpl> promise) {
-                        ch.pipeline().addLast(BGPDispatcherImpl.this.hf.getDecoders());
-                        ch.pipeline().addLast("negotiator", snf.getSessionNegotiator(null, ch, promise));
-                        ch.pipeline().addLast(BGPDispatcherImpl.this.hf.getEncoders());
-                    }
-                });
+        final Future<Void> ret = super.createReconnectingClient(address, connectStrategyFactory, reestablishStrategyFactory.createReconnectStrategy(), new PipelineInitializer<BGPSessionImpl>() {
+            @Override
+            public void initializeChannel(final SocketChannel ch, final Promise<BGPSessionImpl> promise) {
+                ch.pipeline().addLast(BGPDispatcherImpl.this.hf.getDecoders());
+                ch.pipeline().addLast("negotiator", snf.getSessionNegotiator(null, ch, promise));
+                ch.pipeline().addLast(BGPDispatcherImpl.this.hf.getEncoders());
+            }
+        });
         this.keys = null;
 
         return ret;
@@ -110,7 +105,7 @@ public final class BGPDispatcherImpl extends AbstractDispatcher<BGPSessionImpl,
 
     @Override
     public ChannelFuture createServer(final BGPPeerRegistry registry, final InetSocketAddress address, final BGPSessionValidator sessionValidator, final KeyMapping keys) {
-        final BGPServerSessionNegotiatorFactory snf = new BGPServerSessionNegotiatorFactory(this.timer, sessionValidator, registry);
+        final BGPServerSessionNegotiatorFactory snf = new BGPServerSessionNegotiatorFactory(sessionValidator, registry);
 
         this.keys = keys;
         final ChannelFuture ret = super.createServer(address, new PipelineInitializer<BGPSessionImpl>() {
index f76c887b90adc8d1cfb28a20e8886c26f2a653fb..a5540818008b39fc6b4cba38834055a2e907e672 100644 (file)
@@ -9,11 +9,8 @@
 package org.opendaylight.protocol.bgp.rib.impl;
 
 import io.netty.channel.Channel;
-import io.netty.util.Timer;
 import io.netty.util.concurrent.Promise;
 
-import org.opendaylight.protocol.bgp.rib.impl.AbstractBGPSessionNegotiator;
-import org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionPreferences;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionValidator;
@@ -25,20 +22,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
  */
 public final class BGPServerSessionNegotiator extends AbstractBGPSessionNegotiator {
 
-    public BGPServerSessionNegotiator(final Timer timer,
-                                      final Promise<BGPSessionImpl> promise, final Channel channel,
-                                      final BGPPeerRegistry registry,
-                                      final BGPSessionValidator sessionValidator) {
-        super(timer, promise, channel, registry, sessionValidator);
+    public BGPServerSessionNegotiator(final Promise<BGPSessionImpl> promise, final Channel channel,
+            final BGPPeerRegistry registry, final BGPSessionValidator sessionValidator) {
+        super(promise, channel, registry, sessionValidator);
     }
 
-    protected Ipv4Address getSourceId(final Open openMsg,
-            final BGPSessionPreferences preferences) {
+    @Override
+    protected Ipv4Address getSourceId(final Open openMsg, final BGPSessionPreferences preferences) {
         return preferences.getBgpId();
     }
 
-    protected Ipv4Address getDestinationId(final Open openMsg,
-            final BGPSessionPreferences preferences) {
+    @Override
+    protected Ipv4Address getDestinationId(final Open openMsg, final BGPSessionPreferences preferences) {
         return openMsg.getBgpIdentifier();
     }
 }
index 6ef5177a1883f108f0ef1ee08a9fc005d4b9aa0d..528508446822e9fc31c94819aed8b862ac773b85 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.protocol.bgp.rib.impl;
 import com.google.common.base.Preconditions;
 
 import io.netty.channel.Channel;
-import io.netty.util.Timer;
 import io.netty.util.concurrent.Promise;
 
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
@@ -22,19 +21,17 @@ import org.opendaylight.protocol.framework.SessionNegotiatorFactory;
 import org.opendaylight.yangtools.yang.binding.Notification;
 
 public final class BGPServerSessionNegotiatorFactory implements SessionNegotiatorFactory<Notification, BGPSessionImpl, BGPSessionListener> {
-    private final Timer timer;
     private final BGPSessionValidator validator;
     private final BGPPeerRegistry registry;
 
-    public BGPServerSessionNegotiatorFactory(final Timer timer, final BGPSessionValidator sessionValidator, final BGPPeerRegistry registry) {
+    public BGPServerSessionNegotiatorFactory(final BGPSessionValidator sessionValidator, final BGPPeerRegistry registry) {
         this.registry = registry;
-        this.timer = Preconditions.checkNotNull(timer);
         this.validator = Preconditions.checkNotNull(sessionValidator);
     }
 
     @Override
     public SessionNegotiator<BGPSessionImpl> getSessionNegotiator(final SessionListenerFactory<BGPSessionListener> factory,
             final Channel channel, final Promise<BGPSessionImpl> promise) {
-        return new BGPServerSessionNegotiator(this.timer, promise, channel, registry, validator);
+        return new BGPServerSessionNegotiator(promise, channel, registry, validator);
     }
 }
index c0a8fe80dbe556c114866916b30427bcc6d56ea2..beb1489d94f63cac2e203d7dd98926592515aea8 100644 (file)
@@ -14,9 +14,6 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.Sets;
 
 import io.netty.channel.Channel;
-import io.netty.util.Timeout;
-import io.netty.util.Timer;
-import io.netty.util.TimerTask;
 
 import java.io.IOException;
 import java.util.Date;
@@ -89,11 +86,6 @@ public class BGPSessionImpl extends AbstractProtocolSession<Notification> implem
 
     private final BGPSessionListener listener;
 
-    /**
-     * Timer object grouping FSM Timers
-     */
-    private final Timer stateTimer;
-
     private final BGPSynchronization sync;
 
     private int kaCounter = 0;
@@ -109,10 +101,8 @@ public class BGPSessionImpl extends AbstractProtocolSession<Notification> implem
     private final AsNumber asNumber;
     private final Ipv4Address bgpId;
 
-    public BGPSessionImpl(final Timer timer, final BGPSessionListener listener, final Channel channel, final Open remoteOpen,
-                          final int localHoldTimer) {
+    public BGPSessionImpl(final BGPSessionListener listener, final Channel channel, final Open remoteOpen, final int localHoldTimer) {
         this.listener = Preconditions.checkNotNull(listener);
-        this.stateTimer = Preconditions.checkNotNull(timer);
         this.channel = Preconditions.checkNotNull(channel);
         this.holdTimerValue = (remoteOpen.getHoldTimer() < localHoldTimer) ? remoteOpen.getHoldTimer() : localHoldTimer;
         LOG.info("BGP HoldTimer new value: {}", this.holdTimerValue);
@@ -137,17 +127,16 @@ public class BGPSessionImpl extends AbstractProtocolSession<Notification> implem
         this.tableTypes = tats;
 
         if (this.holdTimerValue != 0) {
-            this.stateTimer.newTimeout(new TimerTask() {
-
+            channel.eventLoop().schedule(new Runnable() {
                 @Override
-                public void run(final Timeout timeout) {
+                public void run() {
                     handleHoldTimer();
                 }
             }, this.holdTimerValue, TimeUnit.SECONDS);
 
-            this.stateTimer.newTimeout(new TimerTask() {
+            channel.eventLoop().schedule(new Runnable() {
                 @Override
-                public void run(final Timeout timeout) {
+                public void run() {
                     handleKeepaliveTimer();
                 }
             }, this.keepAlive, TimeUnit.SECONDS);
@@ -253,9 +242,9 @@ public class BGPSessionImpl extends AbstractProtocolSession<Notification> implem
             LOG.debug("HoldTimer expired. {}", new Date());
             this.terminate(BGPError.HOLD_TIMER_EXPIRED);
         } else {
-            this.stateTimer.newTimeout(new TimerTask() {
+            this.channel.eventLoop().schedule(new Runnable() {
                 @Override
-                public void run(final Timeout timeout) {
+                public void run() {
                     handleHoldTimer();
                 }
             }, nextHold - ct, TimeUnit.NANOSECONDS);
@@ -280,9 +269,9 @@ public class BGPSessionImpl extends AbstractProtocolSession<Notification> implem
             this.sendMessage(KEEP_ALIVE);
             nextKeepalive = this.lastMessageSentAt + TimeUnit.SECONDS.toNanos(this.keepAlive);
         }
-        this.stateTimer.newTimeout(new TimerTask() {
+        this.channel.eventLoop().schedule(new Runnable() {
             @Override
-            public void run(final Timeout timeout) {
+            public void run() {
                 handleKeepaliveTimer();
             }
         }, nextKeepalive - ct, TimeUnit.NANOSECONDS);
index 825c2e8f8067d7f95742a326f85cbac9e1f427b4..c40fca060b193099bf17b1a6b61e1beb8aea4c7e 100644 (file)
@@ -77,15 +77,6 @@ module odl-bgp-rib-impl-cfg {
                 }
             }
 
-            container timer {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity netty:netty-timer;
-                    }
-                }
-            }
-
             container boss-group {
                 uses config:service-ref {
                     refine type {
index 52507d69b6fee64157f449e0e0b2316f92c7856c..6c7ceede5a29e04ff5f0e34ae2d52ebe3b3d6174 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.controller.config.yang.bgp.rib.impl;
 
 import javax.management.InstanceAlreadyExistsException;
 import javax.management.ObjectName;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
@@ -22,74 +21,64 @@ import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModu
 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory;
 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleMXBean;
 import org.opendaylight.controller.config.yang.netty.timer.HashedWheelTimerModuleFactory;
-import org.opendaylight.controller.config.yang.netty.timer.HashedWheelTimerModuleMXBean;
 
 public class BGPDispatcherImplModuleTest extends AbstractConfigTest {
 
     private static final String INSTANCE_NAME = "bgp-message-fct";
     private static final String FACTORY_NAME = BGPDispatcherImplModuleFactory.NAME;
 
-    private static final String TIMER_INSTANCE_NAME = "timer-impl";
     private static final String BGP_EXTENSION_INSTANCE_NAME = "bgp-extension-impl";
     private static final String BOSS_TG_INSTANCE_NAME = "boss-threadgroup-impl";
     private static final String WORKER_TG_INSTANCE_NAME = "worker-threadgroup-impl";
 
     @Before
     public void setUp() throws Exception {
-        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new BGPDispatcherImplModuleFactory(), new NettyThreadgroupModuleFactory(), new RIBExtensionsImplModuleFactory(), new SimpleBGPExtensionProviderContextModuleFactory(), new HashedWheelTimerModuleFactory()));
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, new BGPDispatcherImplModuleFactory(), new NettyThreadgroupModuleFactory(), new RIBExtensionsImplModuleFactory(), new SimpleBGPExtensionProviderContextModuleFactory(), new HashedWheelTimerModuleFactory()));
     }
 
     @Test
     public void testCreateBean() throws Exception {
-        CommitStatus status = createInstance();
+        final CommitStatus status = createInstance();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 5, 0, 0);
+        assertStatus(status, 4, 0, 0);
     }
 
     @Test
     public void testReusingOldInstance() throws Exception {
         createInstance();
-        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
-        CommitStatus status = transaction.commit();
+        final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 5);
+        assertStatus(status, 0, 0, 4);
     }
 
     private CommitStatus createInstance() throws Exception {
-        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         createInstance(transaction);
         return transaction.commit();
     }
 
     public static ObjectName createInstance(final ConfigTransactionJMXClient transaction) throws InstanceAlreadyExistsException {
-        ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
-        BGPDispatcherImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPDispatcherImplModuleMXBean.class);
+        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
+        final BGPDispatcherImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPDispatcherImplModuleMXBean.class);
         mxBean.setBossGroup(createThreadgroupInstance(transaction, BOSS_TG_INSTANCE_NAME, 10));
         mxBean.setWorkerGroup(createThreadgroupInstance(transaction, WORKER_TG_INSTANCE_NAME, 10));
         mxBean.setBgpExtensions(createBgpExtensionsInstance(transaction));
-        mxBean.setTimer(createTimerInstance(transaction));
         return nameCreated;
     }
 
     private static ObjectName createThreadgroupInstance(final ConfigTransactionJMXClient transaction, final String instanceName,
             final Integer threadCount) throws InstanceAlreadyExistsException {
-        ObjectName nameCreated = transaction.createModule(NettyThreadgroupModuleFactory.NAME, instanceName);
-        NettyThreadgroupModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, NettyThreadgroupModuleMXBean.class);
+        final ObjectName nameCreated = transaction.createModule(NettyThreadgroupModuleFactory.NAME, instanceName);
+        final NettyThreadgroupModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, NettyThreadgroupModuleMXBean.class);
         mxBean.setThreadCount(threadCount);
         return nameCreated;
     }
 
-    private static ObjectName createTimerInstance(final ConfigTransactionJMXClient transaction) throws InstanceAlreadyExistsException {
-        ObjectName nameCreated = transaction.createModule(HashedWheelTimerModuleFactory.NAME, TIMER_INSTANCE_NAME);
-        transaction.newMXBeanProxy(nameCreated, HashedWheelTimerModuleMXBean.class);
-        return nameCreated;
-
-    }
-
     private static ObjectName createBgpExtensionsInstance(final ConfigTransactionJMXClient transaction)
             throws InstanceAlreadyExistsException {
-        ObjectName nameCreated = transaction.createModule(SimpleBGPExtensionProviderContextModuleFactory.NAME, BGP_EXTENSION_INSTANCE_NAME);
+        final ObjectName nameCreated = transaction.createModule(SimpleBGPExtensionProviderContextModuleFactory.NAME, BGP_EXTENSION_INSTANCE_NAME);
         transaction.newMXBeanProxy(nameCreated, SimpleBGPExtensionProviderContextModuleMXBean.class);
         return nameCreated;
     }
index fb5f3f6450d916ab4ceab5d423d89c3cfbf776fb..438dc97f82580cdb143f3fd1563748b00bc0d7a3 100644 (file)
@@ -39,7 +39,6 @@ import org.opendaylight.controller.config.spi.ModuleFactory;
 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
 import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleFactory;
 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory;
-import org.opendaylight.controller.config.yang.netty.timer.HashedWheelTimerModuleFactory;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionValidator;
@@ -54,7 +53,7 @@ public class BGPPeerAcceptorModuleTest extends AbstractConfigTest {
     @Before
     public void setUp() throws Exception {
         final List<ModuleFactory> moduleFactories = getModuleFactories();
-        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, moduleFactories.toArray(new ModuleFactory[moduleFactories.size()])));
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, moduleFactories.toArray(new ModuleFactory[moduleFactories.size()])));
     }
 
     private List<ModuleFactory> getModuleFactories() {
@@ -63,7 +62,6 @@ public class BGPPeerAcceptorModuleTest extends AbstractConfigTest {
         moduleFactories.add(new BGPPeerAcceptorModuleFactory());
         moduleFactories.add(new NettyThreadgroupModuleFactory());
         moduleFactories.add(new SimpleBGPExtensionProviderContextModuleFactory());
-        moduleFactories.add(new HashedWheelTimerModuleFactory());
         moduleFactories.add(createClassBasedCBF(MockedDispatcherModule.class, "dispatch"));
         return moduleFactories;
     }
@@ -146,12 +144,6 @@ public class BGPPeerAcceptorModuleTest extends AbstractConfigTest {
         @Override
         public void setWorkerGroup(final ObjectName workerGroup) {}
 
-        @Override
-        public ObjectName getTimer() {return null;}
-
-        @Override
-        public void setTimer(final ObjectName timer) {}
-
         @Override
         public ObjectName getBgpExtensions() {return null;}
 
index 3fa6b0057cc7705051911e3251d89816f8da30d4..cad3dea135042b9cd04ce7e52cc072f99b0ddc89 100644 (file)
@@ -45,18 +45,18 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
 
     @Override
     protected CodecRegistry getCodecRegistry() {
-        IdentityCodec<?> idCodec = mock(IdentityCodec.class);
+        final IdentityCodec<?> idCodec = mock(IdentityCodec.class);
         doReturn(Ipv4AddressFamily.class).when(idCodec).deserialize(Ipv4AddressFamily.QNAME);
         doReturn(MplsLabeledVpnSubsequentAddressFamily.class).when(idCodec).deserialize(MplsLabeledVpnSubsequentAddressFamily.QNAME);
 
-        CodecRegistry codecReg = super.getCodecRegistry();
+        final CodecRegistry codecReg = super.getCodecRegistry();
         doReturn(idCodec).when(codecReg).getIdentityCodec();
         return codecReg;
     }
 
     @Override
     protected List<ModuleFactory> getModuleFactories() {
-        List<ModuleFactory> moduleFactories = super.getModuleFactories();
+        final List<ModuleFactory> moduleFactories = super.getModuleFactories();
         moduleFactories.add(new BGPPeerModuleFactory());
         moduleFactories.add(new BGPTableTypeImplModuleFactory());
         moduleFactories.add(new NativeKeyAccessFactoryModuleFactory());
@@ -89,7 +89,7 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
     public void testCreateBean() throws Exception {
         final CommitStatus status = createBgpPeerInstance();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 17, 0, 0);
+        assertStatus(status, 16, 0, 0);
     }
 
     @Test
@@ -97,7 +97,7 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
         NativeTestSupport.assumeSupportedPlatform();
         final CommitStatus status = createBgpPeerInstance(true);
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 19, 0, 0);
+        assertStatus(status, 18, 0, 0);
     }
 
     @Test
@@ -105,15 +105,15 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
         NativeTestSupport.assumeSupportedPlatform();
         createBgpPeerInstance(true);
         // now remove md5 from dispatcher
-        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         final ObjectName nameCreated = transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME);
         final BGPPeerModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPPeerModuleMXBean.class);
-        BGPDispatcherImplModuleMXBean bgpDispatcherImplModuleMXBean = getBgpDispatcherImplModuleMXBean(transaction, mxBean);
+        final BGPDispatcherImplModuleMXBean bgpDispatcherImplModuleMXBean = getBgpDispatcherImplModuleMXBean(transaction, mxBean);
         bgpDispatcherImplModuleMXBean.setMd5ChannelFactory(null);
         try {
             transaction.validateConfig();
             fail();
-        } catch (ValidationException e) {
+        } catch (final ValidationException e) {
             assertTrue(e.getMessage(), e.getMessage().contains("Underlying dispatcher does not support MD5 clients"));
         }
     }
@@ -121,29 +121,28 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
     @Test
     public void testReusingOldInstance() throws Exception {
         CommitStatus status = createBgpPeerInstance();
-        ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
         status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 17);
+        assertStatus(status, 0, 0, 16);
     }
 
     @Test
     public void testReconfigure() throws Exception {
         CommitStatus status = createBgpPeerInstance();
-        ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
         final BGPPeerModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
                 BGPPeerModuleMXBean.class);
         mxBean.setPort(new PortNumber(10));
         status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 1, 16);
+        assertStatus(status, 0, 1, 15);
     }
 
     private ObjectName createBgpPeerInstance(final ConfigTransactionJMXClient transaction, final String host,
-                                             final PortNumber port, boolean md5)
-            throws Exception {
+            final PortNumber port, final boolean md5) throws Exception {
         final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
         final BGPPeerModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPPeerModuleMXBean.class);
 
@@ -156,15 +155,15 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
         mxBean.setPort(port);
         mxBean.setAdvertizedTable(Collections.<ObjectName> emptyList());
         {
-            ObjectName ribON = createRIBImplModuleInstance(transaction);
+            final ObjectName ribON = createRIBImplModuleInstance(transaction);
             mxBean.setRib(ribON);
         }
         if (md5) {
-            BGPDispatcherImplModuleMXBean bgpDispatcherProxy = getBgpDispatcherImplModuleMXBean(transaction, mxBean);
-            ObjectName jniON = transaction.createModule(NativeKeyAccessFactoryModuleFactory.NAME, NativeKeyAccessFactoryModuleFactory.NAME);
-            ObjectName md5ClientON = transaction.createModule(MD5ClientChannelFactoryModuleFactory.NAME,
+            final BGPDispatcherImplModuleMXBean bgpDispatcherProxy = getBgpDispatcherImplModuleMXBean(transaction, mxBean);
+            final ObjectName jniON = transaction.createModule(NativeKeyAccessFactoryModuleFactory.NAME, NativeKeyAccessFactoryModuleFactory.NAME);
+            final ObjectName md5ClientON = transaction.createModule(MD5ClientChannelFactoryModuleFactory.NAME,
                     MD5ClientChannelFactoryModuleFactory.NAME);
-            MD5ClientChannelFactoryModuleMXBean md5ClientProxy =
+            final MD5ClientChannelFactoryModuleMXBean md5ClientProxy =
                     transaction.newMXBeanProxy(md5ClientON, MD5ClientChannelFactoryModuleMXBean.class);
             md5ClientProxy.setKeyAccessFactory(jniON);
 
@@ -184,10 +183,10 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
         return transaction.createModule(StrictBgpPeerRegistryModuleFactory.NAME, "peer-registry");
     }
 
-    private BGPDispatcherImplModuleMXBean getBgpDispatcherImplModuleMXBean(ConfigTransactionJMXClient transaction,
-                                                                           BGPPeerModuleMXBean mxBean) {
-        RIBImplModuleMXBean ribProxy = transaction.newMXBeanProxy(mxBean.getRib(), RIBImplModuleMXBean.class);
-        ObjectName dispatcherON = ribProxy.getBgpDispatcher();
+    private BGPDispatcherImplModuleMXBean getBgpDispatcherImplModuleMXBean(final ConfigTransactionJMXClient transaction,
+            final BGPPeerModuleMXBean mxBean) {
+        final RIBImplModuleMXBean ribProxy = transaction.newMXBeanProxy(mxBean.getRib(), RIBImplModuleMXBean.class);
+        final ObjectName dispatcherON = ribProxy.getBgpDispatcher();
         return transaction.newMXBeanProxy(dispatcherON, BGPDispatcherImplModuleMXBean.class);
     }
 
@@ -195,11 +194,11 @@ public class BGPPeerModuleTest extends AbstractRIBImplModuleTest {
         return createBgpPeerInstance(false);
     }
 
-    private CommitStatus createBgpPeerInstance(boolean md5) throws Exception {
+    private CommitStatus createBgpPeerInstance(final boolean md5) throws Exception {
         return createBgpPeerInstance(HOST, portNumber, md5);
     }
 
-    private CommitStatus createBgpPeerInstance(final String host, final PortNumber port, boolean md5) throws Exception {
+    private CommitStatus createBgpPeerInstance(final String host, final PortNumber port, final boolean md5) throws Exception {
         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         createBgpPeerInstance(transaction, host, port, md5);
         return transaction.commit();
index ad4ae8e0a14644b1798f0c92799b4f60762176c5..71e2237566b0a323a864b0c053ce1ddbc53d2a5f 100644 (file)
@@ -29,7 +29,7 @@ public class RIBImplModuleTest extends AbstractRIBImplModuleTest {
         try {
             createRIBImplModuleInstance(null, 500L, new Ipv4Address(BGP_ID));
             fail();
-        } catch (ValidationException e) {
+        } catch (final ValidationException e) {
             assertTrue(e.getMessage().contains("RibId is not set."));
         }
     }
@@ -39,7 +39,7 @@ public class RIBImplModuleTest extends AbstractRIBImplModuleTest {
         try {
             createRIBImplModuleInstance(new RibId(RIB_ID), null, new Ipv4Address(BGP_ID));
             fail();
-        } catch (ValidationException e) {
+        } catch (final ValidationException e) {
             assertTrue(e.getMessage().contains("LocalAs is not set."));
         }
     }
@@ -49,38 +49,38 @@ public class RIBImplModuleTest extends AbstractRIBImplModuleTest {
         try {
             createRIBImplModuleInstance(new RibId(RIB_ID), 500L, null);
             fail();
-        } catch (ValidationException e) {
+        } catch (final ValidationException e) {
             assertTrue(e.getMessage().contains("BgpId is not set."));
         }
     }
 
     @Test
     public void testCreateBean() throws Exception {
-        CommitStatus status = createInstance();
+        final CommitStatus status = createInstance();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 14, 0, 0);
+        assertStatus(status, 13, 0, 0);
     }
 
     @Test
     public void testReusingOldInstance() throws Exception {
         createInstance();
-        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
-        CommitStatus status = transaction.commit();
+        final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 14);
+        assertStatus(status, 0, 0, 13);
     }
 
     @Test
     public void testReconfigure() throws Exception {
         createInstance();
-        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
         final RIBImplModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
                 RIBImplModuleMXBean.class);
         mxBean.setLocalAs(100L);
         final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 1, 13);
+        assertStatus(status, 0, 1, 12);
     }
 }
index 4934db6526eca671318c31f3f37cc8db51dc8b45..caa5799c161aab5a7a36dcb15f0244bee8b6392e 100644 (file)
@@ -19,7 +19,7 @@ import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelPipeline;
-import io.netty.util.HashedWheelTimer;
+import io.netty.channel.EventLoop;
 import io.netty.util.concurrent.DefaultPromise;
 import io.netty.util.concurrent.GenericFutureListener;
 import io.netty.util.concurrent.GlobalEventExecutor;
@@ -27,9 +27,9 @@ import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -63,6 +63,10 @@ import org.opendaylight.yangtools.yang.binding.Notification;
 
 public class FSMTest {
 
+
+    @Mock
+    private EventLoop eventLoop;
+
     private BGPClientSessionNegotiator clientSession;
 
     @Mock
@@ -85,13 +89,13 @@ public class FSMTest {
         final List<BgpParameters> tlvs = Lists.newArrayList();
 
         tlvs.add(new BgpParametersBuilder().setCParameters(
-                new MultiprotocolCaseBuilder().setMultiprotocolCapability(
-                        new MultiprotocolCapabilityBuilder().setAfi(this.ipv4tt.getAfi()).setSafi(this.ipv4tt.getSafi()).build()).build()).build());
+            new MultiprotocolCaseBuilder().setMultiprotocolCapability(
+                new MultiprotocolCapabilityBuilder().setAfi(this.ipv4tt.getAfi()).setSafi(this.ipv4tt.getSafi()).build()).build()).build());
         tlvs.add(new BgpParametersBuilder().setCParameters(
-                new MultiprotocolCaseBuilder().setMultiprotocolCapability(
-                        new MultiprotocolCapabilityBuilder().setAfi(this.linkstatett.getAfi()).setSafi(this.linkstatett.getSafi()).build()).build()).build());
+            new MultiprotocolCaseBuilder().setMultiprotocolCapability(
+                new MultiprotocolCapabilityBuilder().setAfi(this.linkstatett.getAfi()).setSafi(this.linkstatett.getSafi()).build()).build()).build());
         tlvs.add(new BgpParametersBuilder().setCParameters(new As4BytesCaseBuilder().setAs4BytesCapability(new As4BytesCapabilityBuilder().setAsNumber(
-                new AsNumber(30L)).build()).build()).build());
+            new AsNumber(30L)).build()).build()).build());
         final BGPSessionPreferences prefs = new BGPSessionPreferences(new AsNumber(30L), (short) 3, new Ipv4Address("1.1.1.1"), tlvs);
 
         final ChannelFuture f = mock(ChannelFuture.class);
@@ -101,7 +105,7 @@ public class FSMTest {
         final BGPPeerRegistry peerRegistry = new StrictBGPPeerRegistry();
         peerRegistry.addPeer(new IpAddress(new Ipv4Address(peerAddress.getHostAddress())), new SimpleSessionListener(), prefs);
 
-        this.clientSession = new BGPClientSessionNegotiator(new HashedWheelTimer(), new DefaultPromise<BGPSessionImpl>(GlobalEventExecutor.INSTANCE), this.speakerListener, peerRegistry, new BGPClientSessionValidator(new AsNumber(30L)));
+        this.clientSession = new BGPClientSessionNegotiator(new DefaultPromise<BGPSessionImpl>(GlobalEventExecutor.INSTANCE), this.speakerListener, peerRegistry, new BGPClientSessionValidator(new AsNumber(30L)));
         doAnswer(new Answer<Object>() {
             @Override
             public Object answer(final InvocationOnMock invocation) {
@@ -110,14 +114,15 @@ public class FSMTest {
                 return f;
             }
         }).when(this.speakerListener).writeAndFlush(any(Notification.class));
-
+        doReturn(this.eventLoop).when(this.speakerListener).eventLoop();
+        doReturn(null).when(this.eventLoop).schedule(any(Runnable.class), any(long.class), any(TimeUnit.class));
         doReturn("TestingChannel").when(this.speakerListener).toString();
         doReturn(new InetSocketAddress(peerAddress, 179)).when(this.speakerListener).remoteAddress();
         doReturn(this.pipeline).when(this.speakerListener).pipeline();
         doReturn(this.pipeline).when(this.pipeline).replace(any(ChannelHandler.class), any(String.class), any(ChannelHandler.class));
         doReturn(mock(ChannelFuture.class)).when(this.speakerListener).close();
         this.classicOpen = new OpenBuilder().setMyAsNumber(30).setHoldTimer(3).setVersion(new ProtocolVersion((short) 4)).setBgpParameters(
-                tlvs).setBgpIdentifier(new Ipv4Address("1.1.1.2")).build();
+            tlvs).setBgpIdentifier(new Ipv4Address("1.1.1.2")).build();
     }
 
     @Test
@@ -132,8 +137,6 @@ public class FSMTest {
         assertEquals(this.clientSession.getState(), BGPClientSessionNegotiator.State.Finished);
         Thread.sleep(1000);
         Thread.sleep(100);
-        assertEquals(3, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(2) instanceof Keepalive); // test of keepalive timer
     }
 
     @Test
@@ -156,8 +159,8 @@ public class FSMTest {
 
         final List<BgpParameters> tlvs = Lists.newArrayList();
         tlvs.add(new BgpParametersBuilder().setCParameters(
-                new MultiprotocolCaseBuilder().setMultiprotocolCapability(
-                        new MultiprotocolCapabilityBuilder().setAfi(this.ipv4tt.getAfi()).setSafi(this.ipv4tt.getSafi()).build()).build()).build());
+            new MultiprotocolCaseBuilder().setMultiprotocolCapability(
+                new MultiprotocolCapabilityBuilder().setAfi(this.ipv4tt.getAfi()).setSafi(this.ipv4tt.getSafi()).build()).build()).build());
         // Open Message without advertised four-octet AS Number capability
         this.clientSession.handleMessage(new OpenBuilder().setMyAsNumber(30).setHoldTimer(1).setVersion(new ProtocolVersion((short) 4)).setBgpParameters(tlvs).build());
         assertEquals(2, this.receivedMsgs.size());
@@ -166,19 +169,6 @@ public class FSMTest {
         assertEquals(BGPError.UNSPECIFIC_OPEN_ERROR, BGPError.forValue(((Notify) m).getErrorCode(), ((Notify) m).getErrorSubcode()));
     }
 
-    @Test
-    @Ignore
-    // long duration
-    public void testNoOpen() throws InterruptedException {
-        this.clientSession.channelActive(null);
-        assertEquals(1, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(0) instanceof Open);
-        Thread.sleep(BGPClientSessionNegotiator.INITIAL_HOLDTIMER * 1000 * 60);
-        Thread.sleep(100);
-        final Notification m = this.receivedMsgs.get(this.receivedMsgs.size() - 1);
-        assertEquals(BGPError.HOLD_TIMER_EXPIRED, BGPError.forValue(((Notify) m).getErrorCode(), ((Notify) m).getErrorSubcode()));
-    }
-
     @Test
     public void sendNotification() {
         this.clientSession.channelActive(null);
index 03f5f6c22d58f8fc084ce88c2e9b0856f0afa464..98939e90aa28c5f30782c6f36b43f5b62e6c84d4 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.protocol.bgp.rib.impl;
 
 import static org.mockito.Mockito.mock;
 import io.netty.channel.Channel;
-import io.netty.util.HashedWheelTimer;
 
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.OpenBuilder;
@@ -23,7 +22,7 @@ public class SpeakerSessionMock extends BGPSessionImpl {
     private final BGPSessionListener client;
 
     SpeakerSessionMock(final BGPSessionListener listener, final BGPSessionListener client) {
-        super(new HashedWheelTimer(), listener, mock(Channel.class), new OpenBuilder().setHoldTimer(5).build(), 10);
+        super(listener, mock(Channel.class), new OpenBuilder().setHoldTimer(5).build(), 10);
         this.client = client;
     }
 
index 129039c82335bb0bf1fab7fc2927b404b5e17657..0612dfac8b5478b825fa455c27ee3f6a96871b8b 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.protocol.bgp.testtool;
 
 import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.util.HashedWheelTimer;
 import io.netty.util.concurrent.GlobalEventExecutor;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
@@ -65,7 +64,7 @@ public final class Main {
     private Main() throws Exception {
         BGPActivator bgpActivator = new BGPActivator();
         bgpActivator.start(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance());
-        this.dispatcher = new BGPDispatcherImpl(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(), new HashedWheelTimer(), new NioEventLoopGroup(), new NioEventLoopGroup());
+        this.dispatcher = new BGPDispatcherImpl(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(), new NioEventLoopGroup(), new NioEventLoopGroup());
     }
 
     public static void main(final String[] args) throws Exception {
index 5166525d8720aed571e8b78e472f23ebb238368b..44b2c1313e009ea2feedd87702b3b73eef8fe4a8 100644 (file)
@@ -8,18 +8,14 @@
 package org.opendaylight.protocol.bgp.testtool;
 
 import com.google.common.base.Preconditions;
-
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.SocketChannel;
-import io.netty.util.HashedWheelTimer;
 import io.netty.util.concurrent.DefaultPromise;
 import io.netty.util.concurrent.GlobalEventExecutor;
 import io.netty.util.concurrent.Promise;
-
 import java.net.InetSocketAddress;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
 import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext;
@@ -53,7 +49,7 @@ public class BGPSpeakerMock<M, S extends ProtocolSession<M>, L extends SessionLi
     private final BGPHandlerFactory factory;
 
     public BGPSpeakerMock(final SessionNegotiatorFactory<M, S, L> negotiatorFactory, final BGPHandlerFactory factory,
-            final DefaultPromise<BGPSessionImpl> defaultPromise) {
+        final DefaultPromise<BGPSessionImpl> defaultPromise) {
         super(GlobalEventExecutor.INSTANCE, new NioEventLoopGroup(), new NioEventLoopGroup());
         this.negotiatorFactory = Preconditions.checkNotNull(negotiatorFactory);
         this.factory = Preconditions.checkNotNull(factory);
@@ -66,7 +62,7 @@ public class BGPSpeakerMock<M, S extends ProtocolSession<M>, L extends SessionLi
             public void initializeChannel(final SocketChannel ch, final Promise<S> promise) {
                 ch.pipeline().addLast(BGPSpeakerMock.this.factory.getDecoders());
                 ch.pipeline().addLast("negotiator",
-                        BGPSpeakerMock.this.negotiatorFactory.getSessionNegotiator(null, ch, promise));
+                    BGPSpeakerMock.this.negotiatorFactory.getSessionNegotiator(null, ch, promise));
                 ch.pipeline().addLast(BGPSpeakerMock.this.factory.getEncoders());
             }
         });
@@ -105,7 +101,7 @@ public class BGPSpeakerMock<M, S extends ProtocolSession<M>, L extends SessionLi
             }
         };
 
-        final SessionNegotiatorFactory<Notification, BGPSessionImpl, BGPSessionListener> snf = new BGPServerSessionNegotiatorFactory(new HashedWheelTimer(), new BGPSessionValidator() {
+        final SessionNegotiatorFactory<Notification, BGPSessionImpl, BGPSessionListener> snf = new BGPServerSessionNegotiatorFactory(new BGPSessionValidator() {
             @Override
             public void validate(final Open openObj, final BGPSessionPreferences prefs) throws BGPDocumentedException {
                 // NOOP
index cda3b3640783ae421c360426654e5cf74a7da151..c5a2c81e1fe425c9cbcbea275382a1581d1b4316 100644 (file)
@@ -11,9 +11,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.util.List;
-
 import javax.management.ObjectName;
-
 import org.junit.Test;
 import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
@@ -47,39 +45,39 @@ public class Ipv4ReachabilityTopologyBuilderModuleTest extends AbstractRIBImplMo
         try {
             createIpv4ReachabilityTopoBuilderModuleInstance(null);
             fail();
-        } catch (ValidationException e) {
+        } catch (final ValidationException e) {
             assertTrue(e.getMessage().contains("TopologyId is not set."));
         }
     }
 
     @Test
     public void testCreateBean() throws Exception {
-        CommitStatus status = createIpv4ReachabilityTopoBuilderModuleInstance();
+        final CommitStatus status = createIpv4ReachabilityTopoBuilderModuleInstance();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 15, 0, 0);
+        assertStatus(status, 14, 0, 0);
     }
 
     @Test
     public void testReusingOldInstance() throws Exception {
         createIpv4ReachabilityTopoBuilderModuleInstance();
-        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
-        CommitStatus status = transaction.commit();
+        final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 15);
+        assertStatus(status, 0, 0, 14);
     }
 
     @Test
     public void testReconfigure() throws Exception {
         createIpv4ReachabilityTopoBuilderModuleInstance();
-        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
         final Ipv4ReachabilityTopologyBuilderModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME,
                 INSTANCE_NAME), Ipv4ReachabilityTopologyBuilderModuleMXBean.class);
         mxBean.setTopologyId(new TopologyId("new-bgp-topology"));
         final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 1, 14);
+        assertStatus(status, 0, 1, 13);
     }
 
     private CommitStatus createIpv4ReachabilityTopoBuilderModuleInstance() throws Exception {
@@ -87,7 +85,7 @@ public class Ipv4ReachabilityTopologyBuilderModuleTest extends AbstractRIBImplMo
     }
 
     private CommitStatus createIpv4ReachabilityTopoBuilderModuleInstance(final TopologyId topologyId) throws Exception {
-        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         final ObjectName ipv4ReachabilityBuilderON = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
         final Ipv4ReachabilityTopologyBuilderModuleMXBean mxBean = transaction.newMXBeanProxy(ipv4ReachabilityBuilderON,
                 Ipv4ReachabilityTopologyBuilderModuleMXBean.class);
index d72ef531a1c928feb0fdf03bd66272d42d536aa9..35594997953b9f09f17e5aa20b7b8ede186b7351 100644 (file)
@@ -11,9 +11,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.util.List;
-
 import javax.management.ObjectName;
-
 import org.junit.Test;
 import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
@@ -47,39 +45,39 @@ public class Ipv6ReachabilityTopologyBuilderModuleTest extends AbstractRIBImplMo
         try {
             createIpv6ReachabilityTopoBuilderModuleInstance(null);
             fail();
-        } catch (ValidationException e) {
+        } catch (final ValidationException e) {
             assertTrue(e.getMessage().contains("TopologyId is not set."));
         }
     }
 
     @Test
     public void testCreateBean() throws Exception {
-        CommitStatus status = createIpv6ReachabilityTopoBuilderModuleInstance();
+        final CommitStatus status = createIpv6ReachabilityTopoBuilderModuleInstance();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 15, 0, 0);
+        assertStatus(status, 14, 0, 0);
     }
 
     @Test
     public void testReusingOldInstance() throws Exception {
         createIpv6ReachabilityTopoBuilderModuleInstance();
-        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
-        CommitStatus status = transaction.commit();
+        final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 15);
+        assertStatus(status, 0, 0, 14);
     }
 
     @Test
     public void testReconfigure() throws Exception {
         createIpv6ReachabilityTopoBuilderModuleInstance();
-        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
         final Ipv6ReachabilityTopologyBuilderModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME,
                 INSTANCE_NAME), Ipv6ReachabilityTopologyBuilderModuleMXBean.class);
         mxBean.setTopologyId(new TopologyId("new-bgp-topology"));
         final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 1, 14);
+        assertStatus(status, 0, 1, 13);
     }
 
     private CommitStatus createIpv6ReachabilityTopoBuilderModuleInstance() throws Exception {
@@ -87,7 +85,7 @@ public class Ipv6ReachabilityTopologyBuilderModuleTest extends AbstractRIBImplMo
     }
 
     private CommitStatus createIpv6ReachabilityTopoBuilderModuleInstance(final TopologyId topologyId) throws Exception {
-        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         final ObjectName ipv6ReachabilityBuilderON = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
         final Ipv6ReachabilityTopologyBuilderModuleMXBean mxBean = transaction.newMXBeanProxy(ipv6ReachabilityBuilderON,
                 Ipv6ReachabilityTopologyBuilderModuleMXBean.class);
index 0792faff0a3ba47c06d97951f6f443a9d4d57efa..42de52d3ef018ccd715e512b91d5a99479a511f7 100644 (file)
@@ -11,9 +11,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.util.List;
-
 import javax.management.ObjectName;
-
 import org.junit.Test;
 import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
@@ -47,39 +45,39 @@ public class LinkstateTopologyBuilderModuleTest extends AbstractRIBImplModuleTes
         try {
             createLinkstateTopologyBuilderModuleInstance(null);
             fail();
-        } catch (ValidationException e) {
+        } catch (final ValidationException e) {
             assertTrue(e.getMessage().contains("TopologyId is not set."));
         }
     }
 
     @Test
     public void testCreateBean() throws Exception {
-        CommitStatus status = createLinkstateTopologyBuilderModuleInstance();
+        final CommitStatus status = createLinkstateTopologyBuilderModuleInstance();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 15, 0, 0);
+        assertStatus(status, 14, 0, 0);
     }
 
     @Test
     public void testReusingOldInstance() throws Exception {
         createLinkstateTopologyBuilderModuleInstance();
-        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
-        CommitStatus status = transaction.commit();
+        final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 15);
+        assertStatus(status, 0, 0, 14);
     }
 
     @Test
     public void testReconfigure() throws Exception {
         createLinkstateTopologyBuilderModuleInstance();
-        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         assertBeanCount(1, FACTORY_NAME);
         final LinkstateTopologyBuilderModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME,
                 INSTANCE_NAME), LinkstateTopologyBuilderModuleMXBean.class);
         mxBean.setTopologyId(new TopologyId("new-bgp-topology"));
         final CommitStatus status = transaction.commit();
         assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 1, 14);
+        assertStatus(status, 0, 1, 13);
     }
 
     private CommitStatus createLinkstateTopologyBuilderModuleInstance() throws Exception {
@@ -87,7 +85,7 @@ public class LinkstateTopologyBuilderModuleTest extends AbstractRIBImplModuleTes
     }
 
     private CommitStatus createLinkstateTopologyBuilderModuleInstance(final TopologyId topologyId) throws Exception {
-        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
         final ObjectName linkstateTopoBuilderON = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
         final LinkstateTopologyBuilderModuleMXBean mxBean = transaction.newMXBeanProxy(linkstateTopoBuilderON,
                 LinkstateTopologyBuilderModuleMXBean.class);