Add missing license headers
[openflowplugin.git] / applications / statistics-manager / src / test / java / test / mock / util / OpendaylightFlowTableStatisticsServiceMock.java
1 /*
2  * Copyright (c) 2014, 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package test.mock.util;
9
10 import java.math.BigInteger;
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.concurrent.Future;
14
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdateBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInput;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutput;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutputBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsService;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapKey;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
26 import org.opendaylight.yangtools.yang.common.RpcResult;
27 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
28
29 import com.google.common.util.concurrent.Futures;
30
31 public class OpendaylightFlowTableStatisticsServiceMock implements OpendaylightFlowTableStatisticsService {
32     NotificationProviderServiceHelper notifService;
33
34     public OpendaylightFlowTableStatisticsServiceMock(NotificationProviderServiceHelper notifService) {
35         this.notifService = notifService;
36     }
37
38     @Override
39     public Future<RpcResult<GetFlowTablesStatisticsOutput>> getFlowTablesStatistics(GetFlowTablesStatisticsInput input) {
40         GetFlowTablesStatisticsOutputBuilder builder = new GetFlowTablesStatisticsOutputBuilder();
41         TransactionId transId = new TransactionId(BigInteger.valueOf(TestUtils.getNewTransactionId()));
42         builder.setTransactionId(transId);
43         FlowTableStatisticsUpdateBuilder ftsBuilder = new FlowTableStatisticsUpdateBuilder();
44         FlowTableAndStatisticsMapBuilder ftasmBuilder = new FlowTableAndStatisticsMapBuilder();
45         List<FlowTableAndStatisticsMap> tableAndStatisticsMaps = new ArrayList<>();
46         ftasmBuilder.setKey(new FlowTableAndStatisticsMapKey(StatisticsManagerTest.getTableId()));
47         ftasmBuilder.setActiveFlows(StatisticsManagerTest.COUNTER_32_TEST_VALUE);
48         tableAndStatisticsMaps.add(ftasmBuilder.build());
49         ftsBuilder.setTransactionId(transId);
50         ftsBuilder.setId(input.getNode().getValue().firstKeyOf(Node.class, NodeKey.class).getId());
51         ftsBuilder.setFlowTableAndStatisticsMap(tableAndStatisticsMaps);
52         ftsBuilder.setMoreReplies(true);
53         notifService.pushDelayedNotification(ftsBuilder.build(), 0); // 1st notification
54         ftsBuilder.setMoreReplies(false);
55         ftasmBuilder.setPacketsLookedUp(StatisticsManagerTest.COUNTER_64_TEST_VALUE);
56         tableAndStatisticsMaps.clear();
57         tableAndStatisticsMaps.add(ftasmBuilder.build());
58         ftsBuilder.setFlowTableAndStatisticsMap(tableAndStatisticsMaps);
59         notifService.pushDelayedNotification(ftsBuilder.build(), 0); // 2nd notification
60         return Futures.immediateFuture(RpcResultBuilder.success(builder.build()).build());
61     }
62
63 }