1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
\r
2 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
\r
4 import io.netty.buffer.ByteBuf;
\r
6 import java.math.BigInteger;
\r
8 import org.junit.Assert;
\r
9 import org.junit.Test;
\r
10 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
\r
11 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
\r
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
\r
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags;
\r
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;
\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;
\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyAggregate;
\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDesc;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyExperimenter;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyFlow;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroup;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyMeter;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyMeterConfig;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyMeterFeatures;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortDesc;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortStats;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyQueue;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyTable;
\r
36 * @author timotej.kubas
\r
37 * @author michal.polkorab
\r
39 public class MultipartReplyMessageFactoryTest {
\r
42 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
46 ByteBuf bb = BufferHelper.buildBuffer("00 07 00 01 00 00 00 00 01 02 03 04");
\r
47 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
49 BufferHelper.checkHeaderV13(builtByFactory);
\r
51 Assert.assertEquals("Wrong type", 0x07, builtByFactory.getType().getIntValue());
\r
52 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
53 //Assert.assertArrayEquals("Wrong body", new byte[]{0x01, 0x02, 0x03, 0x04}, builtByFactory.getBody());
\r
57 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
60 public void testMultipartReplyDescBody(){
\r
61 final int DESC_STR_LEN = 256;
\r
62 final int SERIAL_NUM_LEN = 32;
\r
63 ByteBuf bb = BufferHelper.buildBuffer("00 00 00 01 00 00 00 00");
\r
65 String mfrDesc = "Manufacturer description";
\r
66 byte[] mfrDescBytes = new byte[256];
\r
67 mfrDescBytes = mfrDesc.getBytes();
\r
68 bb.writeBytes(mfrDescBytes);
\r
69 ByteBufUtils.padBuffer((DESC_STR_LEN - mfrDescBytes.length), bb);
\r
71 String hwDesc = "Hardware description";
\r
72 byte[] hwDescBytes = new byte[256];
\r
73 hwDescBytes = hwDesc.getBytes();
\r
74 bb.writeBytes(hwDescBytes);
\r
75 ByteBufUtils.padBuffer((DESC_STR_LEN - hwDescBytes.length), bb);
\r
77 String swDesc = "Software description";
\r
78 byte[] swDescBytes = new byte[256];
\r
79 swDescBytes = swDesc.getBytes();
\r
80 bb.writeBytes(swDescBytes);
\r
81 ByteBufUtils.padBuffer((DESC_STR_LEN - swDescBytes.length), bb);
\r
83 String serialNum = "SN0123456789";
\r
84 byte[] serialNumBytes = new byte[32];
\r
85 serialNumBytes = serialNum.getBytes();
\r
86 bb.writeBytes(serialNumBytes);
\r
87 ByteBufUtils.padBuffer((SERIAL_NUM_LEN - serialNumBytes.length), bb);
\r
89 String dpDesc = "switch3 in room 3120";
\r
90 byte[] dpDescBytes = new byte[256];
\r
91 dpDescBytes = dpDesc.getBytes();
\r
92 bb.writeBytes(dpDescBytes);
\r
93 ByteBufUtils.padBuffer((DESC_STR_LEN - dpDescBytes.length), bb);
\r
95 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
97 BufferHelper.checkHeaderV13(builtByFactory);
\r
98 Assert.assertEquals("Wrong type", 0x00, builtByFactory.getType().getIntValue());
\r
99 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
100 MultipartReplyDesc message = (MultipartReplyDesc) builtByFactory.getMultipartReplyBody();
\r
101 Assert.assertEquals("Wrong mfrDesc", "Manufacturer description", message.getMfrDesc());
\r
102 Assert.assertEquals("Wrong hwDesc", "Hardware description", message.getHwDesc());
\r
103 Assert.assertEquals("Wrong swDesc", "Software description", message.getSwDesc());
\r
104 Assert.assertEquals("Wrong serialNum", "SN0123456789", message.getSerialNum());
\r
105 Assert.assertEquals("Wrong dpDesc", "switch3 in room 3120", message.getDpDesc());
\r
109 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
112 public void testMultipartReplyFlowBody(){
\r
113 ByteBuf bb = BufferHelper.buildBuffer("00 01 00 01 00 00 00 00 "+
\r
117 "00 00 00 09 "+//durationSec
\r
118 "00 00 00 07 "+//durationNsec
\r
119 "00 0C "+//priority
\r
120 "00 0E "+//idleTimeout
\r
121 "00 0F "+//hardTimeout
\r
123 "00 00 00 00 "+//pad_02
\r
124 "00 01 01 01 01 01 01 01 "+//cookie
\r
125 "00 01 01 01 01 01 01 01 "+//packetCount
\r
126 "00 01 01 01 01 01 01 01"//byteCount
\r
129 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
131 BufferHelper.checkHeaderV13(builtByFactory);
\r
132 Assert.assertEquals("Wrong type", 0x01, builtByFactory.getType().getIntValue());
\r
133 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
134 MultipartReplyFlow message = (MultipartReplyFlow) builtByFactory.getMultipartReplyBody();
\r
135 Assert.assertEquals("Wrong tableId", 8, message.getFlowStats().get(0).getTableId().intValue());
\r
136 Assert.assertEquals("Wrong durationSec", 9, message.getFlowStats().get(0).getDurationSec().intValue());
\r
137 Assert.assertEquals("Wrong durationNsec", 7, message.getFlowStats().get(0).getDurationNsec().intValue());
\r
138 Assert.assertEquals("Wrong priority", 12, message.getFlowStats().get(0).getPriority().intValue());
\r
139 Assert.assertEquals("Wrong idleTimeOut", 14, message.getFlowStats().get(0).getIdleTimeout().intValue());
\r
140 Assert.assertEquals("Wrong hardTimeOut", 15, message.getFlowStats().get(0).getHardTimeout().intValue());
\r
141 Assert.assertEquals("Wrong flags", new FlowModFlags(true, false, true, false, true),
\r
142 message.getFlowStats().get(0).getFlags());
\r
143 Assert.assertEquals("Wrong cookie",
\r
144 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
145 message.getFlowStats().get(0).getCookie());
\r
146 Assert.assertEquals("Wrong packetCount",
\r
147 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
148 message.getFlowStats().get(0).getPacketCount());
\r
149 Assert.assertEquals("Wrong byteCount",
\r
150 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
151 message.getFlowStats().get(0).getByteCount());
\r
155 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
158 public void testMultipartReplyAggregateBody(){
\r
159 ByteBuf bb = BufferHelper.buildBuffer("00 02 00 01 00 00 00 00 "+
\r
160 "00 01 01 01 01 01 01 01 "+//packetCount
\r
161 "00 01 01 01 01 01 01 01 "+//byteCount
\r
162 "00 00 00 08 "+//flowCount
\r
166 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
168 BufferHelper.checkHeaderV13(builtByFactory);
\r
169 Assert.assertEquals("Wrong type", 0x02, builtByFactory.getType().getIntValue());
\r
170 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
171 MultipartReplyAggregate message = (MultipartReplyAggregate) builtByFactory.getMultipartReplyBody();
\r
172 Assert.assertEquals("Wrong packetCount",
\r
173 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
174 message.getPacketCount());
\r
175 Assert.assertEquals("Wrong byteCount",
\r
176 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
177 message.getByteCount());
\r
178 Assert.assertEquals("Wrong flowCount",
\r
180 message.getFlowCount().intValue());
\r
184 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
187 public void testMultipartReplyTableBody(){
\r
188 ByteBuf bb = BufferHelper.buildBuffer("00 03 00 01 00 00 00 00 "+
\r
191 "00 00 00 10 "+//activeCount
\r
192 "00 01 01 01 01 01 01 01 "+//lookupCount
\r
193 "00 01 01 01 01 01 01 01"//matchedCount
\r
196 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
198 BufferHelper.checkHeaderV13(builtByFactory);
\r
199 Assert.assertEquals("Wrong type", 0x03, builtByFactory.getType().getIntValue());
\r
200 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
202 MultipartReplyTable message = (MultipartReplyTable) builtByFactory.getMultipartReplyBody();
\r
203 Assert.assertEquals("Wrong tableId", 8, message.getTableStats().get(0).getTableId().intValue());
\r
204 Assert.assertEquals("Wrong activeCount", 16, message.getTableStats().get(0).getActiveCount().longValue());
\r
205 Assert.assertEquals("Wrong lookupCount",
\r
206 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
207 message.getTableStats().get(0).getLookupCount());
\r
208 Assert.assertEquals("Wrong matchedCount",
\r
209 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
210 message.getTableStats().get(0).getMatchedCount());
\r
214 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
217 public void testMultipartReplyPortStatsBody(){
\r
218 ByteBuf bb = BufferHelper.buildBuffer("00 04 00 01 00 00 00 00 "+
\r
219 "00 00 00 FF "+//portNo
\r
220 "00 00 00 00 "+//pad
\r
221 "00 01 01 01 01 01 01 01 "+//rxPackets
\r
222 "00 02 02 02 02 02 02 02 "+//txPackets
\r
223 "00 02 03 02 03 02 03 02 "+//rxBytes
\r
224 "00 02 03 02 03 02 03 02 "+//txBytes
\r
225 "00 02 03 02 03 02 03 02 "+//rxDropped
\r
226 "00 02 03 02 03 02 03 02 "+//txDropped
\r
227 "00 02 03 02 03 02 03 02 "+//rxErrors
\r
228 "00 02 03 02 03 02 03 02 "+//txErrors
\r
229 "00 02 03 02 03 02 03 02 "+//rxFrameErr
\r
230 "00 02 03 02 03 02 03 02 "+//rxOverErr
\r
231 "00 02 03 02 03 02 03 02 "+//rxCrcErr
\r
232 "00 02 03 02 03 02 03 02 "+//collisions
\r
233 "00 00 00 02 "+//durationSec
\r
234 "00 00 00 04"//durationNsec
\r
237 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
239 BufferHelper.checkHeaderV13(builtByFactory);
\r
240 Assert.assertEquals("Wrong type", 0x04, builtByFactory.getType().getIntValue());
\r
241 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
243 MultipartReplyPortStats message = (MultipartReplyPortStats) builtByFactory.getMultipartReplyBody();
\r
245 Assert.assertEquals("Wrong portNo", 255, message.getPortStats().get(0).getPortNo().intValue());
\r
246 Assert.assertEquals("Wrong rxPackets",
\r
247 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
248 message.getPortStats().get(0).getRxPackets());
\r
249 Assert.assertEquals("Wrong txPackets",
\r
250 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
251 message.getPortStats().get(0).getTxPackets());
\r
252 Assert.assertEquals("Wrong rxBytes",
\r
253 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
254 message.getPortStats().get(0).getRxBytes());
\r
255 Assert.assertEquals("Wrong txBytes",
\r
256 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
257 message.getPortStats().get(0).getTxBytes());
\r
258 Assert.assertEquals("Wrong rxDropped",
\r
259 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
260 message.getPortStats().get(0).getRxDropped());
\r
261 Assert.assertEquals("Wrong txDropped",
\r
262 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
263 message.getPortStats().get(0).getTxDropped());
\r
264 Assert.assertEquals("Wrong rxErrors",
\r
265 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
266 message.getPortStats().get(0).getRxErrors());
\r
267 Assert.assertEquals("Wrong txErrors",
\r
268 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
269 message.getPortStats().get(0).getTxErrors());
\r
270 Assert.assertEquals("Wrong rxFrameErr",
\r
271 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
272 message.getPortStats().get(0).getRxFrameErr());
\r
273 Assert.assertEquals("Wrong rxOverErr",
\r
274 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
275 message.getPortStats().get(0).getRxOverErr());
\r
276 Assert.assertEquals("Wrong rxCrcErr",
\r
277 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
278 message.getPortStats().get(0).getRxCrcErr());
\r
279 Assert.assertEquals("Wrong collisions",
\r
280 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
281 message.getPortStats().get(0).getCollisions());
\r
282 Assert.assertEquals("Wrong durationSec", 2, message.getPortStats().get(0).getDurationSec().intValue());
\r
283 Assert.assertEquals("Wrong durationNsec", 4, message.getPortStats().get(0).getDurationNsec().intValue());
\r
287 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
290 public void testMultipartReplyQueueBody(){
\r
291 ByteBuf bb = BufferHelper.buildBuffer("00 05 00 01 00 00 00 00 "+
\r
292 "00 00 00 FF "+//portNo
\r
293 "00 00 00 10 "+//queueId
\r
294 "00 02 03 02 03 02 03 02 "+//txBytes
\r
295 "00 02 02 02 02 02 02 02 "+//txPackets
\r
296 "00 02 03 02 03 02 03 02 "+//txErrors
\r
297 "00 00 00 02 "+//durationSec
\r
298 "00 00 00 04"//durationNsec
\r
301 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
303 BufferHelper.checkHeaderV13(builtByFactory);
\r
304 Assert.assertEquals("Wrong type", 0x05, builtByFactory.getType().getIntValue());
\r
305 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
307 MultipartReplyQueue message = (MultipartReplyQueue) builtByFactory.getMultipartReplyBody();
\r
309 Assert.assertEquals("Wrong portNo", 255, message.getQueueStats().get(0).getPortNo().intValue());
\r
310 Assert.assertEquals("Wrong queueId", 16, message.getQueueStats().get(0).getQueueId().intValue());
\r
311 Assert.assertEquals("Wrong txBytes",
\r
312 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
313 message.getQueueStats().get(0).getTxBytes());
\r
314 Assert.assertEquals("Wrong txPackets",
\r
315 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
316 message.getQueueStats().get(0).getTxPackets());
\r
317 Assert.assertEquals("Wrong txErrors",
\r
318 new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}),
\r
319 message.getQueueStats().get(0).getTxErrors());
\r
320 Assert.assertEquals("Wrong durationSec", 2, message.getQueueStats().get(0).getDurationSec().intValue());
\r
321 Assert.assertEquals("Wrong durationNsec", 4, message.getQueueStats().get(0).getDurationNsec().intValue());
\r
325 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
328 public void testMultipartReplyGroupBody(){
\r
329 ByteBuf bb = BufferHelper.buildBuffer("00 06 00 01 00 00 00 00 "+
\r
332 "00 00 00 10 "+//groupId
\r
333 "00 00 00 12 "+//refCount
\r
334 "00 00 00 00 "+//pad2
\r
335 "00 01 01 01 01 01 01 01 "+//packetCount
\r
336 "00 01 01 01 01 01 01 01 "+//byteCount
\r
337 "00 00 00 08 "+//durationSec
\r
338 "00 00 00 09 "+//durationNsec
\r
339 "00 01 01 01 01 01 01 01 "+//packetCountBucket
\r
340 "00 01 01 01 01 01 01 01 "+//byteCountBucket
\r
341 "00 02 02 02 02 02 02 02 "+//packetCountBucket_2
\r
342 "00 02 02 02 02 02 02 02 "+//byteCountBucket_2
\r
343 "00 48 "+//length_2
\r
345 "00 00 00 10 "+//groupId_2
\r
346 "00 00 00 12 "+//refCount_2
\r
347 "00 00 00 00 "+//pad2.2
\r
348 "00 01 01 01 01 01 01 01 "+//packetCount_2
\r
349 "00 01 01 01 01 01 01 01 "+//byteCount_2
\r
350 "00 00 00 08 "+//durationSec_2
\r
351 "00 00 00 09 "+//durationNsec_2
\r
352 "00 01 01 01 01 01 01 01 "+//packetCountBucket_1.2
\r
353 "00 01 01 01 01 01 01 01 "+//byteCountBucket_1.2
\r
354 "00 02 02 02 02 02 02 02 "+//packetCountBucket_2.2
\r
355 "00 02 02 02 02 02 02 02"//byteCountBucket_2.2
\r
358 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
360 BufferHelper.checkHeaderV13(builtByFactory);
\r
361 Assert.assertEquals("Wrong type", 0x06, builtByFactory.getType().getIntValue());
\r
362 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
364 MultipartReplyGroup message = (MultipartReplyGroup) builtByFactory.getMultipartReplyBody();
\r
366 Assert.assertEquals("Wrong groupId", 16, message.getGroupStats().get(0).getGroupId().intValue());
\r
367 Assert.assertEquals("Wrong refCount", 18, message.getGroupStats().get(0).getRefCount().intValue());
\r
368 Assert.assertEquals("Wrong packetCount",
\r
369 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
370 message.getGroupStats().get(0).getPacketCount());
\r
371 Assert.assertEquals("Wrong byteCount",
\r
372 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
373 message.getGroupStats().get(0).getByteCount());
\r
374 Assert.assertEquals("Wrong durationSec", 8, message.getGroupStats().get(0).getDurationSec().intValue());
\r
375 Assert.assertEquals("Wrong durationNsec", 9, message.getGroupStats().get(0).getDurationNsec().intValue());
\r
376 Assert.assertEquals("Wrong packetCountBucket",
\r
377 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
378 message.getGroupStats().get(0).getBucketStats().get(0).getPacketCount());
\r
379 Assert.assertEquals("Wrong byteCountBucket",
\r
380 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
381 message.getGroupStats().get(0).getBucketStats().get(0).getByteCount());
\r
382 Assert.assertEquals("Wrong packetCountBucket_2",
\r
383 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
384 message.getGroupStats().get(0).getBucketStats().get(1).getPacketCount());
\r
385 Assert.assertEquals("Wrong byteCountBucket_2",
\r
386 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
387 message.getGroupStats().get(0).getBucketStats().get(1).getByteCount());
\r
389 Assert.assertEquals("Wrong groupId_2", 16, message.getGroupStats().get(1).getGroupId().intValue());
\r
390 Assert.assertEquals("Wrong refCount_2", 18, message.getGroupStats().get(1).getRefCount().intValue());
\r
391 Assert.assertEquals("Wrong packetCount_2",
\r
392 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
393 message.getGroupStats().get(1).getPacketCount());
\r
394 Assert.assertEquals("Wrong byteCount_2",
\r
395 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
396 message.getGroupStats().get(1).getByteCount());
\r
397 Assert.assertEquals("Wrong durationSec_2", 8, message.getGroupStats().get(1).getDurationSec().intValue());
\r
398 Assert.assertEquals("Wrong durationNsec_2", 9, message.getGroupStats().get(1).getDurationNsec().intValue());
\r
399 Assert.assertEquals("Wrong packetCountBucket_1.2",
\r
400 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
401 message.getGroupStats().get(1).getBucketStats().get(0).getPacketCount());
\r
402 Assert.assertEquals("Wrong byteCountBucket_1.2",
\r
403 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
404 message.getGroupStats().get(1).getBucketStats().get(0).getByteCount());
\r
405 Assert.assertEquals("Wrong packetCountBucket_2.2",
\r
406 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
407 message.getGroupStats().get(1).getBucketStats().get(1).getPacketCount());
\r
408 Assert.assertEquals("Wrong byteCountBucket_2.2",
\r
409 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
410 message.getGroupStats().get(1).getBucketStats().get(1).getByteCount());
\r
414 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
417 public void testMultipartReplyMeterFeaturesBody(){
\r
418 ByteBuf bb = BufferHelper.buildBuffer("00 0B 00 01 00 00 00 00 "+
\r
419 "00 00 00 09 "+//maxMeter
\r
420 "00 00 00 01 "+//bandTypes
\r
421 "00 00 00 03 "+//capabilities
\r
427 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
429 BufferHelper.checkHeaderV13(builtByFactory);
\r
430 Assert.assertEquals("Wrong type", 11, builtByFactory.getType().getIntValue());
\r
431 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
433 MultipartReplyMeterFeatures message = (MultipartReplyMeterFeatures) builtByFactory.getMultipartReplyBody();
\r
435 Assert.assertEquals("Wrong maxMeter", 9, message.getMaxMeter().intValue());
\r
436 Assert.assertEquals("Wrong bandTypes", 1, message.getBandTypes().getIntValue());
\r
437 Assert.assertEquals("Wrong capabilities", new MeterFlags(false, true, true, false),
\r
438 message.getCapabilities());
\r
439 Assert.assertEquals("Wrong maxBands", 3, message.getMaxBands().intValue());
\r
440 Assert.assertEquals("Wrong maxColor", 4, message.getMaxColor().intValue());
\r
444 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
447 public void testMultipartReplyMeterBody(){
\r
448 ByteBuf bb = BufferHelper.buildBuffer("00 09 00 01 00 00 00 00 "+
\r
449 "00 00 00 09 "+//meterId
\r
451 "00 00 00 00 00 00 "+//pad
\r
452 "00 00 00 07 "+//flowCount
\r
453 "00 01 01 01 01 01 01 01 "+//packetInCount
\r
454 "00 01 01 01 01 01 01 01 "+//byteInCount
\r
455 "00 00 00 05 "+//durationSec
\r
456 "00 00 00 05 "+//durationNsec
\r
457 "00 01 01 01 01 01 01 01 "+//packetBandCount_01
\r
458 "00 01 01 01 01 01 01 01 "+//byteBandCount_01
\r
459 "00 02 02 02 02 02 02 02 "+//packetBandCount_02
\r
460 "00 02 02 02 02 02 02 02 "+//byteBandCount_02
\r
461 "00 03 03 03 03 03 03 03 "+//packetBandCount_03
\r
462 "00 03 03 03 03 03 03 03"//byteBandCount_03
\r
465 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
467 BufferHelper.checkHeaderV13(builtByFactory);
\r
468 Assert.assertEquals("Wrong type", 9, builtByFactory.getType().getIntValue());
\r
469 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
471 MultipartReplyMeter message = (MultipartReplyMeter) builtByFactory.getMultipartReplyBody();
\r
473 Assert.assertEquals("Wrong meterId", 9,
\r
474 message.getMeterStats().get(0).getMeterId().intValue());
\r
475 Assert.assertEquals("Wrong flowCount", 7,
\r
476 message.getMeterStats().get(0).getFlowCount().intValue());
\r
477 Assert.assertEquals("Wrong packetInCount",
\r
478 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
479 message.getMeterStats().get(0).getPacketInCount());
\r
480 Assert.assertEquals("Wrong byteInCount",
\r
481 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
482 message.getMeterStats().get(0).getByteInCount());
\r
483 Assert.assertEquals("Wrong durationSec", 5,
\r
484 message.getMeterStats().get(0).getDurationSec().intValue());
\r
485 Assert.assertEquals("Wrong durationNsec", 5,
\r
486 message.getMeterStats().get(0).getDurationNsec().intValue());
\r
487 Assert.assertEquals("Wrong packetBandCount_01",
\r
488 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
489 message.getMeterStats().get(0).getMeterBandStats().get(0).getPacketBandCount());
\r
490 Assert.assertEquals("Wrong byteBandCount_01",
\r
491 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
492 message.getMeterStats().get(0).getMeterBandStats().get(0).getByteBandCount());
\r
493 Assert.assertEquals("Wrong packetBandCount_02",
\r
494 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
495 message.getMeterStats().get(0).getMeterBandStats().get(1).getPacketBandCount());
\r
496 Assert.assertEquals("Wrong byteBandCount_02",
\r
497 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
498 message.getMeterStats().get(0).getMeterBandStats().get(1).getByteBandCount());
\r
499 Assert.assertEquals("Wrong packetBandCount_03",
\r
500 new BigInteger(new byte[]{0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}),
\r
501 message.getMeterStats().get(0).getMeterBandStats().get(2).getPacketBandCount());
\r
502 Assert.assertEquals("Wrong byteBandCount_03",
\r
503 new BigInteger(new byte[]{0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}),
\r
504 message.getMeterStats().get(0).getMeterBandStats().get(2).getByteBandCount());
\r
508 public void testMultipartReplyMeterBodyMulti(){
\r
509 ByteBuf bb = BufferHelper.buildBuffer("00 09 00 01 00 00 00 00 "+
\r
510 "00 00 00 09 "+//meterId_0
\r
512 "00 00 00 00 00 00 "+//pad_0
\r
513 "00 00 00 07 "+//flowCount_0
\r
514 "00 01 01 01 01 01 01 01 "+//packetInCount_0
\r
515 "00 01 01 01 01 01 01 01 "+//byteInCount_0
\r
516 "00 00 00 05 "+//durationSec_0
\r
517 "00 00 00 05 "+//durationNsec_0
\r
518 "00 01 01 01 01 01 01 01 "+//packetBandCount_01
\r
519 "00 01 01 01 01 01 01 01 "+//byteBandCount_01
\r
520 "00 02 02 02 02 02 02 02 "+//packetBandCount_02
\r
521 "00 02 02 02 02 02 02 02 "+//byteBandCount_02
\r
522 "00 03 03 03 03 03 03 03 "+//packetBandCount_03
\r
523 "00 03 03 03 03 03 03 03 "+//byteBandCount_03
\r
524 "00 00 00 08 "+//meterId_1
\r
526 "00 00 00 00 00 00 "+//pad_1
\r
527 "00 00 00 07 "+//flowCount_1
\r
528 "00 01 01 01 01 01 01 01 "+//packetInCount_1
\r
529 "00 01 01 01 01 01 01 01 "+//byteInCount_1
\r
530 "00 00 00 05 "+//durationSec_1
\r
531 "00 00 00 05 "+//durationNsec_1
\r
532 "00 01 01 01 01 01 01 01 "+//packetBandCount_11
\r
533 "00 01 01 01 01 01 01 01 "+//byteBandCount_11
\r
534 "00 02 02 02 02 02 02 02 "+//packetBandCount_12
\r
535 "00 02 02 02 02 02 02 02 "+//byteBandCount_12
\r
536 "00 03 03 03 03 03 03 03 "+//packetBandCount_13
\r
537 "00 03 03 03 03 03 03 03"//byteBandCount_13
\r
540 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
542 BufferHelper.checkHeaderV13(builtByFactory);
\r
543 Assert.assertEquals("Wrong type", 9, builtByFactory.getType().getIntValue());
\r
544 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
546 MultipartReplyMeter message = (MultipartReplyMeter) builtByFactory.getMultipartReplyBody();
\r
548 Assert.assertEquals("Wrong meterId", 9,
\r
549 message.getMeterStats().get(0).getMeterId().intValue());
\r
550 Assert.assertEquals("Wrong flowCount", 7,
\r
551 message.getMeterStats().get(0).getFlowCount().intValue());
\r
552 Assert.assertEquals("Wrong packetInCount",
\r
553 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
554 message.getMeterStats().get(0).getPacketInCount());
\r
555 Assert.assertEquals("Wrong byteInCount",
\r
556 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
557 message.getMeterStats().get(0).getByteInCount());
\r
558 Assert.assertEquals("Wrong durationSec", 5,
\r
559 message.getMeterStats().get(0).getDurationSec().intValue());
\r
560 Assert.assertEquals("Wrong durationNsec", 5,
\r
561 message.getMeterStats().get(0).getDurationNsec().intValue());
\r
562 Assert.assertEquals("Wrong packetBandCount_01",
\r
563 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
564 message.getMeterStats().get(0).getMeterBandStats().get(0).getPacketBandCount());
\r
565 Assert.assertEquals("Wrong byteBandCount_01",
\r
566 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
567 message.getMeterStats().get(0).getMeterBandStats().get(0).getByteBandCount());
\r
568 Assert.assertEquals("Wrong packetBandCount_02",
\r
569 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
570 message.getMeterStats().get(0).getMeterBandStats().get(1).getPacketBandCount());
\r
571 Assert.assertEquals("Wrong byteBandCount_02",
\r
572 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
573 message.getMeterStats().get(0).getMeterBandStats().get(1).getByteBandCount());
\r
574 Assert.assertEquals("Wrong packetBandCount_03",
\r
575 new BigInteger(new byte[]{0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}),
\r
576 message.getMeterStats().get(0).getMeterBandStats().get(2).getPacketBandCount());
\r
577 Assert.assertEquals("Wrong byteBandCount_03",
\r
578 new BigInteger(new byte[]{0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}),
\r
579 message.getMeterStats().get(0).getMeterBandStats().get(2).getByteBandCount());
\r
581 Assert.assertEquals("Wrong meterId", 8,
\r
582 message.getMeterStats().get(1).getMeterId().intValue());
\r
583 Assert.assertEquals("Wrong flowCount", 7,
\r
584 message.getMeterStats().get(1).getFlowCount().intValue());
\r
585 Assert.assertEquals("Wrong packetInCount",
\r
586 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
587 message.getMeterStats().get(1).getPacketInCount());
\r
588 Assert.assertEquals("Wrong byteInCount",
\r
589 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
590 message.getMeterStats().get(1).getByteInCount());
\r
591 Assert.assertEquals("Wrong durationSec", 5,
\r
592 message.getMeterStats().get(1).getDurationSec().intValue());
\r
593 Assert.assertEquals("Wrong durationNsec", 5,
\r
594 message.getMeterStats().get(1).getDurationNsec().intValue());
\r
595 Assert.assertEquals("Wrong packetBandCount_01",
\r
596 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
597 message.getMeterStats().get(1).getMeterBandStats().get(0).getPacketBandCount());
\r
598 Assert.assertEquals("Wrong byteBandCount_01",
\r
599 new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}),
\r
600 message.getMeterStats().get(1).getMeterBandStats().get(0).getByteBandCount());
\r
601 Assert.assertEquals("Wrong packetBandCount_02",
\r
602 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
603 message.getMeterStats().get(1).getMeterBandStats().get(1).getPacketBandCount());
\r
604 Assert.assertEquals("Wrong byteBandCount_02",
\r
605 new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}),
\r
606 message.getMeterStats().get(1).getMeterBandStats().get(1).getByteBandCount());
\r
607 Assert.assertEquals("Wrong packetBandCount_03",
\r
608 new BigInteger(new byte[]{0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}),
\r
609 message.getMeterStats().get(1).getMeterBandStats().get(2).getPacketBandCount());
\r
610 Assert.assertEquals("Wrong byteBandCount_03",
\r
611 new BigInteger(new byte[]{0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}),
\r
612 message.getMeterStats().get(1).getMeterBandStats().get(2).getByteBandCount());
\r
616 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
619 public void testMultipartReplyMeterConfigBody(){
\r
620 ByteBuf bb = BufferHelper.buildBuffer("00 0A 00 01 00 00 00 00 "+
\r
623 "00 00 00 09 "+//meterId
\r
624 "00 01 "+//meterBandDrop.type
\r
625 "00 10 "+//meterBandDrop.len
\r
626 "00 00 00 11 "+//meterBandDrop.rate
\r
627 "00 00 00 20 "+//meterBandDrop.burstSize
\r
628 "00 00 00 00 "+//meterBandDrop.pad
\r
629 "00 02 "+//meterBandDscp.type
\r
630 "00 10 "+//meterBandDscp.len
\r
631 "00 00 00 11 "+//meterBandDscp.rate
\r
632 "00 00 00 20 "+//meterBandDscp.burstSize
\r
633 "04 "+//meterBandDscp.precLevel
\r
634 "00 00 00 "+//meterBandDscp.pad
\r
635 "FF FF "+//meterBandExperimenter.type
\r
636 "00 10 "+//meterBandExperimenter.len
\r
637 "00 00 00 11 "+//meterBandExperimenter.rate
\r
638 "00 00 00 20 "+//meterBandExperimenter.burstSize
\r
639 "00 00 00 04"//meterBandExperimenter.experimenter
\r
642 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
644 BufferHelper.checkHeaderV13(builtByFactory);
\r
645 Assert.assertEquals("Wrong type", 10, builtByFactory.getType().getIntValue());
\r
646 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
648 MultipartReplyMeterConfig message = (MultipartReplyMeterConfig) builtByFactory.getMultipartReplyBody();
\r
650 Assert.assertEquals("Wrong flags", 1,
\r
651 message.getMeterConfig().get(0).getFlags().getIntValue());
\r
652 Assert.assertEquals("Wrong meterId", 9,
\r
653 message.getMeterConfig().get(0).getMeterId().intValue());
\r
655 MeterBandDrop meterBandDrop = (MeterBandDrop) message.getMeterConfig().get(0).getBands().get(0).getMeterBand();
\r
656 Assert.assertEquals("Wrong meterBandDrop.type", 1, meterBandDrop.getType().getIntValue());
\r
657 Assert.assertEquals("Wrong meterBandDrop.rate", 17, meterBandDrop.getRate().intValue());
\r
658 Assert.assertEquals("Wrong meterBandDrop.burstSize", 32, meterBandDrop.getBurstSize().intValue());
\r
660 MeterBandDscpRemark meterBandDscp = (MeterBandDscpRemark) message.getMeterConfig().get(0).getBands().get(1).getMeterBand();
\r
661 Assert.assertEquals("Wrong meterBandDscp.type", 2, meterBandDscp.getType().getIntValue());
\r
662 Assert.assertEquals("Wrong meterBandDscp.rate", 17, meterBandDscp.getRate().intValue());
\r
663 Assert.assertEquals("Wrong meterBandDscp.burstSize", 32, meterBandDscp.getBurstSize().intValue());
\r
664 Assert.assertEquals("Wrong meterBandDscp.precLevel", 4, meterBandDscp.getPrecLevel().intValue());
\r
666 MeterBandExperimenter meterBandExperimenter = (MeterBandExperimenter) message.getMeterConfig().get(0).getBands().get(2).getMeterBand();
\r
667 Assert.assertEquals("Wrong meterBandExperimenter.type", 0xFFFF, meterBandExperimenter.getType().getIntValue());
\r
668 Assert.assertEquals("Wrong meterBandExperimenter.rate", 17, meterBandExperimenter.getRate().intValue());
\r
669 Assert.assertEquals("Wrong meterBandExperimenter.burstSize", 32, meterBandExperimenter.getBurstSize().intValue());
\r
670 Assert.assertEquals("Wrong meterBandExperimenter.experimenter", 4, meterBandExperimenter.getExperimenter().intValue());
\r
674 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
677 public void testMultipartReplyMeterConfigBodyMulti(){
\r
678 ByteBuf bb = BufferHelper.buildBuffer("00 0A 00 01 00 00 00 00 "+
\r
681 "00 00 00 09 "+//meterId
\r
682 "00 01 "+//meterBandDrop.type
\r
683 "00 10 "+//meterBandDrop.len
\r
684 "00 00 00 11 "+//meterBandDrop.rate
\r
685 "00 00 00 20 "+//meterBandDrop.burstSize
\r
686 "00 00 00 00 "+//meterBandDrop.pad
\r
687 "00 02 "+//meterBandDscp.type
\r
688 "00 10 "+//meterBandDscp.len
\r
689 "00 00 00 11 "+//meterBandDscp.rate
\r
690 "00 00 00 20 "+//meterBandDscp.burstSize
\r
691 "04 "+//meterBandDscp.precLevel
\r
692 "00 00 00 "+//meterBandDscp.pad
\r
693 "FF FF "+//meterBandExperimenter.type
\r
694 "00 10 "+//meterBandExperimenter.len
\r
695 "00 00 00 11 "+//meterBandExperimenter.rate
\r
696 "00 00 00 20 "+//meterBandExperimenter.burstSize
\r
697 "00 00 00 04 "+//meterBandExperimenter.experimenter
\r
701 "00 00 00 07 "+//meterId01
\r
702 "00 02 "+//meterBandDscp01.type
\r
703 "00 10 "+//meterBandDscp01.len
\r
704 "00 00 00 11 "+//meterBandDscp01.rate
\r
705 "00 00 00 20 "+//meterBandDscp01.burstSize
\r
706 "04 "+//meterBandDscp01.precLevel
\r
707 "00 00 00"//meterBandDscp01.pad
\r
710 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
712 BufferHelper.checkHeaderV13(builtByFactory);
\r
713 Assert.assertEquals("Wrong type", 10, builtByFactory.getType().getIntValue());
\r
714 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
716 MultipartReplyMeterConfig message = (MultipartReplyMeterConfig) builtByFactory.getMultipartReplyBody();
\r
718 Assert.assertEquals("Wrong flags", 1,
\r
719 message.getMeterConfig().get(0).getFlags().getIntValue());
\r
720 Assert.assertEquals("Wrong meterId", 9,
\r
721 message.getMeterConfig().get(0).getMeterId().intValue());
\r
723 MeterBandDrop meterBandDrop = (MeterBandDrop) message.getMeterConfig().get(0).getBands().get(0).getMeterBand();
\r
724 Assert.assertEquals("Wrong meterBandDrop.type", 1, meterBandDrop.getType().getIntValue());
\r
725 Assert.assertEquals("Wrong meterBandDrop.rate", 17, meterBandDrop.getRate().intValue());
\r
726 Assert.assertEquals("Wrong meterBandDrop.burstSize", 32, meterBandDrop.getBurstSize().intValue());
\r
728 MeterBandDscpRemark meterBandDscp = (MeterBandDscpRemark) message.getMeterConfig().get(0).getBands().get(1).getMeterBand();
\r
729 Assert.assertEquals("Wrong meterBandDscp.type", 2, meterBandDscp.getType().getIntValue());
\r
730 Assert.assertEquals("Wrong meterBandDscp.rate", 17, meterBandDscp.getRate().intValue());
\r
731 Assert.assertEquals("Wrong meterBandDscp.burstSize", 32, meterBandDscp.getBurstSize().intValue());
\r
732 Assert.assertEquals("Wrong meterBandDscp.precLevel", 4, meterBandDscp.getPrecLevel().intValue());
\r
734 MeterBandExperimenter meterBandExperimenter = (MeterBandExperimenter) message.getMeterConfig().get(0).getBands().get(2).getMeterBand();
\r
735 Assert.assertEquals("Wrong meterBandExperimenter.type", 0xFFFF, meterBandExperimenter.getType().getIntValue());
\r
736 Assert.assertEquals("Wrong meterBandExperimenter.rate", 17, meterBandExperimenter.getRate().intValue());
\r
737 Assert.assertEquals("Wrong meterBandExperimenter.burstSize", 32, meterBandExperimenter.getBurstSize().intValue());
\r
738 Assert.assertEquals("Wrong meterBandExperimenter.experimenter", 4, meterBandExperimenter.getExperimenter().intValue());
\r
740 Assert.assertEquals("Wrong flags01", 1,
\r
741 message.getMeterConfig().get(0).getFlags().getIntValue());
\r
742 Assert.assertEquals("Wrong meterId01", 7,
\r
743 message.getMeterConfig().get(1).getMeterId().intValue());
\r
745 MeterBandDscpRemark meterBandDscp01 = (MeterBandDscpRemark) message.getMeterConfig().get(1).getBands().get(0).getMeterBand();
\r
746 Assert.assertEquals("Wrong meterBandDscp01.type", 2, meterBandDscp01.getType().getIntValue());
\r
747 Assert.assertEquals("Wrong meterBandDscp01.rate", 17, meterBandDscp01.getRate().intValue());
\r
748 Assert.assertEquals("Wrong meterBandDscp01.burstSize", 32, meterBandDscp01.getBurstSize().intValue());
\r
749 Assert.assertEquals("Wrong meterBandDscp01.precLevel", 4, meterBandDscp01.getPrecLevel().intValue());
\r
754 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
757 public void testMultipartReplyExperimenterBody(){
\r
758 ByteBuf bb = BufferHelper.buildBuffer("FF FF 00 01 00 00 00 00 "+
\r
759 "00 00 00 0F "+//experimenterId
\r
760 "00 00 00 FF "+//expType
\r
761 "00 00 01 01 00 00 01 01"
\r
764 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
766 BufferHelper.checkHeaderV13(builtByFactory);
\r
767 Assert.assertEquals("Wrong type", 0xFFFF, builtByFactory.getType().getIntValue());
\r
768 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
770 MultipartReplyExperimenter message = (MultipartReplyExperimenter) builtByFactory.getMultipartReplyBody();
\r
772 Assert.assertEquals("Wrong experimenterId", 15, message.getExperimenter().intValue());
\r
773 Assert.assertEquals("Wrong expType", 255, message.getExpType().intValue());
\r
774 Assert.assertArrayEquals("Wrong data", new byte[]{0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01},
\r
775 message.getData());
\r
779 * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO
\r
782 public void testMultipartReplyPortDescBody(){
\r
783 final byte MAX_PORT_NAME_LEN = 16;
\r
784 ByteBuf bb = BufferHelper.buildBuffer("00 0D 00 01 00 00 00 00 "+
\r
785 "00 01 02 03 "+ //portNo
\r
786 "00 00 00 00 "+ //padding01
\r
787 "08 00 27 00 B0 EB " + //mac address
\r
788 "00 00 "); //padding02
\r
790 String portName = "SampleText";
\r
791 byte[] portNameBytes = new byte[MAX_PORT_NAME_LEN];
\r
792 portNameBytes = portName.getBytes();
\r
793 bb.writeBytes(portNameBytes);
\r
794 ByteBufUtils.padBuffer((MAX_PORT_NAME_LEN - portNameBytes.length), bb);
\r
796 ByteBuf bb2 = BufferHelper.buildBuffer("00 00 00 41 " + //port config
\r
797 "00 00 00 05 " + //port state
\r
798 "00 00 00 81 " + //current features
\r
799 "00 00 00 81 " + //advertised features
\r
800 "00 00 00 81 " + //supported features
\r
801 "00 00 00 81 " + //peer features
\r
802 "00 00 00 81 " + //curr speed
\r
803 "00 00 00 80" //max speed
\r
805 bb.writeBytes(bb2.copy(4, bb2.readableBytes()-4));//excluding version and xid
\r
807 MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);
\r
809 BufferHelper.checkHeaderV13(builtByFactory);
\r
810 Assert.assertEquals("Wrong type", 13, builtByFactory.getType().getIntValue());
\r
811 Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());
\r
813 MultipartReplyPortDesc message = (MultipartReplyPortDesc) builtByFactory.getMultipartReplyBody();
\r
815 Assert.assertEquals("Wrong portNo", 66051L, message.getPorts().get(0).getPortNo().longValue());
\r
816 Assert.assertEquals("Wrong macAddress", new MacAddress("08002700B0EB"),
\r
817 message.getPorts().get(0).getHwAddr());
\r
818 Assert.assertEquals("Wrong portName", "SampleText",
\r
819 message.getPorts().get(0).getName());
\r
820 Assert.assertEquals("Wrong portConfig", new PortConfig(false, true, false, true),
\r
821 message.getPorts().get(0).getConfig());
\r
822 Assert.assertEquals("Wrong portState", new PortState(true, false, true),
\r
823 message.getPorts().get(0).getState());
\r
824 Assert.assertEquals("Wrong currentFeatures", new PortFeatures(true, false, false, false,
\r
825 false, false, false, true,
\r
826 false, false, false, false,
\r
827 false, false, false, false),
\r
828 message.getPorts().get(0).getCurrentFeatures());
\r
829 Assert.assertEquals("Wrong advertisedFeatures",
\r
830 new PortFeatures(true, false, false, false,
\r
831 false, false, false, true,
\r
832 false, false, false, false,
\r
833 false, false, false, false),
\r
834 message.getPorts().get(0).getAdvertisedFeatures());
\r
835 Assert.assertEquals("Wrong supportedFeatures",
\r
836 new PortFeatures(true, false, false, false,
\r
837 false, false, false, true,
\r
838 false, false, false, false,
\r
839 false, false, false, false),
\r
840 message.getPorts().get(0).getSupportedFeatures());
\r
841 Assert.assertEquals("Wrong peerFeatures",
\r
842 new PortFeatures(true, false, false, false,
\r
843 false, false, false, true,
\r
844 false, false, false, false,
\r
845 false, false, false, false),
\r
846 message.getPorts().get(0).getPeerFeatures());
\r
847 Assert.assertEquals("Wrong currSpeed", 129L, message.getPorts().get(0).getCurrSpeed().longValue());
\r
848 Assert.assertEquals("Wrong maxSpeed", 128L, message.getPorts().get(0).getMaxSpeed().longValue());
\r