Refactor ShutdownProvider.shutdown()
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / OpenFlowPluginProviderImplTest.java
index f75bc45f4123c1ddac8c624d0889b6ab66d581f5..012d39aa89647e9441b8a37c7fc865d8f80f7cfa 100644 (file)
@@ -5,96 +5,80 @@
  * 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.openflowplugin.impl;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.Futures;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.infrautils.ready.SystemReadyMonitor;
-import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipListenerRegistration;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
-import org.opendaylight.openflowplugin.api.diagstatus.OpenflowPluginDiagStatusProvider;
 import org.opendaylight.openflowplugin.api.openflow.configuration.ConfigurationProperty;
 import org.opendaylight.openflowplugin.api.openflow.configuration.ConfigurationService;
 import org.opendaylight.openflowplugin.api.openflow.mastership.MastershipChangeServiceManager;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.StatisticsManagerControlService;
+import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageIntelligenceAgency;
+import org.opendaylight.yangtools.concepts.Registration;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 @RunWith(MockitoJUnitRunner.class)
 public class OpenFlowPluginProviderImplTest {
-
     @Mock
-    DataBroker dataBroker;
-
+    PingPongDataBroker dataBroker;
     @Mock
-    RpcProviderRegistry rpcProviderRegistry;
-
+    RpcProviderService rpcProviderRegistry;
     @Mock
     NotificationPublishService notificationPublishService;
-
     @Mock
-    OpenflowPluginDiagStatusProvider ofPluginDiagstatusProvider;
-
+    DiagStatusProvider ofPluginDiagstatusProvider;
     @Mock
     SystemReadyMonitor systemReadyMonitor;
-
     @Mock
     WriteTransaction writeTransaction;
-
     @Mock
     EntityOwnershipService entityOwnershipService;
-
     @Mock
-    EntityOwnershipListenerRegistration entityOwnershipListenerRegistration;
-
-    @Mock
-    BindingAwareBroker.RpcRegistration<StatisticsManagerControlService> controlServiceRegistration;
-
+    Registration entityOwnershipListenerRegistration;
     @Mock
     SwitchConnectionProvider switchConnectionProvider;
-
     @Mock
     ClusterSingletonServiceProvider clusterSingletonServiceProvider;
-
     @Mock
     ConfigurationService configurationService;
-
     @Mock
     MastershipChangeServiceManager mastershipChangeServiceManager;
+    @Mock
+    MessageIntelligenceAgency messageIntelligenceAgency;
 
-    private static final int RPC_REQUESTS_QUOTA = 500;
-    private static final long GLOBAL_NOTIFICATION_QUOTA = 131072;
-    private static final int THREAD_POOL_MIN_THREADS = 1;
-    private static final int THREAD_POOL_MAX_THREADS = 32000;
-    private static final long THREAD_POOL_TIMEOUT = 60;
-    private static final long BASIC_TIMER_DELAY = 1L;
+    private static final Uint16 THREAD_POOL_MIN_THREADS = Uint16.ONE;
+    private static final Uint16 THREAD_POOL_MAX_THREADS = Uint16.valueOf(32000);
+    private static final Uint32 THREAD_POOL_TIMEOUT = Uint32.valueOf(60);
     private static final boolean USE_SINGLE_LAYER_SERIALIZATION = false;
+    private static final Uint16 DEVICE_CONNECTION_RATE_LIMIT_PER_MIN = Uint16.ZERO;
+    private static final Uint16 DEVICE_CONNECTION_HOLD_TIME_IN_SECONDS = Uint16.valueOf(60);
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-        when(writeTransaction.submit()).thenReturn(Futures.immediateCheckedFuture(null));
+        doReturn(CommitInfo.emptyFluentFuture()).when(writeTransaction).commit();
         when(entityOwnershipService.registerListener(any(), any())).thenReturn(entityOwnershipListenerRegistration);
-        when(rpcProviderRegistry.addRpcImplementation(eq(StatisticsManagerControlService.class), any()))
-                .thenReturn(controlServiceRegistration);
-        when(switchConnectionProvider.startup()).thenReturn(Futures.immediateFuture(true));
-        when(switchConnectionProvider.shutdown()).thenReturn(Futures.immediateFuture(true));
+        when(switchConnectionProvider.startup(any())).thenReturn(Futures.immediateVoidFuture());
+        when(switchConnectionProvider.shutdown()).thenReturn(Futures.immediateVoidFuture());
         when(configurationService.getProperty(eq(ConfigurationProperty.USE_SINGLE_LAYER_SERIALIZATION.toString()),
                 any())).thenReturn(USE_SINGLE_LAYER_SERIALIZATION);
         when(configurationService.getProperty(eq(ConfigurationProperty.THREAD_POOL_MIN_THREADS.toString()), any()))
@@ -103,33 +87,23 @@ public class OpenFlowPluginProviderImplTest {
                 .thenReturn(THREAD_POOL_MAX_THREADS);
         when(configurationService.getProperty(eq(ConfigurationProperty.THREAD_POOL_TIMEOUT.toString()), any()))
                 .thenReturn(THREAD_POOL_TIMEOUT);
-        when(configurationService.getProperty(eq(ConfigurationProperty.RPC_REQUESTS_QUOTA.toString()), any()))
-                .thenReturn(RPC_REQUESTS_QUOTA);
-        when(configurationService.getProperty(eq(ConfigurationProperty.GLOBAL_NOTIFICATION_QUOTA.toString()), any()))
-                .thenReturn(GLOBAL_NOTIFICATION_QUOTA);
-        when(configurationService.getProperty(eq(ConfigurationProperty.BASIC_TIMER_DELAY.toString()), any()))
-                .thenReturn(BASIC_TIMER_DELAY);
+        when(configurationService.getProperty(eq(ConfigurationProperty.DEVICE_CONNECTION_RATE_LIMIT_PER_MIN.toString()),
+                any())).thenReturn(DEVICE_CONNECTION_RATE_LIMIT_PER_MIN);
+        when(configurationService.getProperty(
+                eq(ConfigurationProperty.DEVICE_CONNECTION_HOLD_TIME_IN_SECONDS.toString()), any()))
+                .thenReturn(DEVICE_CONNECTION_HOLD_TIME_IN_SECONDS);
     }
 
     @Test
-    public void testInitializeAndClose() throws Exception {
-        final OpenFlowPluginProviderImpl provider = new OpenFlowPluginProviderImpl(
-                configurationService,
-                Lists.newArrayList(switchConnectionProvider),
-                dataBroker,
-                rpcProviderRegistry,
-                notificationPublishService,
-                clusterSingletonServiceProvider,
-                entityOwnershipService,
-                mastershipChangeServiceManager,
-                ofPluginDiagstatusProvider,
-                systemReadyMonitor);
-
-        provider.initialize();
-        // Calling the onSystemBootReady() callback
-        provider.onSystemBootReady();
-        verify(switchConnectionProvider).startup();
-        provider.close();
+    public void testInitializeAndClose() {
+        try (var provider = new OpenFlowPluginProviderImpl(configurationService, List.of(switchConnectionProvider),
+                dataBroker, rpcProviderRegistry, notificationPublishService, clusterSingletonServiceProvider,
+                entityOwnershipService, mastershipChangeServiceManager, messageIntelligenceAgency,
+                ofPluginDiagstatusProvider, systemReadyMonitor)) {
+            // Calling the onSystemBootReady() callback
+            provider.onSystemBootReady();
+            verify(switchConnectionProvider).startup(any());
+        }
         verify(switchConnectionProvider).shutdown();
     }
 }