2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowplugin.impl.connection;
11 import java.net.InetSocketAddress;
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.junit.runner.RunWith;
16 import org.mockito.Mock;
17 import org.mockito.Mockito;
18 import org.mockito.runners.MockitoJUnitRunner;
19 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
20 import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueueHandlerRegistration;
21 import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
22 import org.opendaylight.openflowplugin.api.openflow.connection.HandshakeContext;
23 import org.opendaylight.openflowplugin.api.openflow.connection.OutboundQueueProvider;
24 import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceDisconnectedHandler;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
28 * Test for {@link ConnectionContextImpl}.
30 @RunWith(MockitoJUnitRunner.class)
31 public class ConnectionContextImplTest {
34 private ConnectionAdapter connetionAdapter;
36 private HandshakeContext handshakeContext;
38 private OutboundQueueHandlerRegistration<OutboundQueueProvider> outboundQueueRegistration;
40 private DeviceDisconnectedHandler deviceDisconnectedHandler;
42 private OutboundQueueProvider outboundQueueProvider;
44 private ConnectionContextImpl connectionContext;
48 Mockito.when(connetionAdapter.getRemoteAddress())
49 .thenReturn(InetSocketAddress.createUnresolved("ofp-ut.example.org", 4242));
50 Mockito.when(connetionAdapter.isAlive()).thenReturn(true);
52 connectionContext = new ConnectionContextImpl(connetionAdapter);
53 connectionContext.setHandshakeContext(handshakeContext);
54 connectionContext.setNodeId(new NodeId("ut-node:123"));
55 connectionContext.setOutboundQueueHandleRegistration(outboundQueueRegistration);
56 connectionContext.setDeviceDisconnectedHandler(deviceDisconnectedHandler);
58 Assert.assertNull(connectionContext.getConnectionState());
62 public void testCloseConnection1() {
63 connectionContext.closeConnection(true);
64 Mockito.verify(outboundQueueRegistration).close();
65 Mockito.verify(handshakeContext).close();
66 Mockito.verify(connetionAdapter).disconnect();
67 Assert.assertEquals(ConnectionContext.CONNECTION_STATE.RIP, connectionContext.getConnectionState());
69 Mockito.verify(deviceDisconnectedHandler).onDeviceDisconnected(connectionContext);
73 public void testCloseConnection2() {
74 connectionContext.closeConnection(false);
75 Mockito.verify(outboundQueueRegistration).close();
76 Mockito.verify(handshakeContext).close();
77 Mockito.verify(connetionAdapter).disconnect();
78 Assert.assertEquals(ConnectionContext.CONNECTION_STATE.RIP, connectionContext.getConnectionState());
80 Mockito.verify(deviceDisconnectedHandler, Mockito.never()).onDeviceDisconnected(connectionContext);
84 public void testOnConnectionClosed() {
85 connectionContext.onConnectionClosed();
86 Assert.assertEquals(ConnectionContext.CONNECTION_STATE.RIP, connectionContext.getConnectionState());
87 Mockito.verify(outboundQueueRegistration).close();
88 Mockito.verify(handshakeContext).close();
89 Assert.assertEquals(ConnectionContext.CONNECTION_STATE.RIP, connectionContext.getConnectionState());
90 Mockito.verify(deviceDisconnectedHandler).onDeviceDisconnected(connectionContext);
94 public void testChangeStateToHandshaking() {
95 connectionContext.changeStateToHandshaking();
96 Assert.assertEquals(ConnectionContext.CONNECTION_STATE.HANDSHAKING, connectionContext.getConnectionState());
100 public void testChangeStateToTimeouting() {
101 connectionContext.changeStateToTimeouting();
102 Assert.assertEquals(ConnectionContext.CONNECTION_STATE.TIMEOUTING, connectionContext.getConnectionState());
106 public void testChangeStateToWorking() {
107 connectionContext.changeStateToWorking();
108 Assert.assertEquals(ConnectionContext.CONNECTION_STATE.WORKING, connectionContext.getConnectionState());