fix timing issue in server creation for BmpMockTest 90/74390/6
authorMatej Perina <matej.perina@pantheon.tech>
Tue, 24 Jul 2018 10:55:24 +0000 (12:55 +0200)
committerClaudio David Gasparini <claudio.gasparini@pantheon.tech>
Thu, 26 Jul 2018 08:33:45 +0000 (08:33 +0000)
- add wait unitl server is created

Change-Id: Id217822e57be8c7df1139341af9ade2517dad516
JIRA: BGPCEP-815
Signed-off-by: Matej Perina <matej.perina@pantheon.tech>
bmp/bmp-mock/src/main/java/org/opendaylight/protocol/bmp/mock/BmpMock.java
bmp/bmp-mock/src/test/java/org/opendaylight/protocol/bmp/mock/BmpMockTest.java

index 8562c2859e575c8af884861aad19818d749144e5..f167efc78822bc0174f49f76aa78613d373584b4 100644 (file)
@@ -9,8 +9,11 @@
 package org.opendaylight.protocol.bmp.mock;
 
 import com.google.common.net.InetAddresses;
+import io.netty.channel.ChannelFuture;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
+import java.util.ArrayList;
+import java.util.List;
 import org.opendaylight.protocol.bgp.parser.impl.BGPActivator;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
 import org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleBGPExtensionProviderContext;
@@ -31,17 +34,7 @@ public final class BmpMock {
     }
 
     public static void main(final String[] args) {
-        LOG.info("Starting BMP test tool.");
-        final BmpMockArguments arguments = BmpMockArguments.parseArguments(args);
-        LoggerUtil.initiateLogger(arguments);
-
-        final BmpMockDispatcher dispatcher = initiateMock(arguments);
-        // now start the server / client
-        if (arguments.isOnPassiveMode()) {
-            deployServers(dispatcher, arguments);
-        } else {
-            deployClients(dispatcher, arguments);
-        }
+        deploy(args);
     }
 
 
@@ -56,26 +49,46 @@ public final class BmpMock {
         return new BmpMockDispatcher(ctx.getBmpMessageRegistry(), new BmpMockSessionFactory(arguments));
     }
 
-    private static void deployClients(final BmpMockDispatcher dispatcher, final BmpMockArguments arguments) {
+    private static List<ChannelFuture> deployClients(final BmpMockDispatcher dispatcher,
+                                                     final BmpMockArguments arguments) {
         final InetSocketAddress localAddress = arguments.getLocalAddress();
         InetAddress currentLocal = localAddress.getAddress();
         final int port = localAddress.getPort();
+        final List<ChannelFuture> futureClients = new ArrayList<>();
         for (int i = 0; i < arguments.getRoutersCount(); i++) {
             for (final InetSocketAddress remoteAddress : arguments.getRemoteAddress()) {
-                dispatcher.createClient(new InetSocketAddress(currentLocal, port), remoteAddress);
+                futureClients.add(dispatcher.createClient(new InetSocketAddress(currentLocal, port), remoteAddress));
             }
             currentLocal = InetAddresses.increment(currentLocal);
-
         }
+        return futureClients;
     }
 
-    private static void deployServers(final BmpMockDispatcher dispatcher, final BmpMockArguments arguments) {
+    private static List<ChannelFuture> deployServers(final BmpMockDispatcher dispatcher,
+                                                     final BmpMockArguments arguments) {
         final InetSocketAddress localAddress = arguments.getLocalAddress();
         InetAddress currentLocal = localAddress.getAddress();
         final int port = localAddress.getPort();
+        final List<ChannelFuture> futureServers = new ArrayList<>();
         for (int i = 0; i < arguments.getRoutersCount(); i++) {
-            dispatcher.createServer(new InetSocketAddress(currentLocal, port));
+            futureServers.add(dispatcher.createServer(new InetSocketAddress(currentLocal, port)));
             currentLocal = InetAddresses.increment(currentLocal);
         }
+        return futureServers;
+    }
+
+    public static List<ChannelFuture> deploy(String [] args) {
+        LOG.info("Starting BMP test tool.");
+        final BmpMockArguments arguments = BmpMockArguments.parseArguments(args);
+        LoggerUtil.initiateLogger(arguments);
+
+        final BmpMockDispatcher dispatcher = initiateMock(arguments);
+        // now start the server / client
+        if (arguments.isOnPassiveMode()) {
+            return deployServers(dispatcher, arguments);
+        } else {
+            return deployClients(dispatcher, arguments);
+        }
     }
+
 }
index b7333a5ea7adeb5f07d6fa1c52f21bed844f199f..b546b7ee1135aa7285e689fab99f6a338efade01 100644 (file)
@@ -14,8 +14,10 @@ import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.nio.NioEventLoopGroup;
 import java.net.InetSocketAddress;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
@@ -99,15 +101,18 @@ public class BmpMockTest {
         final BmpSessionListenerFactory bmpSessionListenerFactory = () -> BmpMockTest.this.sessionListener;
 
         // create a local server in passive mode instead
-        BmpMock.main(new String[]{"--local_address", InetSocketAddressUtil.toHostAndPort(serverAddr).toString(),
+        final List<ChannelFuture> futureServers = BmpMock.deploy(new String[]
+            {"--local_address", InetSocketAddressUtil.toHostAndPort(serverAddr).toString(),
             "--peers_count", "3", "--pre_policy_routes", "3", "--passive"});
-        final ChannelFuture futureServer = this.bmpDispatcher.createClient(serverAddr,
+        Assert.assertEquals(1, futureServers.size());
+        futureServers.get(0).sync();
+        final ChannelFuture futureClient = this.bmpDispatcher.createClient(serverAddr,
                 bmpSessionListenerFactory, KeyMapping.getKeyMapping());
-        futureServer.sync();
+        futureClient.sync();
         final Channel serverChannel;
         final int sessionUpWait;
-        if (futureServer.isSuccess()) {
-            serverChannel = futureServer.channel();
+        if (futureClient.isSuccess()) {
+            serverChannel = futureClient.channel();
             sessionUpWait = 10;
         } else {
             serverChannel = null;