1 package test.mock.util;
3 import com.google.common.util.concurrent.Futures;
4 import java.math.BigInteger;
5 import java.util.ArrayList;
7 import java.util.concurrent.Future;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdateBuilder;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInput;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutput;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutputBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsService;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapKey;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
19 import org.opendaylight.yangtools.yang.common.RpcResult;
20 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
22 public class OpendaylightFlowTableStatisticsServiceMock implements OpendaylightFlowTableStatisticsService {
23 NotificationProviderServiceHelper notifService;
25 public OpendaylightFlowTableStatisticsServiceMock(NotificationProviderServiceHelper notifService) {
26 this.notifService = notifService;
30 public Future<RpcResult<GetFlowTablesStatisticsOutput>> getFlowTablesStatistics(GetFlowTablesStatisticsInput input) {
31 GetFlowTablesStatisticsOutputBuilder builder = new GetFlowTablesStatisticsOutputBuilder();
32 TransactionId transId = new TransactionId(BigInteger.valueOf(TestUtils.getNewTransactionId()));
33 builder.setTransactionId(transId);
34 FlowTableStatisticsUpdateBuilder ftsBuilder = new FlowTableStatisticsUpdateBuilder();
35 FlowTableAndStatisticsMapBuilder ftasmBuilder = new FlowTableAndStatisticsMapBuilder();
36 List<FlowTableAndStatisticsMap> tableAndStatisticsMaps = new ArrayList<>();
37 ftasmBuilder.setKey(new FlowTableAndStatisticsMapKey(StatisticsManagerTest.getTableId()));
38 ftasmBuilder.setActiveFlows(StatisticsManagerTest.COUNTER_32_TEST_VALUE);
39 tableAndStatisticsMaps.add(ftasmBuilder.build());
40 ftsBuilder.setTransactionId(transId);
41 ftsBuilder.setId(input.getNode().getValue().firstKeyOf(Node.class, NodeKey.class).getId());
42 ftsBuilder.setFlowTableAndStatisticsMap(tableAndStatisticsMaps);
43 ftsBuilder.setMoreReplies(true);
44 notifService.pushDelayedNotification(ftsBuilder.build(), 0); // 1st notification
45 ftsBuilder.setMoreReplies(false);
46 ftasmBuilder.setPacketsLookedUp(StatisticsManagerTest.COUNTER_64_TEST_VALUE);
47 tableAndStatisticsMaps.clear();
48 tableAndStatisticsMaps.add(ftasmBuilder.build());
49 ftsBuilder.setFlowTableAndStatisticsMap(tableAndStatisticsMaps);
50 notifService.pushDelayedNotification(ftsBuilder.build(), 0); // 2nd notification
51 return Futures.immediateFuture(RpcResultBuilder.success(builder.build()).build());