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

remm pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 22d6c50bc8 Remove OpenSSL double init test hack
22d6c50bc8 is described below

commit 22d6c50bc8a47a6e5e4ac645617e38e3a4eccec3
Author: remm <r...@apache.org>
AuthorDate: Wed Jun 26 11:52:57 2024 +0200

    Remove OpenSSL double init test hack
---
 .../apache/catalina/startup/TomcatBaseTest.java    |  8 -----
 .../tomcat/util/net/TestClientCertTls13.java       |  4 ++-
 test/org/apache/tomcat/util/net/TesterSupport.java | 36 ----------------------
 .../tomcat/util/net/openssl/TestOpenSSLConf.java   | 32 +++++++++++++------
 4 files changed, 25 insertions(+), 55 deletions(-)

diff --git a/test/org/apache/catalina/startup/TomcatBaseTest.java 
b/test/org/apache/catalina/startup/TomcatBaseTest.java
index 91e654abdb..a655b28cf4 100644
--- a/test/org/apache/catalina/startup/TomcatBaseTest.java
+++ b/test/org/apache/catalina/startup/TomcatBaseTest.java
@@ -64,7 +64,6 @@ import org.apache.catalina.webresources.StandardRoot;
 import org.apache.coyote.http11.Http11NioProtocol;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap;
-import org.apache.tomcat.util.net.TesterSupport;
 import org.apache.tomcat.util.scan.StandardJarScanFilter;
 import org.apache.tomcat.util.scan.StandardJarScanner;
 
@@ -74,13 +73,6 @@ import org.apache.tomcat.util.scan.StandardJarScanner;
  */
 public abstract class TomcatBaseTest extends LoggingBaseTest {
 
-    /*
-     * Ensures APR Library.initialize() and Library.terminate() don't interfere
-     * with the calls from the Lifecycle listener and trigger a JVM crash
-     */
-    @SuppressWarnings("unused")
-    private static final boolean ignored = TesterSupport.OPENSSL_AVAILABLE;
-
     // Used by parameterized tests. Defined here to reduce duplication.
     protected static final Boolean[] booleans = new Boolean[] { Boolean.FALSE, 
Boolean.TRUE };
 
diff --git a/test/org/apache/tomcat/util/net/TestClientCertTls13.java 
b/test/org/apache/tomcat/util/net/TestClientCertTls13.java
index dea79f1935..4ccbc594d6 100644
--- a/test/org/apache/tomcat/util/net/TestClientCertTls13.java
+++ b/test/org/apache/tomcat/util/net/TestClientCertTls13.java
@@ -29,9 +29,11 @@ import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameter;
 
 import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.AprStatus;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
 import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.net.openssl.OpenSSLStatus;
 
 /**
  * The keys and certificates used in this file are all available in svn and 
were
@@ -108,7 +110,7 @@ public class TestClientCertTls13 extends TomcatBaseTest {
         TesterSupport.configureSSLImplementation(tomcat, 
sslImplementationName, useOpenSSL);
 
         if (useOpenSSL) {
-            Assume.assumeTrue(TesterSupport.getOpensslVersion() >= 0x1010100f);
+            Assume.assumeTrue(AprStatus.getOpenSSLVersion() >= 0x1010100f || 
OpenSSLStatus.getVersion() >= 0x1010100f);
         }
 
         // Tests default to TLSv1.2 when client cert auth is used
diff --git a/test/org/apache/tomcat/util/net/TesterSupport.java 
b/test/org/apache/tomcat/util/net/TesterSupport.java
index 868d99df2d..3bbaff9c32 100644
--- a/test/org/apache/tomcat/util/net/TesterSupport.java
+++ b/test/org/apache/tomcat/util/net/TesterSupport.java
@@ -60,10 +60,6 @@ import org.apache.catalina.core.OpenSSLLifecycleListener;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.startup.TesterMapRealm;
 import org.apache.catalina.startup.Tomcat;
-import org.apache.tomcat.jni.Library;
-import org.apache.tomcat.jni.LibraryNotFoundError;
-import org.apache.tomcat.jni.SSL;
-import org.apache.tomcat.util.compat.JreCompat;
 import org.apache.tomcat.util.descriptor.web.LoginConfig;
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
@@ -90,9 +86,6 @@ public final class TesterSupport {
     public static final String LOCALHOST_EC_KEY_PEM = SSL_DIR + 
"localhost-ec-key.pem";
     public static final String LOCALHOST_RSA_CERT_PEM = SSL_DIR + 
"localhost-rsa-cert.pem";
     public static final String LOCALHOST_RSA_KEY_PEM = SSL_DIR + 
"localhost-rsa-key.pem";
-    public static final boolean OPENSSL_AVAILABLE;
-    public static final int OPENSSL_VERSION;
-    public static final String OPENSSL_ERROR;
     public static final boolean TLSV13_AVAILABLE;
 
     public static final String ROLE = "testrole";
@@ -103,27 +96,6 @@ public final class TesterSupport {
 
     static {
         boolean available = false;
-        int version = 0;
-        String err = "";
-        try {
-            if (JreCompat.isJre22Available()) {
-                // Try with FFM
-                Class<?> openSSL = 
Class.forName("org.apache.tomcat.util.openssl.openssl_h");
-                version = ((Long) 
openSSL.getMethod("OpenSSL_version_num").invoke(null)).intValue();
-            } else {
-                Library.initialize(null);
-                available = true;
-                version = SSL.version();
-                Library.terminate();
-            }
-        } catch (Exception | LibraryNotFoundError | 
ExceptionInInitializerError ex) {
-            err = ex.getMessage();
-        }
-        OPENSSL_AVAILABLE = available;
-        OPENSSL_VERSION = version;
-        OPENSSL_ERROR = err;
-
-        available = false;
         try {
             SSLContext.getInstance(Constants.SSL_PROTO_TLSv1_3);
             available = true;
@@ -132,14 +104,6 @@ public final class TesterSupport {
         TLSV13_AVAILABLE = available;
     }
 
-    public static boolean isOpensslAvailable() {
-        return OPENSSL_AVAILABLE;
-    }
-
-    public static int getOpensslVersion() {
-        return OPENSSL_VERSION;
-    }
-
     public static boolean isTlsv13Available() {
         return TLSV13_AVAILABLE;
     }
diff --git a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java 
b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
index f614b0d18c..3a8145ff0d 100644
--- a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
+++ b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
@@ -34,8 +34,12 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameter;
 
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.core.AprLifecycleListener;
+import org.apache.catalina.core.AprStatus;
 import org.apache.catalina.core.OpenSSLLifecycleListener;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.startup.Tomcat;
@@ -70,34 +74,37 @@ public class TestOpenSSLConf extends TomcatBaseTest {
     // Test behavior needs to adjust for OpenSSL 1.1.1-pre3 and above
     private static final int OPENSSL_TLS13_SUPPORT_MIN_VERSION = 0x10101003;
 
-    private static int OPENSSL_VERSION = TesterSupport.getOpensslVersion();
-
     private static boolean hasTLS13() {
-        return OPENSSL_VERSION >= OPENSSL_TLS13_SUPPORT_MIN_VERSION;
+        return AprStatus.getOpenSSLVersion() >= 
OPENSSL_TLS13_SUPPORT_MIN_VERSION
+                || OpenSSLStatus.getVersion() >= 
OPENSSL_TLS13_SUPPORT_MIN_VERSION;
     }
 
-    private SSLHostConfig initOpenSSLConfCmd(String... commands) throws 
Exception {
-        Assert.assertNotNull(commands);
-        Assert.assertTrue("Invalid length", commands.length % 2 == 0);
-
+    private void initOpenSSL() throws Exception {
         Tomcat tomcat = getTomcatInstance();
-        Connector connector = tomcat.getConnector();
 
         TesterSupport.initSsl(tomcat);
 
         
Assert.assertTrue(tomcat.getConnector().setProperty("sslImplementationName", 
sslImplementationName));
 
+        LifecycleListener listener = null;
         if 
(OpenSSLImplementation.class.getName().equals(sslImplementationName)) {
-            AprLifecycleListener listener = new AprLifecycleListener();
+            listener = new AprLifecycleListener();
             Assume.assumeTrue(AprLifecycleListener.isAprAvailable());
             StandardServer server = (StandardServer) tomcat.getServer();
             server.addLifecycleListener(listener);
         } else if 
("org.apache.tomcat.util.net.openssl.panama.OpenSSLImplementation".equals(sslImplementationName))
 {
-            OpenSSLLifecycleListener listener = new OpenSSLLifecycleListener();
+            listener = new OpenSSLLifecycleListener();
             Assume.assumeTrue(OpenSSLLifecycleListener.isAvailable());
             StandardServer server = (StandardServer) tomcat.getServer();
             server.addLifecycleListener(listener);
         }
+        // Initialize only the listener as the OpenSSL version is not 
available before
+        listener.lifecycleEvent(new LifecycleEvent(tomcat.getServer(), 
Lifecycle.BEFORE_INIT_EVENT, null));
+    }
+
+    private SSLHostConfig initOpenSSLConfCmd(String... commands) throws 
Exception {
+        Assert.assertNotNull(commands);
+        Assert.assertTrue("Invalid length", commands.length % 2 == 0);
 
         OpenSSLConf conf = new OpenSSLConf();
         for (int i = 0; i < commands.length;) {
@@ -107,6 +114,9 @@ public class TestOpenSSLConf extends TomcatBaseTest {
             conf.addCmd(cmd);
         }
 
+        Tomcat tomcat = getTomcatInstance();
+        Connector connector = tomcat.getConnector();
+
         SSLHostConfig[] sslHostConfigs = 
connector.getProtocolHandler().findSslHostConfigs();
         Assert.assertEquals("Wrong SSLHostConfigCount", 1, 
sslHostConfigs.length);
         sslHostConfigs[0].setOpenSslConf(conf);
@@ -120,6 +130,7 @@ public class TestOpenSSLConf extends TomcatBaseTest {
 
     @Test
     public void testOpenSSLConfCmdCipher() throws Exception {
+        initOpenSSL();
         SSLHostConfig sslHostConfig;
         if (hasTLS13()) {
             // Ensure TLSv1.3 ciphers aren't returned
@@ -148,6 +159,7 @@ public class TestOpenSSLConf extends TomcatBaseTest {
 
     @Test
     public void testOpenSSLConfCmdProtocol() throws Exception {
+        initOpenSSL();
         Set<String> disabledProtocols = new 
HashSet<>(Arrays.asList(DISABLED_PROTOCOLS));
         StringBuilder sb = new StringBuilder();
         for (String protocol : DISABLED_PROTOCOLS) {


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to