From b2cd5d2076ef038941c7e37fc69f4c59276d0126 Mon Sep 17 00:00:00 2001 From: LiGuosheng Date: Wed, 14 Mar 2018 14:40:51 +0800 Subject: [PATCH] Add branch for creating TLS client Add TLS case to NetconfClientDispatcherImpl for creating TLS clients. Change-Id: I7da44d1c7c074633e7ae08b2863b4c3466066a4f Signed-off-by: Li guosheng --- .../client/NetconfClientDispatcherImpl.java | 24 +++++++++++++++++++ .../NetconfClientDispatcherImplTest.java | 16 +++++++++++++ 2 files changed, 40 insertions(+) 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); } } -- 2.36.6