Update MRI projects for Aluminium
[ovsdb.git] / southbound / southbound-impl / src / test / java / org / opendaylight / ovsdb / southbound / OvsdbDataTreeChangeListenerTest.java
1 /*
2  * Copyright © 2016 Red Hat, Inc. and others.
3  *
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
7  */
8 package org.opendaylight.ovsdb.southbound;
9
10 import static org.mockito.Mockito.mock;
11
12 import java.net.InetAddress;
13 import java.net.UnknownHostException;
14 import java.util.concurrent.ExecutionException;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.mockito.Mockito;
18 import org.opendaylight.mdsal.binding.api.DataBroker;
19 import org.opendaylight.mdsal.binding.api.WriteTransaction;
20 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
21 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
22 import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
23 import org.opendaylight.ovsdb.lib.OvsdbConnection;
24 import org.opendaylight.ovsdb.southbound.transactions.md.TransactionInvokerImpl;
25 import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
26 import org.opendaylight.serviceutils.upgrade.UpgradeState;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder;
31 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
32 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
33
34 /**
35  * Unit tests for the data-tree change listener.
36  */
37 public class OvsdbDataTreeChangeListenerTest extends AbstractConcurrentDataBrokerTest {
38
39     private final OvsdbConnection ovsdbConnection = mock(OvsdbConnection.class);
40     private DataBroker dataBroker;
41     private OvsdbDataTreeChangeListener listener;
42
43     public OvsdbDataTreeChangeListenerTest() {
44         super(true);
45     }
46
47     @Before
48     public void setupListener() {
49         dataBroker = getDataBroker();
50         EntityOwnershipService entityOwnershipService = mock(EntityOwnershipService.class);
51         InstanceIdentifierCodec instanceIdentifierCodec = mock(InstanceIdentifierCodec.class);
52         UpgradeState upgradeState = mock(UpgradeState.class);
53         listener = new OvsdbDataTreeChangeListener(dataBroker,
54                 new OvsdbConnectionManager(dataBroker, new TransactionInvokerImpl(dataBroker), entityOwnershipService,
55                         ovsdbConnection, instanceIdentifierCodec, upgradeState), instanceIdentifierCodec);
56     }
57
58     @Test
59     public void testConnect() throws UnknownHostException, InterruptedException, ExecutionException {
60         // Given ...
61
62         // When we request a connection ...
63         InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
64         int port = 6640;
65         IpAddress ipAddress = SouthboundMapper.createIpAddress(inetAddress);
66         PortNumber portNumber = new PortNumber(port);
67
68         final ConnectionInfo connectionInfo = new ConnectionInfoBuilder()
69                 .setRemoteIp(ipAddress)
70                 .setRemotePort(portNumber)
71                 .build();
72         final InstanceIdentifier<Node> iid = SouthboundUtils.createInstanceIdentifier(connectionInfo);
73         WriteTransaction transaction = dataBroker.newReadWriteTransaction();
74         transaction.mergeParentStructurePut(LogicalDatastoreType.CONFIGURATION, iid,
75             SouthboundUtils.createNode(connectionInfo));
76         transaction.commit().get();
77
78         // Then the listener tries to open a connection
79         Mockito.verify(ovsdbConnection, Mockito.timeout(5000)).connect(inetAddress, port);
80     }
81 }