3baeb944d28e871f94e58c4027f61d61d25c1288
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / core / OFDatagramPacketEncoderTest.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.core;\r
10 \r
11 import static org.mockito.Mockito.times;\r
12 import static org.mockito.Mockito.verify;\r
13 import io.netty.channel.ChannelHandlerContext;\r
14 import io.netty.util.concurrent.Future;\r
15 import io.netty.util.concurrent.GenericFutureListener;\r
16 \r
17 import java.net.InetSocketAddress;\r
18 import java.util.ArrayList;\r
19 import java.util.List;\r
20 \r
21 import org.junit.Assert;\r
22 import org.junit.Test;\r
23 import org.mockito.Mock;\r
24 import org.mockito.MockitoAnnotations;\r
25 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
26 import org.opendaylight.openflowjava.protocol.impl.core.connection.UdpMessageListenerWrapper;\r
27 import org.opendaylight.openflowjava.protocol.impl.serialization.SerializationFactory;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInputBuilder;\r
30 \r
31 /**\r
32  * @author michal.polkorab\r
33  *\r
34  */\r
35 public class OFDatagramPacketEncoderTest {\r
36 \r
37     @Mock ChannelHandlerContext ctx;\r
38     @Mock GenericFutureListener<Future<Void>> listener;\r
39     @Mock SerializationFactory factory;\r
40 \r
41     private UdpMessageListenerWrapper wrapper;\r
42     private InetSocketAddress address = new InetSocketAddress("10.0.0.1", 6653);\r
43     private List<Object> out;\r
44 \r
45     /**\r
46      * Initializes mocks and other objects\r
47      * @param version openflow protocol wire version\r
48      */\r
49     public void startUp(Short version) {\r
50         MockitoAnnotations.initMocks(this);\r
51         out = new ArrayList<>();\r
52         HelloInputBuilder builder = new HelloInputBuilder();\r
53         builder.setVersion(version);\r
54         HelloInput hello = builder.build();\r
55         wrapper = new UdpMessageListenerWrapper(hello, listener, address);\r
56     }\r
57 \r
58     /**\r
59      * Tests encoding\r
60      */\r
61     @Test\r
62     public void testCorrectEncode() {\r
63         startUp((short) EncodeConstants.OF13_VERSION_ID);\r
64         OFDatagramPacketEncoder encoder = new OFDatagramPacketEncoder();\r
65         encoder.setSerializationFactory(factory);\r
66         try {\r
67             encoder.encode(ctx, wrapper, out);\r
68         } catch (Exception e) {\r
69             Assert.fail();\r
70         }\r
71     }\r
72 \r
73     /**\r
74      * Tests encoding\r
75      */\r
76     @Test\r
77     public void testIncorrectEncode() {\r
78         startUp(null);\r
79         OFDatagramPacketEncoder encoder = new OFDatagramPacketEncoder();\r
80         encoder.setSerializationFactory(factory);\r
81         try {\r
82             encoder.encode(ctx, wrapper, out);\r
83         } catch (Exception e) {\r
84             verify(wrapper, times(1)).getListener();\r
85             Assert.assertEquals("List should be empty", 0, out.size());\r
86         }\r
87     }\r
88 }