Bug 5540 - Remove ConvertorManager singleton
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / translator / MultipartReplyTranslatorThirdTest.java
1 /*\r
2  * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.openflowplugin.openflow.md.core.translator;\r
10 \r
11 import static org.mockito.Mockito.when;\r
12 \r
13 import java.math.BigInteger;\r
14 import java.util.ArrayList;\r
15 import java.util.List;\r
16 import org.junit.Assert;\r
17 import org.junit.Before;\r
18 import org.junit.Test;\r
19 import org.junit.runner.RunWith;\r
20 import org.mockito.Mock;\r
21 import org.mockito.runners.MockitoJUnitRunner;\r
22 import org.opendaylight.openflowjava.protocol.api.util.BinContent;\r
23 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
24 import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor;\r
25 import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;\r
26 import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;\r
27 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;\r
28 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory;\r
29 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdate;\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumberValues;\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessageBuilder;\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortStatsCaseBuilder;\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyQueueCaseBuilder;\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyTableCaseBuilder;\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.stats._case.MultipartReplyPortStatsBuilder;\r
43 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;\r
44 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;\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.queue._case.MultipartReplyQueueBuilder;\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.queue._case.multipart.reply.queue.QueueStats;\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.queue._case.multipart.reply.queue.QueueStatsBuilder;\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table._case.MultipartReplyTableBuilder;\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table._case.multipart.reply.table.TableStats;\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table._case.multipart.reply.table.TableStatsBuilder;\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.NodeConnectorStatisticsUpdate;\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.QueueStatisticsUpdate;\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMap;\r
55 import org.opendaylight.yangtools.yang.binding.DataObject;\r
56 \r
57 /**\r
58  * @author michal.polkorab\r
59  *\r
60  */\r
61 @RunWith(MockitoJUnitRunner.class)\r
62 public class MultipartReplyTranslatorThirdTest {\r
63 \r
64     @Mock SwitchConnectionDistinguisher cookie;\r
65     @Mock SessionContext sc;\r
66     @Mock ConnectionConductor conductor;\r
67     @Mock GetFeaturesOutput features;\r
68 \r
69     MultipartReplyTranslator translator;\r
70 \r
71     /**\r
72      * Initializes mocks\r
73      */\r
74     @Before\r
75     public void startUp() {\r
76         final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager();\r
77         translator = new MultipartReplyTranslator(convertorManager);\r
78         when(sc.getPrimaryConductor()).thenReturn(conductor);\r
79         when(conductor.getVersion()).thenReturn((short) EncodeConstants.OF13_VERSION_ID);\r
80         when(sc.getFeatures()).thenReturn(features);\r
81         when(features.getDatapathId()).thenReturn(new BigInteger("42"));\r
82         OpenflowPortsUtil.init();\r
83     }\r
84 \r
85     /**\r
86      * Test {@link MultipartReplyTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
87      * with empty port stats\r
88      */\r
89     @Test\r
90     public void testEmptyPortStats() {\r
91         MultipartReplyMessageBuilder mpBuilder = new MultipartReplyMessageBuilder();\r
92         mpBuilder.setVersion((short) EncodeConstants.OF13_VERSION_ID);\r
93         mpBuilder.setXid(123L);\r
94         mpBuilder.setFlags(new MultipartRequestFlags(false));\r
95         mpBuilder.setType(MultipartType.OFPMPPORTSTATS);\r
96         \r
97         MultipartReplyPortStatsCaseBuilder caseBuilder = new MultipartReplyPortStatsCaseBuilder();\r
98         MultipartReplyPortStatsBuilder statsBuilder = new MultipartReplyPortStatsBuilder();\r
99         List<PortStats> portStats = new ArrayList<>();\r
100         statsBuilder.setPortStats(portStats);\r
101         caseBuilder.setMultipartReplyPortStats(statsBuilder.build());\r
102         mpBuilder.setMultipartReplyBody(caseBuilder.build());\r
103         MultipartReplyMessage message = mpBuilder.build();\r
104         \r
105         List<DataObject> list = translator.translate(cookie, sc, message);\r
106 \r
107         Assert.assertEquals("Wrong list size", 1, list.size());\r
108         NodeConnectorStatisticsUpdate statUpdate = (NodeConnectorStatisticsUpdate) list.get(0);\r
109         Assert.assertEquals("Wrong node-id", "openflow:42", statUpdate.getId().getValue());\r
110         Assert.assertEquals("Wrong more-replies", false, statUpdate.isMoreReplies());\r
111         Assert.assertEquals("Wrong transaction-id", 123, statUpdate.getTransactionId().getValue().intValue());\r
112         Assert.assertEquals("Wrong port stats size", 0, statUpdate.getNodeConnectorStatisticsAndPortNumberMap().size());\r
113     }\r
114 \r
115     /**\r
116      * Test {@link MultipartReplyTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
117      * with port stats\r
118      */\r
119     @Test\r
120     public void testPortStats() {\r
121         MultipartReplyMessageBuilder mpBuilder = new MultipartReplyMessageBuilder();\r
122         mpBuilder.setVersion((short) EncodeConstants.OF13_VERSION_ID);\r
123         mpBuilder.setXid(123L);\r
124         mpBuilder.setFlags(new MultipartRequestFlags(false));\r
125         mpBuilder.setType(MultipartType.OFPMPPORTSTATS);\r
126         \r
127         MultipartReplyPortStatsCaseBuilder caseBuilder = new MultipartReplyPortStatsCaseBuilder();\r
128         MultipartReplyPortStatsBuilder statsBuilder = new MultipartReplyPortStatsBuilder();\r
129         List<PortStats> portStats = new ArrayList<>();\r
130         PortStatsBuilder builder = new PortStatsBuilder();\r
131         builder.setPortNo(1L);\r
132         builder.setRxPackets(new BigInteger("2"));\r
133         builder.setTxPackets(new BigInteger("3"));\r
134         builder.setRxBytes(new BigInteger("4"));\r
135         builder.setTxBytes(new BigInteger("5"));\r
136         builder.setRxDropped(new BigInteger("6"));\r
137         builder.setTxDropped(new BigInteger("7"));\r
138         builder.setRxErrors(new BigInteger("8"));\r
139         builder.setTxErrors(new BigInteger("9"));\r
140         builder.setRxFrameErr(new BigInteger("10"));\r
141         builder.setRxOverErr(new BigInteger("11"));\r
142         builder.setRxCrcErr(new BigInteger("12"));\r
143         builder.setCollisions(new BigInteger("13"));\r
144         builder.setDurationSec(14L);\r
145         builder.setDurationNsec(15L);\r
146         portStats.add(builder.build());\r
147         builder = new PortStatsBuilder();\r
148         builder.setPortNo(BinContent.intToUnsignedLong(PortNumberValues.CONTROLLER.getIntValue()));\r
149         builder.setRxPackets(new BigInteger("20"));\r
150         builder.setTxPackets(new BigInteger("30"));\r
151         builder.setRxBytes(new BigInteger("40"));\r
152         builder.setTxBytes(new BigInteger("50"));\r
153         builder.setRxDropped(new BigInteger("60"));\r
154         builder.setTxDropped(new BigInteger("70"));\r
155         builder.setRxErrors(new BigInteger("80"));\r
156         builder.setTxErrors(new BigInteger("90"));\r
157         builder.setRxFrameErr(new BigInteger("100"));\r
158         builder.setRxOverErr(new BigInteger("110"));\r
159         builder.setRxCrcErr(new BigInteger("120"));\r
160         builder.setCollisions(new BigInteger("130"));\r
161         portStats.add(builder.build());\r
162         statsBuilder.setPortStats(portStats);\r
163         caseBuilder.setMultipartReplyPortStats(statsBuilder.build());\r
164         mpBuilder.setMultipartReplyBody(caseBuilder.build());\r
165         MultipartReplyMessage message = mpBuilder.build();\r
166         \r
167         List<DataObject> list = translator.translate(cookie, sc, message);\r
168 \r
169         Assert.assertEquals("Wrong list size", 1, list.size());\r
170         NodeConnectorStatisticsUpdate statUpdate = (NodeConnectorStatisticsUpdate) list.get(0);\r
171         Assert.assertEquals("Wrong node-id", "openflow:42", statUpdate.getId().getValue());\r
172         Assert.assertEquals("Wrong more-replies", false, statUpdate.isMoreReplies());\r
173         Assert.assertEquals("Wrong transaction-id", 123, statUpdate.getTransactionId().getValue().intValue());\r
174         Assert.assertEquals("Wrong port stats size", 2, statUpdate.getNodeConnectorStatisticsAndPortNumberMap().size());\r
175         NodeConnectorStatisticsAndPortNumberMap stat = statUpdate.getNodeConnectorStatisticsAndPortNumberMap().get(0);\r
176         Assert.assertEquals("Wrong port number", "openflow:42:1", stat.getNodeConnectorId().getValue());\r
177         Assert.assertEquals("Wrong rx packets", 2, stat.getPackets().getReceived().intValue());\r
178         Assert.assertEquals("Wrong tx packets", 3, stat.getPackets().getTransmitted().intValue());\r
179         Assert.assertEquals("Wrong rx bytes", 4, stat.getBytes().getReceived().intValue());\r
180         Assert.assertEquals("Wrong tx bytes", 5, stat.getBytes().getTransmitted().intValue());\r
181         Assert.assertEquals("Wrong rx dropped", 6, stat.getReceiveDrops().intValue());\r
182         Assert.assertEquals("Wrong tx dropped", 7, stat.getTransmitDrops().intValue());\r
183         Assert.assertEquals("Wrong rx errors", 8, stat.getReceiveErrors().intValue());\r
184         Assert.assertEquals("Wrong tx errors", 9, stat.getTransmitErrors().intValue());\r
185         Assert.assertEquals("Wrong rx frame error", 10, stat.getReceiveFrameError().intValue());\r
186         Assert.assertEquals("Wrong rx over error", 11, stat.getReceiveOverRunError().intValue());\r
187         Assert.assertEquals("Wrong rx crc error", 12, stat.getReceiveCrcError().intValue());\r
188         Assert.assertEquals("Wrong collision count", 13, stat.getCollisionCount().intValue());\r
189         Assert.assertEquals("Wrong duration sec", 14, stat.getDuration().getSecond().getValue().intValue());\r
190         Assert.assertEquals("Wrong duration n sec", 15, stat.getDuration().getNanosecond().getValue().intValue());\r
191         stat = statUpdate.getNodeConnectorStatisticsAndPortNumberMap().get(1);\r
192         Assert.assertEquals("Wrong port number", "openflow:42:CONTROLLER", stat.getNodeConnectorId().getValue());\r
193         Assert.assertEquals("Wrong rx packets", 20, stat.getPackets().getReceived().intValue());\r
194         Assert.assertEquals("Wrong tx packets", 30, stat.getPackets().getTransmitted().intValue());\r
195         Assert.assertEquals("Wrong rx bytes", 40, stat.getBytes().getReceived().intValue());\r
196         Assert.assertEquals("Wrong tx bytes", 50, stat.getBytes().getTransmitted().intValue());\r
197         Assert.assertEquals("Wrong rx dropped", 60, stat.getReceiveDrops().intValue());\r
198         Assert.assertEquals("Wrong tx dropped", 70, stat.getTransmitDrops().intValue());\r
199         Assert.assertEquals("Wrong rx errors", 80, stat.getReceiveErrors().intValue());\r
200         Assert.assertEquals("Wrong tx errors", 90, stat.getTransmitErrors().intValue());\r
201         Assert.assertEquals("Wrong rx frame error", 100, stat.getReceiveFrameError().intValue());\r
202         Assert.assertEquals("Wrong rx over error", 110, stat.getReceiveOverRunError().intValue());\r
203         Assert.assertEquals("Wrong rx crc error", 120, stat.getReceiveCrcError().intValue());\r
204         Assert.assertEquals("Wrong collision count", 130, stat.getCollisionCount().intValue());\r
205         Assert.assertEquals("Wrong duration sec", null, stat.getDuration().getSecond());\r
206         Assert.assertEquals("Wrong duration n sec", null, stat.getDuration().getNanosecond());\r
207     }\r
208 \r
209     /**\r
210      * Test {@link MultipartReplyTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
211      * with empty table stats\r
212      */\r
213     @Test\r
214     public void testEmptyTableStats() {\r
215         MultipartReplyMessageBuilder mpBuilder = new MultipartReplyMessageBuilder();\r
216         mpBuilder.setVersion((short) EncodeConstants.OF13_VERSION_ID);\r
217         mpBuilder.setXid(123L);\r
218         mpBuilder.setFlags(new MultipartRequestFlags(false));\r
219         mpBuilder.setType(MultipartType.OFPMPTABLE);\r
220         \r
221         MultipartReplyTableCaseBuilder caseBuilder = new MultipartReplyTableCaseBuilder();\r
222         MultipartReplyTableBuilder statsBuilder = new MultipartReplyTableBuilder();\r
223         List<TableStats> tableStats = new ArrayList<>();\r
224         statsBuilder.setTableStats(tableStats);\r
225         caseBuilder.setMultipartReplyTable(statsBuilder.build());\r
226         mpBuilder.setMultipartReplyBody(caseBuilder.build());\r
227         MultipartReplyMessage message = mpBuilder.build();\r
228         \r
229         List<DataObject> list = translator.translate(cookie, sc, message);\r
230 \r
231         Assert.assertEquals("Wrong list size", 1, list.size());\r
232         FlowTableStatisticsUpdate statUpdate = (FlowTableStatisticsUpdate) list.get(0);\r
233         Assert.assertEquals("Wrong node-id", "openflow:42", statUpdate.getId().getValue());\r
234         Assert.assertEquals("Wrong more-replies", false, statUpdate.isMoreReplies());\r
235         Assert.assertEquals("Wrong transaction-id", 123, statUpdate.getTransactionId().getValue().intValue());\r
236         Assert.assertEquals("Wrong table stats size", 0, statUpdate.getFlowTableAndStatisticsMap().size());\r
237     }\r
238 \r
239     /**\r
240      * Test {@link MultipartReplyTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
241      * with table stats\r
242      */\r
243     @Test\r
244     public void testTableStats() {\r
245         MultipartReplyMessageBuilder mpBuilder = new MultipartReplyMessageBuilder();\r
246         mpBuilder.setVersion((short) EncodeConstants.OF13_VERSION_ID);\r
247         mpBuilder.setXid(123L);\r
248         mpBuilder.setFlags(new MultipartRequestFlags(false));\r
249         mpBuilder.setType(MultipartType.OFPMPTABLE);\r
250         \r
251         MultipartReplyTableCaseBuilder caseBuilder = new MultipartReplyTableCaseBuilder();\r
252         MultipartReplyTableBuilder statsBuilder = new MultipartReplyTableBuilder();\r
253         List<TableStats> tableStats = new ArrayList<>();\r
254         TableStatsBuilder builder = new TableStatsBuilder();\r
255         builder.setTableId((short) 1);\r
256         builder.setActiveCount(2L);\r
257         builder.setLookupCount(new BigInteger("3"));\r
258         builder.setMatchedCount(new BigInteger("4"));\r
259         tableStats.add(builder.build());\r
260         builder = new TableStatsBuilder();\r
261         builder.setTableId((short) 10);\r
262         builder.setActiveCount(20L);\r
263         builder.setLookupCount(new BigInteger("30"));\r
264         builder.setMatchedCount(new BigInteger("40"));\r
265         tableStats.add(builder.build());\r
266         statsBuilder.setTableStats(tableStats);\r
267         caseBuilder.setMultipartReplyTable(statsBuilder.build());\r
268         mpBuilder.setMultipartReplyBody(caseBuilder.build());\r
269         MultipartReplyMessage message = mpBuilder.build();\r
270         \r
271         List<DataObject> list = translator.translate(cookie, sc, message);\r
272 \r
273         Assert.assertEquals("Wrong list size", 1, list.size());\r
274         FlowTableStatisticsUpdate statUpdate = (FlowTableStatisticsUpdate) list.get(0);\r
275         Assert.assertEquals("Wrong node-id", "openflow:42", statUpdate.getId().getValue());\r
276         Assert.assertEquals("Wrong more-replies", false, statUpdate.isMoreReplies());\r
277         Assert.assertEquals("Wrong transaction-id", 123, statUpdate.getTransactionId().getValue().intValue());\r
278         Assert.assertEquals("Wrong table stats size", 2, statUpdate.getFlowTableAndStatisticsMap().size());\r
279         FlowTableAndStatisticsMap stat = statUpdate.getFlowTableAndStatisticsMap().get(0);\r
280         Assert.assertEquals("Wrong table-id", 1, stat.getTableId().getValue().intValue());\r
281         Assert.assertEquals("Wrong active count", 2, stat.getActiveFlows().getValue().intValue());\r
282         Assert.assertEquals("Wrong lookup count", 3, stat.getPacketsLookedUp().getValue().intValue());\r
283         Assert.assertEquals("Wrong matched count", 4, stat.getPacketsMatched().getValue().intValue());\r
284         stat = statUpdate.getFlowTableAndStatisticsMap().get(1);\r
285         Assert.assertEquals("Wrong table-id", 10, stat.getTableId().getValue().intValue());\r
286         Assert.assertEquals("Wrong active count", 20, stat.getActiveFlows().getValue().intValue());\r
287         Assert.assertEquals("Wrong lookup count", 30, stat.getPacketsLookedUp().getValue().intValue());\r
288         Assert.assertEquals("Wrong matched count", 40, stat.getPacketsMatched().getValue().intValue());\r
289     }\r
290 \r
291     /**\r
292      * Test {@link MultipartReplyTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
293      * with empty queue stats\r
294      */\r
295     @Test\r
296     public void testEmptyQueueStats() {\r
297         MultipartReplyMessageBuilder mpBuilder = new MultipartReplyMessageBuilder();\r
298         mpBuilder.setVersion((short) EncodeConstants.OF13_VERSION_ID);\r
299         mpBuilder.setXid(123L);\r
300         mpBuilder.setFlags(new MultipartRequestFlags(false));\r
301         mpBuilder.setType(MultipartType.OFPMPQUEUE);\r
302         \r
303         MultipartReplyQueueCaseBuilder caseBuilder = new MultipartReplyQueueCaseBuilder();\r
304         MultipartReplyQueueBuilder statsBuilder = new MultipartReplyQueueBuilder();\r
305         List<QueueStats> queueStats = new ArrayList<>();\r
306         statsBuilder.setQueueStats(queueStats);\r
307         caseBuilder.setMultipartReplyQueue(statsBuilder.build());\r
308         mpBuilder.setMultipartReplyBody(caseBuilder.build());\r
309         MultipartReplyMessage message = mpBuilder.build();\r
310         \r
311         List<DataObject> list = translator.translate(cookie, sc, message);\r
312 \r
313         Assert.assertEquals("Wrong list size", 1, list.size());\r
314         QueueStatisticsUpdate statUpdate = (QueueStatisticsUpdate) list.get(0);\r
315         Assert.assertEquals("Wrong node-id", "openflow:42", statUpdate.getId().getValue());\r
316         Assert.assertEquals("Wrong more-replies", false, statUpdate.isMoreReplies());\r
317         Assert.assertEquals("Wrong transaction-id", 123, statUpdate.getTransactionId().getValue().intValue());\r
318         Assert.assertEquals("Wrong queue stats size", 0, statUpdate.getQueueIdAndStatisticsMap().size());\r
319     }\r
320 \r
321     /**\r
322      * Test {@link MultipartReplyTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
323      * with queue stats\r
324      */\r
325     @Test\r
326     public void testQueueStats() {\r
327         MultipartReplyMessageBuilder mpBuilder = new MultipartReplyMessageBuilder();\r
328         mpBuilder.setVersion((short) EncodeConstants.OF13_VERSION_ID);\r
329         mpBuilder.setXid(123L);\r
330         mpBuilder.setFlags(new MultipartRequestFlags(false));\r
331         mpBuilder.setType(MultipartType.OFPMPQUEUE);\r
332         \r
333         MultipartReplyQueueCaseBuilder caseBuilder = new MultipartReplyQueueCaseBuilder();\r
334         MultipartReplyQueueBuilder statsBuilder = new MultipartReplyQueueBuilder();\r
335         List<QueueStats> queueStats = new ArrayList<>();\r
336         QueueStatsBuilder builder = new QueueStatsBuilder();\r
337         builder.setPortNo(BinContent.intToUnsignedLong(PortNumberValues.FLOOD.getIntValue()));\r
338         builder.setQueueId(2L);\r
339         builder.setTxPackets(new BigInteger("3"));\r
340         builder.setTxBytes(new BigInteger("4"));\r
341         builder.setTxErrors(new BigInteger("5"));\r
342         builder.setDurationSec(6L);\r
343         builder.setDurationNsec(7L);\r
344         queueStats.add(builder.build());\r
345         builder = new QueueStatsBuilder();\r
346         builder.setPortNo(BinContent.intToUnsignedLong(PortNumberValues.INPORT.getIntValue()));\r
347         builder.setQueueId(20L);\r
348         builder.setTxPackets(new BigInteger("30"));\r
349         builder.setTxBytes(new BigInteger("40"));\r
350         builder.setTxErrors(new BigInteger("50"));\r
351         builder.setDurationSec(60L);\r
352         builder.setDurationNsec(70L);\r
353         queueStats.add(builder.build());\r
354         statsBuilder.setQueueStats(queueStats);\r
355         caseBuilder.setMultipartReplyQueue(statsBuilder.build());\r
356         mpBuilder.setMultipartReplyBody(caseBuilder.build());\r
357         MultipartReplyMessage message = mpBuilder.build();\r
358         \r
359         List<DataObject> list = translator.translate(cookie, sc, message);\r
360 \r
361         Assert.assertEquals("Wrong list size", 1, list.size());\r
362         QueueStatisticsUpdate statUpdate = (QueueStatisticsUpdate) list.get(0);\r
363         Assert.assertEquals("Wrong node-id", "openflow:42", statUpdate.getId().getValue());\r
364         Assert.assertEquals("Wrong more-replies", false, statUpdate.isMoreReplies());\r
365         Assert.assertEquals("Wrong transaction-id", 123, statUpdate.getTransactionId().getValue().intValue());\r
366         Assert.assertEquals("Wrong queue stats size", 2, statUpdate.getQueueIdAndStatisticsMap().size());\r
367         QueueIdAndStatisticsMap stat = statUpdate.getQueueIdAndStatisticsMap().get(0);\r
368         Assert.assertEquals("Wrong port number", "openflow:42:FLOOD", stat.getNodeConnectorId().getValue());\r
369         Assert.assertEquals("Wrong queue-id", 2, stat.getQueueId().getValue().intValue());\r
370         Assert.assertEquals("Wrong tx packets", 3, stat.getTransmittedPackets().getValue().intValue());\r
371         Assert.assertEquals("Wrong tx bytes", 4, stat.getTransmittedBytes().getValue().intValue());\r
372         Assert.assertEquals("Wrong tx errors", 5, stat.getTransmissionErrors().getValue().intValue());\r
373         Assert.assertEquals("Wrong duration sec", 6, stat.getDuration().getSecond().getValue().intValue());\r
374         Assert.assertEquals("Wrong duration n sec", 7, stat.getDuration().getNanosecond().getValue().intValue());\r
375         stat = statUpdate.getQueueIdAndStatisticsMap().get(1);\r
376         Assert.assertEquals("Wrong port number", "openflow:42:INPORT", stat.getNodeConnectorId().getValue());\r
377         Assert.assertEquals("Wrong queue-id", 20, stat.getQueueId().getValue().intValue());\r
378         Assert.assertEquals("Wrong tx packets", 30, stat.getTransmittedPackets().getValue().intValue());\r
379         Assert.assertEquals("Wrong tx bytes", 40, stat.getTransmittedBytes().getValue().intValue());\r
380         Assert.assertEquals("Wrong tx errors", 50, stat.getTransmissionErrors().getValue().intValue());\r
381         Assert.assertEquals("Wrong duration sec", 60, stat.getDuration().getSecond().getValue().intValue());\r
382         Assert.assertEquals("Wrong duration n sec", 70, stat.getDuration().getNanosecond().getValue().intValue());\r
383     }\r
384 }