/**
* Copyright (c) 2013 Cisco Systems, Inc. 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,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowplugin.openflow.md.core.sal;
import com.google.common.base.Optional;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.MoreExecutors;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
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.openflow.statistics.MessageSpy;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory;
import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowHashIdMapping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
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.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.FlowRef;
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.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.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.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
/**
* simple NPE smoke test
*/
@RunWith(MockitoJUnitRunner.class)
public class ModelDrivenSwitchImplTest {
private ModelDrivenSwitchImpl mdSwitchOF10;
private ModelDrivenSwitchImpl mdSwitchOF13;
@Mock
private SessionContext context;
@Mock
private ConnectionConductor conductor;
@Mock
private IMessageDispatchService messageDispatchService;
@Mock
private GetFeaturesOutput features;
@Mock
private MessageSpy<DataContainer> messageSpy;
@Mock
private DataBroker dataBroker;
@Mock
private ReadWriteTransaction rwTx;
@Mock
private EntityOwnershipService entityOwnershipService;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
Mockito.when(context.getPrimaryConductor()).thenReturn(conductor);
Mockito.when(context.getMessageDispatchService()).thenReturn(messageDispatchService);
Mockito.when(conductor.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_0)
.thenReturn(OFConstants.OFP_VERSION_1_3);
Mockito.when(context.getFeatures()).thenReturn(features);
Mockito.when(features.getDatapathId()).thenReturn(BigInteger.valueOf(1));
OFSessionUtil.getSessionManager().setRpcPool(MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)));
OFSessionUtil.getSessionManager().setMessageSpy(messageSpy);
OFSessionUtil.getSessionManager().setDataBroker(dataBroker);
CheckedFuture<Optional<FlowHashIdMapping>, ReadFailedException> dummyReadFuture
= Futures.<Optional<FlowHashIdMapping>,ReadFailedException>immediateCheckedFuture(Optional.<FlowHashIdMapping>absent());
Mockito.when(rwTx.read(Matchers.<LogicalDatastoreType>any(), Matchers.<InstanceIdentifier<FlowHashIdMapping>>any())).thenReturn(dummyReadFuture);
Mockito.when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager();
mdSwitchOF10 = new ModelDrivenSwitchImpl(null, null, context, convertorManager);
mdSwitchOF13 = new ModelDrivenSwitchImpl(null, null, context, convertorManager);
}
/**
* 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() throws InterruptedException, ExecutionException {
UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder();
updateFlowOutput.setTransactionId(new TransactionId(BigInteger.valueOf(42)));
RpcResult<UpdateFlowOutput> result = RpcResultBuilder.success(updateFlowOutput.build()).build();
Mockito.when(
messageDispatchService.flowMod(Matchers.any(FlowModInput.class),
Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result));
AddFlowInputBuilder input = new AddFlowInputBuilder();
input.setMatch(createMatch());
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() throws InterruptedException, ExecutionException {
UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder();
updateFlowOutput.setTransactionId(new TransactionId(BigInteger.valueOf(42)));
RpcResult<UpdateFlowOutput> result = RpcResultBuilder.success(updateFlowOutput.build()).build();
Mockito.when(
messageDispatchService.flowMod(Matchers.any(FlowModInput.class),
Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result));
RemoveFlowInputBuilder input = new RemoveFlowInputBuilder();
input.setMatch(createMatch());
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() throws InterruptedException, ExecutionException {
UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder();
updateFlowOutput.setTransactionId(new TransactionId(BigInteger.valueOf(42)));
RpcResult<UpdateFlowOutput> result = RpcResultBuilder.success(updateFlowOutput.build()).build();
Mockito.when(
messageDispatchService.flowMod(Matchers.any(FlowModInput.class),
Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result));
UpdateFlowInputBuilder input = new UpdateFlowInputBuilder();
UpdatedFlowBuilder updatedFlow = new UpdatedFlowBuilder();
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());
KeyedInstanceIdentifier<Flow, FlowKey> dummyIdentifier = InstanceIdentifier.create(Nodes.class)
.child(Node.class, new NodeKey(new NodeId("openflow:1")))
.augmentation(FlowCapableNode.class)
.child(Table.class, new TableKey((short)0))
.child(Flow.class, new FlowKey(new FlowId("1")));
input.setFlowRef(new FlowRef(dummyIdentifier));
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(BigInteger.valueOf(42)));
RpcResult<UpdateGroupOutput> result = RpcResultBuilder.success(updateGroupOutput.build()).build();
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(BigInteger.valueOf(42)));
RpcResult<UpdateGroupOutput> result = RpcResultBuilder.success(updateGroupOutput.build()).build();
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(BigInteger.valueOf(42)));
RpcResult<UpdateGroupOutput> result = RpcResultBuilder.success(updateGroupOutput.build()).build();
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(BigInteger.valueOf(42)));
RpcResult<UpdateMeterOutput> result = RpcResultBuilder.success(updateMeterOutput.build()).build();
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(BigInteger.valueOf(42)));
RpcResult<UpdateMeterOutput> result = RpcResultBuilder.success(updateMeterOutput.build()).build();
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(BigInteger.valueOf(42)));
RpcResult<UpdateMeterOutput> result = RpcResultBuilder.success(updateMeterOutput.build()).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
Mockito.when(
messageDispatchService.multipartRequest(Matchers.any(MultipartRequestInput.class),
Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result));
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();;
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<UpdatePortOutput> result = RpcResultBuilder.success(updatePortOutput.build()).build();
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<Port> ports = new ArrayList<Port>();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42424242));
tableFeaturesBuilder.setMetadataWrite(BigInteger.valueOf(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> tableFeatureProperties = new ArrayList<TableFeatureProperties>();
tableFeatureProperties.add(tableFeaturePropertiesBuilder.build());
tablePropertiesBuilder.setTableFeatureProperties(tableFeatureProperties);
tableFeaturesBuilder.setTableProperties(tablePropertiesBuilder.build());
List<TableFeatures> tableFeatures = new ArrayList<TableFeatures>();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(123456)));
input.setCookieMask(new FlowCookie(BigInteger.valueOf(123456)));
input.setOutGroup(44L);
input.setOutPort(BigInteger.valueOf(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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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(BigInteger.valueOf(42)));
RpcResult<Void> result = RpcResultBuilder.success((Void)null).build();
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));
}
}