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=051e2aae1b145d6ea67d5d6e1adccf5f33d85aa1;hb=86ea92e3769dc513b4c488726d318d939434eed7;hp=c1515abffb7330493c8a64f2fe54e5cbe824cbc7;hpb=82138f659ae26fc2af5dc2130ab9f640b388aac7;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 c1515abffb..051e2aae1b 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,45 +5,45 @@ * 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.Mockito.doReturn; 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.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.DataBroker; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; -import org.opendaylight.controller.sal.core.api.Broker; +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.impl.DefaultSchemaResourceManager; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator; +import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; 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.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; @@ -55,170 +55,145 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev15 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"; + private static final Timeout TIMEOUT = new Timeout(Duration.create(5, "seconds")); @Mock private DataBroker dataBroker; @Mock - private RpcProviderRegistry rpcProviderRegistry; + private DOMRpcProviderService rpcProviderRegistry; @Mock private ClusterSingletonServiceProvider clusterSingletonServiceProvider; @Mock - private BindingAwareBroker bindingAwareBroker; + private ScheduledExecutorService keepaliveExecutor; @Mock - private ScheduledThreadPool keepaliveExecutor; + private ListeningExecutorService processingExecutor; @Mock - private ThreadPool processingExecutor; + private ActorSystem actorSystem; @Mock - private Broker domBroker; + private EventExecutor eventExecutor; @Mock - private ActorSystem actorSystem; + private NetconfClientDispatcher clientDispatcher; @Mock - private EventExecutor eventExecutor; + private TransactionChain txChain; @Mock - private NetconfClientDispatcher clientDispatcher; + private WriteTransaction writeTx; + + @Mock + 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)); - - builder = new NetconfTopologySetup.NetconfTopologySetupBuilder(); - builder.setDataBroker(dataBroker); - builder.setRpcProviderRegistry(rpcProviderRegistry); - builder.setClusterSingletonServiceProvider(clusterSingletonServiceProvider); - builder.setBindingAwareBroker(bindingAwareBroker); - builder.setKeepaliveExecutor(keepaliveExecutor); - builder.setProcessingExecutor(processingExecutor); - builder.setDomBroker(domBroker); - 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); } + @SuppressWarnings("unchecked") @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); - - - final NetconfDeviceCommunicator communicator = mock (NetconfDeviceCommunicator.class); - final RemoteDeviceHandler salFacade = mock(RemoteDeviceHandler.class); + .setCredentials(new LoginPasswordBuilder() + .setPassword("admin").setUsername("admin") + .build()) + .build()) + .build()); - final TestingRemoteDeviceConnectorImpl remoteDeviceConnection = - new TestingRemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, communicator, salFacade); + final NetconfDeviceCommunicator communicator = mock(NetconfDeviceCommunicator.class); + final RemoteDeviceHandler salFacade = mock(RemoteDeviceHandler.class); - 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(); - } + @SuppressWarnings("unchecked") @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(); + 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(Uint32.ONE) .build(); - final RemoteDeviceConnectorImpl remoteDeviceConnection = - new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId); + final Node node = new NodeBuilder().setNodeId(NODE_ID).addAugmentation(netconfNode).build(); - 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(); - 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) - .setKeepaliveDelay(1L) - .build(); - - final RemoteDeviceId remoteDeviceId = new RemoteDeviceId(TOPOLOGY_ID, - new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 9999)); + builder.setSchemaResourceDTO(new DefaultSchemaResourceManager(new DefaultYangParserFactory()) + .getSchemaResources(netconfNode, "foo")); final RemoteDeviceConnectorImpl remoteDeviceConnection = - new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId); + 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() @@ -228,44 +203,16 @@ public class RemoteDeviceConnectorImplTest { .build(); final RemoteDeviceConnectorImpl remoteDeviceConnection = - new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId); + 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); } - - @Test - public void testSchemaResourceDTO() 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) - .setSchemaCacheDirectory("schemas-test") - .build(); - - final RemoteDeviceConnectorImpl remoteDeviceConnection = - new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId); - - final ActorRef masterRef = mock(ActorRef.class); - - remoteDeviceConnection.createDeviceCommunicator(NODE_ID, netconfNode, masterRef); - - assertTrue(remoteDeviceConnection.getSchemaResourcesDTOs().containsKey("schemas-test")); - } - }