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