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%2FNetconfMonitoringITTest.java;h=3b263f7e75cc826b55b893a76a1f5fbf4b051c34;hp=7a840be02af697f1cd73dad423c8b610b2a664da;hb=e159106bc148e76fc1e3e3c780bdd740d99e74ed;hpb=605ec74419f5de738d1689203e7bdd798c82f7af diff --git a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfMonitoringITTest.java b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfMonitoringITTest.java index 7a840be02a..3b263f7e75 100644 --- a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfMonitoringITTest.java +++ b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfMonitoringITTest.java @@ -7,10 +7,11 @@ */ package org.opendaylight.controller.netconf.it; -import static org.mockito.Matchers.anyLong; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import io.netty.channel.ChannelFuture; +import static org.opendaylight.controller.netconf.util.test.XmlUnitUtil.assertContainsElementWithText; import java.io.BufferedReader; import java.io.IOException; @@ -26,29 +27,28 @@ import junit.framework.Assert; import org.junit.Before; import org.junit.Test; -import org.junit.matchers.JUnitMatchers; import org.mockito.Mock; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; import org.opendaylight.controller.config.spi.ModuleFactory; -import org.opendaylight.controller.config.yang.store.api.YangStoreException; -import org.opendaylight.controller.config.yang.store.impl.HardcodedYangStoreService; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.api.monitoring.NetconfManagementSession; -import org.opendaylight.controller.netconf.client.NetconfClient; -import org.opendaylight.controller.netconf.client.NetconfClientDispatcher; +import org.opendaylight.controller.netconf.client.NetconfClientDispatcherImpl; +import org.opendaylight.controller.netconf.client.test.TestingNetconfClient; import org.opendaylight.controller.netconf.confignetconfconnector.osgi.NetconfOperationServiceFactoryImpl; +import org.opendaylight.controller.netconf.confignetconfconnector.osgi.YangStoreException; import org.opendaylight.controller.netconf.impl.DefaultCommitNotificationProducer; import org.opendaylight.controller.netconf.impl.NetconfServerDispatcher; 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.impl.osgi.NetconfOperationServiceSnapshot; +import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationServiceSnapshotImpl; import org.opendaylight.controller.netconf.impl.osgi.SessionMonitoringService; import org.opendaylight.controller.netconf.mapping.api.Capability; +import org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider; import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService; import org.opendaylight.controller.netconf.monitoring.osgi.NetconfMonitoringActivator; import org.opendaylight.controller.netconf.monitoring.osgi.NetconfMonitoringOperationService; import org.opendaylight.controller.netconf.util.test.XmlFileLoader; +import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -56,6 +56,7 @@ import org.w3c.dom.Document; import com.google.common.base.Charsets; import com.google.common.base.Optional; import com.google.common.collect.Sets; +import io.netty.channel.ChannelFuture; public class NetconfMonitoringITTest extends AbstractNetconfConfigTest { @@ -67,16 +68,16 @@ public class NetconfMonitoringITTest extends AbstractNetconfConfigTest { private DefaultCommitNotificationProducer commitNot; private NetconfServerDispatcher dispatch; - private NetconfClientDispatcher clientDispatcher; + private NetconfClientDispatcherImpl clientDispatcher; private NetconfMonitoringServiceImpl monitoringService; @Before public void setUp() throws Exception { - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(NetconfITTest.getModuleFactoriesS().toArray( + super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, NetconfITTest.getModuleFactoriesS().toArray( new ModuleFactory[0]))); - monitoringService = new NetconfMonitoringServiceImpl(getFactoriesListener()); + monitoringService = new NetconfMonitoringServiceImpl(getNetconfOperationProvider()); NetconfOperationServiceFactoryListenerImpl factoriesListener = new NetconfOperationServiceFactoryListenerImpl(); factoriesListener.onAddNetconfOperationServiceFactory(new NetconfOperationServiceFactoryImpl(getYangStore())); @@ -89,7 +90,7 @@ public class NetconfMonitoringITTest extends AbstractNetconfConfigTest { ChannelFuture s = dispatch.createServer(tcpAddress); s.await(); - clientDispatcher = new NetconfClientDispatcher(nettyThreadgroup, nettyThreadgroup, 5000); + clientDispatcher = new NetconfClientDispatcherImpl(getNettyThreadgroup(), getNettyThreadgroup(), getHashedWheelTimer()); } private HardcodedYangStoreService getYangStore() throws YangStoreException, IOException { @@ -121,8 +122,8 @@ public class NetconfMonitoringITTest extends AbstractNetconfConfigTest { @Test public void testGetResponseFromMonitoring() throws Exception { - try (NetconfClient netconfClient = new NetconfClient("client-monitoring", tcpAddress, 4000, clientDispatcher)) { - try (NetconfClient netconfClient2 = new NetconfClient("client-monitoring2", tcpAddress, 4000, clientDispatcher)) { + try (TestingNetconfClient netconfClient = new TestingNetconfClient("client-monitoring", clientDispatcher, getClientConfiguration(tcpAddress, 4000))) { + try (TestingNetconfClient netconfClient2 = new TestingNetconfClient("client-monitoring2", clientDispatcher, getClientConfiguration(tcpAddress, 4000))) { NetconfMessage response = netconfClient.sendMessage(loadGetMessage()); assertSessionElementsInResponse(response.getDocument(), 2); } @@ -132,7 +133,7 @@ public class NetconfMonitoringITTest extends AbstractNetconfConfigTest { } - @Test(timeout = 5 * 10000) + @Test(timeout = 13 * 10000) public void testClientHelloWithAuth() throws Exception { String fileName = "netconfMessages/client_hello_with_auth.xml"; String hello = XmlFileLoader.fileToString(fileName); @@ -166,22 +167,28 @@ public class NetconfMonitoringITTest extends AbstractNetconfConfigTest { sock.close(); - org.junit.Assert.assertThat(responseBuilder.toString(), JUnitMatchers.containsString("urn:ietf:params:netconf:capability:candidate:1.0")); - org.junit.Assert.assertThat(responseBuilder.toString(), JUnitMatchers.containsString("tomas")); + String helloMsg = responseBuilder.substring(0, responseBuilder.indexOf(separator)); + Document doc = XmlUtil.readXmlToDocument(helloMsg); + assertContainsElementWithText(doc, "urn:ietf:params:netconf:capability:candidate:1.0"); + + String replyMsg = responseBuilder.substring(responseBuilder.indexOf(separator) + separator.length()); + doc = XmlUtil.readXmlToDocument(replyMsg); + assertContainsElementWithText(doc, "tomas"); } private void assertSessionElementsInResponse(Document document, int i) { int elementSize = document.getElementsByTagName("session-id").getLength(); - Assert.assertEquals(i, elementSize); + Assert.assertEquals("Incorrect number of session-id tags in " + XmlUtil.toString(document),i, elementSize); } private NetconfMessage loadGetMessage() throws Exception { return XmlFileLoader.xmlFileToNetconfMessage("netconfMessages/get.xml"); } - public static NetconfOperationServiceFactoryListener getFactoriesListener() { - NetconfOperationServiceFactoryListener factoriesListener = mock(NetconfOperationServiceFactoryListener.class); - NetconfOperationServiceSnapshot snap = mock(NetconfOperationServiceSnapshot.class); + public static NetconfOperationProvider getNetconfOperationProvider() throws Exception { + NetconfOperationProvider factoriesListener = mock(NetconfOperationProvider.class); + NetconfOperationServiceSnapshotImpl snap = mock(NetconfOperationServiceSnapshotImpl.class); + doNothing().when(snap).close(); NetconfOperationService service = mock(NetconfOperationService.class); Set caps = Sets.newHashSet(); caps.add(new Capability() { @@ -219,7 +226,7 @@ public class NetconfMonitoringITTest extends AbstractNetconfConfigTest { doReturn(caps).when(service).getCapabilities(); Set services = Sets.newHashSet(service); doReturn(services).when(snap).getServices(); - doReturn(snap).when(factoriesListener).getSnapshot(anyLong()); + doReturn(snap).when(factoriesListener).openSnapshot(anyString()); return factoriesListener; }