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