Merge "Bug 6110: Fixed bugs in statistics manager due to race condition." into stable...
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / lifecycle / LifecycleServiceImplTest.java
index dabde3e24da6a35f2f02c6bc515dd7f5c0158177..4cf06d4eb4bc544ca08bfb00f29f871596f1290b 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ * Copyright (c) 2016 Pantheon Technologies s.r.o. and others. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -15,14 +15,16 @@ import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
+import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListenerRegistration;
+import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
+import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
 import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
 import org.opendaylight.openflowplugin.api.openflow.lifecycle.LifecycleService;
 import org.opendaylight.openflowplugin.api.openflow.registry.flow.DeviceFlowRegistry;
-import org.opendaylight.openflowplugin.api.openflow.role.RoleContext;
 import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext;
 import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsContext;
 
@@ -39,8 +41,6 @@ public class LifecycleServiceImplTest {
     @Mock
     private RpcContext rpcContext;
     @Mock
-    private RoleContext roleContext;
-    @Mock
     private StatisticsContext statContext;
     @Mock
     private ConnectionContext connectionContext;
@@ -48,16 +48,15 @@ public class LifecycleServiceImplTest {
     private DeviceFlowRegistry deviceFlowRegistry;
     @Mock
     private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
+    @Mock
+    private ClusterSingletonServiceRegistration clusterSingletonServiceRegistration;
+    @Mock
+    EntityOwnershipListenerRegistration entityOwnershipListenerRegistration;
 
     private LifecycleService lifecycleService;
 
     @Before
     public void setUp() {
-        lifecycleService = new LifecycleServiceImpl();
-        lifecycleService.setDeviceContext(deviceContext);
-        lifecycleService.setRpcContext(rpcContext);
-        lifecycleService.setRoleContext(roleContext);
-        lifecycleService.setStatContext(statContext);
         Mockito.when(deviceContext.getDeviceInfo()).thenReturn(deviceInfo);
         Mockito.when(deviceContext.getPrimaryConnectionContext()).thenReturn(connectionContext);
         Mockito.when(deviceContext.getDeviceFlowRegistry()).thenReturn(deviceFlowRegistry);
@@ -65,25 +64,35 @@ public class LifecycleServiceImplTest {
         Mockito.when(deviceFlowRegistry.fill()).thenReturn(Futures.immediateFuture(null));
         Mockito.when(connectionContext.getConnectionState()).thenReturn(ConnectionContext.CONNECTION_STATE.WORKING);
         Mockito.when(deviceInfo.getLOGValue()).thenReturn(TEST_NODE);
+        Mockito.when(clusterSingletonServiceProvider.registerClusterSingletonService(Mockito.any()))
+                .thenReturn(clusterSingletonServiceRegistration);
+
+        Mockito.when(deviceContext.stopClusterServices()).thenReturn(Futures.immediateFuture(null));
+        Mockito.when(statContext.stopClusterServices()).thenReturn(Futures.immediateFuture(null));
+        Mockito.when(rpcContext.stopClusterServices()).thenReturn(Futures.immediateFuture(null));
+
+        lifecycleService = new LifecycleServiceImpl();
+        lifecycleService.setDeviceContext(deviceContext);
+        lifecycleService.setRpcContext(rpcContext);
+        lifecycleService.setStatContext(statContext);
+        lifecycleService.registerService(clusterSingletonServiceProvider);
     }
 
     @Test
     public void instantiateServiceInstance() throws Exception {
         lifecycleService.instantiateServiceInstance();
-        Mockito.verify(deviceContext).startupClusterServices();
-        Mockito.verify(statContext).startupClusterServices();
-        Mockito.verify(deviceContext).initialSubmitTransaction();
-        Mockito.verify(rpcContext).startupClusterServices();
-        Mockito.verify(roleContext).startupClusterServices();
+        Mockito.verify(deviceContext).setLifecycleInitializationPhaseHandler(Mockito.any());
+        Mockito.verify(statContext).setLifecycleInitializationPhaseHandler(Mockito.any());
+        Mockito.verify(statContext).setInitialSubmitHandler(Mockito.any());
+        Mockito.verify(rpcContext).setLifecycleInitializationPhaseHandler(Mockito.any());
     }
 
     @Test
     public void closeServiceInstance() throws Exception {
-        lifecycleService.closeServiceInstance();
-        Mockito.verify(statContext).stopClusterServices(false);
-        Mockito.verify(deviceContext).stopClusterServices(false);
-        Mockito.verify(rpcContext).stopClusterServices(false);
-        Mockito.verify(roleContext).stopClusterServices(false);
+        lifecycleService.closeServiceInstance().get();
+        Mockito.verify(statContext).stopClusterServices();
+        Mockito.verify(deviceContext).stopClusterServices();
+        Mockito.verify(rpcContext).stopClusterServices();
     }
 
     @Test
@@ -97,4 +106,4 @@ public class LifecycleServiceImplTest {
         Mockito.verify(deviceContext).shutdownConnection();
     }
 
-}
\ No newline at end of file
+}