Merge "OF1.3 matchSerializer (Ipv6 address) fix + test"
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / util / OF10MatchSerializerTest.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.util;\r
3 \r
4 import junit.framework.Assert;\r
5 import io.netty.buffer.ByteBuf;\r
6 import io.netty.buffer.UnpooledByteBufAllocator;\r
7 \r
8 import org.junit.Test;\r
9 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
10 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowWildcardsV10;\r
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10;\r
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10Builder;\r
14 \r
15 /**\r
16  * @author michal.polkorab\r
17  *\r
18  */\r
19 public class OF10MatchSerializerTest {\r
20 \r
21     /**\r
22      * Testing correct serialization of ofp_match\r
23      */\r
24     @Test\r
25     public void test() {\r
26         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
27         MatchV10Builder builder = new MatchV10Builder();\r
28         builder.setWildcards(new FlowWildcardsV10(false, false, false, true, false,\r
29                 false, true, false, true, true, true));\r
30         builder.setNwSrcMask((short) 24);\r
31         builder.setNwDstMask((short) 16);\r
32         builder.setInPort(6653);\r
33         builder.setDlSrc(new MacAddress("01:01:01:01:01:01"));\r
34         builder.setDlDst(new MacAddress("02:02:02:02:02:02"));\r
35         builder.setDlVlan(128);\r
36         builder.setDlVlanPcp((short) 2);\r
37         builder.setDlType(15);\r
38         builder.setNwTos((short) 14);\r
39         builder.setNwProto((short) 85);\r
40         builder.setNwSrc(new Ipv4Address("1.1.1.2"));\r
41         builder.setNwDst(new Ipv4Address("32.16.8.1"));\r
42         builder.setTpSrc(2048);\r
43         builder.setTpDst(4096);\r
44         MatchV10 match = builder.build();\r
45         OF10MatchSerializer.encodeMatchV10(out, match);\r
46         \r
47         Assert.assertEquals("Wrong wildcards", 2361553, out.readUnsignedInt());\r
48         Assert.assertEquals("Wrong in-port", 6653, out.readUnsignedShort());\r
49         byte[] dlSrc = new byte[6];\r
50         out.readBytes(dlSrc);\r
51         Assert.assertEquals("Wrong dl-src", "01:01:01:01:01:01", ByteBufUtils.macAddressToString(dlSrc));\r
52         byte[] dlDst = new byte[6];\r
53         out.readBytes(dlDst);\r
54         Assert.assertEquals("Wrong dl-dst", "02:02:02:02:02:02", ByteBufUtils.macAddressToString(dlDst));\r
55         Assert.assertEquals("Wrong dl-vlan", 128, out.readUnsignedShort());\r
56         Assert.assertEquals("Wrong dl-vlan-pcp", 2, out.readUnsignedByte());\r
57         out.skipBytes(1);\r
58         Assert.assertEquals("Wrong dl-type", 15, out.readUnsignedShort());\r
59         Assert.assertEquals("Wrong nw-tos", 14, out.readUnsignedByte());\r
60         Assert.assertEquals("Wrong nw-proto", 85, out.readUnsignedByte());\r
61         out.skipBytes(2);\r
62         Assert.assertEquals("Wrong nw-src", 16843010, out.readUnsignedInt());\r
63         Assert.assertEquals("Wrong nw-dst", 537921537, out.readUnsignedInt());\r
64         Assert.assertEquals("Wrong tp-src", 2048, out.readUnsignedShort());\r
65         Assert.assertEquals("Wrong tp-dst", 4096, out.readUnsignedShort());\r
66     }\r
67     \r
68     /**\r
69      * Testing correct serialization of ofp_match\r
70      */\r
71     @Test\r
72     public void test2() {\r
73         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
74         MatchV10Builder builder = new MatchV10Builder();\r
75         builder.setWildcards(new FlowWildcardsV10(true, true, true, true, true,\r
76                 true, true, true, true, true, true));\r
77         builder.setNwSrcMask((short) 0);\r
78         builder.setNwDstMask((short) 0);\r
79         builder.setInPort(6653);\r
80         builder.setDlSrc(new MacAddress("01:01:01:01:01:01"));\r
81         builder.setDlDst(new MacAddress("02:02:02:02:02:02"));\r
82         builder.setDlVlan(128);\r
83         builder.setDlVlanPcp((short) 2);\r
84         builder.setDlType(15);\r
85         builder.setNwTos((short) 14);\r
86         builder.setNwProto((short) 85);\r
87         builder.setNwSrc(new Ipv4Address("1.1.1.2"));\r
88         builder.setNwDst(new Ipv4Address("32.16.8.1"));\r
89         builder.setTpSrc(2048);\r
90         builder.setTpDst(4096);\r
91         MatchV10 match = builder.build();\r
92         OF10MatchSerializer.encodeMatchV10(out, match);\r
93         \r
94         Assert.assertEquals("Wrong wildcards", 4194303, out.readUnsignedInt());\r
95         Assert.assertEquals("Wrong in-port", 6653, out.readUnsignedShort());\r
96         byte[] dlSrc = new byte[6];\r
97         out.readBytes(dlSrc);\r
98         Assert.assertEquals("Wrong dl-src", "01:01:01:01:01:01", ByteBufUtils.macAddressToString(dlSrc));\r
99         byte[] dlDst = new byte[6];\r
100         out.readBytes(dlDst);\r
101         Assert.assertEquals("Wrong dl-dst", "02:02:02:02:02:02", ByteBufUtils.macAddressToString(dlDst));\r
102         Assert.assertEquals("Wrong dl-vlan", 128, out.readUnsignedShort());\r
103         Assert.assertEquals("Wrong dl-vlan-pcp", 2, out.readUnsignedByte());\r
104         out.skipBytes(1);\r
105         Assert.assertEquals("Wrong dl-type", 15, out.readUnsignedShort());\r
106         Assert.assertEquals("Wrong nw-tos", 14, out.readUnsignedByte());\r
107         Assert.assertEquals("Wrong nw-proto", 85, out.readUnsignedByte());\r
108         out.skipBytes(2);\r
109         Assert.assertEquals("Wrong nw-src", 16843010, out.readUnsignedInt());\r
110         Assert.assertEquals("Wrong nw-dst", 537921537, out.readUnsignedInt());\r
111         Assert.assertEquals("Wrong tp-src", 2048, out.readUnsignedShort());\r
112         Assert.assertEquals("Wrong tp-dst", 4096, out.readUnsignedShort());\r
113     }\r
114 }\r