1677d7b5756e0b04a3eab63ae1a2b5d1e291e866
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / SetAsyncInputMessageFactoryTest.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;\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.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
13 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
14 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowRemovedReason;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PacketInReason;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetAsyncInput;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetAsyncInputBuilder;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.FlowRemovedMask;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.FlowRemovedMaskBuilder;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PacketInMask;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PacketInMaskBuilder;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PortStatusMask;\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PortStatusMaskBuilder;\r
26 import org.slf4j.Logger;\r
27 import org.slf4j.LoggerFactory;\r
28 \r
29 /**\r
30  * @author timotej.kubas\r
31  * @author michal.polkorab\r
32  */\r
33 public class SetAsyncInputMessageFactoryTest {\r
34     private static final Logger LOGGER = LoggerFactory\r
35             .getLogger(SetAsyncInputMessageFactoryTest.class);\r
36     /**\r
37      * @throws Exception \r
38      * Testing of {@link SetAsyncInputMessageFactory} for correct translation from POJO\r
39      */\r
40     @Test\r
41     public void testSetAsyncInputMessage() throws Exception {\r
42         SetAsyncInputBuilder builder = new SetAsyncInputBuilder();\r
43         BufferHelper.setupHeader(builder);\r
44         builder.setPacketInMask(createPacketInMask());\r
45         builder.setPortStatusMask(createPortStatusMask());\r
46         builder.setFlowRemovedMask(createFlowRemowedMask());\r
47         SetAsyncInput message = builder.build();\r
48         \r
49         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
50         SetAsyncInputMessageFactory factory = SetAsyncInputMessageFactory.getInstance();\r
51         factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
52         LOGGER.debug("<< " + ByteBufUtils.byteBufToHexString(out));\r
53         BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
54         Assert.assertEquals("Wrong packetInMask", 5, out.readUnsignedInt());\r
55         Assert.assertEquals("Wrong packetInMask", 7, out.readUnsignedInt());\r
56         Assert.assertEquals("Wrong portStatusMask", 6, out.readUnsignedInt());\r
57         Assert.assertEquals("Wrong portStatusMask", 0, out.readUnsignedInt());\r
58         Assert.assertEquals("Wrong flowRemovedMask", 10, out.readUnsignedInt());\r
59         Assert.assertEquals("Wrong flowRemovedMask", 5, out.readUnsignedInt());\r
60         \r
61     }\r
62     \r
63     private static List<PacketInMask> createPacketInMask() {\r
64         List<PacketInMask> masks = new ArrayList<>();\r
65         PacketInMaskBuilder builder;\r
66         // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER\r
67         builder = new PacketInMaskBuilder();\r
68         List<PacketInReason> packetInReasonList = new ArrayList<>();\r
69         packetInReasonList.add(PacketInReason.OFPRNOMATCH);\r
70         packetInReasonList.add(PacketInReason.OFPRINVALIDTTL);\r
71         builder.setMask(packetInReasonList);\r
72         masks.add(builder.build());\r
73         // OFPCR_ROLE_SLAVE\r
74         builder = new PacketInMaskBuilder();\r
75         packetInReasonList = new ArrayList<>();\r
76         packetInReasonList.add(PacketInReason.OFPRNOMATCH);\r
77         packetInReasonList.add(PacketInReason.OFPRACTION);\r
78         packetInReasonList.add(PacketInReason.OFPRINVALIDTTL);\r
79         builder.setMask(packetInReasonList);\r
80         masks.add(builder.build());\r
81         System.out.println(masks.size());\r
82         return masks;\r
83     }\r
84     \r
85     private static List<PortStatusMask> createPortStatusMask() {\r
86         List<PortStatusMask> masks = new ArrayList<>();\r
87         PortStatusMaskBuilder builder;\r
88         builder = new PortStatusMaskBuilder();\r
89         // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER\r
90         List<PortReason> portReasonList = new ArrayList<>();\r
91         portReasonList.add(PortReason.OFPPRDELETE);\r
92         portReasonList.add(PortReason.OFPPRMODIFY);\r
93         builder.setMask(portReasonList);\r
94         masks.add(builder.build());\r
95         // OFPCR_ROLE_SLAVE\r
96         builder = new PortStatusMaskBuilder();\r
97         portReasonList = new ArrayList<>();\r
98         builder.setMask(portReasonList);\r
99         masks.add(builder.build());\r
100         return masks;\r
101     }\r
102     \r
103     private static List<FlowRemovedMask> createFlowRemowedMask() {\r
104         List<FlowRemovedMask> masks = new ArrayList<>();\r
105         FlowRemovedMaskBuilder builder;\r
106         // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER\r
107         builder = new FlowRemovedMaskBuilder();\r
108         List<FlowRemovedReason> flowRemovedReasonList = new ArrayList<>();\r
109         flowRemovedReasonList.add(FlowRemovedReason.OFPRRHARDTIMEOUT);\r
110         flowRemovedReasonList.add(FlowRemovedReason.OFPRRGROUPDELETE);\r
111         builder.setMask(flowRemovedReasonList);\r
112         masks.add(builder.build());\r
113         // OFPCR_ROLE_SLAVE\r
114         builder = new FlowRemovedMaskBuilder();\r
115         flowRemovedReasonList = new ArrayList<>();\r
116         flowRemovedReasonList.add(FlowRemovedReason.OFPRRIDLETIMEOUT);\r
117         flowRemovedReasonList.add(FlowRemovedReason.OFPRRDELETE);\r
118         builder.setMask(flowRemovedReasonList);\r
119         masks.add(builder.build());\r
120         return masks;\r
121     }\r
122 }\r