2 * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
11 import io.netty.buffer.ByteBuf;
12 import io.netty.buffer.UnpooledByteBufAllocator;
14 import java.util.ArrayList;
15 import java.util.List;
17 import org.junit.Assert;
18 import org.junit.Test;
19 import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;
20 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
21 import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsList;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsListBuilder;
32 * @author timotej.kubas
35 public class GroupModInputMessageFactoryTest {
36 private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1;
40 * Testing of {@link GroupModInputMessageFactory} for correct translation from POJO
43 public void testGroupModInputMessage() throws Exception {
44 GroupModInputBuilder builder = new GroupModInputBuilder();
45 BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
46 builder.setCommand(GroupModCommand.forValue(2));
47 builder.setType(GroupType.forValue(3));
48 builder.setGroupId(new GroupId(256L));
49 List<BucketsList> exp = createBucketsList();
50 builder.setBucketsList(exp);
51 GroupModInput message = builder.build();
53 ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
54 GroupModInputMessageFactory factory = GroupModInputMessageFactory.getInstance();
55 factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
57 BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
58 Assert.assertEquals("Wrong command", message.getCommand().getIntValue(), out.readUnsignedShort());
59 Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readUnsignedByte());
60 out.skipBytes(PADDING_IN_GROUP_MOD_MESSAGE);
61 Assert.assertEquals("Wrong groupId", message.getGroupId().getValue().intValue(), out.readUnsignedInt());
62 List<BucketsList> rec = createBucketsListFromBufer(out);
63 Assert.assertArrayEquals("Wrong bucketList", exp.toArray(), rec.toArray());
66 private static List<BucketsList> createBucketsList(){
67 List<BucketsList> bucketsList = new ArrayList<>();
68 BucketsListBuilder bucketsBuilder = new BucketsListBuilder();
70 bucketsBuilder.setWeight(10);
71 bucketsBuilder.setWatchPort(new PortNumber(65L));
72 bucketsBuilder.setWatchGroup(22L);
73 bucket = bucketsBuilder.build();
74 bucketsList.add(bucket);
78 private static List<BucketsList> createBucketsListFromBufer(ByteBuf out){
79 List<BucketsList> bucketsList = new ArrayList<>();
80 BucketsListBuilder bucketsBuilder = new BucketsListBuilder();
82 out.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES);
83 bucketsBuilder.setWeight(out.readUnsignedShort());
84 bucketsBuilder.setWatchPort(new PortNumber(out.readUnsignedInt()));
85 bucketsBuilder.setWatchGroup(out.readUnsignedInt());
87 bucket = bucketsBuilder.build();
88 bucketsList.add(bucket);