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 {