X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fnetconf-topology-singleton%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Ftopology%2Fsingleton%2Fimpl%2FRemoteDeviceConnectorImplTest.java;h=3c401984e68c7d8bf38f9136570fcb9875ed1482;hb=1dba5b2651d7fc60af0263cc0640d5ebeda8e454;hp=a8df0afd38dc9eb590dceb7815448179917ed883;hpb=0daed243d5fa216f5274ad9257f9692dd91c77eb;p=netconf.git diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java index a8df0afd38..3c401984e6 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java @@ -5,68 +5,61 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.MockitoAnnotations.initMocks; -import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.util.Timeout; -import com.google.common.util.concurrent.Futures; +import com.google.common.net.InetAddresses; +import com.google.common.util.concurrent.ListeningExecutorService; import io.netty.util.concurrent.EventExecutor; -import java.net.InetAddress; import java.net.InetSocketAddress; -import java.net.UnknownHostException; -import java.util.concurrent.ExecutorService; +import java.util.concurrent.ScheduledExecutorService; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; -import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.mockito.junit.MockitoJUnitRunner; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.client.NetconfClientSessionListener; import org.opendaylight.netconf.client.conf.NetconfClientConfiguration; import org.opendaylight.netconf.client.conf.NetconfReconnectingClientConfiguration; +import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; +import org.opendaylight.netconf.sal.connect.api.RemoteDeviceId; +import org.opendaylight.netconf.sal.connect.impl.DefaultSchemaResourceManager; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.sal.KeepaliveSalFacade; -import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; -import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfConnectorDTO; import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologySetup; -import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils; +import org.opendaylight.netconf.topology.spi.NetconfConnectorDTO; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.Credentials; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.credentials.Credentials; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.credentials.credentials.LoginPasswordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNodeBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint32; +import org.opendaylight.yangtools.yang.parser.impl.DefaultYangParserFactory; import scala.concurrent.duration.Duration; -public class RemoteDeviceConnectorImplTest { +@RunWith(MockitoJUnitRunner.StrictStubs.class) +public class RemoteDeviceConnectorImplTest extends AbstractBaseSchemasTest { private static final NodeId NODE_ID = new NodeId("testing-node"); private static final String TOPOLOGY_ID = "testing-topology"; @@ -76,16 +69,16 @@ public class RemoteDeviceConnectorImplTest { private DataBroker dataBroker; @Mock - private RpcProviderRegistry rpcProviderRegistry; + private DOMRpcProviderService rpcProviderRegistry; @Mock private ClusterSingletonServiceProvider clusterSingletonServiceProvider; @Mock - private ScheduledThreadPool keepaliveExecutor; + private ScheduledExecutorService keepaliveExecutor; @Mock - private ThreadPool processingExecutor; + private ListeningExecutorService processingExecutor; @Mock private ActorSystem actorSystem; @@ -97,149 +90,102 @@ public class RemoteDeviceConnectorImplTest { private NetconfClientDispatcher clientDispatcher; @Mock - private DOMMountPointService mountPointService; + private TransactionChain txChain; @Mock - private BindingTransactionChain txChain; + private WriteTransaction writeTx; @Mock - private WriteTransaction writeTx; + private DeviceActionFactory deviceActionFactory; private NetconfTopologySetup.NetconfTopologySetupBuilder builder; private RemoteDeviceId remoteDeviceId; @Before - public void setUp() throws UnknownHostException { - initMocks(this); - + public void setUp() { remoteDeviceId = new RemoteDeviceId(TOPOLOGY_ID, - new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 9999)); - - doReturn(txChain).when(dataBroker).createTransactionChain(any(TransactionChainListener.class)); - doReturn(writeTx).when(txChain).newWriteOnlyTransaction(); - doNothing().when(writeTx).merge(eq(LogicalDatastoreType.OPERATIONAL), any(), any()); - doReturn("Some object").when(writeTx).getIdentifier(); - doReturn(Futures.immediateCheckedFuture(null)).when(writeTx).submit(); - builder = new NetconfTopologySetup.NetconfTopologySetupBuilder(); - builder.setDataBroker(dataBroker); - builder.setRpcProviderRegistry(rpcProviderRegistry); - builder.setClusterSingletonServiceProvider(clusterSingletonServiceProvider); - builder.setKeepaliveExecutor(keepaliveExecutor); - builder.setProcessingExecutor(processingExecutor); - builder.setActorSystem(actorSystem); - builder.setEventExecutor(eventExecutor); - builder.setNetconfClientDispatcher(clientDispatcher); - builder.setTopologyId(TOPOLOGY_ID); + new InetSocketAddress(InetAddresses.forString("127.0.0.1"), 9999)); + + builder = new NetconfTopologySetup.NetconfTopologySetupBuilder() + .setBaseSchemas(BASE_SCHEMAS) + .setDataBroker(dataBroker) + .setRpcProviderRegistry(rpcProviderRegistry) + .setClusterSingletonServiceProvider(clusterSingletonServiceProvider) + .setKeepaliveExecutor(keepaliveExecutor) + .setProcessingExecutor(processingExecutor) + .setActorSystem(actorSystem) + .setEventExecutor(eventExecutor) + .setNetconfClientDispatcher(clientDispatcher) + .setTopologyId(TOPOLOGY_ID); } @Test public void testStopRemoteDeviceConnection() { - final Credentials credentials = new LoginPasswordBuilder().setPassword("admin").setUsername("admin").build(); - final NetconfNode netconfNode = new NetconfNodeBuilder() + builder.setNode(new NodeBuilder().setNodeId(NODE_ID) + .addAugmentation(new NetconfNodeBuilder() .setHost(new Host(new IpAddress(new Ipv4Address("127.0.0.1")))) - .setPort(new PortNumber(9999)) + .setPort(new PortNumber(Uint16.valueOf(9999))) .setReconnectOnChangedSchema(true) - .setDefaultRequestTimeoutMillis(1000L) - .setBetweenAttemptsTimeoutMillis(100) + .setDefaultRequestTimeoutMillis(Uint32.valueOf(1000)) + .setBetweenAttemptsTimeoutMillis(Uint16.valueOf(100)) .setSchemaless(false) .setTcpOnly(false) - .setCredentials(credentials) - .build(); - final Node node = new NodeBuilder().setNodeId(NODE_ID).addAugmentation(NetconfNode.class, netconfNode).build(); - - builder.setNode(node); + .setCredentials(new LoginPasswordBuilder().setPassword("admin").setUsername("admin").build()) + .build()) + .build()); - - final NetconfDeviceCommunicator communicator = mock (NetconfDeviceCommunicator.class); + final NetconfDeviceCommunicator communicator = mock(NetconfDeviceCommunicator.class); final RemoteDeviceHandler salFacade = mock(RemoteDeviceHandler.class); - final TestingRemoteDeviceConnectorImpl remoteDeviceConnection = - new TestingRemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, communicator, salFacade, TIMEOUT, - mountPointService); - - final ActorRef masterRef = mock(ActorRef.class); + final TestingRemoteDeviceConnectorImpl remoteDeviceConnection = new TestingRemoteDeviceConnectorImpl( + builder.build(), remoteDeviceId, communicator, deviceActionFactory); - remoteDeviceConnection.startRemoteDeviceConnection(masterRef); + remoteDeviceConnection.startRemoteDeviceConnection(salFacade); remoteDeviceConnection.stopRemoteDeviceConnection(); verify(communicator, times(1)).close(); verify(salFacade, times(1)).close(); - - } - - @Test - public void testMasterSalFacade() throws UnknownHostException { - final ExecutorService executorService = mock(ExecutorService.class); - doReturn(executorService).when(processingExecutor).getExecutor(); - - final Credentials credentials = new LoginPasswordBuilder().setPassword("admin").setUsername("admin").build(); - final NetconfNode netconfNode = new NetconfNodeBuilder() - .setHost(new Host(new IpAddress(new Ipv4Address("127.0.0.1")))) - .setPort(new PortNumber(9999)) - .setReconnectOnChangedSchema(true) - .setDefaultRequestTimeoutMillis(1000L) - .setBetweenAttemptsTimeoutMillis(100) - .setSchemaless(false) - .setTcpOnly(false) - .setCredentials(credentials) - .build(); - - final Node node = new NodeBuilder().setNodeId(NODE_ID).addAugmentation(NetconfNode.class, netconfNode).build(); - builder.setSchemaResourceDTO(NetconfTopologyUtils.setupSchemaCacheDTO(node)); - final RemoteDeviceConnectorImpl remoteDeviceConnection = - new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, TIMEOUT, mountPointService); - - final ActorRef masterRef = mock(ActorRef.class); - - final NetconfConnectorDTO connectorDTO = - remoteDeviceConnection.createDeviceCommunicator(NODE_ID, netconfNode, masterRef); - - assertTrue(connectorDTO.getFacade() instanceof MasterSalFacade); } @Test - public void testKeapAliveFacade() throws UnknownHostException { - final ExecutorService executorService = mock(ExecutorService.class); - doReturn(executorService).when(processingExecutor).getExecutor(); - - final Credentials credentials = new LoginPasswordBuilder().setPassword("admin").setUsername("admin").build(); + public void testKeapAliveFacade() { + final Credentials credentials = new LoginPasswordBuilder() + .setPassword("admin").setUsername("admin").build(); final NetconfNode netconfNode = new NetconfNodeBuilder() .setHost(new Host(new IpAddress(new Ipv4Address("127.0.0.1")))) - .setPort(new PortNumber(9999)) + .setPort(new PortNumber(Uint16.valueOf(9999))) .setReconnectOnChangedSchema(true) - .setDefaultRequestTimeoutMillis(1000L) - .setBetweenAttemptsTimeoutMillis(100) + .setDefaultRequestTimeoutMillis(Uint32.valueOf(1000)) + .setBetweenAttemptsTimeoutMillis(Uint16.valueOf(100)) .setSchemaless(false) .setTcpOnly(false) .setCredentials(credentials) - .setKeepaliveDelay(1L) + .setKeepaliveDelay(Uint32.ONE) .build(); - final RemoteDeviceId remoteDeviceId = new RemoteDeviceId(TOPOLOGY_ID, - new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 9999)); - final Node node = new NodeBuilder().setNodeId(NODE_ID).addAugmentation(NetconfNode.class, netconfNode).build(); - builder.setSchemaResourceDTO(NetconfTopologyUtils.setupSchemaCacheDTO(node)); + builder.setSchemaResourceDTO(new DefaultSchemaResourceManager(new DefaultYangParserFactory()) + .getSchemaResources(netconfNode.getSchemaCacheDirectory(), "foo")); final RemoteDeviceConnectorImpl remoteDeviceConnection = - new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, TIMEOUT, mountPointService); + new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, deviceActionFactory); - final ActorRef masterRef = mock(ActorRef.class); + final RemoteDeviceHandler salFacade = mock(RemoteDeviceHandler.class); final NetconfConnectorDTO connectorDTO = - remoteDeviceConnection.createDeviceCommunicator(NODE_ID, netconfNode, masterRef); + remoteDeviceConnection.createDeviceCommunicator(NODE_ID, netconfNode, salFacade); assertTrue(connectorDTO.getFacade() instanceof KeepaliveSalFacade); } @Test - public void testGetClientConfig() throws UnknownHostException { + public void testGetClientConfig() { final NetconfClientSessionListener listener = mock(NetconfClientSessionListener.class); final Host host = new Host(new IpAddress(new Ipv4Address("127.0.0.1"))); - final PortNumber portNumber = new PortNumber(9999); + final PortNumber portNumber = new PortNumber(Uint16.valueOf(9999)); final NetconfNode testingNode = new NetconfNodeBuilder() - .setConnectionTimeoutMillis(1000L) - .setDefaultRequestTimeoutMillis(2000L) + .setConnectionTimeoutMillis(Uint32.valueOf(1000)) + .setDefaultRequestTimeoutMillis(Uint32.valueOf(2000)) .setHost(host) .setPort(portNumber) .setCredentials(new LoginPasswordBuilder() @@ -249,13 +195,14 @@ public class RemoteDeviceConnectorImplTest { .build(); final RemoteDeviceConnectorImpl remoteDeviceConnection = - new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, TIMEOUT, mountPointService); + new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, deviceActionFactory); final NetconfReconnectingClientConfiguration defaultClientConfig = remoteDeviceConnection.getClientConfig(listener, testingNode); assertEquals(defaultClientConfig.getConnectionTimeoutMillis().longValue(), 1000L); - assertEquals(defaultClientConfig.getAddress(), new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 9999)); + assertEquals(defaultClientConfig.getAddress(), new InetSocketAddress(InetAddresses.forString("127.0.0.1"), + 9999)); assertSame(defaultClientConfig.getSessionListener(), listener); assertEquals(defaultClientConfig.getAuthHandler().getUsername(), "testuser"); assertEquals(defaultClientConfig.getProtocol(), NetconfClientConfiguration.NetconfClientProtocol.TCP);