import static org.mockito.Mockito.when;
import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.Collections;
-import java.util.concurrent.ExecutionException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier;
+import org.opendaylight.openflowplugin.impl.datastore.MultipartWriterProviderFactory;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
private static final Logger LOG = LoggerFactory.getLogger(StatisticsContextImplTest.class);
private static final Long TEST_XID = 55L;
- private StatisticsContextImpl statisticsContext;
+ private StatisticsContextImpl<MultipartReply> statisticsContext;
private ConvertorManager convertorManager;
@Before
public void setUp() throws Exception {
convertorManager = ConvertorManagerFactory.createDefaultManager();
when(mockedDeviceInfo.reserveXidForDeviceMessage()).thenReturn(TEST_XID);
- Mockito.when(lifecycleService.getDeviceContext()).thenReturn(mockedDeviceContext);
Mockito.when(mockedDeviceContext.getDeviceState()).thenReturn(mockedDeviceState);
initStatisticsContext();
}
private void initStatisticsContext() {
- statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, lifecycleService, convertorManager, mockedStatisticsManager);
+ statisticsContext = new StatisticsContextImpl<>(mockedDeviceContext, convertorManager,
+ MultipartWriterProviderFactory
+ .createDefaultProvider(mockedDeviceContext),
+ MoreExecutors.newDirectExecutorService(), true, false, 3000,
+ 50000);
+
statisticsContext.setStatisticsGatheringService(mockedStatisticsGatheringService);
statisticsContext.setStatisticsGatheringOnTheFlyService(mockedStatisticsOnFlyGatheringService);
}
}
/**
- * There is nothing to check in close method
+ * There is nothing to check in close method.
*/
@Test
+ @SuppressWarnings("checkstyle:IllegalCatch")
public void testClose() throws Exception {
- final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, lifecycleService, convertorManager, mockedStatisticsManager);
+ final StatisticsContextImpl<MultipartReply> statisticsContext =
+ new StatisticsContextImpl<>(mockedDeviceContext,
+ convertorManager,
+ MultipartWriterProviderFactory
+ .createDefaultProvider(mockedDeviceContext),
+ MoreExecutors.newDirectExecutorService(),
+ true,
+ false,
+ 3000,50000);
+
final RequestContext<Object> requestContext = statisticsContext.createRequestContext();
statisticsContext.close();
try {
@Test
public void testGatherDynamicData_none() throws Exception {
- final ListenableFuture<Boolean> gatheringResult = statisticsContext.gatherDynamicData();
- Assert.assertTrue(gatheringResult.isDone());
- Assert.assertTrue(gatheringResult.get());
+ statisticsContext.instantiateServiceInstance();
Mockito.verifyNoMoreInteractions(mockedStatisticsGatheringService, mockedStatisticsOnFlyGatheringService);
}
when(mockedDeviceState.isMetersAvailable()).thenReturn(Boolean.TRUE);
when(mockedDeviceState.isPortStatisticsAvailable()).thenReturn(Boolean.TRUE);
when(mockedDeviceState.isQueueStatisticsAvailable()).thenReturn(Boolean.TRUE);
- when(mockedDeviceInfo.getNodeInstanceIdentifier()).thenReturn(dummyNodeII);
+ when(mockedDeviceInfo.getNodeInstanceIdentifier()).thenReturn(DUMMY_NODE_ID);
initStatisticsContext();
- when(mockedStatisticsGatheringService.getStatisticsOfType(Matchers.any(EventIdentifier.class), Matchers.any(MultipartType.class)))
- .thenReturn(
- Futures.immediateFuture(RpcResultBuilder.success(Collections.<MultipartReply>emptyList()).build())
- );
- when(mockedStatisticsOnFlyGatheringService.getStatisticsOfType(Matchers.any(EventIdentifier.class), Matchers.any(MultipartType.class)))
- .thenReturn(
- Futures.immediateFuture(RpcResultBuilder.success(Collections.<MultipartReply>emptyList()).build())
- );
-
- final ListenableFuture<Boolean> gatheringResult = statisticsContext.gatherDynamicData();
- Assert.assertTrue(gatheringResult.isDone());
- Assert.assertTrue(gatheringResult.get());
+ when(mockedStatisticsGatheringService
+ .getStatisticsOfType(Matchers.any(EventIdentifier.class), Matchers.any(MultipartType.class)))
+ .thenReturn(Futures.immediateFuture(
+ RpcResultBuilder.success(Collections.<MultipartReply>emptyList()).build()));
+ when(mockedStatisticsOnFlyGatheringService
+ .getStatisticsOfType(Matchers.any(EventIdentifier.class), Matchers.any(MultipartType.class)))
+ .thenReturn(Futures.immediateFuture(
+ RpcResultBuilder.success(Collections.<MultipartReply>emptyList()).build()));
+
+ statisticsContext.registerMastershipWatcher(mockedMastershipWatcher);
+ statisticsContext.setStatisticsGatheringService(mockedStatisticsGatheringService);
+ statisticsContext.setStatisticsGatheringOnTheFlyService(mockedStatisticsOnFlyGatheringService);
+ statisticsContext.instantiateServiceInstance();
+
verify(mockedStatisticsGatheringService, times(7))
.getStatisticsOfType(Matchers.any(EventIdentifier.class), Matchers.any(MultipartType.class));
verify(mockedStatisticsOnFlyGatheringService)
.getStatisticsOfType(Matchers.any(EventIdentifier.class), Matchers.any(MultipartType.class));
Mockito.verifyNoMoreInteractions(mockedStatisticsGatheringService, mockedStatisticsOnFlyGatheringService);
}
-
- @Test
- public void testDeviceConnectionCheck_WORKING() throws Exception {
- final ListenableFuture<Boolean> deviceConnectionCheckResult = statisticsContext.deviceConnectionCheck();
- Assert.assertNull(deviceConnectionCheckResult);
- }
-
- @Test
- public void testDeviceConnectionCheck_RIP() throws Exception {
- Mockito.reset(mockedConnectionContext);
- when(mockedConnectionContext.getConnectionState()).thenReturn(ConnectionContext.CONNECTION_STATE.RIP);
- final ListenableFuture<Boolean> deviceConnectionCheckResult = statisticsContext.deviceConnectionCheck();
- Assert.assertNotNull(deviceConnectionCheckResult);
- Assert.assertTrue(deviceConnectionCheckResult.isDone());
- try {
- deviceConnectionCheckResult.get();
- Assert.fail("connection in state RIP should have caused exception here");
- } catch (final Exception e) {
- LOG.debug("expected behavior for RIP connection achieved");
- Assert.assertTrue(e instanceof ExecutionException);
- }
- }
-
- @Test
- public void testDeviceConnectionCheck_HANSHAKING() throws Exception {
- Mockito.reset(mockedConnectionContext);
- when(mockedConnectionContext.getConnectionState()).thenReturn(ConnectionContext.CONNECTION_STATE.HANDSHAKING);
- final ListenableFuture<Boolean> deviceConnectionCheckResult = statisticsContext.deviceConnectionCheck();
- Assert.assertNotNull(deviceConnectionCheckResult);
- Assert.assertTrue(deviceConnectionCheckResult.isDone());
- try {
- final Boolean checkPositive = deviceConnectionCheckResult.get();
- Assert.assertTrue(checkPositive);
- } catch (final Exception e) {
- Assert.fail("connection in state HANDSHAKING should NOT have caused exception here");
- }
- }
}