BUG 2429 - not releasing dead connection threads
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / connection / listener / SystemNotificationsListenerImplTest.java
index 4da270ad65782634bdc3a1ec1572e70ac8c4159d..118d6dfa1e41ae3fb47080eef579c16850a2aee6 100644 (file)
@@ -8,6 +8,13 @@
 
 package org.opendaylight.openflowplugin.impl.connection.listener;
 
+import static org.junit.Assert.*;
+
+import org.opendaylight.openflowplugin.impl.connection.HandshakeContextImpl;
+
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import org.opendaylight.openflowplugin.openflow.md.core.ThreadPoolLoggingExecutor;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.SettableFuture;
 import java.net.InetSocketAddress;
@@ -66,7 +73,12 @@ public class SystemNotificationsListenerImplTest {
 
         Mockito.when(connectionContext.getConnectionAdapter()).thenReturn(connectionAdapter);
         Mockito.when(connectionContext.getFeatures()).thenReturn(features);
-        systemNotificationsListener = new SystemNotificationsListenerImpl(connectionContext);
+
+        ThreadPoolLoggingExecutor threadPoolLoggingExecutor = new ThreadPoolLoggingExecutor(2000, 2000, 0L, TimeUnit.MILLISECONDS,
+                new ArrayBlockingQueue<Runnable>(20), "OFHandshake-test identifier");
+
+        systemNotificationsListener = new SystemNotificationsListenerImpl(connectionContext,
+               new HandshakeContextImpl(threadPoolLoggingExecutor, null));
     }
 
     @After
@@ -91,6 +103,7 @@ public class SystemNotificationsListenerImplTest {
         Mockito.verify(connectionAdapter).disconnect();
         Mockito.verify(connectionContext).setConnectionState(ConnectionContext.CONNECTION_STATE.RIP);
         Mockito.verify(connectionContext).propagateClosingConnection();
+        assertTrue(systemNotificationsListener.handshakeContext.getHandshakePool().isTerminated());
     }
 
     /**
@@ -110,6 +123,7 @@ public class SystemNotificationsListenerImplTest {
         Mockito.verify(connectionAdapter).disconnect();
         Mockito.verify(connectionContext).setConnectionState(ConnectionContext.CONNECTION_STATE.RIP);
         Mockito.verify(connectionContext).propagateClosingConnection();
+        assertTrue(systemNotificationsListener.handshakeContext.getHandshakePool().isTerminated());
     }
 
     /**
@@ -131,6 +145,7 @@ public class SystemNotificationsListenerImplTest {
         Mockito.verify(connectionAdapter).disconnect();
         Mockito.verify(connectionContext).setConnectionState(ConnectionContext.CONNECTION_STATE.RIP);
         Mockito.verify(connectionContext).propagateClosingConnection();
+        assertTrue(systemNotificationsListener.handshakeContext.getHandshakePool().isTerminated());
     }
 
     /**
@@ -151,6 +166,7 @@ public class SystemNotificationsListenerImplTest {
         Mockito.verify(connectionAdapter, Mockito.never()).disconnect();
         Mockito.verify(connectionContext).setConnectionState(ConnectionContext.CONNECTION_STATE.RIP);
         Mockito.verify(connectionContext).propagateClosingConnection();
+        assertTrue(systemNotificationsListener.handshakeContext.getHandshakePool().isTerminated());
     }
 
     /**
@@ -182,6 +198,7 @@ public class SystemNotificationsListenerImplTest {
         Mockito.verify(connectionAdapter, Mockito.timeout(SAFE_TIMEOUT)).echo(Matchers.any(EchoInput.class));
         Mockito.verify(connectionContext, Mockito.timeout(SAFE_TIMEOUT)).setConnectionState(ConnectionContext.CONNECTION_STATE.WORKING);
         Mockito.verify(connectionAdapter, Mockito.never()).disconnect();
+        assertFalse(systemNotificationsListener.handshakeContext.getHandshakePool().isTerminated());
     }
 
     /**
@@ -212,6 +229,7 @@ public class SystemNotificationsListenerImplTest {
 
         Mockito.verify(connectionAdapter).disconnect();
         Mockito.verify(connectionContext).propagateClosingConnection();
+        assertTrue(systemNotificationsListener.handshakeContext.getHandshakePool().isTerminated());
     }
 
     private void verifyCommonInvocations() {