Instructions quickfix + tests
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / util / ActionsDeserializerTest.java
diff --git a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/ActionsDeserializerTest.java b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/ActionsDeserializerTest.java
new file mode 100644 (file)
index 0000000..0b133f5
--- /dev/null
@@ -0,0 +1,127 @@
+/*\r
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import io.netty.buffer.ByteBuf;\r
+\r
+import java.util.List;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Test;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MaxLengthAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MplsTtlAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.NwTtlAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortNumberMatchEntry;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.QueueIdAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntries;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class ActionsDeserializerTest {\r
+\r
+    private static final Logger LOGGER = LoggerFactory\r
+            .getLogger(ActionsDeserializerTest.class);\r
+    /**\r
+     * Testing actions deserialization\r
+     */\r
+    @Test\r
+    public void test() {\r
+        ByteBuf message = BufferHelper.buildBuffer("00 00 00 10 00 00 00 01 00 02 00 00 00 00 00 00 "\r
+                + "00 0B 00 08 00 00 00 00 "\r
+                + "00 0C 00 08 00 00 00 00 "\r
+                + "00 0F 00 08 03 00 00 00 "\r
+                + "00 10 00 08 00 00 00 00 "\r
+                + "00 11 00 08 00 04 00 00 "\r
+                + "00 12 00 08 00 00 00 00 "\r
+                + "00 13 00 08 00 05 00 00 "\r
+                + "00 14 00 08 00 06 00 00 "\r
+                + "00 15 00 08 00 00 00 07 "\r
+                + "00 16 00 08 00 00 00 08 "\r
+                + "00 17 00 08 09 00 00 00 "\r
+                + "00 18 00 08 00 00 00 00 "\r
+                + "00 19 00 10 80 00 02 04 00 00 00 0B 00 00 00 00 "\r
+                + "00 1A 00 08 00 0A 00 00 "\r
+                + "00 1B 00 08 00 00 00 00");\r
+        \r
+        message.skipBytes(4); // skip XID\r
+        LOGGER.info("bytes: " + message.readableBytes());\r
+        List<ActionsList> actions = ActionsDeserializer.createActionsList(message, message.readableBytes());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.Output", actions.get(0).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action port", 1,\r
+                actions.get(0).getAction().getAugmentation(PortAction.class).getPort().getValue().intValue());\r
+        Assert.assertEquals("Wrong action max-length", 2,\r
+                actions.get(0).getAction().getAugmentation(MaxLengthAction.class).getMaxLength().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.CopyTtlOut", actions.get(1).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.CopyTtlIn", actions.get(2).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.SetMplsTtl", actions.get(3).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 3,\r
+                actions.get(3).getAction().getAugmentation(MplsTtlAction.class).getMplsTtl().shortValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.DecMplsTtl", actions.get(4).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.PushVlan", actions.get(5).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 4,\r
+                actions.get(5).getAction().getAugmentation(EthertypeAction.class).getEthertype().getValue().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.PopVlan", actions.get(6).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.PushMpls", actions.get(7).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 5,\r
+                actions.get(7).getAction().getAugmentation(EthertypeAction.class).getEthertype().getValue().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.PopMpls", actions.get(8).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 6,\r
+                actions.get(8).getAction().getAugmentation(EthertypeAction.class).getEthertype().getValue().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.SetQueue", actions.get(9).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 7,\r
+                actions.get(9).getAction().getAugmentation(QueueIdAction.class).getQueueId().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.Group", actions.get(10).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 8,\r
+                actions.get(10).getAction().getAugmentation(GroupIdAction.class).getGroupId().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.SetNwTtl", actions.get(11).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 9,\r
+                actions.get(11).getAction().getAugmentation(NwTtlAction.class).getNwTtl().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.DecNwTtl", actions.get(12).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.SetField", actions.get(13).getAction().getType().getName());\r
+        List<MatchEntries> entries = actions.get(13).getAction().getAugmentation(OxmFieldsAction.class).getMatchEntries();\r
+        Assert.assertEquals("Wrong number of fields", 1, entries.size());\r
+        Assert.assertEquals("Wrong match entry class", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow."\r
+                + "oxm.rev130731.OpenflowBasicClass", entries.get(0).getOxmClass().getName());\r
+        Assert.assertEquals("Wrong match entry field", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow."\r
+                + "oxm.rev130731.InPhyPort", entries.get(0).getOxmMatchField().getName());\r
+        Assert.assertEquals("Wrong match entry mask", false, entries.get(0).isHasMask());\r
+        Assert.assertEquals("Wrong match entry value", 11, \r
+                entries.get(0).getAugmentation(PortNumberMatchEntry.class).getPortNumber().getValue().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.PushPbb", actions.get(14).getAction().getType().getName());\r
+        Assert.assertEquals("Wrong action value", 10,\r
+                actions.get(14).getAction().getAugmentation(EthertypeAction.class).getEthertype().getValue().intValue());\r
+        Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight."\r
+                + "openflow.common.action.rev130731.PopPbb", actions.get(15).getAction().getType().getName());\r
+        Assert.assertTrue("Unread data in message", message.readableBytes() == 0);\r
+    }\r
+\r
+}\r