This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch quarkus-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 12a644e6b46385c23c7f4158093657bc25182e2f Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Mon Mar 31 14:18:17 2025 +0100 Add workaround for test TCCL issues and ServiceLoader --- .../TestCertificateGenerationExtension.java | 25 ++++++++++++---------- .../test/mock/backend/MockBackendUtils.java | 12 ++++++++--- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/TestCertificateGenerationExtension.java b/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/TestCertificateGenerationExtension.java index 0e4150c8f8..1104903631 100644 --- a/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/TestCertificateGenerationExtension.java +++ b/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/TestCertificateGenerationExtension.java @@ -68,8 +68,8 @@ public class TestCertificateGenerationExtension implements BeforeAllCallback { Optional<String> cn = Optional.empty(); Optional<String> altSubName = Optional.empty(); if (annotation.docker()) { - cn = resolveDockerHost(); - altSubName = cn.stream().map(h -> "IP:%s".formatted(h)).findAny(); + cn = resolveDockerHost(extensionContext); + altSubName = cn.stream().map("IP:%s"::formatted).findAny(); } for (Certificate certificate : annotation.certificates()) { @@ -86,9 +86,7 @@ public class TestCertificateGenerationExtension implements BeforeAllCallback { .withPassword(certificate.password().isEmpty() ? null : certificate.password()) .withDuration(Duration.ofDays(certificate.duration())); - if (altSubName.isPresent()) { - request.withSubjectAlternativeName(altSubName.get()); - } + altSubName.ifPresent(request::withSubjectAlternativeName); for (String san : certificate.subjectAlternativeNames()) { request.withSubjectAlternativeName(san); @@ -109,12 +107,17 @@ public class TestCertificateGenerationExtension implements BeforeAllCallback { } } - private Optional<String> resolveDockerHost() { - String dockerHost = DockerClientFactory.instance().dockerHostIpAddress(); - if (!dockerHost.equals("localhost") && !dockerHost.equals("127.0.0.1")) { - return Optional.of(dockerHost); + private Optional<String> resolveDockerHost(ExtensionContext extensionContext) { + ClassLoader origTCCL = Thread.currentThread().getContextClassLoader(); + try { + Thread.currentThread().setContextClassLoader(extensionContext.getTestClass().get().getClassLoader()); + String dockerHost = DockerClientFactory.instance().dockerHostIpAddress(); + if (!dockerHost.equals("localhost") && !dockerHost.equals("127.0.0.1")) { + return Optional.of(dockerHost); + } + return Optional.empty(); + } finally { + Thread.currentThread().setContextClassLoader(origTCCL); } - return Optional.empty(); } - } diff --git a/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/mock/backend/MockBackendUtils.java b/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/mock/backend/MockBackendUtils.java index 6829413055..b4d378a8bc 100644 --- a/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/mock/backend/MockBackendUtils.java +++ b/integration-tests-support/test-support/src/main/java/org/apache/camel/quarkus/test/mock/backend/MockBackendUtils.java @@ -50,8 +50,14 @@ public class MockBackendUtils { } static boolean mockBackendStarted() { - return ConfigProvider.getConfig() - .getOptionalValue("camel.quarkus.start-mock-backend", Boolean.class) - .orElse(Boolean.TRUE); + ClassLoader origTCCL = Thread.currentThread().getContextClassLoader(); + try { + Thread.currentThread().setContextClassLoader(MockBackendUtils.class.getClassLoader()); + return ConfigProvider.getConfig() + .getOptionalValue("camel.quarkus.start-mock-backend", Boolean.class) + .orElse(Boolean.TRUE); + } finally { + Thread.currentThread().setContextClassLoader(origTCCL); + } } }