Bug 1484 - StatisticManager performance improvement refactoring
[controller.git] / opendaylight / md-sal / statistics-manager / src / test / java / test / mock / util / OpendaylightPortStatisticsServiceMock.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.transaction.rev131103.TransactionId;
5 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsInput;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsOutput;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsOutputBuilder;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsInput;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsOutput;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsOutputBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.NodeConnectorStatisticsUpdateBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.OpendaylightPortStatisticsService;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapKey;
18 import org.opendaylight.yangtools.yang.common.RpcResult;
19 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
20
21 import java.math.BigInteger;
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.concurrent.Future;
25 import java.util.concurrent.atomic.AtomicLong;
26
27 public class OpendaylightPortStatisticsServiceMock implements OpendaylightPortStatisticsService {
28     NotificationProviderServiceHelper notifService;
29     AtomicLong transNum = new AtomicLong();
30
31     public OpendaylightPortStatisticsServiceMock(NotificationProviderServiceHelper notifService) {
32         this.notifService = notifService;
33     }
34
35     @Override
36     public Future<RpcResult<GetAllNodeConnectorsStatisticsOutput>> getAllNodeConnectorsStatistics(GetAllNodeConnectorsStatisticsInput input) {
37         GetAllNodeConnectorsStatisticsOutputBuilder builder = new GetAllNodeConnectorsStatisticsOutputBuilder();
38         TransactionId transId = new TransactionId(BigInteger.valueOf(transNum.incrementAndGet()));
39         builder.setTransactionId(transId);
40         NodeConnectorStatisticsUpdateBuilder ncsuBuilder = new NodeConnectorStatisticsUpdateBuilder();
41         NodeConnectorStatisticsAndPortNumberMapBuilder ncsapnmBuilder = new NodeConnectorStatisticsAndPortNumberMapBuilder();
42         List<NodeConnectorStatisticsAndPortNumberMap> nodeConnectorStatisticsAndPortNumberMaps = new ArrayList<>();
43         ncsapnmBuilder.setKey(new NodeConnectorStatisticsAndPortNumberMapKey(StatisticsManagerTest.getNodeConnectorId()));
44         ncsapnmBuilder.setReceiveDrops(StatisticsManagerTest.BIG_INTEGER_TEST_VALUE);
45         nodeConnectorStatisticsAndPortNumberMaps.add(ncsapnmBuilder.build());
46         ncsuBuilder.setTransactionId(new TransactionId(BigInteger.valueOf(1)));
47         ncsuBuilder.setId(input.getNode().getValue().firstKeyOf(Node.class, NodeKey.class).getId());
48         ncsuBuilder.setNodeConnectorStatisticsAndPortNumberMap(nodeConnectorStatisticsAndPortNumberMaps);
49         ncsuBuilder.setMoreReplies(true);
50         notifService.pushDelayedNotification(ncsuBuilder.build(), 0); // 1st notification
51         ncsuBuilder.setMoreReplies(false);
52         ncsapnmBuilder.setCollisionCount(StatisticsManagerTest.BIG_INTEGER_TEST_VALUE);
53         nodeConnectorStatisticsAndPortNumberMaps.clear();
54         nodeConnectorStatisticsAndPortNumberMaps.add(ncsapnmBuilder.build());
55         ncsuBuilder.setNodeConnectorStatisticsAndPortNumberMap(nodeConnectorStatisticsAndPortNumberMaps);
56         notifService.pushDelayedNotification(ncsuBuilder.build(), 10); // 2nd notification
57         return Futures.immediateFuture(RpcResultBuilder.success(builder.build()).build());
58     }
59
60     @Override
61     public Future<RpcResult<GetNodeConnectorStatisticsOutput>> getNodeConnectorStatistics(GetNodeConnectorStatisticsInput input) {
62         GetNodeConnectorStatisticsOutputBuilder builder = new GetNodeConnectorStatisticsOutputBuilder();
63         TransactionId transId = new TransactionId(BigInteger.valueOf(transNum.incrementAndGet()));
64         builder.setTransactionId(transId);
65         return Futures.immediateFuture(RpcResultBuilder.success(builder.build()).build());
66     }
67 }