Migrate openflowplugim-impl tests to uint types
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / connection / listener / SystemNotificationsListenerImplTest.java
index 997dd3a2b326f2529c450afc6bc2311b8b3accb6..effbf13bf8fa860c6b4237c4cbda84b1af711e59 100644 (file)
@@ -8,23 +8,25 @@
 
 package org.opendaylight.openflowplugin.impl.connection.listener;
 
+import static org.mockito.ArgumentMatchers.any;
+
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import java.net.InetSocketAddress;
-import java.util.concurrent.Future;
 import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.TimeUnit;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
 import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
+import org.opendaylight.openflowplugin.api.openflow.connection.DeviceConnectionStatusProvider;
 import org.opendaylight.openflowplugin.impl.connection.ConnectionContextImpl;
 import org.opendaylight.openflowplugin.impl.util.ThreadPoolLoggingExecutor;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
@@ -38,65 +40,64 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.S
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEventBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 /**
- * Testing basic bahavior of {@link SystemNotificationsListenerImpl}
+ * Testing basic bahavior of {@link SystemNotificationsListenerImpl}.
  */
 @RunWith(MockitoJUnitRunner.class)
 public class SystemNotificationsListenerImplTest {
 
     private static final int SAFE_TIMEOUT = 1000;
-    private final static int ECHO_REPLY_TIMEOUT = 2000;
+    private static final int ECHO_REPLY_TIMEOUT = 2000;
 
     @Mock
     private ConnectionAdapter connectionAdapter;
     @Mock
     private FeaturesReply features;
+    @Mock
+    private DeviceConnectionStatusProvider deviceConnectionStatusProvider;
+    @Mock
+    private NotificationPublishService notificationPublishService;
 
     private ConnectionContext connectionContext;
     private ConnectionContextImpl connectionContextGolem;
     private SystemNotificationsListenerImpl systemNotificationsListener;
 
-    private static final NodeId nodeId =
+    private static final NodeId NODE_ID =
             new NodeId("OFP:TEST");
 
-    private final ThreadPoolLoggingExecutor threadPool =
-            new ThreadPoolLoggingExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>(), "opfpool");
+    private final ThreadPoolLoggingExecutor threadPool = new ThreadPoolLoggingExecutor(
+            0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>(), "opfpool");
 
     @Before
     public void setUp() {
-        connectionContextGolem = new ConnectionContextImpl(connectionAdapter);
+        connectionContextGolem = new ConnectionContextImpl(connectionAdapter, deviceConnectionStatusProvider);
         connectionContextGolem.changeStateToWorking();
-        connectionContextGolem.setNodeId(nodeId);
+        connectionContextGolem.setNodeId(NODE_ID);
+        connectionContextGolem.setFeatures(features);
         connectionContext = Mockito.spy(connectionContextGolem);
 
         Mockito.when(connectionAdapter.getRemoteAddress()).thenReturn(
                 InetSocketAddress.createUnresolved("unit-odl.example.org", 4242));
 
-        Mockito.when(features.getAuxiliaryId()).thenReturn((short) 0);
-
-        Mockito.when(connectionContext.getConnectionAdapter()).thenReturn(connectionAdapter);
-        Mockito.when(connectionContext.getFeatures()).thenReturn(features);
-
-        systemNotificationsListener =
-                new SystemNotificationsListenerImpl(connectionContext, ECHO_REPLY_TIMEOUT, threadPool);
+        Mockito.when(features.getAuxiliaryId()).thenReturn(Uint8.ZERO);
 
+        systemNotificationsListener = new SystemNotificationsListenerImpl(connectionContext, ECHO_REPLY_TIMEOUT,
+                threadPool, notificationPublishService);
     }
 
     @After
-    public void tearDown() throws Exception {
+    public void tearDown() {
         Mockito.verifyNoMoreInteractions(connectionContext);
     }
 
     /**
-     * successful scenario - connection is on and closes without errors
-     *
-     * @throws Exception
+     * Successful scenario - connection is on and closes without errors.
      */
     @Test
-    public void testOnDisconnectEvent1() throws Exception {
-        Mockito.when(connectionAdapter.isAlive()).thenReturn(true);
-        Mockito.when(connectionAdapter.disconnect()).thenReturn(Futures.immediateFuture(Boolean.TRUE));
+    public void testOnDisconnectEvent1() {
 
         DisconnectEvent disconnectNotification = new DisconnectEventBuilder().setInfo("testing disconnect").build();
         systemNotificationsListener.onDisconnectEvent(disconnectNotification);
@@ -108,14 +109,10 @@ public class SystemNotificationsListenerImplTest {
     }
 
     /**
-     * broken scenario - connection is on but fails to close
-     *
-     * @throws Exception
+     * Broken scenario - connection is on but fails to close.
      */
     @Test
-    public void testOnDisconnectEvent2() throws Exception {
-        Mockito.when(connectionAdapter.isAlive()).thenReturn(true);
-        Mockito.when(connectionAdapter.disconnect()).thenReturn(Futures.immediateFuture(Boolean.FALSE));
+    public void testOnDisconnectEvent2() {
 
         DisconnectEvent disconnectNotification = new DisconnectEventBuilder().setInfo("testing disconnect").build();
         systemNotificationsListener.onDisconnectEvent(disconnectNotification);
@@ -127,17 +124,12 @@ public class SystemNotificationsListenerImplTest {
     }
 
     /**
-     * successful scenario - connection is already down
-     *
-     * @throws Exception
+     * Successful scenario - connection is already down.
      */
     @Test
-    public void testOnDisconnectEvent3() throws Exception {
+    public void testOnDisconnectEvent3() {
         connectionContextGolem.changeStateToTimeouting();
 
-        Mockito.when(connectionAdapter.isAlive()).thenReturn(true);
-        Mockito.when(connectionAdapter.disconnect()).thenReturn(Futures.<Boolean>immediateFailedFuture(new Exception("unit exception")));
-
         DisconnectEvent disconnectNotification = new DisconnectEventBuilder().setInfo("testing disconnect").build();
         systemNotificationsListener.onDisconnectEvent(disconnectNotification);
 
@@ -148,14 +140,11 @@ public class SystemNotificationsListenerImplTest {
     }
 
     /**
-     * broken scenario - connection is on but throws error on close
-     *
-     * @throws Exception
+     * Broken scenario - connection is on but throws error on close.
      */
     @Test
-    public void testOnDisconnectEvent4() throws Exception {
+    public void testOnDisconnectEvent4() {
         Mockito.when(connectionContext.getConnectionState()).thenReturn(ConnectionContext.CONNECTION_STATE.RIP);
-        Mockito.when(connectionAdapter.isAlive()).thenReturn(false);
 
         DisconnectEvent disconnectNotification = new DisconnectEventBuilder().setInfo("testing disconnect").build();
         systemNotificationsListener.onDisconnectEvent(disconnectNotification);
@@ -167,15 +156,14 @@ public class SystemNotificationsListenerImplTest {
     }
 
     /**
-     * first encounter of idle event, echo received successfully
-     *
-     * @throws Exception
+     * First encounter of idle event, echo received successfully.
      */
     @Test
     public void testOnSwitchIdleEvent1() throws Exception {
-        final Future<RpcResult<EchoOutput>> echoReply = Futures.immediateFuture(RpcResultBuilder.success(new EchoOutputBuilder().setXid(0L).build()).build());
+        final ListenableFuture<RpcResult<EchoOutput>> echoReply =
+                RpcResultBuilder.success(new EchoOutputBuilder().setXid(Uint32.ZERO).build()).buildFuture();
 
-        Mockito.when(connectionAdapter.echo(Matchers.any(EchoInput.class))).thenReturn(echoReply);
+        Mockito.when(connectionAdapter.echo(any(EchoInput.class))).thenReturn(echoReply);
 
         SwitchIdleEvent notification = new SwitchIdleEventBuilder().setInfo("wake up, device sleeps").build();
         systemNotificationsListener.onSwitchIdleEvent(notification);
@@ -184,23 +172,22 @@ public class SystemNotificationsListenerImplTest {
         Thread.sleep(SAFE_TIMEOUT);
 
         verifyCommonInvocations();
-        Mockito.verify(connectionAdapter, Mockito.timeout(SAFE_TIMEOUT)).echo(Matchers.any(EchoInput.class));
+        Mockito.verify(connectionAdapter, Mockito.timeout(SAFE_TIMEOUT)).echo(any(EchoInput.class));
         Mockito.verify(connectionAdapter, Mockito.never()).disconnect();
         Mockito.verify(connectionContext).changeStateToTimeouting();
         Mockito.verify(connectionContext).changeStateToWorking();
     }
 
     /**
-     * first encounter of idle event, echo not receive
-     *
-     * @throws Exception
+     * First encounter of idle event, echo not receive.
      */
     @Test
     public void testOnSwitchIdleEvent2() throws Exception {
         final SettableFuture<RpcResult<EchoOutput>> echoReply = SettableFuture.create();
-        Mockito.when(connectionAdapter.echo(Matchers.any(EchoInput.class))).thenReturn(echoReply);
+        Mockito.when(connectionAdapter.echo(any(EchoInput.class))).thenReturn(echoReply);
         Mockito.when(connectionAdapter.isAlive()).thenReturn(true);
-        Mockito.when(connectionAdapter.disconnect()).thenReturn(Futures.<Boolean>immediateFailedFuture(new Exception("unit exception")));
+        Mockito.when(connectionAdapter.disconnect())
+                .thenReturn(Futures.immediateFailedFuture(new Exception("unit exception")));
 
         SwitchIdleEvent notification = new SwitchIdleEventBuilder().setInfo("wake up, device sleeps").build();
         systemNotificationsListener.onSwitchIdleEvent(notification);
@@ -208,7 +195,7 @@ public class SystemNotificationsListenerImplTest {
         Thread.sleep(SystemNotificationsListenerImpl.MAX_ECHO_REPLY_TIMEOUT + SAFE_TIMEOUT);
 
         verifyCommonInvocations();
-        Mockito.verify(connectionAdapter, Mockito.timeout(SAFE_TIMEOUT)).echo(Matchers.any(EchoInput.class));
+        Mockito.verify(connectionAdapter, Mockito.timeout(SAFE_TIMEOUT)).echo(any(EchoInput.class));
         Mockito.verify(connectionAdapter).disconnect();
         Mockito.verify(connectionContext).changeStateToTimeouting();
         Mockito.verify(connectionContext).closeConnection(true);
@@ -218,11 +205,11 @@ public class SystemNotificationsListenerImplTest {
 
     private void verifyCommonInvocations() {
         verifyCommonInvocationsSubSet();
+        Mockito.verify(connectionContext, Mockito.timeout(SAFE_TIMEOUT).atLeastOnce()).getFeatures();
         Mockito.verify(connectionContext, Mockito.timeout(SAFE_TIMEOUT).atLeastOnce()).getConnectionAdapter();
     }
 
     private void verifyCommonInvocationsSubSet() {
         Mockito.verify(connectionContext, Mockito.timeout(SAFE_TIMEOUT).atLeastOnce()).getConnectionState();
-        Mockito.verify(connectionContext, Mockito.timeout(SAFE_TIMEOUT).atLeastOnce()).getFeatures();
     }
-}
\ No newline at end of file
+}