Add single layer deserialization support
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / statistics / services / direct / OpendaylightDirectStatisticsServiceImplTest.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 static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertTrue;
13 import static org.mockito.Mockito.times;
14 import static org.mockito.Mockito.verify;
15
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.junit.runner.RunWith;
19 import org.mockito.Mock;
20 import org.mockito.runners.MockitoJUnitRunner;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsInput;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsOutput;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsInput;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsOutput;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsInput;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutput;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsInput;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsOutput;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetQueueStatisticsInput;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetQueueStatisticsOutput;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.OpendaylightDirectStatisticsService;
32 import org.opendaylight.yangtools.yang.common.RpcError;
33 import org.opendaylight.yangtools.yang.common.RpcResult;
34
35 @RunWith(MockitoJUnitRunner.class)
36 public class OpendaylightDirectStatisticsServiceImplTest {
37     @Mock
38     AbstractFlowDirectStatisticsService flowDirectStatisticsService;
39     @Mock
40     AbstractGroupDirectStatisticsService groupDirectStatisticsService;
41     @Mock
42     AbstractMeterDirectStatisticsService meterDirectStatisticsService;
43     @Mock
44     AbstractPortDirectStatisticsService nodeConnectorDirectStatisticsService;
45     @Mock
46     AbstractQueueDirectStatisticsService queueDirectStatisticsService;
47
48     @Mock
49     GetGroupStatisticsInput getGroupStatisticsInput;
50     @Mock
51     GetQueueStatisticsInput getQueueStatisticsInput;
52     @Mock
53     GetFlowStatisticsInput getFlowStatisticsInput;
54     @Mock
55     GetMeterStatisticsInput getMeterStatisticsInput;
56     @Mock
57     GetNodeConnectorStatisticsInput getNodeConnectorStatisticsInput;
58
59     private OpendaylightDirectStatisticsService service;
60     private OpendaylightDirectStatisticsService emptyService;
61
62     @Before
63     public void setUp() throws Exception {
64         final OpendaylightDirectStatisticsServiceProvider provider = new OpendaylightDirectStatisticsServiceProvider();
65         provider.register(AbstractFlowDirectStatisticsService.class, flowDirectStatisticsService);
66         provider.register(AbstractGroupDirectStatisticsService.class, groupDirectStatisticsService);
67         provider.register(AbstractMeterDirectStatisticsService.class, meterDirectStatisticsService);
68         provider.register(AbstractPortDirectStatisticsService.class, nodeConnectorDirectStatisticsService);
69         provider.register(AbstractQueueDirectStatisticsService.class, queueDirectStatisticsService);
70
71         service = new OpendaylightDirectStatisticsServiceImpl(provider);
72         emptyService = new OpendaylightDirectStatisticsServiceImpl(new OpendaylightDirectStatisticsServiceProvider());
73     }
74
75     @Test
76     public void testGetGroupStatistics() throws Exception {
77         service.getGroupStatistics(getGroupStatisticsInput);
78         verify(groupDirectStatisticsService).handleAndReply(getGroupStatisticsInput);
79     }
80
81     @Test
82     public void testGetGroupStatisticsFail() throws Exception {
83         RpcResult<GetGroupStatisticsOutput> result = emptyService
84                 .getGroupStatistics(getGroupStatisticsInput)
85                 .get();
86
87         assertFalse(result.isSuccessful());
88
89         for (RpcError error : result.getErrors()) {
90             assertTrue(error.getMessage().contains(AbstractGroupDirectStatisticsService.class.getSimpleName()));
91         }
92
93         verify(groupDirectStatisticsService, times(0)).handleAndReply(getGroupStatisticsInput);
94     }
95
96     @Test
97     public void testGetQueueStatistics() throws Exception {
98         service.getQueueStatistics(getQueueStatisticsInput);
99         verify(queueDirectStatisticsService).handleAndReply(getQueueStatisticsInput);
100     }
101
102     @Test
103     public void testGetQueueStatisticsFail() throws Exception {
104         RpcResult<GetQueueStatisticsOutput> result = emptyService
105                 .getQueueStatistics(getQueueStatisticsInput)
106                 .get();
107
108         assertFalse(result.isSuccessful());
109
110         for (RpcError error : result.getErrors()) {
111             assertTrue(error.getMessage().contains(AbstractQueueDirectStatisticsService.class.getSimpleName()));
112         }
113
114         verify(queueDirectStatisticsService, times(0)).handleAndReply(getQueueStatisticsInput);
115     }
116
117     @Test
118     public void testGetFlowStatistics() throws Exception {
119         service.getFlowStatistics(getFlowStatisticsInput);
120         verify(flowDirectStatisticsService).handleAndReply(getFlowStatisticsInput);
121     }
122
123     @Test
124     public void testGetFlowStatisticsFail() throws Exception {
125         RpcResult<GetFlowStatisticsOutput> result = emptyService
126                 .getFlowStatistics(getFlowStatisticsInput)
127                 .get();
128
129         assertFalse(result.isSuccessful());
130
131         for (RpcError error : result.getErrors()) {
132             assertTrue(error.getMessage().contains(AbstractFlowDirectStatisticsService.class.getSimpleName()));
133         }
134
135         verify(flowDirectStatisticsService, times(0)).handleAndReply(getFlowStatisticsInput);
136     }
137
138     @Test
139     public void testGetMeterStatistics() throws Exception {
140         service.getMeterStatistics(getMeterStatisticsInput);
141         verify(meterDirectStatisticsService).handleAndReply(getMeterStatisticsInput);
142     }
143
144     @Test
145     public void testGetMeterStatisticsFail() throws Exception {
146         RpcResult<GetMeterStatisticsOutput> result = emptyService
147                 .getMeterStatistics(getMeterStatisticsInput)
148                 .get();
149
150         assertFalse(result.isSuccessful());
151
152         for (RpcError error : result.getErrors()) {
153             assertTrue(error.getMessage().contains(AbstractMeterDirectStatisticsService.class.getSimpleName()));
154         }
155
156         verify(meterDirectStatisticsService, times(0)).handleAndReply(getMeterStatisticsInput);
157     }
158
159     @Test
160     public void testGetNodeConnectorStatistics() throws Exception {
161         service.getNodeConnectorStatistics(getNodeConnectorStatisticsInput);
162         verify(nodeConnectorDirectStatisticsService).handleAndReply(getNodeConnectorStatisticsInput);
163     }
164
165     @Test
166     public void testGetNodeConnectorStatisticsFail() throws Exception {
167         RpcResult<GetNodeConnectorStatisticsOutput> result = emptyService
168                 .getNodeConnectorStatistics(getNodeConnectorStatisticsInput)
169                 .get();
170
171         assertFalse(result.isSuccessful());
172
173         for (RpcError error : result.getErrors()) {
174             assertTrue(error.getMessage().contains(AbstractPortDirectStatisticsService.class.getSimpleName()));
175         }
176
177         verify(nodeConnectorDirectStatisticsService, times(0)).handleAndReply(getNodeConnectorStatisticsInput);
178     }
179 }