X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgp%2Frib-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Frib%2Fimpl%2FBGPDispatcherImplTest.java;fp=bgp%2Frib-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Frib%2Fimpl%2FBGPDispatcherImplTest.java;h=ac5ad21ac28675a8581eebc4b7601b472cd56ce1;hb=2f0a98de2a2def1fca8c8911b318c45f952c7676;hp=ba071e847c76e92563146edc2d4e59bf2966977e;hpb=41296399260357ea6280f5b1ebab4aeca6a78d2a;p=bgpcep.git diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImplTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImplTest.java index ba071e847c..ac5ad21ac2 100755 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImplTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImplTest.java @@ -5,136 +5,29 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.protocol.bgp.rib.impl; -import static org.opendaylight.protocol.bgp.rib.impl.CheckUtil.waitFutureSuccess; + +import static org.opendaylight.protocol.bgp.rib.impl.CheckUtil.checkIdleState; +import static org.opendaylight.protocol.util.CheckUtil.waitFutureSuccess; import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.base.Stopwatch; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import com.google.common.util.concurrent.Uninterruptibles; import io.netty.channel.Channel; -import io.netty.channel.ChannelFuture; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.epoll.Epoll; -import io.netty.channel.epoll.EpollEventLoopGroup; -import io.netty.channel.nio.NioEventLoopGroup; import io.netty.util.concurrent.Future; -import io.netty.util.concurrent.GenericFutureListener; import java.net.InetSocketAddress; -import java.util.List; import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import org.junit.After; import org.junit.Assert; -import org.junit.Before; import org.junit.Test; -import org.opendaylight.protocol.bgp.parser.BGPDocumentedException; -import org.opendaylight.protocol.bgp.parser.BgpExtendedMessageUtil; -import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl; -import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext; -import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext; -import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry; -import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionPreferences; import org.opendaylight.protocol.util.InetSocketAddressUtil; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.BgpParameters; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.BgpParametersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.OptionalCapabilities; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.OptionalCapabilitiesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.optional.capabilities.CParametersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapabilityBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.CParameters1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.CParameters1Builder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.mp.capabilities.MultiprotocolCapabilityBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.BgpId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily; -import org.slf4j.LoggerFactory; - -public class BGPDispatcherImplTest { - private static final short HOLD_TIMER = 30; - private static final AsNumber AS_NUMBER = new AsNumber(30L); - private static final int RETRY_TIMER = 1; - private static final BgpTableType IPV_4_TT = new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class); - private BGPDispatcherImpl serverDispatcher; - private BGPDispatcherImpl clientDispatcher; - private BGPPeerRegistry registry; - private SimpleSessionListener clientListener; - private SimpleSessionListener serverListener; - private EventLoopGroup boss; - private EventLoopGroup worker; - private InetSocketAddress clientAddress; - - @Before - public void setUp() throws BGPDocumentedException { - if (Epoll.isAvailable()) { - this.boss = new EpollEventLoopGroup(); - this.worker = new EpollEventLoopGroup(); - } else { - this.boss = new NioEventLoopGroup(); - this.worker = new NioEventLoopGroup(); - } - this.registry = new StrictBGPPeerRegistry(); - this.clientListener = new SimpleSessionListener(); - final BGPExtensionProviderContext ctx = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance(); - this.serverDispatcher = new BGPDispatcherImpl(ctx.getMessageRegistry(), this.boss, this.worker); - configureClient(ctx); - } - - public static void checkIdleState (final SimpleSessionListener listener){ - Stopwatch sw = Stopwatch.createStarted(); - while(sw.elapsed(TimeUnit.SECONDS) <= 10) { - if (BGPSessionImpl.State.IDLE != listener.getState()){ - Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - } else { - return; - } - } - Assert.fail(); - } - - private void configureClient(final BGPExtensionProviderContext ctx) { - this.clientAddress = InetSocketAddressUtil.getRandomLoopbackInetSocketAddress(); - final IpAddress clientPeerIp = new IpAddress(new Ipv4Address(this.clientAddress.getAddress().getHostAddress())); - this.registry.addPeer(clientPeerIp, this.clientListener, createPreferences(this.clientAddress)); - this.clientDispatcher = new BGPDispatcherImpl(ctx.getMessageRegistry(), this.boss, this.worker); - } - - private Channel createServer(final InetSocketAddress serverAddress) throws InterruptedException { - this.serverListener = new SimpleSessionListener(); - this.registry.addPeer(new IpAddress(new Ipv4Address(serverAddress.getAddress().getHostAddress())), this.serverListener, createPreferences(serverAddress)); - LoggerFactory.getLogger(BGPDispatcherImplTest.class).info("createServer"); - final ChannelFuture future = this.serverDispatcher.createServer(this.registry, serverAddress); - future.addListener(new GenericFutureListener>() { - @Override - public void operationComplete(final Future future) { - Preconditions.checkArgument(future.isSuccess(), "Unable to start bgp server on %s", future.cause()); - } - }); - waitFutureSuccess(future); - return future.channel(); - } - - @After - public void tearDown() throws Exception { - this.serverDispatcher.close(); - this.registry.close(); - this.worker.shutdownGracefully().awaitUninterruptibly(); - this.boss.shutdownGracefully().awaitUninterruptibly(); - } +public class BGPDispatcherImplTest extends AbstractBGPDispatcherTest { @Test public void testCreateClient() throws InterruptedException, ExecutionException { final InetSocketAddress serverAddress = InetSocketAddressUtil.getRandomLoopbackInetSocketAddress(); final Channel serverChannel = createServer(serverAddress); - final Future futureClient = this.clientDispatcher.createClient(this.clientAddress, serverAddress, this.registry, 2, true); + final Future futureClient = this.clientDispatcher.createClient(this.clientAddress, + serverAddress, this.registry, 2, true); waitFutureSuccess(futureClient); final BGPSessionImpl session = futureClient.get(); Assert.assertEquals(BGPSessionImpl.State.UP, this.clientListener.getState()); @@ -151,9 +44,8 @@ public class BGPDispatcherImplTest { @Test public void testCreateReconnectingClient() throws Exception { final InetSocketAddress serverAddress = InetSocketAddressUtil.getRandomLoopbackInetSocketAddress(); - final Future future = this.clientDispatcher.createReconnectingClient(serverAddress, this.registry, RETRY_TIMER, Optional.absent(), - this.clientAddress, true); - waitFutureSuccess(future); + final Future future = this.clientDispatcher.createReconnectingClient(serverAddress, this.registry, + RETRY_TIMER, Optional.absent(), this.clientAddress, true); final Channel serverChannel = createServer(serverAddress); Assert.assertEquals(BGPSessionImpl.State.UP, this.serverListener.getState()); Assert.assertTrue(serverChannel.isWritable()); @@ -161,18 +53,4 @@ public class BGPDispatcherImplTest { this.serverListener.releaseConnection(); checkIdleState(this.serverListener); } - - private BGPSessionPreferences createPreferences(final InetSocketAddress socketAddress) { - final List tlvs = Lists.newArrayList(); - final List capas = Lists.newArrayList(); - capas.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().addAugmentation( - CParameters1.class, new CParameters1Builder().setMultiprotocolCapability(new MultiprotocolCapabilityBuilder() - .setAfi(IPV_4_TT.getAfi()).setSafi(IPV_4_TT.getSafi()).build()).build()) - .setAs4BytesCapability(new As4BytesCapabilityBuilder().setAsNumber(new AsNumber(30L)).build()) - .build()).build()); - capas.add(new OptionalCapabilitiesBuilder().setCParameters(BgpExtendedMessageUtil.EXTENDED_MESSAGE_CAPABILITY).build()); - tlvs.add(new BgpParametersBuilder().setOptionalCapabilities(capas).build()); - final BgpId bgpId = new BgpId(new Ipv4Address(socketAddress.getAddress().getHostAddress())); - return new BGPSessionPreferences(AS_NUMBER, HOLD_TIMER, bgpId, AS_NUMBER, tlvs, Optional.absent()); - } }