Decompose RPC implementation classes
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / statistics / services / OpendaylightPortStatisticsServiceImplTest.java
1 /*
2  * Copyright (c) 2015 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 org.opendaylight.openflowplugin.impl.statistics.services;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertTrue;
12 import static org.mockito.ArgumentMatchers.any;
13 import static org.mockito.ArgumentMatchers.eq;
14 import static org.mockito.Mockito.doAnswer;
15 import static org.mockito.Mockito.verify;
16
17 import com.google.common.util.concurrent.FutureCallback;
18 import java.util.List;
19 import java.util.concurrent.atomic.AtomicLong;
20 import org.junit.After;
21 import org.junit.Test;
22 import org.mockito.ArgumentCaptor;
23 import org.mockito.Captor;
24 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessageBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortStatsCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.stats._case.MultipartReplyPortStatsBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.stats._case.multipart.reply.port.stats.PortStatsBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsInputBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsOutput;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsInputBuilder;
35 import org.opendaylight.yangtools.yang.common.RpcResult;
36 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
37 import org.opendaylight.yangtools.yang.common.Uint32;
38 import org.opendaylight.yangtools.yang.common.Uint64;
39
40 /**
41  * Test for {@link OpendaylightPortStatisticsServiceImpl}.
42  */
43 @Deprecated
44 public class OpendaylightPortStatisticsServiceImplTest extends AbstractSingleStatsServiceTest {
45     @Captor
46     private ArgumentCaptor<MultipartRequestInput> requestInput;
47
48     private GetAllNodeConnectorsStatisticsImpl getAllNodeConnectorsStatistics;
49     private GetNodeConnectorStatisticsImpl getNodeConnectorStatistics;
50
51     @Override
52     public void setUp() {
53         final var xid = new AtomicLong();
54         getAllNodeConnectorsStatistics = new GetAllNodeConnectorsStatisticsImpl(rqContextStack, deviceContext, xid,
55             notificationPublishService);
56         getNodeConnectorStatistics = new GetNodeConnectorStatisticsImpl(rqContextStack, deviceContext, xid,
57             notificationPublishService);
58
59         doAnswer(answerVoidToCallback).when(outboundQueueProvider)
60                 .commitEntry(eq(Uint32.valueOf(42)), requestInput.capture(), any(FutureCallback.class));
61     }
62
63     @After
64     public void tearDown() {
65         verify(notificationPublishService).offerNotification(any());
66     }
67
68     @Test
69     public void testGetAllNodeConnectorsStatistics() throws Exception {
70         var input = new GetAllNodeConnectorsStatisticsInputBuilder().setNode(createNodeRef("unitProt:123"));
71
72         rpcResult = buildPortStatisticsReply();
73
74         final var resultFuture = getAllNodeConnectorsStatistics.invoke(input.build());
75
76         assertTrue(resultFuture.isDone());
77         final RpcResult<GetAllNodeConnectorsStatisticsOutput> rpcResult = resultFuture.get();
78         assertTrue(rpcResult.isSuccessful());
79         assertEquals(MultipartType.OFPMPPORTSTATS, requestInput.getValue().getType());
80     }
81
82     private static RpcResult<Object> buildPortStatisticsReply() {
83         return RpcResultBuilder.<Object>success(List.of(
84                 new MultipartReplyMessageBuilder()
85                         .setVersion(EncodeConstants.OF_VERSION_1_3)
86                         .setMultipartReplyBody(new MultipartReplyPortStatsCaseBuilder()
87                                 .setMultipartReplyPortStats(new MultipartReplyPortStatsBuilder()
88                                         .setPortStats(List.of(new PortStatsBuilder()
89                                                 .setDurationSec(Uint32.valueOf(90))
90                                                 .setDurationNsec(Uint32.valueOf(91))
91                                                 .setCollisions(Uint64.valueOf(92))
92                                                 .setPortNo(Uint32.valueOf(93))
93                                                 .setRxBytes(Uint64.valueOf(94))
94                                                 .setRxCrcErr(Uint64.valueOf(95))
95                                                 .setRxDropped(Uint64.valueOf(96))
96                                                 .setRxFrameErr(Uint64.valueOf(97))
97                                                 .setRxErrors(Uint64.valueOf(98))
98                                                 .setRxOverErr(Uint64.valueOf(99))
99                                                 .setRxPackets(Uint64.valueOf(100))
100                                                 .setTxBytes(Uint64.valueOf(94))
101                                                 .setTxDropped(Uint64.valueOf(96))
102                                                 .setTxErrors(Uint64.valueOf(98))
103                                                 .setTxPackets(Uint64.valueOf(98))
104                                                 .build()))
105                                         .build())
106                                 .build())
107                         .build()
108         )).build();
109     }
110
111     @Test
112     public void testGetNodeConnectorStatistics() throws Exception {
113         var input = new GetNodeConnectorStatisticsInputBuilder()
114                 .setNode(createNodeRef("unitProt:123"))
115                 .setNodeConnectorId(new NodeConnectorId("unitProt:123:321"));
116
117         rpcResult = buildPortStatisticsReply();
118
119         final var resultFuture = getNodeConnectorStatistics.invoke(input.build());
120
121         assertTrue(resultFuture.isDone());
122         final var rpcResult = resultFuture.get();
123         assertTrue(rpcResult.isSuccessful());
124         assertEquals(MultipartType.OFPMPPORTSTATS, requestInput.getValue().getType());
125     }
126 }