From: LiGuosheng Date: Wed, 14 Mar 2018 06:40:51 +0000 (+0800) Subject: Add branch for creating TLS client X-Git-Tag: release/fluorine~127 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=b2cd5d2076ef038941c7e37fc69f4c59276d0126;p=netconf.git Add branch for creating TLS client Add TLS case to NetconfClientDispatcherImpl for creating TLS clients. Change-Id: I7da44d1c7c074633e7ae08b2863b4c3466066a4f Signed-off-by: Li guosheng --- diff --git a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java index 6abce42b43..d0dc480299 100644 --- a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java +++ b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java @@ -42,6 +42,8 @@ public class NetconfClientDispatcherImpl extends AbstractDispatcher createTlsClient(final NetconfClientConfiguration currentConfiguration) { + LOG.debug("Creating TLS client with configuration: {}", currentConfiguration); + return super.createClient(currentConfiguration.getAddress(), currentConfiguration.getReconnectStrategy(), + (ch, sessionPromise) -> new TlsClientChannelInitializer(currentConfiguration.getSslHandlerFactory(), + getNegotiatorFactory(currentConfiguration), currentConfiguration.getSessionListener()) + .initialize(ch, sessionPromise)); + } + + private Future createReconnectingTlsClient( + final NetconfReconnectingClientConfiguration currentConfiguration) { + LOG.debug("Creating reconnecting TLS client with configuration: {}", currentConfiguration); + final TlsClientChannelInitializer init = new TlsClientChannelInitializer( + currentConfiguration.getSslHandlerFactory(), getNegotiatorFactory(currentConfiguration), + currentConfiguration.getSessionListener()); + + return super.createReconnectingClient(currentConfiguration.getAddress(), currentConfiguration + .getConnectStrategyFactory(), currentConfiguration.getReconnectStrategy(), + init::initialize); + } + protected NetconfClientSessionNegotiatorFactory getNegotiatorFactory(final NetconfClientConfiguration cfg) { return new NetconfClientSessionNegotiatorFactory(timer, cfg.getAdditionalHeader(), cfg.getConnectionTimeoutMillis()); diff --git a/netconf/netconf-client/src/test/java/org/opendaylight/netconf/client/NetconfClientDispatcherImplTest.java b/netconf/netconf-client/src/test/java/org/opendaylight/netconf/client/NetconfClientDispatcherImplTest.java index 82bbe00138..45019fede4 100644 --- a/netconf/netconf-client/src/test/java/org/opendaylight/netconf/client/NetconfClientDispatcherImplTest.java +++ b/netconf/netconf-client/src/test/java/org/opendaylight/netconf/client/NetconfClientDispatcherImplTest.java @@ -95,5 +95,21 @@ public class NetconfClientDispatcherImplTest { assertNotNull(sshReconn); assertNotNull(tcpReconn); + SslHandlerFactory sslHandlerFactory = Mockito.mock(SslHandlerFactory.class); + NetconfReconnectingClientConfiguration cfg3 = NetconfReconnectingClientConfigurationBuilder.create() + .withProtocol(NetconfClientConfiguration.NetconfClientProtocol.TLS) + .withAddress(address) + .withConnectionTimeoutMillis(timeout) + .withReconnectStrategy(reconnect) + .withAdditionalHeader(header) + .withSessionListener(listener) + .withConnectStrategyFactory(reconnectStrategyFactory) + .withSslHandlerFactory(sslHandlerFactory).build(); + + Future tlsSession = dispatcher.createClient(cfg3); + Future tlsReconn = dispatcher.createReconnectingClient(cfg3); + + assertNotNull(tlsSession); + assertNotNull(tlsReconn); } }