Merge changes from topic 'BUG-4117'
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / statistics / services / direct / NodeConnectorDirectStatisticsServiceTest.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
9 package org.opendaylight.openflowplugin.impl.statistics.services.direct;
10
11 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsInput;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsOutput;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortStatsCase;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.stats._case.MultipartReplyPortStats;
17 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.PortStats;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCase;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.port.stats._case.MultipartRequestPortStats;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
21
22 import java.math.BigInteger;
23 import java.util.Arrays;
24 import java.util.List;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertTrue;
28 import static org.mockito.Matchers.any;
29 import static org.mockito.Matchers.eq;
30 import static org.mockito.Mockito.mock;
31 import static org.mockito.Mockito.verify;
32 import static org.mockito.Mockito.when;
33
34 public class NodeConnectorDirectStatisticsServiceTest extends AbstractDirectStatisticsServiceTest {
35     private NodeConnectorDirectStatisticsService service;
36
37     @Override
38     public void setUp() throws Exception {
39         service = new NodeConnectorDirectStatisticsService(requestContextStack, deviceContext);
40     }
41
42     @Override
43     public void testBuildRequestBody() throws Exception {
44         final GetNodeConnectorStatisticsInput input = mock(GetNodeConnectorStatisticsInput.class);
45
46         when(input.getNode()).thenReturn(createNodeRef(NODE_ID));
47         when(input.getNodeConnectorId()).thenReturn(nodeConnectorId);
48
49         final MultipartRequestPortStatsCase body = (MultipartRequestPortStatsCase) service.buildRequestBody(input);
50         final MultipartRequestPortStats nodeConnector = body.getMultipartRequestPortStats();
51
52         assertEquals(PORT_NO, nodeConnector.getPortNo());
53     }
54
55     @Override
56     public void testBuildReply() throws Exception {
57         final MultipartReply reply = mock(MultipartReply.class);
58         final MultipartReplyPortStatsCase nodeConnectorCase = mock(MultipartReplyPortStatsCase.class);
59         final MultipartReplyPortStats nodeConnector = mock(MultipartReplyPortStats.class);
60         final PortStats nodeConnectorStat = mock(PortStats.class);
61         final List<PortStats> nodeConnectorStats = Arrays.asList(nodeConnectorStat);
62         final List<MultipartReply> input = Arrays.asList(reply);
63
64         when(nodeConnector.getPortStats()).thenReturn(nodeConnectorStats);
65         when(nodeConnectorCase.getMultipartReplyPortStats()).thenReturn(nodeConnector);
66         when(reply.getMultipartReplyBody()).thenReturn(nodeConnectorCase);
67
68         when(nodeConnectorStat.getPortNo()).thenReturn(PORT_NO);
69         when(nodeConnectorStat.getTxBytes()).thenReturn(BigInteger.ONE);
70         when(nodeConnectorStat.getCollisions()).thenReturn(BigInteger.ONE);
71         when(nodeConnectorStat.getRxBytes()).thenReturn(BigInteger.ONE);
72         when(nodeConnectorStat.getRxCrcErr()).thenReturn(BigInteger.ONE);
73         when(nodeConnectorStat.getRxDropped()).thenReturn(BigInteger.ONE);
74         when(nodeConnectorStat.getRxErrors()).thenReturn(BigInteger.ONE);
75         when(nodeConnectorStat.getRxFrameErr()).thenReturn(BigInteger.ONE);
76         when(nodeConnectorStat.getRxOverErr()).thenReturn(BigInteger.ONE);
77         when(nodeConnectorStat.getRxPackets()).thenReturn(BigInteger.ONE);
78         when(nodeConnectorStat.getTxDropped()).thenReturn(BigInteger.ONE);
79         when(nodeConnectorStat.getTxErrors()).thenReturn(BigInteger.ONE);
80
81         final GetNodeConnectorStatisticsOutput output = service.buildReply(input, true);
82         assertTrue(output.getNodeConnectorStatisticsAndPortNumberMap().size() > 0);
83
84         final NodeConnectorStatisticsAndPortNumberMap stats =
85                 output.getNodeConnectorStatisticsAndPortNumberMap().get(0);
86
87         assertEquals(stats.getNodeConnectorId(), nodeConnectorId);
88     }
89
90     @Override
91     public void testStoreStatistics() throws Exception {
92         final NodeConnectorStatisticsAndPortNumberMap stat = mock(NodeConnectorStatisticsAndPortNumberMap.class);
93         when(stat.getNodeConnectorId()).thenReturn(nodeConnectorId);
94
95         final List<NodeConnectorStatisticsAndPortNumberMap> stats = Arrays.asList(stat);
96         final GetNodeConnectorStatisticsOutput output = mock(GetNodeConnectorStatisticsOutput.class);
97         when(output.getNodeConnectorStatisticsAndPortNumberMap()).thenReturn(stats);
98
99         service.storeStatistics(output);
100         verify(deviceContext).writeToTransactionWithParentsSlow(eq(LogicalDatastoreType.OPERATIONAL), any(), any());
101     }
102 }