From: Robert Varga Date: Fri, 18 Jul 2014 16:30:44 +0000 (+0200) Subject: Rework BGP timers to work with channel X-Git-Tag: release/helium~118^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=c6758c94aa35a2e034b84dd3b2b26f7d7f61ac8a;p=bgpcep.git Rework BGP timers to work with channel 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 Signed-off-by: Dana Kutenicsova --- diff --git a/bgp/controller-config/src/main/resources/initial/31-bgp.xml b/bgp/controller-config/src/main/resources/initial/31-bgp.xml index e5f0ed5d41..0ffb97d521 100644 --- a/bgp/controller-config/src/main/resources/initial/31-bgp.xml +++ b/bgp/controller-config/src/main/resources/initial/31-bgp.xml @@ -70,10 +70,6 @@ bgpspi:extensions global-bgp-extensions - - netty:netty-timer - global-timer - netty:netty-threadgroup global-boss-group diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModule.java b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModule.java index 72ebefcc41..991a093904 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModule.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModule.java @@ -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()); } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AbstractBGPSessionNegotiator.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AbstractBGPSessionNegotiator.java index bdcc81f76e..5bf1f7ade2 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AbstractBGPSessionNegotiator.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AbstractBGPSessionNegotiator.java @@ -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 promise, final Channel channel, - final BGPPeerRegistry registry, final BGPSessionValidator sessionValidator) { + public AbstractBGPSessionNegotiator(final Promise 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) { diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiator.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiator.java index 2c49463c15..b4a2e0b5cf 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiator.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiator.java @@ -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 promise, final Channel channel, - final BGPPeerRegistry registry, - final BGPSessionValidator sessionValidator) { - super(timer, promise, channel, registry, sessionValidator); + public BGPClientSessionNegotiator(final Promise 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(); } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiatorFactory.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiatorFactory.java index 1668425a18..4d12f9bb42 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiatorFactory.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPClientSessionNegotiatorFactory.java @@ -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 { 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 getSessionNegotiator(final SessionListenerFactory factory, final Channel channel, final Promise promise) { - return new BGPClientSessionNegotiator(this.timer, promise, channel, peerRegistry, validator); + return new BGPClientSessionNegotiator(promise, channel, peerRegistry, validator); } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImpl.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImpl.java index 67f845dc99..a966ab53c8 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImpl.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImpl.java @@ -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 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 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() { @Override public void initializeChannel(final SocketChannel ch, final Promise promise) { @@ -86,18 +82,17 @@ public final class BGPDispatcherImpl extends AbstractDispatcher 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 ret = super.createReconnectingClient(address, connectStrategyFactory, - reestablishStrategyFactory.createReconnectStrategy(), new PipelineInitializer() { - @Override - public void initializeChannel(final SocketChannel ch, final Promise 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 ret = super.createReconnectingClient(address, connectStrategyFactory, reestablishStrategyFactory.createReconnectStrategy(), new PipelineInitializer() { + @Override + public void initializeChannel(final SocketChannel ch, final Promise 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() { diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiator.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiator.java index f76c887b90..a554081800 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiator.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiator.java @@ -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 promise, final Channel channel, - final BGPPeerRegistry registry, - final BGPSessionValidator sessionValidator) { - super(timer, promise, channel, registry, sessionValidator); + public BGPServerSessionNegotiator(final Promise 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(); } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiatorFactory.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiatorFactory.java index 6ef5177a18..5285084468 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiatorFactory.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPServerSessionNegotiatorFactory.java @@ -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 { - 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 getSessionNegotiator(final SessionListenerFactory factory, final Channel channel, final Promise promise) { - return new BGPServerSessionNegotiator(this.timer, promise, channel, registry, validator); + return new BGPServerSessionNegotiator(promise, channel, registry, validator); } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java index c0a8fe80db..beb1489d94 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java @@ -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 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 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 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 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 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); diff --git a/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang b/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang index 825c2e8f80..c40fca060b 100644 --- a/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang +++ b/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang @@ -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 { diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModuleTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModuleTest.java index 52507d69b6..6c7ceede5a 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModuleTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModuleTest.java @@ -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; } diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModuleTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModuleTest.java index fb5f3f6450..438dc97f82 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModuleTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModuleTest.java @@ -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 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 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;} diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModuleTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModuleTest.java index 3fa6b0057c..cad3dea135 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModuleTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModuleTest.java @@ -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 getModuleFactories() { - List moduleFactories = super.getModuleFactories(); + final List 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. 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(); diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModuleTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModuleTest.java index ad4ae8e0a1..71e2237566 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModuleTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModuleTest.java @@ -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); } } diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/FSMTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/FSMTest.java index 4934db6526..caa5799c16 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/FSMTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/FSMTest.java @@ -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 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(GlobalEventExecutor.INSTANCE), this.speakerListener, peerRegistry, new BGPClientSessionValidator(new AsNumber(30L))); + this.clientSession = new BGPClientSessionNegotiator(new DefaultPromise(GlobalEventExecutor.INSTANCE), this.speakerListener, peerRegistry, new BGPClientSessionValidator(new AsNumber(30L))); doAnswer(new Answer() { @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 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); diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SpeakerSessionMock.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SpeakerSessionMock.java index 03f5f6c22d..98939e90aa 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SpeakerSessionMock.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SpeakerSessionMock.java @@ -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; } diff --git a/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java b/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java index 129039c823..0612dfac8b 100644 --- a/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java +++ b/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java @@ -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 { diff --git a/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java b/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java index 5166525d87..44b2c1313e 100644 --- a/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java +++ b/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java @@ -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, L extends SessionLi private final BGPHandlerFactory factory; public BGPSpeakerMock(final SessionNegotiatorFactory negotiatorFactory, final BGPHandlerFactory factory, - final DefaultPromise defaultPromise) { + final DefaultPromise 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, L extends SessionLi public void initializeChannel(final SocketChannel ch, final Promise 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, L extends SessionLi } }; - final SessionNegotiatorFactory snf = new BGPServerSessionNegotiatorFactory(new HashedWheelTimer(), new BGPSessionValidator() { + final SessionNegotiatorFactory snf = new BGPServerSessionNegotiatorFactory(new BGPSessionValidator() { @Override public void validate(final Open openObj, final BGPSessionPreferences prefs) throws BGPDocumentedException { // NOOP diff --git a/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv4ReachabilityTopologyBuilderModuleTest.java b/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv4ReachabilityTopologyBuilderModuleTest.java index cda3b36407..c5a2c81e1f 100644 --- a/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv4ReachabilityTopologyBuilderModuleTest.java +++ b/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv4ReachabilityTopologyBuilderModuleTest.java @@ -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); diff --git a/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv6ReachabilityTopologyBuilderModuleTest.java b/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv6ReachabilityTopologyBuilderModuleTest.java index d72ef531a1..3559499795 100644 --- a/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv6ReachabilityTopologyBuilderModuleTest.java +++ b/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/Ipv6ReachabilityTopologyBuilderModuleTest.java @@ -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); diff --git a/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/LinkstateTopologyBuilderModuleTest.java b/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/LinkstateTopologyBuilderModuleTest.java index 0792faff0a..42de52d3ef 100644 --- a/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/LinkstateTopologyBuilderModuleTest.java +++ b/bgp/topology-provider/src/test/java/org/opendaylight/controller/config/yang/bgp/topology/provider/LinkstateTopologyBuilderModuleTest.java @@ -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);