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