Integration test, SimpleClient bundle
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / GroupModInputMessageFactoryTest.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;\r
3 \r
4 import io.netty.buffer.ByteBuf;\r
5 import io.netty.buffer.UnpooledByteBufAllocator;\r
6 \r
7 import java.util.ArrayList;\r
8 import java.util.List;\r
9 \r
10 import junit.framework.Assert;\r
11 \r
12 import org.junit.Test;\r
13 import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
14 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.group.mod.Buckets;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.group.mod.BucketsBuilder;\r
22 \r
23 /**\r
24  * @author timotej.kubas\r
25  *\r
26  */\r
27 public class GroupModInputMessageFactoryTest {\r
28     private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1;\r
29     \r
30     /**\r
31      * @throws Exception\r
32      * Testing of {@link GroupModInputMessageFactory} for correct translation from POJO\r
33      */\r
34     @Test\r
35     public void testGroupModInputMessage() throws Exception {\r
36         GroupModInputBuilder builder = new GroupModInputBuilder();\r
37         BufferHelper.setupHeader(builder);\r
38         builder.setCommand(GroupModCommand.forValue(2));\r
39         builder.setType(GroupType.forValue(3));\r
40         builder.setGroupId(256L);\r
41         builder.setBuckets(createBucketsList());\r
42         GroupModInput message = builder.build();\r
43         \r
44         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
45         GroupModInputMessageFactory factory = GroupModInputMessageFactory.getInstance();\r
46         factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
47         \r
48         BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength());\r
49         Assert.assertEquals("Wrong command", message.getCommand().getIntValue(), out.readShort());\r
50         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readByte());\r
51         out.skipBytes(PADDING_IN_GROUP_MOD_MESSAGE);\r
52         Assert.assertEquals("Wrong groupId", message.getGroupId().intValue(), out.readUnsignedInt());\r
53         Assert.assertEquals("Wrong bucketList", createBucketsList(), createBucketsListFromBufer(out));\r
54     }\r
55     \r
56     private static List<Buckets> createBucketsList(){\r
57         List<Buckets> bucketsList = new ArrayList<>();\r
58         BucketsBuilder bucketsBuilder = new BucketsBuilder();\r
59         Buckets bucket;\r
60         bucketsBuilder.setWeight(10);\r
61         bucketsBuilder.setWatchPort(new PortNumber(65L));\r
62         bucketsBuilder.setWatchGroup(22L);\r
63         bucket = bucketsBuilder.build();\r
64         bucketsList.add(bucket);\r
65         return bucketsList;\r
66     }\r
67     \r
68     private static List<Buckets> createBucketsListFromBufer(ByteBuf out){\r
69         List<Buckets> bucketsList = new ArrayList<>();\r
70         BucketsBuilder bucketsBuilder = new BucketsBuilder();\r
71         Buckets bucket;\r
72         bucketsBuilder.setWeight((int) out.readShort());\r
73         bucketsBuilder.setWatchPort(new PortNumber(out.readUnsignedInt()));\r
74         bucketsBuilder.setWatchGroup(out.readUnsignedInt());\r
75         out.skipBytes(4);\r
76         bucket = bucketsBuilder.build();\r
77         bucketsList.add(bucket);\r
78         return bucketsList;\r
79     }\r
80 }\r