diff --git a/handler/src/main/java/io/netty/handler/ssl/Conscrypt.java b/handler/src/main/java/io/netty/handler/ssl/Conscrypt.java index 4d7ec058f4..9c9e2bba62 100644 --- a/handler/src/main/java/io/netty/handler/ssl/Conscrypt.java +++ b/handler/src/main/java/io/netty/handler/ssl/Conscrypt.java @@ -28,6 +28,7 @@ final class Conscrypt { // This class exists to avoid loading other conscrypt related classes using features only available in JDK8+, // because we need to maintain JDK6+ runtime compatibility. private static final Method IS_CONSCRYPT_SSLENGINE = loadIsConscryptEngine(); + private static final boolean CAN_INSTANCE_PROVIDER = canInstanceProvider(); private static Method loadIsConscryptEngine() { try { @@ -40,11 +41,22 @@ final class Conscrypt { } } + private static boolean canInstanceProvider() { + try { + Class providerClass = Class.forName("org.conscrypt.OpenSSLProvider", true, + ConscryptAlpnSslEngine.class.getClassLoader()); + providerClass.newInstance(); + return true; + } catch (Throwable ignore) { + return false; + } + } + /** * Indicates whether or not conscrypt is available on the current system. */ static boolean isAvailable() { - return IS_CONSCRYPT_SSLENGINE != null && PlatformDependent.javaVersion() >= 8; + return CAN_INSTANCE_PROVIDER && IS_CONSCRYPT_SSLENGINE != null && PlatformDependent.javaVersion() >= 8; } static boolean isEngineSupported(SSLEngine engine) { diff --git a/pom.xml b/pom.xml index c78c108577..94e76ad2c1 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,21 @@ + + not_x86_64 + + + os.detected.arch + !x86_64 + + + + + + true + + + graal @@ -320,6 +335,7 @@ 19.0.0 true + false @@ -752,10 +768,10 @@ - x86_64/AARCH64 JDK must be used. + x86_64/AARCH64/PPCLE64 JDK must be used. os.detected.arch - ^(x86_64|aarch_64)$ + ^(x86_64|aarch_64|ppcle_64)$ diff --git a/testsuite-shading/pom.xml b/testsuite-shading/pom.xml index 968eee4c02..d44425f7aa 100644 --- a/testsuite-shading/pom.xml +++ b/testsuite-shading/pom.xml @@ -66,6 +66,17 @@ + + skipTests + + + skipTests + + + + true + + windows @@ -193,6 +204,7 @@ run + ${skipShadingTestsuite} @@ -222,6 +234,7 @@ org.apache.maven.plugins maven-failsafe-plugin + ${skipShadingTestsuite} ${shadingPrefix} ${shadingPrefix2} @@ -337,6 +350,7 @@ run + ${skipShadingTestsuite} @@ -366,6 +380,7 @@ org.apache.maven.plugins maven-failsafe-plugin + ${skipShadingTestsuite} ${shadingPrefix} ${shadingPrefix2} diff --git a/testsuite/src/main/java/io/netty/testsuite/transport/udt/UDTClientServerConnectionTest.java b/testsuite/src/main/java/io/netty/testsuite/transport/udt/UDTClientServerConnectionTest.java index c6af2124e8..67aae95f79 100644 --- a/testsuite/src/main/java/io/netty/testsuite/transport/udt/UDTClientServerConnectionTest.java +++ b/testsuite/src/main/java/io/netty/testsuite/transport/udt/UDTClientServerConnectionTest.java @@ -37,6 +37,7 @@ import io.netty.util.concurrent.DefaultThreadFactory; import io.netty.util.concurrent.GlobalEventExecutor; import io.netty.util.internal.PlatformDependent; import org.junit.Assume; +import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -335,13 +336,27 @@ public class UDTClientServerConnectionTest { static final int WAIT_COUNT = 50; static final int WAIT_SLEEP = 100; + @BeforeClass + public static void assumeUdt() { + Assume.assumeTrue("com.barchart.udt.SocketUDT can not be loaded and initialized", canLoadAndInit()); + Assume.assumeFalse("Not supported on J9 JVM", PlatformDependent.isJ9Jvm()); + } + + private static boolean canLoadAndInit() { + try { + Class.forName("com.barchart.udt.SocketUDT", true, + UDTClientServerConnectionTest.class.getClassLoader()); + return true; + } catch (Throwable e) { + return false; + } + } + /** * Verify UDT client/server connect and disconnect. */ @Test public void connection() throws Exception { - Assume.assumeFalse("Not supported on J9 JVM", PlatformDependent.isJ9Jvm()); - log.info("Starting server."); // Using LOCALHOST4 as UDT transport does not support IPV6 :( final Server server = new Server(new InetSocketAddress(NetUtil.LOCALHOST4, 0));