X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-it%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fit%2FNetconfITTest.java;h=5f4bcecff05ed6e75e8725082a618ce517ffad16;hp=9483785031b9c6fee67dbb8f5d4904767b5cd49a;hb=fdbc91710543cdac880f87bda9793c46582f1618;hpb=db4dc8daa737cb9722d4a9a62a4a1c55c2a88a96 diff --git a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java index 9483785031..5f4bcecff0 100644 --- a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java +++ b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java @@ -10,26 +10,12 @@ package org.opendaylight.controller.netconf.it; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; -import com.google.common.base.Optional; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.util.HashedWheelTimer; -import java.io.IOException; -import java.io.InputStream; -import java.lang.management.ManagementFactory; -import java.net.InetSocketAddress; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import java.util.regex.Pattern; -import javax.management.ObjectName; -import javax.xml.parsers.ParserConfigurationException; import junit.framework.Assert; import org.junit.After; import org.junit.Before; @@ -37,7 +23,6 @@ import org.junit.Ignore; import org.junit.Test; import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.persist.api.Persister; import org.opendaylight.controller.config.spi.ModuleFactory; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; import org.opendaylight.controller.config.yang.store.api.YangStoreException; @@ -46,6 +31,7 @@ import org.opendaylight.controller.config.yang.test.impl.DepTestImplModuleFactor import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplModuleFactory; import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplModuleMXBean; import org.opendaylight.controller.config.yang.test.impl.TestImplModuleFactory; +import org.opendaylight.controller.netconf.StubUserManager; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.client.NetconfClient; import org.opendaylight.controller.netconf.client.NetconfClientDispatcher; @@ -55,14 +41,14 @@ import org.opendaylight.controller.netconf.impl.NetconfServerDispatcher; import org.opendaylight.controller.netconf.impl.NetconfServerSessionListenerFactory; import org.opendaylight.controller.netconf.impl.NetconfServerSessionNegotiatorFactory; import org.opendaylight.controller.netconf.impl.SessionIdProvider; -import org.opendaylight.controller.netconf.impl.mapping.ExiDecoderHandler; -import org.opendaylight.controller.netconf.impl.mapping.ExiEncoderHandler; +import org.opendaylight.controller.netconf.impl.osgi.NetconfMonitoringServiceImpl; +import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationServiceFactoryListener; import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationServiceFactoryListenerImpl; -import org.opendaylight.controller.netconf.persist.impl.ConfigPersisterNotificationHandler; -import org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator; +import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationServiceSnapshot; +import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService; import org.opendaylight.controller.netconf.ssh.NetconfSSHServer; +import org.opendaylight.controller.netconf.ssh.authentication.AuthProvider; import org.opendaylight.controller.netconf.util.test.XmlFileLoader; -import org.opendaylight.controller.netconf.util.xml.ExiParameters; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.slf4j.Logger; @@ -72,17 +58,34 @@ import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.xml.sax.SAXException; + +import javax.management.ObjectName; +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; +import java.io.InputStream; +import java.lang.management.ManagementFactory; +import java.net.InetSocketAddress; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + import static java.util.Collections.emptyList; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; +import static org.mockito.Matchers.anyLong; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; public class NetconfITTest extends AbstractConfigTest { - private static final Logger logger = LoggerFactory.getLogger(NetconfITTest.class); - // + // TODO refactor, pull common code up to AbstractNetconfITTest + + private static final Logger logger = LoggerFactory.getLogger(NetconfITTest.class); private static final InetSocketAddress tcpAddress = new InetSocketAddress("127.0.0.1", 12023); private static final InetSocketAddress sshAddress = new InetSocketAddress("127.0.0.1", 10830); @@ -97,7 +100,6 @@ public class NetconfITTest extends AbstractConfigTest { private NetconfClientDispatcher clientDispatcher; - @Before public void setUp() throws Exception { super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(getModuleFactories().toArray( @@ -125,13 +127,21 @@ public class NetconfITTest extends AbstractConfigTest { new HashedWheelTimer(5000, TimeUnit.MILLISECONDS), factoriesListener, idProvider); NetconfServerSessionListenerFactory listenerFactory = new NetconfServerSessionListenerFactory( - factoriesListener, commitNot, idProvider); + factoriesListener, commitNot, idProvider, getNetconfMonitoringListenerService()); NetconfServerDispatcher.ServerChannelInitializer serverChannelInitializer = new NetconfServerDispatcher.ServerChannelInitializer( serverNegotiatorFactory, listenerFactory); return new NetconfServerDispatcher(serverChannelInitializer, nettyThreadgroup, nettyThreadgroup); } + static NetconfMonitoringServiceImpl getNetconfMonitoringListenerService() { + NetconfOperationServiceFactoryListener factoriesListener = mock(NetconfOperationServiceFactoryListener.class); + NetconfOperationServiceSnapshot snap = mock(NetconfOperationServiceSnapshot.class); + doReturn(Collections.emptySet()).when(snap).getServices(); + doReturn(snap).when(factoriesListener).getSnapshot(anyLong()); + return new NetconfMonitoringServiceImpl(factoriesListener); + } + @After public void tearDown() throws Exception { commitNot.close(); @@ -204,16 +214,6 @@ public class NetconfITTest extends AbstractConfigTest { } } - @Test(timeout = 10000) - public void testPersister() throws Exception { - Persister persister = mock(Persister.class); - doReturn("mockPersister").when(persister).toString(); - doReturn(Optional.absent()).when(persister).loadLastConfig(); - ConfigPersisterNotificationHandler h = - new ConfigPersisterNotificationHandler(persister, tcpAddress, ManagementFactory.getPlatformMBeanServer(), Pattern.compile(ConfigPersisterActivator.DEFAULT_IGNORED_REGEX)); - h.init(); - } - @Ignore @Test public void waitingTest() throws Exception { @@ -298,8 +298,8 @@ public class NetconfITTest extends AbstractConfigTest { } } + /* @Test -// @Ignore public void testStartExi() throws Exception { try (NetconfClient netconfClient = createSession(tcpAddress, "1")) { @@ -324,6 +324,7 @@ public class NetconfITTest extends AbstractConfigTest { } } + */ @Test public void testCloseSession() throws Exception { @@ -369,23 +370,6 @@ public class NetconfITTest extends AbstractConfigTest { assertEquals("ok", XmlElement.fromDomDocument(rpcReply).getOnlyChildElement().getName()); } - @Ignore - @Test - // TODO can only send NetconfMessage - it must be valid xml - public void testClientHelloWithAuth() throws Exception { - final String fileName = "netconfMessages/client_hello_with_auth.xml"; - // final InputStream resourceAsStream = - // AbstractListenerTest.class.getResourceAsStream(fileName); - // assertNotNull(resourceAsStream); - try (NetconfClient netconfClient = new NetconfClient("test", tcpAddress, 5000, clientDispatcher)) { - // IOUtils.copy(resourceAsStream, netconfClient.getStream()); - // netconfClient.getOutputStream().write(NetconfMessageFactory.endOfMessage); - // server should not write anything back - // assertEquals(null, netconfClient.readMessage()); - assertGetConfigWorks(netconfClient); - } - } - private Document assertGetConfigWorks(final NetconfClient netconfClient) throws InterruptedException { return assertGetConfigWorks(netconfClient, this.getConfig); } @@ -433,7 +417,10 @@ public class NetconfITTest extends AbstractConfigTest { private void startSSHServer() throws Exception{ logger.info("Creating SSH server"); - Thread sshServerThread = new Thread(NetconfSSHServer.start(10830,tcpAddress)); + StubUserManager um = new StubUserManager(USERNAME,PASSWORD); + InputStream is = getClass().getResourceAsStream("/RSA.pk"); + AuthProvider ap = new AuthProvider(um, is); + Thread sshServerThread = new Thread(NetconfSSHServer.start(10830,tcpAddress,ap)); sshServerThread.setDaemon(true); sshServerThread.start(); logger.info("SSH server on");