This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch 3.20.x in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 990e6fbed61086e40a426bfea9f1ce6806a4618b Author: Jiri Ondrusek <ondrusek.j...@gmail.com> AuthorDate: Tue May 6 15:49:56 2025 +0200 fixes #7335 EdDSA test should be disabled on RHEL8 in native --- .../ROOT/pages/reference/extensions/ssh.adoc | 13 +++++++++ .../ssh/runtime/src/main/doc/limitations.adoc | 6 ++++ .../apache/camel/quarkus/test/DisabledOnRhel.java | 6 ++-- .../quarkus/test/DisabledOnRhelCondition.java | 32 ++++++++++++++++------ .../quarkus/test/DisabledOnRhelConditionTest.java | 30 ++++++++++++-------- .../camel/quarkus/component/ssh/it/SshTest.java | 2 ++ 6 files changed, 66 insertions(+), 23 deletions(-) diff --git a/docs/modules/ROOT/pages/reference/extensions/ssh.adoc b/docs/modules/ROOT/pages/reference/extensions/ssh.adoc index f944216812..05f80e8d6d 100644 --- a/docs/modules/ROOT/pages/reference/extensions/ssh.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/ssh.adoc @@ -43,3 +43,16 @@ Or add the coordinates to your existing project: ifeval::[{doc-show-user-guide-link} == true] Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. endif::[] + +[id="extensions-ssh-camel-quarkus-limitations"] +== Camel Quarkus limitations + +[id="extensions-ssh-limitations-native-mode-limitations"] +=== Native mode limitations + +[id="extensions-ssh-limitations-eddsa-cipher-on-rhel8-requires-native-image-based-on-ubi8"] +==== EdDSA cipher on RHEL8 requires native image based on UBI8 + +Native image (based on UBI9 by default) requires `GLIBC 2.33`, which is not present on RHEL8. +Please use native image based on `ubi8` for the native build for RHEL8 to make EdDSA work in the native mode (for example `ubi-quarkus-mandrel-builder-image:jdk-21`). + diff --git a/extensions/ssh/runtime/src/main/doc/limitations.adoc b/extensions/ssh/runtime/src/main/doc/limitations.adoc new file mode 100644 index 0000000000..5585fd3d5c --- /dev/null +++ b/extensions/ssh/runtime/src/main/doc/limitations.adoc @@ -0,0 +1,6 @@ +=== Native mode limitations + +==== EdDSA cipher on RHEL8 requires native image based on UBI8 + +Native image (based on UBI9 by default) requires `GLIBC 2.33`, which is not present on RHEL8. +Please use native image based on `ubi8` for the native build for RHEL8 to make EdDSA work in the native mode (for example `ubi-quarkus-mandrel-builder-image:jdk-21`). \ No newline at end of file diff --git a/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhel.java b/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhel.java index 0434b84f57..3bfcda0875 100644 --- a/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhel.java +++ b/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhel.java @@ -25,7 +25,7 @@ import java.lang.annotation.Target; import org.junit.jupiter.api.extension.ExtendWith; /** - * Skip test on RHEL linux. + * Skip test on RHEL linux, if integrationTests == true, test is disabled only in the native mode */ @Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @@ -33,5 +33,7 @@ import org.junit.jupiter.api.extension.ExtendWith; @ExtendWith(DisabledOnRhelCondition.class) public @interface DisabledOnRhel { - int since() default 0; + int version() default 0; + + boolean integrationTests() default false; } diff --git a/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhelCondition.java b/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhelCondition.java index cb2d54f929..10a825d35d 100644 --- a/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhelCondition.java +++ b/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/DisabledOnRhelCondition.java @@ -20,9 +20,12 @@ import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; +import io.quarkus.test.junit.QuarkusIntegrationTest; +import io.quarkus.test.junit.main.QuarkusMainIntegrationTest; import org.junit.jupiter.api.extension.ConditionEvaluationResult; import org.junit.jupiter.api.extension.ExecutionCondition; import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.platform.commons.util.AnnotationUtils; import static org.junit.jupiter.api.extension.ConditionEvaluationResult.disabled; import static org.junit.jupiter.api.extension.ConditionEvaluationResult.enabled; @@ -34,28 +37,39 @@ public class DisabledOnRhelCondition implements ExecutionCondition { @Override public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) { + boolean it = AnnotationUtils.findAnnotation(context.getTestClass(), QuarkusIntegrationTest.class).isPresent() + || AnnotationUtils.findAnnotation(context.getTestClass(), QuarkusMainIntegrationTest.class).isPresent(); Optional<DisabledOnRhel> annotation = findAnnotation(context.getElement(), DisabledOnRhel.class); - return annotation.isPresent() ? evaluate(annotation.get().since()) : ENABLED_BY_DEFAULT; + return annotation.isPresent() ? evaluate(annotation.get().version(), annotation.get().integrationTests(), it) + : ENABLED_BY_DEFAULT; } - private ConditionEvaluationResult evaluate(int since) { - return evaluate(System.getProperty("os.name").toLowerCase(), System.getProperty("os.version").toLowerCase(), since); + private ConditionEvaluationResult evaluate(int version, boolean shouldDisableOnIt, boolean it) { + return evaluate(System.getProperty("os.name").toLowerCase(), System.getProperty("os.version").toLowerCase(), version, + shouldDisableOnIt, it); } - ConditionEvaluationResult evaluate(String osName, String osVersion, int since) { + ConditionEvaluationResult evaluate(String osName, String osVersion, int version, boolean shouldDisableOnIt, boolean it) { Pattern r = Pattern.compile(".+el(\\d+).+"); Matcher m = r.matcher(osVersion.toLowerCase()); if (osName.toLowerCase().contains("linux") && m.matches()) { - if (since == 0) { + if (version == 0) { return disabled("@DisabledOnRhel: disable - RHEL"); } else { - Integer version = Integer.parseInt(m.group(1)); - if (version.compareTo(since) <= 0) { - return disabled("@DisabledOnRhel(since " + since + ") : disable - RHEL"); + Integer rhelVersion = Integer.parseInt(m.group(1)); + if (version == rhelVersion) { + + //check second condition - integrationTests + if (shouldDisableOnIt && it) { + return disabled("@DisabledOnRhel(" + version + ", native = true) : disable - RHEL"); + } + if (!shouldDisableOnIt) { + return disabled("@DisabledOnRhel(" + version + ") : disable - RHEL"); + } } } } - return enabled("@DisabledOnRhel: enabled - not a RHEL"); + return enabled("@DisabledOnRhel: enabled - not a RHEL / or native"); } } diff --git a/integration-tests-support/test-support/src/test/java/org/apache/camel/quarkus/test/DisabledOnRhelConditionTest.java b/integration-tests-support/test-support/src/test/java/org/apache/camel/quarkus/test/DisabledOnRhelConditionTest.java index b8e4e27fc9..5a847c282b 100644 --- a/integration-tests-support/test-support/src/test/java/org/apache/camel/quarkus/test/DisabledOnRhelConditionTest.java +++ b/integration-tests-support/test-support/src/test/java/org/apache/camel/quarkus/test/DisabledOnRhelConditionTest.java @@ -26,21 +26,27 @@ public class DisabledOnRhelConditionTest { DisabledOnRhelCondition condition = new DisabledOnRhelCondition(); //rhel 8 - Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 0).isDisabled()); - Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 8).isDisabled()); - Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 9).isDisabled()); - Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 10).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 0, false, false).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 8, false, false).isDisabled()); + Assertions.assertEquals(false, condition.evaluate("linux", "4.18.0-553.el8_10", 9, false, false).isDisabled()); + Assertions.assertEquals(false, condition.evaluate("linux", "4.18.0-553.el8_10", 10, false, false).isDisabled()); //rhel 9 - Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 0).isDisabled()); - Assertions.assertEquals(false, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 8).isDisabled()); - Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 9).isDisabled()); - Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 10).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 0, false, false).isDisabled()); + Assertions.assertEquals(false, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 8, false, false).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 9, false, false).isDisabled()); + Assertions.assertEquals(false, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 10, false, false).isDisabled()); //rhel 10 - Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el10_5", 0).isDisabled()); - Assertions.assertEquals(false, condition.evaluate("linux", "5.14.0-503.11.1.el10_5", 8).isDisabled()); - Assertions.assertEquals(false, condition.evaluate("linux", "5.14.0-503.11.1.el10_5", 9).isDisabled()); - Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el9_5", 10).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el10_5", 0, false, false).isDisabled()); + Assertions.assertEquals(false, condition.evaluate("linux", "5.14.0-503.11.1.el10_5", 8, false, false).isDisabled()); + Assertions.assertEquals(false, condition.evaluate("linux", "5.14.0-503.11.1.el10_5", 9, false, false).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "5.14.0-503.11.1.el10_5", 10, false, false).isDisabled()); + + //rhel8 with native + Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 8, true, true).isDisabled()); + Assertions.assertEquals(false, condition.evaluate("linux", "4.18.0-553.el8_10", 8, true, false).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 8, false, true).isDisabled()); + Assertions.assertEquals(true, condition.evaluate("linux", "4.18.0-553.el8_10", 8, false, false).isDisabled()); } } diff --git a/integration-tests/ssh/src/test/java/org/apache/camel/quarkus/component/ssh/it/SshTest.java b/integration-tests/ssh/src/test/java/org/apache/camel/quarkus/component/ssh/it/SshTest.java index 30da31ee8d..470dbd4d6a 100644 --- a/integration-tests/ssh/src/test/java/org/apache/camel/quarkus/component/ssh/it/SshTest.java +++ b/integration-tests/ssh/src/test/java/org/apache/camel/quarkus/component/ssh/it/SshTest.java @@ -26,6 +26,7 @@ import io.smallrye.certs.Format; import io.smallrye.certs.junit5.Certificate; import org.apache.camel.component.ssh.SshConstants; import org.apache.camel.quarkus.test.DisabledIfFipsMode; +import org.apache.camel.quarkus.test.DisabledOnRhel; import org.apache.camel.quarkus.test.support.certificate.TestCertificates; import org.hamcrest.Matchers; import org.junit.jupiter.api.Test; @@ -115,6 +116,7 @@ class SshTest { } @DisabledIfFipsMode //ED25519 keys are not allowed in FIPS mode + @DisabledOnRhel(version = 8, integrationTests = true) //Native image (based on UBI9 by default) requires `GLIBC 2.33`, which is not present on RHEL8. @Test public void testProducerWithEdDSAKeyType() { RestAssured.given()