1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
\r
2 package org.opendaylight.openflowjava.protocol.impl.core;
\r
4 import io.netty.channel.ChannelHandlerContext;
\r
5 import io.netty.channel.ChannelPipeline;
\r
7 import java.util.ArrayList;
\r
8 import java.util.List;
\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
23 * @author michal.polkorab
\r
25 @RunWith(MockitoJUnitRunner.class)
\r
26 public class OFVersionDetectorTest {
\r
29 ChannelHandlerContext channelHandlerContext;
\r
32 ChannelPipeline channelPipeline;
\r
34 private OFVersionDetector detector;
\r
35 private List<Object> list = new ArrayList<>();
\r
38 * Sets up test environment
\r
41 public void setUp() {
\r
42 Mockito.when(channelHandlerContext.pipeline()).thenReturn(
\r
44 Mockito.when(channelPipeline.get(Matchers.anyString()))
\r
47 detector = new OFVersionDetector();
\r
52 * {@link OFVersionDetector#decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.util.List)
\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
63 Assert.assertEquals(7, ((VersionMessageWrapper) list.get(0))
\r
64 .getMessageBuffer().readableBytes());
\r
70 * {@link OFVersionDetector#decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.util.List)
\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
81 Assert.assertEquals("List is not empty", 0, list.size());
\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
91 Matchers.eq(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER
\r
93 Matchers.eq(COMPONENT_NAMES.OF_DECODER.name()),
\r
94 Matchers.isA(OF13Decoder.class));
\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
101 Matchers.eq(COMPONENT_NAMES.OF_DECODER.name()),
\r
102 Matchers.isA(OF13Decoder.class));
\r