X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fopenflow%2Fmd%2Fcore%2Fsal%2FModelDrivenSwitchImplTest.java;h=16f8c88c1e5577b433376b6ff1101ab38512b129;hb=611180ac770b6038b526c54994701db16d1a8567;hp=1494186f2dba2d962509d27cd5c3d012e6992088;hpb=a1187cf3c66079f1578abf72f0a6849a1e7671e9;p=openflowplugin.git diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java index 1494186f2d..16f8c88c1e 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java @@ -9,10 +9,12 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal; import java.math.BigInteger; +import java.util.ArrayList; import java.util.Collections; +import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; import org.junit.Before; import org.junit.Test; @@ -21,30 +23,122 @@ import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; -import org.opendaylight.controller.sal.common.util.Futures; import org.opendaylight.controller.sal.common.util.Rpcs; -import org.opendaylight.openflowplugin.openflow.md.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductor; -import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher; -import org.opendaylight.openflowplugin.openflow.md.core.session.IMessageDispatchService; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; +import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; +import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService; +import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.api.statistics.MessageSpy; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; -import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext; -import org.opendaylight.openflowplugin.openflow.md.core.session.TransactionKey; +import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.flow.update.OriginalFlowBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.flow.update.UpdatedFlowBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForGivenMatchInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowStatisticsFromFlowTableInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowStatisticsFromFlowTableOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowsStatisticsFromAllFlowTablesInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowsStatisticsFromAllFlowTablesOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.PortBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.queue.rev130925.QueueId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.UpdatedGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupFeaturesInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupFeaturesOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.meter.update.UpdatedMeterBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterFeaturesInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterFeaturesOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.port.update.UpdatedPortBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.GetAllQueuesStatisticsFromAllPortsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.GetAllQueuesStatisticsFromAllPortsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.GetAllQueuesStatisticsFromGivenPortInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.GetAllQueuesStatisticsFromGivenPortOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.GetQueueStatisticsFromGivenPortInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.GetQueueStatisticsFromGivenPortOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.table.update.UpdatedTable; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.table.update.UpdatedTableBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableConfig; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.TablePropertiesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeatureProperties; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeaturePropertiesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeaturePropertiesKey; +import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; /** * simple NPE smoke test @@ -63,9 +157,8 @@ public class ModelDrivenSwitchImplTest { private IMessageDispatchService messageDispatchService; @Mock private GetFeaturesOutput features; - - public static Cache bulkTransactionCache = CacheBuilder.newBuilder() - .expireAfterWrite(10000, TimeUnit.MILLISECONDS).concurrencyLevel(1).build(); + @Mock + private MessageSpy messageSpy; /** * @throws java.lang.Exception @@ -77,10 +170,11 @@ public class ModelDrivenSwitchImplTest { Mockito.when(conductor.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_0) .thenReturn(OFConstants.OFP_VERSION_1_3); Mockito.when(context.getFeatures()).thenReturn(features); - Mockito.when(context.getbulkTransactionCache()).thenReturn(bulkTransactionCache); Mockito.when(features.getDatapathId()).thenReturn(BigInteger.valueOf(1)); - OFSessionUtil.getSessionManager().setRpcPool(Executors.newFixedThreadPool(10)); + OFSessionUtil.getSessionManager().setRpcPool(MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10))); + OFSessionUtil.getSessionManager().setMessageSpy(messageSpy); + OpenflowPortsUtil.init(); mdSwitchOF10 = new ModelDrivenSwitchImpl(null, null, context); mdSwitchOF13 = new ModelDrivenSwitchImpl(null, null, context); @@ -90,9 +184,11 @@ public class ModelDrivenSwitchImplTest { * Test method for * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl#addFlow(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInput)} * . + * @throws ExecutionException + * @throws InterruptedException */ @Test - public void testAddFlow() { + public void testAddFlow() throws InterruptedException, ExecutionException { UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder(); updateFlowOutput.setTransactionId(new TransactionId(new BigInteger("42"))); Set errorSet = Collections.emptySet(); @@ -102,19 +198,26 @@ public class ModelDrivenSwitchImplTest { Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); AddFlowInputBuilder input = new AddFlowInputBuilder(); - input.setMatch(new MatchBuilder().build()); + input.setMatch(createMatch()); - mdSwitchOF10.addFlow(input.build()); - mdSwitchOF13.addFlow(input.build()); + Mockito.when(features.getVersion()).thenReturn((short)1); + mdSwitchOF10.addFlow(input.build()).get(); + Mockito.when(features.getVersion()).thenReturn((short)4); + mdSwitchOF13.addFlow(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).flowMod( + Matchers.any(FlowModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); } /** * Test method for * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl#removeFlow(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowInput)} * . + * @throws ExecutionException + * @throws InterruptedException */ @Test - public void testRemoveFlow() { + public void testRemoveFlow() throws InterruptedException, ExecutionException { UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder(); updateFlowOutput.setTransactionId(new TransactionId(new BigInteger("42"))); Set errorSet = Collections.emptySet(); @@ -124,19 +227,27 @@ public class ModelDrivenSwitchImplTest { Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); RemoveFlowInputBuilder input = new RemoveFlowInputBuilder(); - input.setMatch(new MatchBuilder().build()); + input.setMatch(createMatch()); - mdSwitchOF10.removeFlow(input.build()); - mdSwitchOF13.removeFlow(input.build()); + Mockito.when(features.getVersion()).thenReturn((short)1); + mdSwitchOF10.removeFlow(input.build()).get(); + Mockito.when(features.getVersion()).thenReturn((short)4); + mdSwitchOF13.removeFlow(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).flowMod( + Matchers.any(FlowModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } /** * Test method for * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl#updateFlow(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInput)} * . + * @throws ExecutionException + * @throws InterruptedException */ @Test - public void testUpdateFlow() { + public void testUpdateFlow() throws InterruptedException, ExecutionException { UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder(); updateFlowOutput.setTransactionId(new TransactionId(new BigInteger("42"))); Set errorSet = Collections.emptySet(); @@ -147,10 +258,909 @@ public class ModelDrivenSwitchImplTest { UpdateFlowInputBuilder input = new UpdateFlowInputBuilder(); UpdatedFlowBuilder updatedFlow = new UpdatedFlowBuilder(); - updatedFlow.setMatch(new MatchBuilder().build()); + updatedFlow.setBarrier(false); + updatedFlow.setMatch(createMatch()); + updatedFlow.setPriority(65); + updatedFlow.setFlags(new FlowModFlags(true, false, true, false, true)); input.setUpdatedFlow(updatedFlow.build()); + OriginalFlowBuilder originalFlowBuilder = new OriginalFlowBuilder(); + originalFlowBuilder.setMatch(createMatch()); + originalFlowBuilder.setPriority(65); + originalFlowBuilder.setFlags(new FlowModFlags(true, false, true, false, true)); + input.setOriginalFlow(originalFlowBuilder.build()); + + Mockito.when(features.getVersion()).thenReturn((short)1); + mdSwitchOF10.updateFlow(input.build()).get(); + Mockito.when(features.getVersion()).thenReturn((short)4); + mdSwitchOF13.updateFlow(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).flowMod( + Matchers.any(FlowModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * addGroup(org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918. + * AddGroupInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testAddGroup() throws InterruptedException, ExecutionException { + UpdateGroupOutputBuilder updateGroupOutput = new UpdateGroupOutputBuilder(); + updateGroupOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, updateGroupOutput.build(), errorSet); + Mockito.when( + messageDispatchService.groupMod(Matchers.any(GroupModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + AddGroupInputBuilder input = new AddGroupInputBuilder(); + input.setGroupType(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes.GroupFf); + input.setGroupId(new GroupId(789L)); + + mdSwitchOF10.addGroup(input.build()).get(); + mdSwitchOF13.addGroup(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).groupMod( + Matchers.any(GroupModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * updateGroup(org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918. + * UpdateGroupInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testUpdateGroup() throws InterruptedException, ExecutionException { + UpdateGroupOutputBuilder updateGroupOutput = new UpdateGroupOutputBuilder(); + updateGroupOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, updateGroupOutput.build(), errorSet); + Mockito.when( + messageDispatchService.groupMod(Matchers.any(GroupModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + UpdateGroupInputBuilder input = new UpdateGroupInputBuilder(); + UpdatedGroupBuilder updatedGroupBuilder = new UpdatedGroupBuilder(); + updatedGroupBuilder.setGroupId(new GroupId(789L)); + updatedGroupBuilder.setGroupType(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes.GroupFf); + input.setUpdatedGroup(updatedGroupBuilder.build()); + + mdSwitchOF10.updateGroup(input.build()).get(); + mdSwitchOF13.updateGroup(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).groupMod( + Matchers.any(GroupModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * removeGroup(org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918. + * RemoveGroupInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testRemoveGroup() throws InterruptedException, ExecutionException { + UpdateGroupOutputBuilder updateGroupOutput = new UpdateGroupOutputBuilder(); + updateGroupOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, updateGroupOutput.build(), errorSet); + Mockito.when( + messageDispatchService.groupMod(Matchers.any(GroupModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + RemoveGroupInputBuilder input = new RemoveGroupInputBuilder(); + input.setGroupId(new GroupId(789L)); + input.setGroupType(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes.GroupFf); + + mdSwitchOF10.removeGroup(input.build()).get(); + mdSwitchOF13.removeGroup(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).groupMod( + Matchers.any(GroupModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * addMeter(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918. + * AddMeterInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testAddMeter() throws InterruptedException, ExecutionException { + UpdateMeterOutputBuilder updateMeterOutput = new UpdateMeterOutputBuilder(); + updateMeterOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, updateMeterOutput.build(), errorSet); + Mockito.when( + messageDispatchService.meterMod(Matchers.any(MeterModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + AddMeterInputBuilder input = new AddMeterInputBuilder(); + input.setMeterId(new MeterId(78L)); + + mdSwitchOF10.addMeter(input.build()).get(); + mdSwitchOF13.addMeter(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).meterMod( + Matchers.any(MeterModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * updateMeter(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918. + * UpdateMeterInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testUpdtateMeter() throws InterruptedException, ExecutionException { + UpdateMeterOutputBuilder updateMeterOutput = new UpdateMeterOutputBuilder(); + updateMeterOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, updateMeterOutput.build(), errorSet); + Mockito.when( + messageDispatchService.meterMod(Matchers.any(MeterModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + UpdateMeterInputBuilder input = new UpdateMeterInputBuilder(); + UpdatedMeterBuilder updatedMeterBuilder = new UpdatedMeterBuilder(); + updatedMeterBuilder.setMeterId(new MeterId(89L)); + updatedMeterBuilder.setBarrier(false); + input.setUpdatedMeter(updatedMeterBuilder.build()); + + mdSwitchOF10.updateMeter(input.build()).get(); + mdSwitchOF13.updateMeter(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).meterMod( + Matchers.any(MeterModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * removeMeter(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918. + * RemoveMeterInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testRemoveMeter() throws InterruptedException, ExecutionException { + UpdateMeterOutputBuilder updateMeterOutput = new UpdateMeterOutputBuilder(); + updateMeterOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, updateMeterOutput.build(), errorSet); + Mockito.when( + messageDispatchService.meterMod(Matchers.any(MeterModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + RemoveMeterInputBuilder input = new RemoveMeterInputBuilder(); + input.setMeterId(new MeterId(89L)); + + mdSwitchOF10.removeMeter(input.build()).get(); + mdSwitchOF13.removeMeter(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).meterMod( + Matchers.any(MeterModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllGroupStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111. + * GetAllGroupStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllGroupStatistics() throws InterruptedException, ExecutionException { + GetAllGroupStatisticsOutputBuilder getAllGroupStatistcsOutput = new GetAllGroupStatisticsOutputBuilder(); + getAllGroupStatistcsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllGroupStatisticsInputBuilder input = new GetAllGroupStatisticsInputBuilder(); + + mdSwitchOF10.getAllGroupStatistics(input.build()).get(); + mdSwitchOF13.getAllGroupStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getGroupDescription(org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111. + * GetGroupDescriptionInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetGroupDescription() throws InterruptedException, ExecutionException { + GetGroupDescriptionOutputBuilder getGroupDescOutput = new GetGroupDescriptionOutputBuilder(); + getGroupDescOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); - mdSwitchOF10.updateFlow(input.build()); - mdSwitchOF13.updateFlow(input.build()); + GetGroupDescriptionInputBuilder input = new GetGroupDescriptionInputBuilder(); + + mdSwitchOF10.getGroupDescription(input.build()).get(); + mdSwitchOF13.getGroupDescription(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getGroupFeatures(org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111. + * GetGroupFeaturesInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetGroupFeatures() throws InterruptedException, ExecutionException { + GetGroupFeaturesOutputBuilder getGroupFeaturesOutput = new GetGroupFeaturesOutputBuilder(); + getGroupFeaturesOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetGroupFeaturesInputBuilder input = new GetGroupFeaturesInputBuilder(); + + mdSwitchOF10.getGroupFeatures(input.build()).get(); + mdSwitchOF13.getGroupFeatures(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getGroupStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111. + * GetGroupStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + //TODO GetGroupStatistics why NPE? + @Test + public void testGetGroupStatistics() throws InterruptedException, ExecutionException { + GetGroupStatisticsOutputBuilder getGroupStatsOutput = new GetGroupStatisticsOutputBuilder(); + getGroupStatsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetGroupStatisticsInputBuilder input = new GetGroupStatisticsInputBuilder(); + input.setGroupId(new GroupId(42L)); + + mdSwitchOF10.getGroupStatistics(input.build()).get(); + mdSwitchOF13.getGroupStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllMeterConfigStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111. + * GetAllMeterConfigStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllMeterConfigStatistics() throws InterruptedException, ExecutionException { + GetAllMeterConfigStatisticsOutputBuilder getAllMeterConfigStatsOutput = + new GetAllMeterConfigStatisticsOutputBuilder(); + getAllMeterConfigStatsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllMeterConfigStatisticsInputBuilder input = new GetAllMeterConfigStatisticsInputBuilder(); + + mdSwitchOF10.getAllMeterConfigStatistics(input.build()).get(); + mdSwitchOF13.getAllMeterConfigStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllMeterStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111. + * GetAllMeterStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllMeterStatistics() throws InterruptedException, ExecutionException { + GetAllMeterStatisticsOutputBuilder getAllMeterStatisticsOutput = + new GetAllMeterStatisticsOutputBuilder(); + getAllMeterStatisticsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllMeterStatisticsInputBuilder input = new GetAllMeterStatisticsInputBuilder(); + + mdSwitchOF10.getAllMeterStatistics(input.build()).get(); + mdSwitchOF13.getAllMeterStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getMeterFeatures(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111. + * GetMeterFeaturesInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetMeterFeatures() throws InterruptedException, ExecutionException { + GetMeterFeaturesOutputBuilder getMeterFeaturesOutput = + new GetMeterFeaturesOutputBuilder(); + getMeterFeaturesOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetMeterFeaturesInputBuilder input = new GetMeterFeaturesInputBuilder(); + + mdSwitchOF10.getMeterFeatures(input.build()).get(); + mdSwitchOF13.getMeterFeatures(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getMeterStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111. + * GetMeterStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetMeterStatistics() throws InterruptedException, ExecutionException { + GetMeterStatisticsOutputBuilder getMeterStatsOutput = new GetMeterStatisticsOutputBuilder(); + getMeterStatsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetMeterStatisticsInputBuilder input = new GetMeterStatisticsInputBuilder(); + input.setMeterId(new MeterId(42L)); + + mdSwitchOF10.getMeterStatistics(input.build()).get(); + mdSwitchOF13.getMeterStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllNodeConnectorsStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214. + * GetAllNodeConnectorsStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllNodeConnectorsStatistics() throws InterruptedException, ExecutionException { + GetAllNodeConnectorsStatisticsOutputBuilder getAllNodeConnectorsStatsOutput = + new GetAllNodeConnectorsStatisticsOutputBuilder(); + getAllNodeConnectorsStatsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllNodeConnectorsStatisticsInputBuilder input = new GetAllNodeConnectorsStatisticsInputBuilder(); + + mdSwitchOF10.getAllNodeConnectorsStatistics(input.build()).get(); + mdSwitchOF13.getAllNodeConnectorsStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getNodeConnectorStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214. + * GetNodeConnectorStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetNodeConnectorStatistics() throws InterruptedException, ExecutionException { + GetNodeConnectorStatisticsOutputBuilder getNodeConnectorStatsOutput = + new GetNodeConnectorStatisticsOutputBuilder(); + getNodeConnectorStatsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetNodeConnectorStatisticsInputBuilder input = new GetNodeConnectorStatisticsInputBuilder(); + input.setNodeConnectorId(new NodeConnectorId("openflow:12:8")); + + Mockito.when(features.getVersion()).thenReturn((short)1); + mdSwitchOF10.getNodeConnectorStatistics(input.build()).get(); + Mockito.when(features.getVersion()).thenReturn((short)4); + mdSwitchOF13.getNodeConnectorStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * updatePort(org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107. + * UpdatePortInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testUpdatePort() throws InterruptedException, ExecutionException { + UpdatePortOutputBuilder updatePortOutput = new UpdatePortOutputBuilder(); + updatePortOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, updatePortOutput.build(), errorSet); + Mockito.when( + messageDispatchService.portMod(Matchers.any(PortModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + UpdatePortInputBuilder input = new UpdatePortInputBuilder(); + + PortBuilder portBuilder = new PortBuilder(); + List ports = new ArrayList(); + ports.add(createPort()); + portBuilder.setPort(ports); + UpdatedPortBuilder updatedPortBuilder = new UpdatedPortBuilder(); + updatedPortBuilder.setPort(portBuilder.build()); + input.setUpdatedPort(updatedPortBuilder.build()); + + mdSwitchOF10.updatePort(input.build()).get(); + mdSwitchOF13.updatePort(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).portMod( + Matchers.any(PortModInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + private static Port createPort() { + org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortBuilder port = + new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortBuilder(); + + port.setPortName("TestingPort01"); + port.setMask(new PortConfig(true, true, true, true)); + port.setConfiguration(new PortConfig(true, true, true, true)); + port.setAdvertisedFeatures(new PortFeatures(true, true, true, true, + false, false, false, false, + true, true, true, true, + false, false, false, false)); + port.setPortNumber(new PortNumberUni(42L)); + port.setHardwareAddress(new MacAddress("01:23:45:67:89:ab")); + port.setBarrier(true); + port.setContainerName("TestContainer"); + port.setPortModOrder(25L); + port.setKey(new PortKey(25L)); + return port.build(); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * updateTable(org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026. + * UpdateTableInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testUpdateTable() throws InterruptedException, ExecutionException { + UpdateTableOutputBuilder updateTableOutput = new UpdateTableOutputBuilder(); + updateTableOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + UpdateTableInputBuilder input = new UpdateTableInputBuilder(); + input.setUpdatedTable(createUpdateTable()); + + mdSwitchOF10.updateTable(input.build()).get(); + mdSwitchOF13.updateTable(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + private static UpdatedTable createUpdateTable() { + UpdatedTableBuilder updatedTableBuilder = new UpdatedTableBuilder(); + TableFeaturesBuilder tableFeaturesBuilder = new TableFeaturesBuilder(); + tableFeaturesBuilder.setConfig(new TableConfig(true)); + tableFeaturesBuilder.setKey(new TableFeaturesKey((short) 42)); + tableFeaturesBuilder.setMaxEntries(42L); + tableFeaturesBuilder.setMetadataMatch(new BigInteger("42424242")); + tableFeaturesBuilder.setMetadataWrite(new BigInteger("42424242")); + tableFeaturesBuilder.setName("testTableFeatures"); + tableFeaturesBuilder.setTableId((short) 41); + + TablePropertiesBuilder tablePropertiesBuilder = new TablePropertiesBuilder(); + TableFeaturePropertiesBuilder tableFeaturePropertiesBuilder = new TableFeaturePropertiesBuilder(); + tableFeaturePropertiesBuilder.setKey(new TableFeaturePropertiesKey(45)); + tableFeaturePropertiesBuilder.setOrder(44); + tableFeaturePropertiesBuilder.setTableFeaturePropType(new ApplySetfieldBuilder().build()); + List tableFeatureProperties = new ArrayList(); + tableFeatureProperties.add(tableFeaturePropertiesBuilder.build()); + tablePropertiesBuilder.setTableFeatureProperties(tableFeatureProperties); + + tableFeaturesBuilder.setTableProperties(tablePropertiesBuilder.build()); + List tableFeatures = new ArrayList(); + tableFeatures.add(tableFeaturesBuilder.build()); + updatedTableBuilder.setTableFeatures(tableFeatures); + return updatedTableBuilder.build(); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllFlowStatisticsFromFlowTable(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819. + * GetAllFlowStatisticsFromFlowTableInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllFlowStatisticsFromFlowTable() throws InterruptedException, ExecutionException { + GetAllFlowStatisticsFromFlowTableOutputBuilder allFlowStatisticsFromFlowTableOutput = + new GetAllFlowStatisticsFromFlowTableOutputBuilder(); + allFlowStatisticsFromFlowTableOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllFlowStatisticsFromFlowTableInputBuilder input = new GetAllFlowStatisticsFromFlowTableInputBuilder(); + input.setTableId(new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId((short) 42)); + + mdSwitchOF10.getAllFlowStatisticsFromFlowTable(input.build()).get(); + mdSwitchOF13.getAllFlowStatisticsFromFlowTable(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllFlowStatisticsFromFlowTable(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819. + * GetAllFlowStatisticsFromFlowTableInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllFlowsStatisticsFromAllFlowTables() throws InterruptedException, ExecutionException { + GetAllFlowsStatisticsFromAllFlowTablesOutputBuilder allFlowStatisticsFromAllFlowTablesOutput = + new GetAllFlowsStatisticsFromAllFlowTablesOutputBuilder(); + allFlowStatisticsFromAllFlowTablesOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllFlowsStatisticsFromAllFlowTablesInputBuilder input = + new GetAllFlowsStatisticsFromAllFlowTablesInputBuilder(); + + mdSwitchOF10.getAllFlowsStatisticsFromAllFlowTables(input.build()).get(); + mdSwitchOF13.getAllFlowsStatisticsFromAllFlowTables(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllFlowStatisticsFromFlowTable(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819. + * GetAllFlowStatisticsFromFlowTableInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetFlowStatisticsFromFlowTables() throws InterruptedException, ExecutionException { + GetFlowStatisticsFromFlowTableOutputBuilder flowStatisticsFromFlowTablesOutput = + new GetFlowStatisticsFromFlowTableOutputBuilder(); + flowStatisticsFromFlowTablesOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetFlowStatisticsFromFlowTableInputBuilder input = + new GetFlowStatisticsFromFlowTableInputBuilder(); + input.setMatch(createMatch()); + + mdSwitchOF10.getFlowStatisticsFromFlowTable(input.build()).get(); + mdSwitchOF13.getFlowStatisticsFromFlowTable(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + private static Match createMatch() { + MatchBuilder matchBuilder = new MatchBuilder(); + EthernetMatchBuilder ethernetMatchBuilder = new EthernetMatchBuilder(); + EthernetDestinationBuilder ethernetDestinationBuilder = new EthernetDestinationBuilder(); + ethernetDestinationBuilder.setAddress(new MacAddress("01:23:45:67:89:ab")); + ethernetDestinationBuilder.setMask(new MacAddress("01:23:45:67:89:ab")); + ethernetMatchBuilder.setEthernetDestination(ethernetDestinationBuilder.build()); + EthernetSourceBuilder ethernetSourceBuilder = new EthernetSourceBuilder(); + ethernetSourceBuilder.setAddress(new MacAddress("01:23:45:67:89:ab")); + ethernetSourceBuilder.setMask(new MacAddress("01:23:45:67:89:ab")); + ethernetMatchBuilder.setEthernetSource(ethernetSourceBuilder.build()); + ethernetMatchBuilder.setEthernetType(new EthernetTypeBuilder().setType(new EtherType(42L)).build()); + matchBuilder.setEthernetMatch(ethernetMatchBuilder.build()); + return matchBuilder.build(); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAggregateFlowStatisticsFromFlowTableForAllFlows(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819. + * GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAggregateFlowStatisticsFromFlowTableForAllFlows() throws InterruptedException, + ExecutionException { + GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutputBuilder aggregateFlowStatisticsOutput = + new GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutputBuilder(); + aggregateFlowStatisticsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAggregateFlowStatisticsFromFlowTableForAllFlowsInputBuilder input = + new GetAggregateFlowStatisticsFromFlowTableForAllFlowsInputBuilder(); + input.setTableId(new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId((short) 42)); + + mdSwitchOF10.getAggregateFlowStatisticsFromFlowTableForAllFlows(input.build()).get(); + mdSwitchOF13.getAggregateFlowStatisticsFromFlowTableForAllFlows(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAggregateFlowStatisticsFromFlowTableForGivenMatch(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819. + * GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAggregateFlowStatisticsFromFlowTableForGivenMatch() throws InterruptedException, + ExecutionException { + GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder aggregateFlowStatisticsForMatchOutput = + new GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder(); + aggregateFlowStatisticsForMatchOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAggregateFlowStatisticsFromFlowTableForGivenMatchInputBuilder input = + new GetAggregateFlowStatisticsFromFlowTableForGivenMatchInputBuilder(); + input.setMatch(createMatch()); + input.setCookie(new FlowCookie(new BigInteger("123456"))); + input.setCookieMask(new FlowCookie(new BigInteger("123456"))); + input.setOutGroup(44L); + input.setOutPort(new BigInteger("12563")); + + mdSwitchOF10.getAggregateFlowStatisticsFromFlowTableForGivenMatch(input.build()).get(); + mdSwitchOF13.getAggregateFlowStatisticsFromFlowTableForGivenMatch(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getFlowTablesStatistics(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215. + * GetFlowTablesStatisticsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetFlowTablesStatistics() throws InterruptedException, ExecutionException { + GetFlowTablesStatisticsOutputBuilder flowTableStatisticsOutput = + new GetFlowTablesStatisticsOutputBuilder(); + flowTableStatisticsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetFlowTablesStatisticsInputBuilder input = new GetFlowTablesStatisticsInputBuilder(); + + mdSwitchOF10.getFlowTablesStatistics(input.build()).get(); + mdSwitchOF13.getFlowTablesStatistics(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllQueuesStatisticsFromAllPorts(org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216. + * GetAllQueuesStatisticsFromAllPortsInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllQueuesStatisticsFromAllPorts() throws InterruptedException, ExecutionException { + GetAllQueuesStatisticsFromAllPortsOutputBuilder allQueuesStatisticsAllPortsOutput = + new GetAllQueuesStatisticsFromAllPortsOutputBuilder(); + allQueuesStatisticsAllPortsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllQueuesStatisticsFromAllPortsInputBuilder input = + new GetAllQueuesStatisticsFromAllPortsInputBuilder(); + + mdSwitchOF10.getAllQueuesStatisticsFromAllPorts(input.build()).get(); + mdSwitchOF13.getAllQueuesStatisticsFromAllPorts(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getAllQueuesStatisticsFromGivenPort(org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216. + * GetAllQueuesStatisticsFromGivenPortInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetAllQueuesStatisticsFromGivenPort() throws InterruptedException, ExecutionException { + GetAllQueuesStatisticsFromGivenPortOutputBuilder allQueuesStatisticsGivenPortsOutput = + new GetAllQueuesStatisticsFromGivenPortOutputBuilder(); + allQueuesStatisticsGivenPortsOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetAllQueuesStatisticsFromGivenPortInputBuilder input = + new GetAllQueuesStatisticsFromGivenPortInputBuilder(); + input.setNodeConnectorId(new NodeConnectorId("openflow:12:8")); + + Mockito.when(features.getVersion()).thenReturn((short)1); + mdSwitchOF10.getAllQueuesStatisticsFromGivenPort(input.build()).get(); + Mockito.when(features.getVersion()).thenReturn((short)4); + mdSwitchOF13.getAllQueuesStatisticsFromGivenPort(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); + } + + /** + * Test method for + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl# + * getQueueStatisticsFromGivenPort(org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216. + * GetQueueStatisticsFromGivenPortInput)} + * . + * @throws ExecutionException + * @throws InterruptedException + */ + @Test + public void testGetQueueStatisticsFromGivenPort() throws InterruptedException, ExecutionException { + GetQueueStatisticsFromGivenPortOutputBuilder queuesStatisticsGivenPortOutput = + new GetQueueStatisticsFromGivenPortOutputBuilder(); + queuesStatisticsGivenPortOutput.setTransactionId(new TransactionId(new BigInteger("42"))); + Set errorSet = Collections.emptySet(); + RpcResult result = Rpcs.getRpcResult(true, null, errorSet); + Mockito.when( + messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); + + GetQueueStatisticsFromGivenPortInputBuilder input = + new GetQueueStatisticsFromGivenPortInputBuilder(); + input.setNodeConnectorId(new NodeConnectorId("openflow:12:8")); + input.setQueueId(new QueueId(55L)); + + Mockito.when(features.getVersion()).thenReturn((short)1); + mdSwitchOF10.getQueueStatisticsFromGivenPort(input.build()).get(); + Mockito.when(features.getVersion()).thenReturn((short)4); + mdSwitchOF13.getQueueStatisticsFromGivenPort(input.build()).get(); + Mockito.verify(messageDispatchService, Mockito.times(2)).multipartRequest( + Matchers.any(MultipartRequestInput.class), + Matchers.any(SwitchConnectionDistinguisher.class)); } }