From 78646b3d7e163757834ae9f0b08bb1bc0c1c5c6f Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Thu, 14 Jan 2021 17:11:19 +0100 Subject: [PATCH] Verify we can load native modules and add job that verifies on aarch64 as well (#10933) Motivation: As shown in the past we need to verify we actually can load the native as otherwise we may introduce regressions. Modifications: - Add new maven module which tests loading of native modules - Add job that will also test loading on aarch64 Result: Less likely to introduce regressions related to loading native code in the future --- pom.xml | 1 + testsuite-native/pom.xml | 166 ++++++++++++++++++ .../testsuite_native/NativeLoadingTest.java | 44 +++++ 3 files changed, 211 insertions(+) create mode 100644 testsuite-native/pom.xml create mode 100644 testsuite-native/src/test/java/io/netty/testsuite_native/NativeLoadingTest.java diff --git a/pom.xml b/pom.xml index b51cd6d76a..bc66fb9d06 100644 --- a/pom.xml +++ b/pom.xml @@ -394,6 +394,7 @@ testsuite-http2 testsuite-osgi testsuite-shading + testsuite-native testsuite-native-image testsuite-native-image-client testsuite-native-image-client-runtime-init diff --git a/testsuite-native/pom.xml b/testsuite-native/pom.xml new file mode 100644 index 0000000000..6cdf0db494 --- /dev/null +++ b/testsuite-native/pom.xml @@ -0,0 +1,166 @@ + + + + + 4.0.0 + + io.netty + netty-parent + 5.0.0.Final-SNAPSHOT + + + netty-testsuite-native + jar + + Netty/Testsuite/Native + + + true + false + + + + + org.junit.jupiter + junit-jupiter-api + + + org.junit.jupiter + junit-jupiter-engine + + + org.junit.vintage + junit-vintage-engine + + + junit + junit + + + + + skipTests + + + skipTests + + + + true + + + + + default + + true + + + + ${project.groupId} + netty-transport-native-epoll + ${project.version} + compile + + + ${project.groupId} + netty-transport-native-kqueue + ${project.version} + compile + + + ${project.groupId} + netty-resolver-dns-native-macos + ${project.version} + compile + + + + + + linux + + + linux + + + + + ${project.groupId} + netty-transport-native-epoll + ${project.version} + ${jni.classifier} + compile + + + ${project.groupId} + netty-transport-native-kqueue + ${project.version} + compile + + + ${project.groupId} + netty-resolver-dns-native-macos + ${project.version} + compile + + + + + + mac + + + mac + + + + + ${project.groupId} + netty-transport-native-kqueue + ${project.version} + ${jni.classifier} + compile + + + ${project.groupId} + netty-resolver-dns-native-macos + ${project.version} + ${jni.classifier} + compile + + + ${project.groupId} + netty-transport-native-epoll + ${project.version} + compile + + + + + + + + + maven-surefire-plugin + + ${skipNativeTestsuite} + + + + + diff --git a/testsuite-native/src/test/java/io/netty/testsuite_native/NativeLoadingTest.java b/testsuite-native/src/test/java/io/netty/testsuite_native/NativeLoadingTest.java new file mode 100644 index 0000000000..ae279c6eab --- /dev/null +++ b/testsuite-native/src/test/java/io/netty/testsuite_native/NativeLoadingTest.java @@ -0,0 +1,44 @@ +/* + * Copyright 2020 The Netty Project + * + * The Netty Project licenses this file to you under the Apache License, + * version 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at: + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ +package io.netty.testsuite_native; + +import io.netty.channel.epoll.Epoll; +import io.netty.channel.kqueue.KQueue; +import io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledOnOs; +import org.junit.jupiter.api.condition.OS; + +public class NativeLoadingTest { + + @Test + @EnabledOnOs(OS.MAC) + public void testNativeLoadingKqueue() { + KQueue.ensureAvailability(); + } + + @Test + @EnabledOnOs(OS.MAC) + public void testNativeLoadingDnsServerAddressStreamProvider() { + MacOSDnsServerAddressStreamProvider.ensureAvailability(); + } + + @Test + @EnabledOnOs(OS.LINUX) + public void testNativeLoadingEpoll() { + Epoll.ensureAvailability(); + } +}