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()

Reply via email to