06bbf1e4ba0c9c643da18a729a184ad456ca584c
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / util / CodeKeyMakerFactoryTest.java
1 /*\r
2  * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.openflowjava.protocol.impl.util;\r
10 \r
11 import io.netty.buffer.ByteBuf;\r
12 \r
13 import org.junit.Assert;\r
14 import org.junit.Test;\r
15 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;\r
16 import org.opendaylight.openflowjava.protocol.api.keys.ActionDeserializerKey;\r
17 import org.opendaylight.openflowjava.protocol.api.keys.InstructionDeserializerKey;\r
18 import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey;\r
19 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
20 \r
21 /**\r
22  * @author michal.polkorab\r
23  *\r
24  */\r
25 public class CodeKeyMakerFactoryTest {\r
26 \r
27     /**\r
28      * Tests {@link CodeKeyMakerFactory#createMatchEntriesKeyMaker(short)}\r
29      */\r
30     @Test\r
31     public void testMatchEntriesKeyMaker() {\r
32         CodeKeyMaker keyMaker = CodeKeyMakerFactory.createMatchEntriesKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
33         Assert.assertNotNull("Null key maker", keyMaker);\r
34 \r
35         ByteBuf buffer = BufferHelper.buildBuffer("80 00 00 04 00 00 00 01");\r
36         buffer.skipBytes(4); // skip XID\r
37         MessageCodeKey codeKey = keyMaker.make(buffer);\r
38 \r
39         Assert.assertNotNull("Null key", codeKey);\r
40         Assert.assertEquals("Wrong key", new MatchEntryDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
41                         32768, 0), codeKey);\r
42         Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes());\r
43     }\r
44 \r
45     /**\r
46      * Tests {@link CodeKeyMakerFactory#createMatchEntriesKeyMaker(short)}\r
47      */\r
48     @Test\r
49     public void testExperimenterMatchEntriesKeyMaker() {\r
50         CodeKeyMaker keyMaker = CodeKeyMakerFactory.createMatchEntriesKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
51         Assert.assertNotNull("Null key maker", keyMaker);\r
52 \r
53         ByteBuf buffer = BufferHelper.buildBuffer("FF FF 00 04 00 00 00 01");\r
54         buffer.skipBytes(4); // skip XID\r
55         MessageCodeKey codeKey = keyMaker.make(buffer);\r
56 \r
57         Assert.assertNotNull("Null key", codeKey);\r
58         MatchEntryDeserializerKey comparationKey = new MatchEntryDeserializerKey(EncodeConstants.OF13_VERSION_ID, 65535, 0);\r
59         comparationKey.setExperimenterId(1L);\r
60         Assert.assertEquals("Wrong key", comparationKey, codeKey);\r
61         Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes());\r
62     }\r
63 \r
64     /**\r
65      * Tests {@link CodeKeyMakerFactory#createActionsKeyMaker(short)}\r
66      */\r
67     @Test\r
68     public void testActionKeyMaker() {\r
69         CodeKeyMaker keyMaker = CodeKeyMakerFactory.createActionsKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
70         Assert.assertNotNull("Null key maker", keyMaker);\r
71 \r
72         ByteBuf buffer = BufferHelper.buildBuffer("00 00 00 10 00 00 00 01 00 02 00 00 00 00 00 00");\r
73         buffer.skipBytes(4); // skip XID\r
74         MessageCodeKey codeKey = keyMaker.make(buffer);\r
75 \r
76         Assert.assertNotNull("Null key", codeKey);\r
77         Assert.assertEquals("Wrong key", new ActionDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
78                         0, null), codeKey);\r
79         Assert.assertEquals("Buffer index modified", 16, buffer.readableBytes());\r
80     }\r
81 \r
82     /**\r
83      * Tests {@link CodeKeyMakerFactory#createActionsKeyMaker(short)}\r
84      */\r
85     @Test\r
86     public void testExperimenterActionKeyMaker() {\r
87         CodeKeyMaker keyMaker = CodeKeyMakerFactory.createActionsKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
88         Assert.assertNotNull("Null key maker", keyMaker);\r
89 \r
90         ByteBuf buffer = BufferHelper.buildBuffer("FF FF 00 08 00 00 00 01");\r
91         buffer.skipBytes(4); // skip XID\r
92         MessageCodeKey codeKey = keyMaker.make(buffer);\r
93 \r
94         Assert.assertNotNull("Null key", codeKey);\r
95         Assert.assertEquals("Wrong key", new ActionDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
96                         65535, 1L), codeKey);\r
97         Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes());\r
98     }\r
99 \r
100     /**\r
101      * Tests {@link CodeKeyMakerFactory#createInstructionsKeyMaker(short)}\r
102      */\r
103     @Test\r
104     public void testInstructionKeyMaker() {\r
105         CodeKeyMaker keyMaker = CodeKeyMakerFactory.createInstructionsKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
106         Assert.assertNotNull("Null key maker", keyMaker);\r
107 \r
108         ByteBuf buffer = BufferHelper.buildBuffer("00 00 00 08");\r
109         buffer.skipBytes(4); // skip XID\r
110         MessageCodeKey codeKey = keyMaker.make(buffer);\r
111 \r
112         Assert.assertNotNull("Null key", codeKey);\r
113         Assert.assertEquals("Wrong key", new InstructionDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
114                         0, null), codeKey);\r
115         Assert.assertEquals("Buffer index modified", 4, buffer.readableBytes());\r
116     }\r
117 \r
118     /**\r
119      * Tests {@link CodeKeyMakerFactory#createInstructionsKeyMaker(short)}\r
120      */\r
121     @Test\r
122     public void testExperimenterInstructionKeyMaker() {\r
123         CodeKeyMaker keyMaker = CodeKeyMakerFactory.createInstructionsKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
124         Assert.assertNotNull("Null key maker", keyMaker);\r
125 \r
126         ByteBuf buffer = BufferHelper.buildBuffer("FF FF 00 08 00 00 00 01");\r
127         buffer.skipBytes(4); // skip XID\r
128         MessageCodeKey codeKey = keyMaker.make(buffer);\r
129 \r
130         Assert.assertNotNull("Null key", codeKey);\r
131         Assert.assertEquals("Wrong key", new InstructionDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
132                         65535, 1L), codeKey);\r
133         Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes());\r
134     }\r
135 }