Merge "Use String(byte[], Charset)"
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / OpenFlowPluginProviderImplTest.java
index 1f2d4e9b82b2d46d5c35fe955ea46aec0ffd65bd..abf719b2454ad8984debaef8af93430571675c3d 100644 (file)
@@ -5,49 +5,57 @@
  * 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 org.junit.After;
 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.NotificationService;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListenerRegistration;
-import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
-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.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.EntityOwnershipListenerRegistration;
+import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
+import org.opendaylight.openflowjava.protocol.api.connection.OpenflowDiagStatusProvider;
 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
-import org.opendaylight.openflowplugin.api.openflow.OpenFlowPluginConfigurationService.PropertyType;
+import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProviderList;
+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.yangtools.concepts.ObjectRegistration;
+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
-    NotificationService notificationService;
+    NotificationPublishService notificationPublishService;
 
     @Mock
-    NotificationPublishService notificationPublishService;
+    OpenflowDiagStatusProvider ofPluginDiagstatusProvider;
+
+    @Mock
+    SystemReadyMonitor systemReadyMonitor;
 
     @Mock
     WriteTransaction writeTransaction;
@@ -59,7 +67,7 @@ public class OpenFlowPluginProviderImplTest {
     EntityOwnershipListenerRegistration entityOwnershipListenerRegistration;
 
     @Mock
-    BindingAwareBroker.RpcRegistration<StatisticsManagerControlService> controlServiceRegistration;
+    ObjectRegistration<StatisticsManagerControlService> controlServiceRegistration;
 
     @Mock
     SwitchConnectionProvider switchConnectionProvider;
@@ -67,46 +75,61 @@ public class OpenFlowPluginProviderImplTest {
     @Mock
     ClusterSingletonServiceProvider clusterSingletonServiceProvider;
 
+    @Mock
+    ConfigurationService configurationService;
+
+    @Mock
+    MastershipChangeServiceManager mastershipChangeServiceManager;
+
     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 Uint16 THREAD_POOL_MIN_THREADS = Uint16.ONE;
     private static final int THREAD_POOL_MAX_THREADS = 32000;
-    private static final long THREAD_POOL_TIMEOUT = 60;
-
-    private OpenFlowPluginProviderImpl provider;
+    private static final Uint32 THREAD_POOL_TIMEOUT = Uint32.valueOf(60);
+    private static final long BASIC_TIMER_DELAY = 1L;
+    private static final boolean USE_SINGLE_LAYER_SERIALIZATION = false;
+    private static final Uint16 DEVICE_CONNECTION_RATE_LIMIT_PER_MIN = Uint16.ZERO;
 
     @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.immediateCheckedFuture(null));
+        when(rpcProviderRegistry.registerRpcImplementation(eq(StatisticsManagerControlService.class), any()))
+                .thenReturn(controlServiceRegistration);
+        when(switchConnectionProvider.startup()).thenReturn(Futures.immediateFuture(true));
+        when(switchConnectionProvider.shutdown()).thenReturn(Futures.immediateFuture(true));
+        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()))
+                .thenReturn(THREAD_POOL_MIN_THREADS);
+        when(configurationService.getProperty(eq(ConfigurationProperty.THREAD_POOL_MAX_THREADS.toString()), any()))
+                .thenReturn(THREAD_POOL_MAX_THREADS);
+        when(configurationService.getProperty(eq(ConfigurationProperty.THREAD_POOL_TIMEOUT.toString()), any()))
+                .thenReturn(THREAD_POOL_TIMEOUT);
+        when(configurationService.getProperty(eq(ConfigurationProperty.DEVICE_CONNECTION_RATE_LIMIT_PER_MIN.toString()),
+                any())).thenReturn(DEVICE_CONNECTION_RATE_LIMIT_PER_MIN);
+    }
 
-        provider = new OpenFlowPluginProviderImpl(
-                Lists.newArrayList(switchConnectionProvider),
+    @Test
+    public void testInitializeAndClose() {
+        final OpenFlowPluginProviderImpl provider = new OpenFlowPluginProviderImpl(
+                configurationService,
+                new SwitchConnectionProviderList(Lists.newArrayList(switchConnectionProvider)),
                 dataBroker,
                 rpcProviderRegistry,
-                notificationService,
                 notificationPublishService,
                 clusterSingletonServiceProvider,
-                entityOwnershipService);
-
-        provider.updateProperty(PropertyType.THREAD_POOL_MIN_THREADS, THREAD_POOL_MIN_THREADS);
-        provider.updateProperty(PropertyType.THREAD_POOL_MAX_THREADS, THREAD_POOL_MAX_THREADS);
-        provider.updateProperty(PropertyType.THREAD_POOL_TIMEOUT, THREAD_POOL_TIMEOUT);
-        provider.updateProperty(PropertyType.RPC_REQUESTS_QUOTA, RPC_REQUESTS_QUOTA);
-        provider.updateProperty(PropertyType.GLOBAL_NOTIFICATION_QUOTA, GLOBAL_NOTIFICATION_QUOTA);
-    }
+                entityOwnershipService,
+                mastershipChangeServiceManager,
+                ofPluginDiagstatusProvider,
+                systemReadyMonitor);
 
-    @After
-    public void tearDown() throws Exception {
-
-    }
-
-    @Test
-    public void testInitializeAndClose() throws Exception {
         provider.initialize();
+        // Calling the onSystemBootReady() callback
+        provider.onSystemBootReady();
         verify(switchConnectionProvider).startup();
+        provider.close();
+        verify(switchConnectionProvider).shutdown();
     }
 }