new serialization factories and tests
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / GroupModInputMessageFactoryTest.java
diff --git a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactoryTest.java b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactoryTest.java
new file mode 100644 (file)
index 0000000..5379488
--- /dev/null
@@ -0,0 +1,110 @@
+/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
+package org.opendaylight.openflowjava.protocol.impl.serialization.factories;\r
+\r
+import io.netty.buffer.ByteBuf;\r
+import io.netty.buffer.UnpooledByteBufAllocator;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import junit.framework.Assert;\r
+\r
+import org.junit.Test;\r
+import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
+import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.group.mod.Buckets;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.group.mod.BucketsBuilder;\r
+\r
+/**\r
+ * @author timotej.kubas\r
+ *\r
+ */\r
+public class GroupModInputMessageFactoryTest {\r
+    private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1;\r
+    \r
+    /**\r
+     * @throws Exception\r
+     * Testing of {@link GroupModInputMessageFactory} for correct translation from POJO\r
+     */\r
+    @Test\r
+    public void testGroupModInputMessage() throws Exception {\r
+        GroupModInputBuilder builder = new GroupModInputBuilder();\r
+        BufferHelper.setupHeader(builder);\r
+        builder.setCommand(GroupModCommand.forValue(2));\r
+        builder.setType(GroupType.forValue(3));\r
+        builder.setGroupId(256L);\r
+        builder.setBuckets(createBucketsList());\r
+        GroupModInput message = builder.build();\r
+        \r
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
+        GroupModInputMessageFactory factory = GroupModInputMessageFactory.getInstance();\r
+        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
+        \r
+        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength());\r
+        Assert.assertEquals("Wrong command", message.getCommand().getIntValue(), out.readShort());\r
+        Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readByte());\r
+        out.skipBytes(PADDING_IN_GROUP_MOD_MESSAGE);\r
+        Assert.assertEquals("Wrong groupId", message.getGroupId().intValue(), out.readUnsignedInt());\r
+        Assert.assertEquals("Wrong bucketList", true, compareBucketsLists(createBucketsList(), createBucketsListFromBufer(out)));\r
+    }\r
+    \r
+    private static List<Buckets> createBucketsList(){\r
+        List<Buckets> bucketsList = new ArrayList<Buckets>();\r
+        BucketsBuilder bucketsBuilder = new BucketsBuilder();\r
+        Buckets bucket;\r
+        bucketsBuilder.setWeight(10);\r
+        bucketsBuilder.setWatchPort(new PortNumber(65L));\r
+        bucketsBuilder.setWatchGroup(22L);\r
+        bucket = bucketsBuilder.build();\r
+        bucketsList.add(bucket);\r
+        return bucketsList;\r
+    }\r
+    \r
+    private static List<Buckets> createBucketsListFromBufer(ByteBuf out){\r
+        List<Buckets> bucketsList = new ArrayList<Buckets>();\r
+        BucketsBuilder bucketsBuilder = new BucketsBuilder();\r
+        Buckets bucket;\r
+        bucketsBuilder.setWeight((int) out.readShort());\r
+        bucketsBuilder.setWatchPort(new PortNumber(out.readUnsignedInt()));\r
+        bucketsBuilder.setWatchGroup(out.readUnsignedInt());\r
+        out.skipBytes(4);\r
+        bucket = bucketsBuilder.build();\r
+        bucketsList.add(bucket);\r
+        return bucketsList;\r
+    }\r
+    \r
+    private static boolean compareBucketsLists(List<Buckets> bucketsFromMessage, List<Buckets> bucketsFromBuffer) {\r
+        boolean result = false;\r
+        int bucketsFromMessageLength = bucketsFromMessage.size();\r
+        for (int i = 0; i < bucketsFromMessageLength; i++) {\r
+            if (bucketsFromMessage.get(i).getWeight().equals(bucketsFromBuffer.get(i).getWeight())) {\r
+                result = true;\r
+            } else {\r
+                result = false;\r
+                break;\r
+            }\r
+            if (bucketsFromMessage.get(i).getWatchPort()\r
+                    .equals(bucketsFromBuffer.get(i).getWatchPort())) {\r
+                result = true;\r
+            } else {\r
+                result = false;\r
+                break;\r
+            }\r
+            if (bucketsFromMessage.get(i).getWatchGroup()\r
+                    .equals(bucketsFromBuffer.get(i).getWatchGroup())) {\r
+                result = true;\r
+            } else {\r
+                result = false;\r
+                break;\r
+            }\r
+        }\r
+     // TODO get method for field length missing\r
+     // TODO actions structure missing\r
+        return result;\r
+    }\r
+}\r