Merge "Quickfix - Vlan-vid match entry"
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / util / MatchSerializerTest.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 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 org.junit.Assert;\r
11 import org.junit.Test;\r
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv4AddressMatchEntry;\r
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv4AddressMatchEntryBuilder;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Src;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmMatchType;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntries;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntriesBuilder;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.match.grouping.Match;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.match.grouping.MatchBuilder;\r
22 \r
23 /**\r
24  * @author michal.polkorab\r
25  *\r
26  */\r
27 public class MatchSerializerTest {\r
28 \r
29     /**\r
30      * Test for correct serialization of Ipv4Address match entry\r
31      */\r
32     @Test\r
33     public void test() {\r
34         MatchBuilder builder = new MatchBuilder();\r
35         builder.setType(OxmMatchType.class);\r
36         List<MatchEntries> entries = new ArrayList<>();\r
37         MatchEntriesBuilder entriesBuilder = new MatchEntriesBuilder();\r
38         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
39         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
40         entriesBuilder.setHasMask(false);\r
41         Ipv4AddressMatchEntryBuilder addressBuilder = new Ipv4AddressMatchEntryBuilder();\r
42         addressBuilder.setIpv4Address(new Ipv4Address("1.2.3.4"));\r
43         entriesBuilder.addAugmentation(Ipv4AddressMatchEntry.class, addressBuilder.build());\r
44         entries.add(entriesBuilder.build());\r
45         builder.setMatchEntries(entries);\r
46         Match match = builder.build();\r
47         \r
48         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
49         MatchSerializer.encodeMatch(match, out);\r
50         \r
51         Assert.assertEquals("Wrong type", 1, out.readUnsignedShort());\r
52         out.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES);\r
53         Assert.assertEquals("Wrong class", 0x8000, out.readUnsignedShort());\r
54         Assert.assertEquals("Wrong field and mask", 22, out.readUnsignedByte());\r
55         out.skipBytes(EncodeConstants.SIZE_OF_BYTE_IN_BYTES);\r
56         Assert.assertEquals("Wrong ip address (first number)", 1, out.readUnsignedByte());\r
57         Assert.assertEquals("Wrong ip address (second number)", 2, out.readUnsignedByte());\r
58         Assert.assertEquals("Wrong ip address (third number)", 3, out.readUnsignedByte());\r
59         Assert.assertEquals("Wrong ip address (fourth number)", 4, out.readUnsignedByte());\r
60     }\r
61 \r
62 }\r