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);
}
}