X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fdevice%2FDeviceContextImplTest.java;h=4e77150fbeceaa19a0d829c770f62cb15c8bde0f;hb=213cd74e317081d8952b9036adba7775aad72f1a;hp=31e8ffe3b93e6a80ecc140989e24784e79162c1b;hpb=6e2627630ebabb37526133a13deeb62adcc85d35;p=openflowplugin.git diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java index 31e8ffe3b9..4e77150fbe 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java @@ -29,16 +29,16 @@ import io.netty.util.Timeout; import java.math.BigInteger; import java.net.InetSocketAddress; import java.util.concurrent.atomic.AtomicLong; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InOrder; +import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; -import org.mockito.stubbing.Answer; import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; @@ -54,13 +54,13 @@ import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext import org.opendaylight.openflowplugin.api.openflow.connection.OutboundQueueProvider; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; +import org.opendaylight.openflowplugin.api.openflow.device.DeviceManager; import org.opendaylight.openflowplugin.api.openflow.device.DeviceState; import org.opendaylight.openflowplugin.api.openflow.device.MessageTranslator; import org.opendaylight.openflowplugin.api.openflow.device.RequestContext; import org.opendaylight.openflowplugin.api.openflow.device.TranslatorLibrary; import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceTerminationPhaseHandler; -import org.opendaylight.openflowplugin.api.openflow.lifecycle.LifecycleConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; import org.opendaylight.openflowplugin.api.openflow.registry.flow.DeviceFlowRegistry; import org.opendaylight.openflowplugin.api.openflow.registry.flow.FlowDescriptor; @@ -68,16 +68,14 @@ import org.opendaylight.openflowplugin.api.openflow.registry.flow.FlowRegistryKe import org.opendaylight.openflowplugin.api.openflow.registry.group.DeviceGroupRegistry; import org.opendaylight.openflowplugin.api.openflow.registry.meter.DeviceMeterRegistry; import org.opendaylight.openflowplugin.api.openflow.rpc.ItemLifeCycleSource; -import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext; import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener; -import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsContext; -import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageIntelligenceAgency; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy; import org.opendaylight.openflowplugin.extension.api.ConvertorMessageFromOFJava; import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionConverterProvider; import org.opendaylight.openflowplugin.impl.registry.flow.FlowDescriptorFactory; import org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory; import org.opendaylight.openflowplugin.impl.util.DeviceStateUtil; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.experimenter.message.service.rev151020.ExperimenterMessageFromDev; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; @@ -90,22 +88,31 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.ta import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowRemovedBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Capabilities; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.*; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.Error; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessageBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FeaturesReply; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessageBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncReply; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketIn; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessage; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.experimenter.core.ExperimenterDataOfChoice; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived; -import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; import org.opendaylight.yangtools.concepts.Registration; -import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.Notification; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -121,14 +128,14 @@ public class DeviceContextImplTest { private static final BigInteger DUMMY_DATAPATH_ID = new BigInteger("55"); Xid xid; Xid xidMulti; - DeviceContextImpl deviceContext; + + DeviceContext deviceContext; @Mock TransactionChainManager txChainManager; @Mock RequestContext requestContext; @Mock RequestContext requestContextMultiReply; - @Mock ConnectionContext connectionContext; @Mock @@ -146,8 +153,6 @@ public class DeviceContextImplTest { @Mock HashedWheelTimer timer; @Mock - MessageIntelligenceAgency messageIntelligenceAgency; - @Mock OutboundQueueProvider outboundQueueProvider; @Mock ConnectionAdapter connectionAdapter; @@ -164,9 +169,13 @@ public class DeviceContextImplTest { @Mock private MessageTranslator messageTranslatorFlowRemoved; @Mock - private LifecycleConductor lifecycleConductor; - @Mock private DeviceInfo deviceInfo; + @Mock + private DeviceManager deviceManager; + @Mock + private ConvertorExecutor convertorExecutor; + @Mock + private MessageSpy messageSpy; private InOrder inOrderDevState; @@ -175,14 +184,14 @@ public class DeviceContextImplTest { private DeviceContext deviceContextSpy; @Before - public void setUp() { + public void setUp() throws Exception{ final CheckedFuture, ReadFailedException> noExistNodeFuture = Futures.immediateCheckedFuture(Optional.absent()); Mockito.when(rTx.read(LogicalDatastoreType.OPERATIONAL, nodeKeyIdent)).thenReturn(noExistNodeFuture); Mockito.when(dataBroker.newReadOnlyTransaction()).thenReturn(rTx); Mockito.when(dataBroker.createTransactionChain(Mockito.any(TransactionChainManager.class))).thenReturn(txChainFactory); Mockito.when(deviceInfo.getNodeInstanceIdentifier()).thenReturn(nodeKeyIdent); Mockito.when(deviceInfo.getNodeId()).thenReturn(nodeId); - Mockito.when(deviceInfo.getDatapathId()).thenReturn(BigInteger.TEN); + Mockito.when(deviceInfo.getDatapathId()).thenReturn(BigInteger.ONE); final SettableFuture> settableFuture = SettableFuture.create(); final SettableFuture> settableFutureMultiReply = SettableFuture.create(); Mockito.when(requestContext.getFuture()).thenReturn(settableFuture); @@ -215,36 +224,33 @@ public class DeviceContextImplTest { Mockito.when(translatorLibrary.lookupTranslator(eq(new TranslatorKey(OFConstants.OFP_VERSION_1_3, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemoved.class.getName())))) .thenReturn(messageTranslatorFlowRemoved); - Mockito.when(lifecycleConductor.getMessageIntelligenceAgency()).thenReturn(messageIntelligenceAgency); - - deviceContext = new DeviceContextImpl(connectionContext, deviceState, dataBroker, lifecycleConductor, outboundQueueProvider, translatorLibrary, false); + deviceContext = new DeviceContextImpl( + connectionContext, + dataBroker, + messageSpy, + translatorLibrary, + deviceManager, + convertorExecutor, + false); deviceContextSpy = Mockito.spy(deviceContext); xid = new Xid(atomicLong.incrementAndGet()); xidMulti = new Xid(atomicLong.incrementAndGet()); - } + ((DeviceContextImpl) deviceContext).lazyTransactionManagerInitialization(); + + Mockito.doNothing().when(deviceContextSpy).writeToTransaction(Mockito.any(), Mockito.any(), any()); - @Test(expected = NullPointerException.class) - public void testDeviceContextImplConstructorNullDataBroker() throws Exception { - new DeviceContextImpl(connectionContext, deviceState, null, lifecycleConductor, outboundQueueProvider, translatorLibrary, false).close(); } @Test(expected = NullPointerException.class) - public void testDeviceContextImplConstructorNullDeviceState() throws Exception { - new DeviceContextImpl(connectionContext, null, dataBroker, lifecycleConductor, outboundQueueProvider, translatorLibrary, false).close(); + public void testDeviceContextImplConstructorNullDataBroker() throws Exception { + new DeviceContextImpl(connectionContext, null, null, translatorLibrary, deviceManager, convertorExecutor,false).close(); } @Test(expected = NullPointerException.class) public void testDeviceContextImplConstructorNullTimer() throws Exception { - new DeviceContextImpl(null, deviceState, dataBroker, lifecycleConductor, outboundQueueProvider, translatorLibrary, false).close(); - } - - @Test - public void testGetDeviceState() { - final DeviceState deviceSt = deviceContext.getDeviceState(); - assertNotNull(deviceSt); - assertEquals(deviceState, deviceSt); + new DeviceContextImpl(null, dataBroker, null, translatorLibrary, deviceManager,convertorExecutor,false).close(); } @Test @@ -261,23 +267,17 @@ public class DeviceContextImplTest { public void testInitialSubmitTransaction() throws Exception { Mockito.when(wTx.submit()).thenReturn(Futures.immediateCheckedFuture(null)); final InstanceIdentifier dummyII = InstanceIdentifier.create(Nodes.class); - deviceContext.getTransactionChainManager().activateTransactionManager() ; - deviceContext.getTransactionChainManager().enableSubmit(); + ((DeviceContextImpl) deviceContext).getTransactionChainManager().activateTransactionManager() ; + ((DeviceContextImpl) deviceContext).getTransactionChainManager().enableSubmit(); deviceContext.addDeleteToTxChain(LogicalDatastoreType.CONFIGURATION, dummyII); deviceContext.initialSubmitTransaction(); verify(wTx).submit(); } - @Test - public void testGetReservedXid() { - deviceContext.reserveXidForDeviceMessage(); - verify(outboundQueueProvider).reserveEntry(); - } - @Test public void testAuxiliaryConnectionContext() { final ConnectionContext mockedConnectionContext = addDummyAuxiliaryConnectionContext(); - final ConnectionContext pickedConnectiobContexts = deviceContext.getAuxiliaryConnectiobContexts(DUMMY_COOKIE); + final ConnectionContext pickedConnectiobContexts = deviceContext.getAuxiliaryConnectionContexts(DUMMY_COOKIE); assertEquals(mockedConnectionContext, pickedConnectiobContexts); } @Test @@ -287,9 +287,9 @@ public class DeviceContextImplTest { final ConnectionAdapter mockedAuxConnectionAdapter = mock(ConnectionAdapter.class); when(mockedConnectionContext.getConnectionAdapter()).thenReturn(mockedAuxConnectionAdapter); - assertNotNull(deviceContext.getAuxiliaryConnectiobContexts(DUMMY_COOKIE)); + assertNotNull(deviceContext.getAuxiliaryConnectionContexts(DUMMY_COOKIE)); deviceContext.removeAuxiliaryConnectionContext(mockedConnectionContext); - assertNull(deviceContext.getAuxiliaryConnectiobContexts(DUMMY_COOKIE)); + assertNull(deviceContext.getAuxiliaryConnectionContexts(DUMMY_COOKIE)); } private ConnectionContext addDummyAuxiliaryConnectionContext() { @@ -312,8 +312,8 @@ public class DeviceContextImplTest { @Test public void testAddDeleteToTxChain() throws Exception{ final InstanceIdentifier dummyII = InstanceIdentifier.create(Nodes.class); - deviceContext.getTransactionChainManager().activateTransactionManager() ; - deviceContext.getTransactionChainManager().enableSubmit(); + ((DeviceContextImpl) deviceContext).getTransactionChainManager().activateTransactionManager() ; + ((DeviceContextImpl) deviceContext).getTransactionChainManager().enableSubmit(); deviceContext.addDeleteToTxChain(LogicalDatastoreType.CONFIGURATION, dummyII); verify(wTx).delete(eq(LogicalDatastoreType.CONFIGURATION), eq(dummyII)); } @@ -323,8 +323,8 @@ public class DeviceContextImplTest { */ @Test public void testSubmitTransaction() throws Exception { - deviceContext.getTransactionChainManager().activateTransactionManager() ; - deviceContext.getTransactionChainManager().enableSubmit(); + ((DeviceContextImpl) deviceContext).getTransactionChainManager().activateTransactionManager() ; + ((DeviceContextImpl) deviceContext).getTransactionChainManager().enableSubmit(); assertTrue(deviceContext.submitTransaction()); } @@ -352,21 +352,14 @@ public class DeviceContextImplTest { assertNotNull(deviceMeterRegistry); } - @Test - public void testGetRpcContext() { - final RpcContext rpcContext = mock(RpcContext.class); - deviceContext.setRpcContext(rpcContext); - assertNotNull(deviceContext.getRpcContext()); - } - @Test public void testProcessReply() { final Error mockedError = mock(Error.class); deviceContext.processReply(mockedError); - verify(messageIntelligenceAgency).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_FAILURE)); + verify(messageSpy).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_FAILURE)); final OfHeader mockedOfHeader = mock(OfHeader.class); deviceContext.processReply(mockedOfHeader); - verify(messageIntelligenceAgency).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_SUCCESS)); + verify(messageSpy).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_SUCCESS)); } @Test @@ -374,7 +367,7 @@ public class DeviceContextImplTest { final MultipartReply mockedMultipartReply = mock(MultipartReply.class); final Xid dummyXid = new Xid(DUMMY_XID); deviceContext.processReply(dummyXid, Lists.newArrayList(mockedMultipartReply)); - verify(messageIntelligenceAgency).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_FAILURE)); + verify(messageSpy).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_FAILURE)); } @Test @@ -386,7 +379,7 @@ public class DeviceContextImplTest { when(mockedNotificationPublishService.offerNotification(any(PacketReceived.class))).thenReturn(stringListenableFuture); deviceContext.setNotificationPublishService(mockedNotificationPublishService); deviceContext.processPacketInMessage(mockedPacketInMessage); - verify(messageIntelligenceAgency).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_SUCCESS)); + verify(messageSpy).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_PUBLISHED_SUCCESS)); } @Test @@ -398,7 +391,7 @@ public class DeviceContextImplTest { when(mockedNotificationPublishService.offerNotification(any(PacketReceived.class))).thenReturn(dummyFuture); deviceContext.setNotificationPublishService(mockedNotificationPublishService); deviceContext.processPacketInMessage(mockedPacketInMessage); - verify(messageIntelligenceAgency).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_NOTIFICATION_REJECTED)); + verify(messageSpy).spyMessage(any(Class.class), eq(MessageSpy.STATISTIC_GROUP.FROM_SWITCH_NOTIFICATION_REJECTED)); } @Test @@ -419,8 +412,6 @@ public class DeviceContextImplTest { final ConnectionContext mockedAuxiliaryConnectionContext = prepareConnectionContext(); deviceContext.addAuxiliaryConnectionContext(mockedAuxiliaryConnectionContext); - final DeviceTerminationPhaseHandler mockedDeviceContextClosedHandler = mock(DeviceTerminationPhaseHandler.class); - when(deviceState.isValid()).thenReturn(true); deviceContext.shutdownConnection(); verify(connectionContext).closeConnection(true); } @@ -436,16 +427,7 @@ public class DeviceContextImplTest { @Test public void testGetMessageSpy() { final MessageSpy pickedMessageSpy = deviceContext.getMessageSpy(); - assertEquals(messageIntelligenceAgency, pickedMessageSpy); - } - - @Test - public void testNodeConnector() { - final NodeConnectorRef mockedNodeConnectorRef = mock(NodeConnectorRef.class); - deviceContext.storeNodeConnectorRef(DUMMY_PORT_NUMBER, mockedNodeConnectorRef); - final NodeConnectorRef nodeConnectorRef = deviceContext.lookupNodeConnectorRef(DUMMY_PORT_NUMBER); - assertEquals(mockedNodeConnectorRef, nodeConnectorRef); - + assertEquals(messageSpy, pickedMessageSpy); } @Test @@ -478,8 +460,9 @@ public class DeviceContextImplTest { when(mockedPortStatusMessage.getPortNo()).thenReturn(42L); OpenflowPortsUtil.init(); - deviceContext.processPortStatusMessage(mockedPortStatusMessage); -// verify(txChainManager).writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class), any(DataObject.class)); + deviceContextSpy.processPortStatusMessage(mockedPortStatusMessage); + verify(deviceContextSpy).writeToTransaction(Mockito.any(), Mockito.any(), any()); + verify(deviceContextSpy).submitTransaction(); } @Test @@ -515,9 +498,18 @@ public class DeviceContextImplTest { .child(Table.class, new TableKey((short) 0)) .child(Flow.class, new FlowKey(new FlowId("ut-ofp:f456"))); + Mockito.when(deviceManager.getIsNotificationFlowRemovedOff()).thenReturn(true); + deviceContext.setNotificationPublishService(mockedNotificationPublishService); deviceContext.processFlowRemovedMessage(flowRemovedBld.build()); + Mockito.verify(itemLifecycleListener).onRemoved(flowToBeRemovedPath); + Mockito.verify(mockedNotificationPublishService, Mockito.never()).offerNotification(Matchers.any(Notification.class)); + + Mockito.when(deviceManager.getIsNotificationFlowRemovedOff()).thenReturn(false); + deviceContext.processFlowRemovedMessage(flowRemovedBld.build()); + + Mockito.verify(mockedNotificationPublishService).offerNotification(Matchers.any(Notification.class)); } @Test @@ -533,7 +525,7 @@ public class DeviceContextImplTest { final NotificationPublishService mockedNotificationPublishService = mock(NotificationPublishService.class); deviceContext.setNotificationPublishService(mockedNotificationPublishService); - deviceContext.setExtensionConverterProvider(mockedExtensionConverterProvider); + ((DeviceContextImpl) deviceContext).setExtensionConverterProvider(mockedExtensionConverterProvider); deviceContext.processExperimenterMessage(experimenterMessage); verify(mockedNotificationPublishService).offerNotification(any(ExperimenterMessageFromDev.class)); @@ -550,26 +542,15 @@ public class DeviceContextImplTest { } @Test - public void testOnClusterRoleChange() throws Exception { - // test role.equals(oldRole) - Assert.assertNull(deviceContextSpy.onClusterRoleChange(OfpRole.BECOMEMASTER, OfpRole.BECOMEMASTER).get()); - - // test call transactionChainManager.deactivateTransactionManager() - Assert.assertNull(deviceContextSpy.onClusterRoleChange(OfpRole.BECOMESLAVE, OfpRole.NOCHANGE).get()); + public void replaceConnectionContext() throws Exception { - // test call MdSalRegistrationUtils.unregisterServices(rpcContext) - final RpcContext rpcContext = mock(RpcContext.class); - deviceContextSpy.setRpcContext(rpcContext); - Assert.assertNull(deviceContextSpy.onClusterRoleChange(OfpRole.BECOMESLAVE, OfpRole.NOCHANGE).get()); + final ConnectionContext connectionContext1 = mock(ConnectionContext.class); + Assert.assertEquals(deviceContext.getPrimaryConnectionContext(), connectionContext); + Mockito.when(connectionContext1.getConnectionAdapter()).thenReturn(connectionAdapter); + Mockito.doNothing().when(connectionAdapter).setPacketInFiltering(Mockito.anyBoolean()); + deviceContext.replaceConnectionContext(connectionContext1); + Assert.assertEquals(deviceContext.getPrimaryConnectionContext(), connectionContext1); - final StatisticsContext statisticsContext = mock(StatisticsContext.class); - deviceContextSpy.setStatisticsContext(statisticsContext); - - deviceContextSpy.onClusterRoleChange(OfpRole.NOCHANGE, OfpRole.BECOMEMASTER); - verify(deviceContextSpy).onDeviceTakeClusterLeadership(); - - Mockito.when(wTx.submit()).thenReturn(Futures.immediateCheckedFuture(null)); - deviceContextSpy.onClusterRoleChange(OfpRole.NOCHANGE, OfpRole.BECOMESLAVE); - verify(deviceContextSpy).onDeviceLostClusterLeadership(); } + }