Merge "Bump model revisions to 2010.09.24.2-SNAPSHOT"
[controller.git] / opendaylight / netconf / netconf-impl / src / test / java / org / opendaylight / controller / netconf / impl / ConcurrentClientsTest.java
index a74a347d3bbf5d29811ddf28dd2c9c825cb460cc..c0d2687a8a092b376f498e5cccadcaadfb816ab4 100644 (file)
@@ -11,7 +11,21 @@ package org.opendaylight.controller.netconf.impl;
 import com.google.common.base.Optional;
 import com.google.common.collect.Sets;
 import io.netty.channel.ChannelFuture;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.util.HashedWheelTimer;
+import java.io.DataOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.management.ManagementFactory;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import javax.management.ObjectName;
 import org.apache.commons.io.IOUtils;
 import org.junit.After;
 import org.junit.AfterClass;
@@ -40,23 +54,8 @@ import org.opendaylight.controller.netconf.util.xml.XmlUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
-
-import javax.management.ObjectName;
-import javax.net.ssl.SSLContext;
-import java.io.DataOutputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.management.ManagementFactory;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -64,7 +63,9 @@ import static org.mockito.Mockito.mock;
 public class ConcurrentClientsTest {
 
     private static final int CONCURRENCY = 16;
-    public static final NetconfClientDispatcher NETCONF_CLIENT_DISPATCHER = new NetconfClientDispatcher(Optional.<SSLContext>absent());
+    private static EventLoopGroup nettyGroup = new NioEventLoopGroup();
+    public static final NetconfClientDispatcher NETCONF_CLIENT_DISPATCHER = new NetconfClientDispatcher( nettyGroup, nettyGroup);
+
     @Mock
     private YangStoreService yangStoreService;
     @Mock
@@ -77,6 +78,7 @@ public class ConcurrentClientsTest {
     private DefaultCommitNotificationProducer commitNot;
     private NetconfServerDispatcher dispatch;
 
+
     @Before
     public void setUp() throws Exception {
         { // init mocks
@@ -103,7 +105,8 @@ public class ConcurrentClientsTest {
 
         NetconfServerSessionListenerFactory listenerFactory = new NetconfServerSessionListenerFactory(
                 factoriesListener, commitNot, idProvider);
-        dispatch = new NetconfServerDispatcher(Optional.<SSLContext> absent(), serverNegotiatorFactory, listenerFactory);
+        NetconfServerDispatcher.ServerChannelInitializer serverChannelInitializer = new NetconfServerDispatcher.ServerChannelInitializer(serverNegotiatorFactory, listenerFactory);
+        dispatch = new NetconfServerDispatcher(serverChannelInitializer, nettyGroup, nettyGroup);
 
         ChannelFuture s = dispatch.createServer(netconfAddress);
         s.await();
@@ -111,7 +114,7 @@ public class ConcurrentClientsTest {
 
     @AfterClass
     public static void tearDownStatic() {
-        NETCONF_CLIENT_DISPATCHER.close();
+        nettyGroup.shutdownGracefully();
     }
 
     private NetconfOperationServiceFactory mockOpF() {
@@ -160,7 +163,6 @@ public class ConcurrentClientsTest {
     @After
     public void cleanUp() throws Exception {
         commitNot.close();
-        dispatch.close();
     }
 
     @Test
@@ -176,7 +178,11 @@ public class ConcurrentClientsTest {
 
         for (TestingThread thread : threads) {
             thread.join();
-            assertTrue(thread.success);
+            if(thread.thrownException.isPresent()) {
+                Exception exception = thread.thrownException.get();
+                logger.error("Thread for testing client failed", exception);
+                fail("Client thread " + thread + " failed: " + exception.getMessage());
+            }
         }
     }
 
@@ -196,12 +202,16 @@ public class ConcurrentClientsTest {
 
         for (BlockingThread thread : threads) {
             thread.join();
-            assertTrue(thread.success);
+            if(thread.thrownException.isPresent()) {
+                Exception exception = thread.thrownException.get();
+                logger.error("Thread for testing client failed", exception);
+                fail("Client thread " + thread + " failed: " + exception.getMessage());
+            }
         }
     }
 
     class BlockingThread extends Thread {
-        Boolean success;
+        private Optional<Exception> thrownException;
 
         public BlockingThread(String name) {
             super("client-" + name);
@@ -211,10 +221,9 @@ public class ConcurrentClientsTest {
         public void run() {
             try {
                 run2();
-                success = true;
+                thrownException = Optional.absent();
             } catch (Exception e) {
-                success = false;
-                throw new RuntimeException(e);
+                thrownException = Optional.of(e);
             }
         }
 
@@ -254,7 +263,7 @@ public class ConcurrentClientsTest {
 
         private final String clientId;
         private final int attempts;
-        private Boolean success;
+        private Optional<Exception> thrownException;
 
         TestingThread(String clientId, int attempts) {
             this.clientId = clientId;
@@ -275,10 +284,9 @@ public class ConcurrentClientsTest {
                 logger.info("Client with sessionid {} got result {}", sessionId, result);
                 netconfClient.close();
                 logger.info("Client with session id {} ended", sessionId);
-                success = true;
+                thrownException = Optional.absent();
             } catch (final Exception e) {
-                success = false;
-                throw new RuntimeException(e);
+                thrownException = Optional.of(e);
             }
         }
     }