Fix SslHandler indirection 11/110111/3
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 31 Jan 2024 22:38:32 +0000 (23:38 +0100)
committerRobert Varga <nite@hq.sk>
Thu, 1 Feb 2024 10:25:17 +0000 (10:25 +0000)
We should be binding the factory at configuration time, not when it is
actually needed.

JIRA: NETCONF-1243
Change-Id: I36854bfab82a9d240cc641b5eb525b396215901a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
apps/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImpl.java
apps/netconf-topology/src/test/java/org/opendaylight/netconf/topology/spi/NetconfClientConfigurationBuilderFactoryImplTest.java

index 1e9ef1e57fec97788fed7abce442c5abe607a636..1df8b9450d80b0cb50c2dce4f7e134845a691a6d 100644 (file)
@@ -91,9 +91,9 @@ public final class NetconfClientConfigurationBuilderFactoryImpl implements Netco
             builder.withProtocol(NetconfClientProtocol.SSH);
             setSshParametersFromCredentials(builder, node.getCredentials());
         } else if (protocol.getName() == Name.TLS) {
-            builder.withProtocol(NetconfClientProtocol.TLS).withSslHandlerFactory(
-                channel -> sslHandlerFactoryProvider.getSslHandlerFactory(protocol.getSpecification())
-                    .createSslHandler());
+            final var handlerFactory = sslHandlerFactoryProvider.getSslHandlerFactory(protocol.getSpecification());
+            builder.withProtocol(NetconfClientProtocol.TLS)
+                .withSslHandlerFactory(channel -> handlerFactory.createSslHandler());
         } else {
             throw new IllegalArgumentException("Unsupported protocol type: " + protocol.getName());
         }
index 600e77fbd243c62f84845d37384445a82bd07b21..8365b4594deec76882d81048c0e9fb43c2f9c8e7 100644 (file)
@@ -11,6 +11,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
 
 import java.util.NoSuchElementException;
 import org.junit.jupiter.api.BeforeEach;
@@ -20,6 +22,7 @@ import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.opendaylight.aaa.encrypt.AAAEncryptionService;
 import org.opendaylight.netconf.client.NetconfClientSessionListener;
+import org.opendaylight.netconf.client.SslHandlerFactory;
 import org.opendaylight.netconf.client.conf.NetconfClientConfiguration;
 import org.opendaylight.netconf.client.conf.NetconfClientConfiguration.NetconfClientProtocol;
 import org.opendaylight.netconf.client.mdsal.api.CredentialProvider;
@@ -53,6 +56,8 @@ class NetconfClientConfigurationBuilderFactoryImplTest {
     private CredentialProvider credentialProvider;
     @Mock
     private SslHandlerFactoryProvider sslHandlerFactoryProvider;
+    @Mock
+    private SslHandlerFactory sslHandlerFactory;
 
     private NetconfNodeBuilder nodeBuilder;
     private NetconfClientConfigurationBuilderFactoryImpl factory;
@@ -78,7 +83,7 @@ class NetconfClientConfigurationBuilderFactoryImplTest {
             sslHandlerFactoryProvider);
     }
 
-    private void assertConfig(NetconfClientConfiguration config) {
+    private void assertConfig(final NetconfClientConfiguration config) {
         assertNotNull(config);
         assertNotNull(config.getTcpParameters());
         assertEquals(HOST, config.getTcpParameters().getRemoteAddress());
@@ -112,6 +117,7 @@ class NetconfClientConfigurationBuilderFactoryImplTest {
 
     @Test
     void testTls() {
+        doReturn(sslHandlerFactory).when(sslHandlerFactoryProvider).getSslHandlerFactory(any());
         final var config = createConfig(
             nodeBuilder.setTcpOnly(false).setProtocol(new ProtocolBuilder().setName(Name.TLS).build()).build());
         assertConfig(config);