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 3a70074a97 Modernize and add FFM
3a70074a97 is described below

commit 3a70074a9714f410b844e18cea5d226896f39e92
Author: remm <r...@apache.org>
AuthorDate: Thu May 16 16:48:14 2024 +0200

    Modernize and add FFM
---
 .../tomcat/util/net/openssl/TestOpenSSLConf.java   | 65 ++++++++++++++++------
 1 file changed, 48 insertions(+), 17 deletions(-)

diff --git a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java 
b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
index 74e8f3b608..f614b0d18c 100644
--- a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
+++ b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
@@ -16,8 +16,12 @@
  */
 package org.apache.tomcat.util.net.openssl;
 
+import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.hamcrest.CoreMatchers;
@@ -26,9 +30,13 @@ import org.hamcrest.MatcherAssert;
 import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
 
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.core.AprLifecycleListener;
+import org.apache.catalina.core.OpenSSLLifecycleListener;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
@@ -36,8 +44,24 @@ import org.apache.tomcat.jni.SSLContext;
 import org.apache.tomcat.util.net.SSLHostConfig;
 import org.apache.tomcat.util.net.TesterSupport;
 
+@RunWith(Parameterized.class)
 public class TestOpenSSLConf extends TomcatBaseTest {
 
+    @Parameterized.Parameters(name = "{0}")
+    public static Collection<Object[]> parameters() {
+        List<Object[]> parameterSets = new ArrayList<>();
+        parameterSets.add(
+                new Object[] { 
"org.apache.tomcat.util.net.openssl.OpenSSLImplementation" });
+        parameterSets.add(
+                new Object[] { 
"org.apache.tomcat.util.net.openssl.panama.OpenSSLImplementation" });
+
+        return parameterSets;
+    }
+
+    @Parameter(0)
+    public String sslImplementationName;
+
+
     private static final String ENABLED_CIPHER = "AES256-SHA256";
     private static final String[] EXPECTED_CIPHERS = {ENABLED_CIPHER};
     private static final String[] ENABLED_PROTOCOLS = {"TLSv1.1"};
@@ -61,7 +85,19 @@ public class TestOpenSSLConf extends TomcatBaseTest {
 
         TesterSupport.initSsl(tomcat);
 
-        Assert.assertTrue(connector.setProperty("sslImplementationName", 
OpenSSLImplementation.class.getName()));
+        
Assert.assertTrue(tomcat.getConnector().setProperty("sslImplementationName", 
sslImplementationName));
+
+        if 
(OpenSSLImplementation.class.getName().equals(sslImplementationName)) {
+            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();
+            Assume.assumeTrue(OpenSSLLifecycleListener.isAvailable());
+            StandardServer server = (StandardServer) tomcat.getServer();
+            server.addLifecycleListener(listener);
+        }
 
         OpenSSLConf conf = new OpenSSLConf();
         for (int i = 0; i < commands.length;) {
@@ -95,7 +131,17 @@ public class TestOpenSSLConf extends TomcatBaseTest {
         String[] ciphers = sslHostConfig.getEnabledCiphers();
         MatcherAssert.assertThat("Wrong HostConfig ciphers", ciphers,
                 CoreMatchers.is(EXPECTED_CIPHERS));
-        ciphers = 
SSLContext.getCiphers(sslHostConfig.getOpenSslContext().longValue());
+        if 
(OpenSSLImplementation.class.getName().equals(sslImplementationName)) {
+            ciphers = 
SSLContext.getCiphers(sslHostConfig.getOpenSslContext().longValue());
+        } else {
+            Class<?> memorySegmentClass = 
Class.forName("java.lang.foreign.MemorySegment");
+            Object ssxCtxSegment = memorySegmentClass.getMethod("ofAddress", 
Long.TYPE)
+                .invoke(null, sslHostConfig.getOpenSslContext());
+            Method getCiphersMethod = 
Class.forName("org.apache.tomcat.util.net.openssl.panama.OpenSSLContext")
+                    .getDeclaredMethod("getCiphers", memorySegmentClass);
+            getCiphersMethod.setAccessible(true);
+            ciphers = (String[]) getCiphersMethod.invoke(null, ssxCtxSegment);
+        }
         MatcherAssert.assertThat("Wrong native SSL context ciphers", ciphers,
                 CoreMatchers.is(EXPECTED_CIPHERS));
     }
@@ -130,19 +176,4 @@ public class TestOpenSSLConf extends TomcatBaseTest {
         }
     }
 
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-
-        // Tests are only intended for OpenSSL
-        Assume.assumeTrue(TesterSupport.isOpensslAvailable());
-
-        Tomcat tomcat = getTomcatInstance();
-
-        AprLifecycleListener listener = new AprLifecycleListener();
-        Assume.assumeTrue(AprLifecycleListener.isAprAvailable());
-        StandardServer server = (StandardServer) tomcat.getServer();
-        server.addLifecycleListener(listener);
-    }
 }


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

Reply via email to