This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
     new d45ccf5cd3 NIFI-11848 Allocate unused port in 
TlsCertificateAuthorityTest
d45ccf5cd3 is described below

commit d45ccf5cd39c9bd75b806b7a0e19757bcb42c840
Author: Nandor Soma Abonyi <[email protected]>
AuthorDate: Sat Jul 22 16:59:03 2023 -0500

    NIFI-11848 Allocate unused port in TlsCertificateAuthorityTest
    
    This closes #7514
    
    Signed-off-by: David Handermann <[email protected]>
    
    (cherry picked from commit 84b4d100a8f0afdaf0ae52d90e8ecabb552d1f1b)
---
 .../server/TlsCertificateAuthorityService.java     | 22 ++++++++++++----------
 .../tls/service/TlsCertificateAuthorityTest.java   | 10 ++++++----
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git 
a/nifi-toolkit/nifi-toolkit-tls/src/main/java/org/apache/nifi/toolkit/tls/service/server/TlsCertificateAuthorityService.java
 
b/nifi-toolkit/nifi-toolkit-tls/src/main/java/org/apache/nifi/toolkit/tls/service/server/TlsCertificateAuthorityService.java
index bb44077ddf..8d0b147a38 100644
--- 
a/nifi-toolkit/nifi-toolkit-tls/src/main/java/org/apache/nifi/toolkit/tls/service/server/TlsCertificateAuthorityService.java
+++ 
b/nifi-toolkit/nifi-toolkit-tls/src/main/java/org/apache/nifi/toolkit/tls/service/server/TlsCertificateAuthorityService.java
@@ -32,7 +32,6 @@ import 
org.apache.nifi.toolkit.tls.manager.writer.JsonConfigurationWriter;
 import org.apache.nifi.toolkit.tls.service.BaseCertificateAuthorityCommandLine;
 import org.apache.nifi.toolkit.tls.util.OutputStreamFactory;
 import org.eclipse.jetty.http.HttpVersion;
-import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.SecureRequestCustomizer;
@@ -51,6 +50,8 @@ public class TlsCertificateAuthorityService {
     private final OutputStreamFactory outputStreamFactory;
     private Server server;
 
+    private ServerConnector serverConnector;
+
     public TlsCertificateAuthorityService() {
         this(FileOutputStream::new);
     }
@@ -59,9 +60,7 @@ public class TlsCertificateAuthorityService {
         this.outputStreamFactory = outputStreamFactory;
     }
 
-    private static Server createServer(Handler handler, int port, KeyStore 
keyStore, String keyPassword) throws Exception {
-        Server server = new Server();
-
+    private static ServerConnector createSSLConnector(Server server, int port, 
KeyStore keyStore, String keyPassword) {
         SslContextFactory sslContextFactory = new SslContextFactory.Server();
         
sslContextFactory.setIncludeProtocols(TlsConfiguration.getHighestCurrentSupportedTlsProtocolVersion());
         sslContextFactory.setKeyStore(keyStore);
@@ -73,10 +72,7 @@ public class TlsCertificateAuthorityService {
         ServerConnector sslConnector = new ServerConnector(server, new 
SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()), new 
HttpConnectionFactory(httpsConfig));
         sslConnector.setPort(port);
 
-        server.addConnector(sslConnector);
-        server.setHandler(handler);
-
-        return server;
+        return sslConnector;
     }
 
     public synchronized void start(TlsConfig tlsConfig, String configJson, 
boolean differentPasswordsForKeyAndKeystore) throws Exception {
@@ -111,8 +107,10 @@ public class TlsCertificateAuthorityService {
         tlsManager.write(outputStreamFactory);
         String signingAlgorithm = tlsConfig.getSigningAlgorithm();
         int days = tlsConfig.getDays();
-        server = createServer(new 
TlsCertificateAuthorityServiceHandler(signingAlgorithm, days, 
tlsConfig.getToken(), caCert, keyPair, objectMapper), tlsConfig.getPort(), 
tlsManager.getKeyStore(),
-                tlsConfig.getKeyPassword());
+        server = new Server();
+        serverConnector = createSSLConnector(server, tlsConfig.getPort(), 
tlsManager.getKeyStore(), tlsConfig.getKeyPassword());
+        server.addConnector(serverConnector);
+        server.setHandler(new 
TlsCertificateAuthorityServiceHandler(signingAlgorithm, days, 
tlsConfig.getToken(), caCert, keyPair, objectMapper));
         server.start();
     }
 
@@ -123,4 +121,8 @@ public class TlsCertificateAuthorityService {
         server.stop();
         server.join();
     }
+
+    public int getPort() {
+        return serverConnector.getLocalPort();
+    }
 }
diff --git 
a/nifi-toolkit/nifi-toolkit-tls/src/test/java/org/apache/nifi/toolkit/tls/service/TlsCertificateAuthorityTest.java
 
b/nifi-toolkit/nifi-toolkit-tls/src/test/java/org/apache/nifi/toolkit/tls/service/TlsCertificateAuthorityTest.java
index 4d5cd61f51..8af81c43e7 100644
--- 
a/nifi-toolkit/nifi-toolkit-tls/src/test/java/org/apache/nifi/toolkit/tls/service/TlsCertificateAuthorityTest.java
+++ 
b/nifi-toolkit/nifi-toolkit-tls/src/test/java/org/apache/nifi/toolkit/tls/service/TlsCertificateAuthorityTest.java
@@ -23,7 +23,6 @@ import org.apache.nifi.security.util.KeystoreType;
 import org.apache.nifi.toolkit.tls.configuration.TlsClientConfig;
 import org.apache.nifi.toolkit.tls.configuration.TlsConfig;
 import 
org.apache.nifi.toolkit.tls.service.client.TlsCertificateAuthorityClient;
-import 
org.apache.nifi.toolkit.tls.service.client.TlsCertificateAuthorityClientCommandLine;
 import 
org.apache.nifi.toolkit.tls.service.server.TlsCertificateAuthorityService;
 import org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone;
 import org.apache.nifi.toolkit.tls.util.InputStreamFactory;
@@ -100,11 +99,13 @@ public class TlsCertificateAuthorityTest {
         serverConfig.setCaHostname("localhost");
         serverConfig.setToken(myTestTokenUseSomethingStronger);
         serverConfig.setKeyStore(serverKeyStore);
-        serverConfig.setPort(0);
         serverConfig.setDays(5);
         serverConfig.setKeySize(2048);
         serverConfig.initDefaults();
 
+        // set port back to 0, so Jetty will allocate a free port
+        serverConfig.setPort(0);
+
         clientConfig = new TlsClientConfig();
         clientConfig.setCaHostname("localhost");
         clientConfig.setDn("OU=NIFI,CN=otherHostname");
@@ -112,7 +113,6 @@ public class TlsCertificateAuthorityTest {
         clientConfig.setTrustStore(clientTrustStore);
         clientConfig.setToken(myTestTokenUseSomethingStronger);
         
clientConfig.setDomainAlternativeNames(Collections.singletonList(subjectAlternativeName));
-        clientConfig.setPort(0);
         clientConfig.setKeySize(2048);
         clientConfig.initDefaults();
 
@@ -146,6 +146,7 @@ public class TlsCertificateAuthorityTest {
         try {
             tlsCertificateAuthorityService = new 
TlsCertificateAuthorityService(outputStreamFactory);
             tlsCertificateAuthorityService.start(serverConfig, 
serverConfigFile.getAbsolutePath(), true);
+            clientConfig.setPort(tlsCertificateAuthorityService.getPort());
             TlsCertificateAuthorityClient tlsCertificateAuthorityClient = new 
TlsCertificateAuthorityClient(outputStreamFactory);
             
tlsCertificateAuthorityClient.generateCertificateAndGetItSigned(clientConfig, 
null, clientConfigFile.getAbsolutePath(), true);
             validate();
@@ -162,6 +163,7 @@ public class TlsCertificateAuthorityTest {
         try {
             tlsCertificateAuthorityService = new 
TlsCertificateAuthorityService(outputStreamFactory);
             tlsCertificateAuthorityService.start(serverConfig, 
serverConfigFile.getAbsolutePath(), false);
+            clientConfig.setPort(tlsCertificateAuthorityService.getPort());
             TlsCertificateAuthorityClient tlsCertificateAuthorityClient = new 
TlsCertificateAuthorityClient(outputStreamFactory);
             
tlsCertificateAuthorityClient.generateCertificateAndGetItSigned(clientConfig, 
null, clientConfigFile.getAbsolutePath(), false);
             validate();
@@ -180,8 +182,8 @@ public class TlsCertificateAuthorityTest {
         try {
             tlsCertificateAuthorityService = new 
TlsCertificateAuthorityService(outputStreamFactory);
             tlsCertificateAuthorityService.start(serverConfig, 
serverConfigFile.getAbsolutePath(), false);
+            clientConfig.setPort(tlsCertificateAuthorityService.getPort());
             TlsCertificateAuthorityClient tlsCertificateAuthorityClient = new 
TlsCertificateAuthorityClient(outputStreamFactory);
-            new TlsCertificateAuthorityClientCommandLine(inputStreamFactory);
             
tlsCertificateAuthorityClient.generateCertificateAndGetItSigned(clientConfig, 
null, clientConfigFile.getAbsolutePath(), true);
             validate();
         } finally {

Reply via email to