Draft implementation of integration tests
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / core / OFVersionDetectorTest.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.core;\r
3 \r
4 import io.netty.channel.ChannelHandlerContext;\r
5 import io.netty.channel.ChannelPipeline;\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.Before;\r
12 import org.junit.Test;\r
13 import org.junit.runner.RunWith;\r
14 import org.mockito.Matchers;\r
15 import org.mockito.Mock;\r
16 import org.mockito.Mockito;\r
17 import org.mockito.runners.MockitoJUnitRunner;\r
18 import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler.COMPONENT_NAMES;\r
19 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
20 \r
21 /**\r
22  * \r
23  * @author michal.polkorab\r
24  */\r
25 @RunWith(MockitoJUnitRunner.class)\r
26 public class OFVersionDetectorTest {\r
27 \r
28     @Mock\r
29     ChannelHandlerContext channelHandlerContext;\r
30 \r
31     @Mock\r
32     ChannelPipeline channelPipeline;\r
33 \r
34     private OFVersionDetector detector;\r
35     private List<Object> list = new ArrayList<>();\r
36 \r
37     /**\r
38      * Sets up test environment\r
39      */\r
40     @Before\r
41     public void setUp() {\r
42         Mockito.when(channelHandlerContext.pipeline()).thenReturn(\r
43                 channelPipeline);\r
44         Mockito.when(channelPipeline.get(Matchers.anyString()))\r
45                 .thenReturn(null);\r
46         list.clear();\r
47         detector = new OFVersionDetector();\r
48     }\r
49 \r
50     /**\r
51      * Test of decode\r
52      * {@link OFVersionDetector#decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.util.List)\r
53      * }\r
54      * \r
55      * @throws Exception\r
56      */\r
57     @Test\r
58     public void testDecode13ProtocolMessage() throws Exception {\r
59         detector.decode(channelHandlerContext,\r
60                 ByteBufUtils.hexStringToByteBuf("04 00 00 08 00 00 00 01"),\r
61                 list);\r
62 \r
63         Assert.assertEquals(7, ((VersionMessageWrapper) list.get(0))\r
64                 .getMessageBuffer().readableBytes());\r
65         verifyMockCalls(1);\r
66     }\r
67 \r
68     /**\r
69      * Test of decode\r
70      * {@link OFVersionDetector#decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.util.List)\r
71      * }\r
72      * \r
73      * @throws Exception\r
74      */\r
75     @Test\r
76     public void testDecodeNotSupportedVersionProtocolMessage() throws Exception {\r
77         detector.decode(channelHandlerContext,\r
78                 ByteBufUtils.hexStringToByteBuf("01 00 00 08 00 00 00 01"),\r
79                 list);\r
80 \r
81         Assert.assertEquals("List is not empty", 0, list.size());\r
82         verifyMockCalls(0);\r
83     }\r
84 \r
85     private void verifyMockCalls(int numberOfCalls) {\r
86         if (numberOfCalls > 0) {\r
87             Mockito.verify(channelPipeline, Mockito.times(numberOfCalls)).get(\r
88                     COMPONENT_NAMES.OF_DECODER.name());\r
89             Mockito.verify(channelPipeline, Mockito.times(numberOfCalls))\r
90                     .addBefore(\r
91                             Matchers.eq(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER\r
92                                     .name()),\r
93                             Matchers.eq(COMPONENT_NAMES.OF_DECODER.name()),\r
94                             Matchers.isA(OF13Decoder.class));\r
95         } else {\r
96             Mockito.verify(channelPipeline, Mockito.never()).get(\r
97                     COMPONENT_NAMES.OF_DECODER.name());\r
98             Mockito.verify(channelPipeline, Mockito.never()).addBefore(\r
99                     Matchers.eq(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER\r
100                             .name()),\r
101                     Matchers.eq(COMPONENT_NAMES.OF_DECODER.name()),\r
102                     Matchers.isA(OF13Decoder.class));\r
103         }\r
104     }\r
105 }