import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
-import java.math.BigInteger;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
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.meter.statistics.rev131111.NodeMeterStatistics;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.nodes.node.meter.MeterStatistics;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.node.meter.statistics.MeterStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
+import org.opendaylight.yangtools.yang.common.Uint8;
@RunWith(MockitoJUnitRunner.class)
public class StatisticsGatheringUtilsTest {
when(deviceContext.getDeviceGroupRegistry()).thenReturn(deviceGroupRegistry);
when(deviceContext.getDeviceMeterRegistry()).thenReturn(deviceMeterRegistry);
when(deviceFlowRegistry.retrieveDescriptor(any(FlowRegistryKey.class))).thenReturn(flowDescriptor);
+ when(flowDescriptor.getFlowId()).thenReturn(new FlowId("MOCK_FLOW"));
when(deviceContext.getReadTransaction()).thenReturn(readTx);
when(deviceContext.getReadTransaction()).thenReturn(readTx);
when(deviceContext.getPrimaryConnectionContext()).thenReturn(connectionAdapter);
when(deviceContext.isTransactionsEnabled()).thenReturn(Boolean.TRUE);
when(connectionAdapter.getFeatures()).thenReturn(features);
- when(features.getDatapathId()).thenReturn(BigInteger.ONE);
+ when(features.getDatapathId()).thenReturn(Uint64.ONE);
when(features.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3);
when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3);
- when(deviceInfo.getDatapathId()).thenReturn(BigInteger.ONE);
+ when(deviceInfo.getDatapathId()).thenReturn(Uint64.ONE);
when(deviceInfo.getNodeInstanceIdentifier()).thenReturn(dummyNodePath);
when(deviceInfo.getNodeId()).thenReturn(DUMMY_NODE_ID);
provider = MultipartWriterProviderFactory.createDefaultProvider(deviceContext);
final ArgumentCaptor<InstanceIdentifier> flowPath = ArgumentCaptor.forClass(InstanceIdentifier.class);
final ArgumentCaptor<Flow> flow = ArgumentCaptor.forClass(Flow.class);
- provider.lookup(MultipartType.OFPMPFLOW).get().write(prepareFlowStatisticsData().iterator().next(), false);
+ provider.lookup(MultipartType.OFPMPFLOW).orElseThrow().write(prepareFlowStatisticsData().iterator().next(),
+ false);
Mockito.verify(deviceContext).writeToTransaction(
dataStoreType.capture(), flowPath.capture(), flow.capture());
Assert.assertEquals(42, flow.getValue().getTableId().intValue());
}
- private Iterable<FlowsStatisticsUpdate> prepareFlowStatisticsData() {
+ private static Iterable<FlowsStatisticsUpdate> prepareFlowStatisticsData() {
final FlowAndStatisticsMapListBuilder flowAndStatsMapListBld = new FlowAndStatisticsMapListBuilder();
- flowAndStatsMapListBld.setTableId((short) 42);
+ flowAndStatsMapListBld.setTableId(Uint8.valueOf(42));
flowAndStatsMapListBld.setMatch(new MatchBuilder().build());
final FlowsStatisticsUpdateBuilder flowStatsUpdateBld1 = new FlowsStatisticsUpdateBuilder();
- flowStatsUpdateBld1.setFlowAndStatisticsMapList(Lists.newArrayList(flowAndStatsMapListBld.build()));
+ flowStatsUpdateBld1.setFlowAndStatisticsMapList(List.of(flowAndStatsMapListBld.build()));
- return Lists.newArrayList(flowStatsUpdateBld1.build());
+ return List.of(flowStatsUpdateBld1.build());
}
-
@Test
public void testGatherStatistics_group() throws Exception {
final MultipartType type = MultipartType.OFPMPGROUP;
- final long groupIdValue = 19L;
+ final Uint32 groupIdValue = Uint32.valueOf(19);
final GroupStatsBuilder groupStatsBld = new GroupStatsBuilder()
- .setBucketStats(Lists.newArrayList(createBucketStat(21L, 42L)))
- .setByteCount(BigInteger.valueOf(84L))
- .setPacketCount(BigInteger.valueOf(63L))
- .setDurationSec(11L)
- .setDurationNsec(12L)
- .setRefCount(13L)
+ .setBucketStats(List.of(createBucketStat(21L, 42L)))
+ .setByteCount(Uint64.valueOf(84))
+ .setPacketCount(Uint64.valueOf(63))
+ .setDurationSec(Uint32.valueOf(11))
+ .setDurationNsec(Uint32.valueOf(12))
+ .setRefCount(Uint32.valueOf(13))
.setGroupId(new GroupId(groupIdValue));
final MultipartReplyGroupBuilder mpReplyGroupBld = new MultipartReplyGroupBuilder();
- mpReplyGroupBld.setGroupStats(Lists.newArrayList(groupStatsBld.build()));
+ mpReplyGroupBld.setGroupStats(List.of(groupStatsBld.build()));
final MultipartReplyGroupCaseBuilder mpReplyGroupCaseBld = new MultipartReplyGroupCaseBuilder();
mpReplyGroupCaseBld.setMultipartReplyGroup(mpReplyGroupBld.build());
final MultipartReply groupStatsUpdated = assembleMPReplyMessage(type, mpReplyGroupCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(groupStatsUpdated);
+ final List<MultipartReply> statsData = List.of(groupStatsUpdated);
fireAndCheck(type, statsData);
@Test
public void testGatherStatistics_groupDesc() throws Exception {
final MultipartType type = MultipartType.OFPMPGROUPDESC;
- final long groupIdValue = 27L;
+ final Uint32 groupIdValue = Uint32.valueOf(27);
final BucketsListBuilder bucketsListBld = new BucketsListBuilder()
- .setWatchPort(new PortNumber(5L));
+ .setWatchPort(new PortNumber(Uint32.valueOf(5)));
final GroupDescBuilder groupStatsBld = new GroupDescBuilder()
- .setBucketsList(Lists.newArrayList(bucketsListBld.build()))
+ .setBucketsList(List.of(bucketsListBld.build()))
.setGroupId(new GroupId(groupIdValue))
.setType(GroupType.OFPGTALL);
final MultipartReplyGroupDescBuilder mpReplyGroupBld = new MultipartReplyGroupDescBuilder();
- mpReplyGroupBld.setGroupDesc(Lists.newArrayList(groupStatsBld.build()));
+ mpReplyGroupBld.setGroupDesc(List.of(groupStatsBld.build()));
final MultipartReplyGroupDescCaseBuilder mpReplyGroupCaseBld = new MultipartReplyGroupDescCaseBuilder();
mpReplyGroupCaseBld.setMultipartReplyGroupDesc(mpReplyGroupBld.build());
final MultipartReply groupStatsUpdated = assembleMPReplyMessage(type, mpReplyGroupCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(groupStatsUpdated);
+ final List<MultipartReply> statsData = List.of(groupStatsUpdated);
fireAndCheck(type, statsData);
@Test
public void testGatherStatistics_meter() throws Exception {
final MultipartType type = MultipartType.OFPMPMETER;
- final long meterIdValue = 19L;
+ final Uint32 meterIdValue = Uint32.valueOf(19);
final MeterBandStatsBuilder meterBandStatsBld = new MeterBandStatsBuilder()
- .setByteBandCount(BigInteger.valueOf(91L))
- .setPacketBandCount(BigInteger.valueOf(92L));
+ .setByteBandCount(Uint64.valueOf(91))
+ .setPacketBandCount(Uint64.valueOf(92));
final MeterStatsBuilder meterStatsBld = new MeterStatsBuilder()
.setMeterId(new MeterId(meterIdValue))
- .setByteInCount(BigInteger.valueOf(111L))
- .setDurationSec(112L)
- .setDurationNsec(113L)
- .setFlowCount(114L)
- .setPacketInCount(BigInteger.valueOf(115L))
- .setMeterBandStats(Lists.newArrayList(meterBandStatsBld.build()));
+ .setByteInCount(Uint64.valueOf(111))
+ .setDurationSec(Uint32.valueOf(112))
+ .setDurationNsec(Uint32.valueOf(113))
+ .setFlowCount(Uint32.valueOf(114))
+ .setPacketInCount(Uint64.valueOf(115))
+ .setMeterBandStats(List.of(meterBandStatsBld.build()));
final MultipartReplyMeterBuilder mpReplyMeterBld = new MultipartReplyMeterBuilder();
- mpReplyMeterBld.setMeterStats(Lists.newArrayList(meterStatsBld.build()));
+ mpReplyMeterBld.setMeterStats(List.of(meterStatsBld.build()));
final MultipartReplyMeterCaseBuilder mpReplyMeterCaseBld = new MultipartReplyMeterCaseBuilder();
mpReplyMeterCaseBld.setMultipartReplyMeter(mpReplyMeterBld.build());
final MultipartReply meterStatsUpdated = assembleMPReplyMessage(type, mpReplyMeterCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(meterStatsUpdated);
+ final List<MultipartReply> statsData = List.of(meterStatsUpdated);
fireAndCheck(type, statsData);
final MultipartType type = MultipartType.OFPMPPORTSTATS;
final PortStatsBuilder portStatsBld = new PortStatsBuilder()
- .setPortNo(11L);
+ .setPortNo(Uint32.valueOf(11));
final MultipartReplyPortStatsBuilder mpReplyMeterBld = new MultipartReplyPortStatsBuilder();
- mpReplyMeterBld.setPortStats(Lists.newArrayList(portStatsBld.build()));
+ mpReplyMeterBld.setPortStats(List.of(portStatsBld.build()));
final MultipartReplyPortStatsCaseBuilder mpReplyMeterCaseBld = new MultipartReplyPortStatsCaseBuilder();
mpReplyMeterCaseBld.setMultipartReplyPortStats(mpReplyMeterBld.build());
final MultipartReply meterStatsUpdated = assembleMPReplyMessage(type, mpReplyMeterCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(meterStatsUpdated);
+ final List<MultipartReply> statsData = List.of(meterStatsUpdated);
fireAndCheck(type, statsData);
final MultipartType type = MultipartType.OFPMPTABLE;
final TableStatsBuilder tableStatsBld = new TableStatsBuilder()
- .setActiveCount(33L)
- .setLookupCount(BigInteger.valueOf(34L))
- .setMatchedCount(BigInteger.valueOf(35L))
- .setTableId((short) 0);
+ .setActiveCount(Uint32.valueOf(33))
+ .setLookupCount(Uint64.valueOf(34))
+ .setMatchedCount(Uint64.valueOf(35))
+ .setTableId(Uint8.ZERO);
final MultipartReplyTableBuilder mpReplyTableBld = new MultipartReplyTableBuilder();
- mpReplyTableBld.setTableStats(Lists.newArrayList(tableStatsBld.build()));
+ mpReplyTableBld.setTableStats(List.of(tableStatsBld.build()));
final MultipartReplyTableCaseBuilder mpReplyTableCaseBld = new MultipartReplyTableCaseBuilder();
mpReplyTableCaseBld.setMultipartReplyTable(mpReplyTableBld.build());
final MultipartReply meterStatsUpdated = assembleMPReplyMessage(type, mpReplyTableCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(meterStatsUpdated);
+ final List<MultipartReply> statsData = List.of(meterStatsUpdated);
fireAndCheck(type, statsData);
final InstanceIdentifier<FlowTableStatistics> tablePath = dummyNodePath
.augmentation(FlowCapableNode.class)
- .child(Table.class, new TableKey((short) 0))
+ .child(Table.class, new TableKey(Uint8.ZERO))
.augmentation(FlowTableStatisticsData.class)
.child(FlowTableStatistics.class);
verify(deviceContext).writeToTransaction(
public void testGatherStatistics_queue() throws Exception {
final MultipartType type = MultipartType.OFPMPQUEUE;
- final long queueIdValue = 4L;
+ final Uint32 queueIdValue = Uint32.valueOf(4);
final QueueStatsBuilder queueStatsBld = new QueueStatsBuilder()
- .setPortNo(11L)
- .setTxBytes(BigInteger.valueOf(44L))
- .setTxErrors(BigInteger.valueOf(45L))
- .setTxPackets(BigInteger.valueOf(46L))
- .setDurationSec(47L)
- .setDurationNsec(48L)
+ .setPortNo(Uint32.valueOf(11))
+ .setTxBytes(Uint64.valueOf(44))
+ .setTxErrors(Uint64.valueOf(45))
+ .setTxPackets(Uint64.valueOf(46))
+ .setDurationSec(Uint32.valueOf(47))
+ .setDurationNsec(Uint32.valueOf(48))
.setQueueId(queueIdValue);
final MultipartReplyQueueBuilder mpReplyQueueBld = new MultipartReplyQueueBuilder();
- mpReplyQueueBld.setQueueStats(Lists.newArrayList(queueStatsBld.build()));
+ mpReplyQueueBld.setQueueStats(List.of(queueStatsBld.build()));
final MultipartReplyQueueCaseBuilder mpReplyQueueCaseBld = new MultipartReplyQueueCaseBuilder();
mpReplyQueueCaseBld.setMultipartReplyQueue(mpReplyQueueBld.build());
final MultipartReply meterStatsUpdated = assembleMPReplyMessage(type, mpReplyQueueCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(meterStatsUpdated);
+ final List<MultipartReply> statsData = List.of(meterStatsUpdated);
fireAndCheck(type, statsData);
@Test
public void testGatherStatistics_flow() throws Exception {
- final short tableId = 0;
final MultipartType type = MultipartType.OFPMPFLOW;
final InstanceIdentifier<FlowCapableNode> nodePath =
deviceInfo.getNodeInstanceIdentifier().augmentation(FlowCapableNode.class);
final TableBuilder tableDataBld = new TableBuilder();
- tableDataBld.setId(tableId);
+ tableDataBld.setId(Uint8.ZERO);
final FlowCapableNodeBuilder flowNodeBuilder = new FlowCapableNodeBuilder();
- flowNodeBuilder.setTable(Collections.singletonList(tableDataBld.build()));
+ flowNodeBuilder.setTable(BindingMap.of(tableDataBld.build()));
final Optional<FlowCapableNode> flowNodeOpt = Optional.of(flowNodeBuilder.build());
doReturn(FluentFutures.immediateFluentFuture(flowNodeOpt)).when(readTx)
.read(LogicalDatastoreType.OPERATIONAL, nodePath);
final org.opendaylight.yang.gen.v1.urn
.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder matchBld =
new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder()
- .setMatchEntry(Collections.emptyList());
+ .setMatchEntry(List.of());
final FlowStatsBuilder flowStatsBld = new FlowStatsBuilder()
- .setByteCount(BigInteger.valueOf(55L))
- .setPacketCount(BigInteger.valueOf(56L))
- .setDurationSec(57L)
- .setDurationNsec(58L)
- .setTableId((short) 0)
+ .setByteCount(Uint64.valueOf(55))
+ .setPacketCount(Uint64.valueOf(56))
+ .setDurationSec(Uint32.valueOf(57))
+ .setDurationNsec(Uint32.valueOf(58L))
+ .setTableId(Uint8.ZERO)
.setMatch(matchBld.build())
.setFlags(new FlowModFlags(true, false, false, false, true));
final MultipartReplyFlowBuilder mpReplyFlowBld = new MultipartReplyFlowBuilder();
- mpReplyFlowBld.setFlowStats(Lists.newArrayList(flowStatsBld.build()));
+ mpReplyFlowBld.setFlowStats(List.of(flowStatsBld.build()));
final MultipartReplyFlowCaseBuilder mpReplyFlowCaseBld = new MultipartReplyFlowCaseBuilder();
mpReplyFlowCaseBld.setMultipartReplyFlow(mpReplyFlowBld.build());
final MultipartReply flowStatsUpdated = assembleMPReplyMessage(type, mpReplyFlowCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(flowStatsUpdated);
+ final List<MultipartReply> statsData = List.of(flowStatsUpdated);
fireAndCheck(type, statsData);
final FlowBuilder flowBld = new FlowBuilder()
- .setTableId((short) 0)
+ .setTableId(Uint8.ZERO)
.setMatch(new MatchBuilder().build());
final KeyedInstanceIdentifier<Table, TableKey> tablePath = dummyNodePath.augmentation(FlowCapableNode.class)
- .child(Table.class, new TableKey((short) 0));
+ .child(Table.class, new TableKey(Uint8.ZERO));
final KeyedInstanceIdentifier<Flow, FlowKey> flowPath = tablePath.child(Flow.class, new FlowKey(flowId));
verify(deviceContext, Mockito.never()).addDeleteToTxChain(eq(LogicalDatastoreType.OPERATIONAL),
@Test
public void testGatherStatistics_meterConfig() throws Exception {
final MultipartType type = MultipartType.OFPMPMETERCONFIG;
- final Long meterIdValue = 55L;
+ final Uint32 meterIdValue = Uint32.valueOf(55);
final MeterConfigBuilder meterConfigBld = new MeterConfigBuilder()
.setMeterId(new MeterId(meterIdValue))
.setFlags(new MeterFlags(false, true, false, true))
- .setBands(Collections.emptyList());
+ .setBands(List.of());
final MultipartReplyMeterConfigBuilder mpReplyMeterConfigBld = new MultipartReplyMeterConfigBuilder();
- mpReplyMeterConfigBld.setMeterConfig(Lists.newArrayList(meterConfigBld.build()));
+ mpReplyMeterConfigBld.setMeterConfig(List.of(meterConfigBld.build()));
final MultipartReplyMeterConfigCaseBuilder mpReplyMeterConfigCaseBld =
new MultipartReplyMeterConfigCaseBuilder();
mpReplyMeterConfigCaseBld.setMultipartReplyMeterConfig(mpReplyMeterConfigBld.build());
final MultipartReply meterConfigUpdated = assembleMPReplyMessage(type, mpReplyMeterConfigCaseBld.build());
- final List<MultipartReply> statsData = Collections.singletonList(meterConfigUpdated);
+ final List<MultipartReply> statsData = List.of(meterConfigUpdated);
fireAndCheck(type, statsData);
deviceContext,
ConvertorManagerFactory.createDefaultManager(),
provider,
- MoreExecutors.newDirectExecutorService());
+ MoreExecutors.directExecutor());
Assert.assertTrue(gatherStatisticsResult.get(1, TimeUnit.SECONDS));
verify(deviceContext).submitTransaction();
.setMultipartReplyBody(mpReplyGroupCaseBld)
.setType(type)
.setFlags(new MultipartRequestFlags(false))
- .setXid(42L)
+ .setXid(Uint32.valueOf(42))
.build();
}
private static BucketStats createBucketStat(final long byteCount, final long packetCount) {
return new BucketStatsBuilder()
- .setByteCount(BigInteger.valueOf(byteCount)).setPacketCount(BigInteger.valueOf(packetCount)).build();
+ .setByteCount(Uint64.valueOf(byteCount)).setPacketCount(Uint64.valueOf(packetCount)).build();
}
@Test
public void testDeleteAllKnownFlows() {
- final short tableId = 0;
final InstanceIdentifier<FlowCapableNode> nodePath =
deviceInfo.getNodeInstanceIdentifier().augmentation(FlowCapableNode.class);
final TableBuilder tableDataBld = new TableBuilder();
- tableDataBld.setId(tableId);
+ tableDataBld.setId(Uint8.ZERO);
final FlowCapableNodeBuilder flowNodeBuilder = new FlowCapableNodeBuilder();
- flowNodeBuilder.setTable(Collections.singletonList(tableDataBld.build()));
+ flowNodeBuilder.setTable(BindingMap.of(tableDataBld.build()));
final Optional<FlowCapableNode> flowNodeOpt = Optional.of(flowNodeBuilder.build());
doReturn(FluentFutures.immediateFluentFuture(flowNodeOpt)).when(readTx)
.read(LogicalDatastoreType.OPERATIONAL, nodePath);