This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new d919887de7da CAMEL-23189: Fix flaky XSLT tests by replacing file
consumer with direct (#22060)
d919887de7da is described below
commit d919887de7da2300cfbe24f126ee195927634fe8
Author: Guillaume Nodet <[email protected]>
AuthorDate: Wed Mar 18 13:00:02 2026 +0100
CAMEL-23189: Fix flaky XSLT tests by replacing file consumer with direct
(#22060)
Replace file: consumer with direct:start in 9 XSLT tests that were
flaky due to race conditions between file polling and mock assertions.
These tests validate XSLT include/transform functionality, not file
consumption, so using template.sendBody() makes them deterministic.
Also increase XsltUriResolverFactoryTest Awaitility timeout from 1s to 10s.
Co-authored-by: Claude Opus 4.6 <[email protected]>
---
.../camel/component/xslt/XsltCustomizeEntityResolverTest.java | 7 ++++++-
.../camel/component/xslt/XsltCustomizeURIResolverTest.java | 7 ++++++-
.../apache/camel/component/xslt/XsltIncludeClasspathTest.java | 8 +++++++-
.../camel/component/xslt/XsltIncludeRelativeFileSchemeTest.java | 8 +++++++-
.../camel/component/xslt/XsltIncludeRelativeNestedTest.java | 9 ++++++++-
.../camel/component/xslt/XsltIncludeRelativeOtherTest.java | 8 +++++++-
.../org/apache/camel/component/xslt/XsltIncludeRelativeTest.java | 8 +++++++-
.../java/org/apache/camel/component/xslt/XsltIncludeTest.java | 8 +++++++-
.../apache/camel/component/xslt/XsltMessageTerminateTest.java | 8 +++++++-
.../apache/camel/component/xslt/XsltUriResolverFactoryTest.java | 2 +-
10 files changed, 63 insertions(+), 10 deletions(-)
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java
index 76fb88cef9ad..4609cb016bc9 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeEntityResolverTest.java
@@ -17,6 +17,8 @@
package org.apache.camel.component.xslt;
import java.io.StringReader;
+import java.nio.file.Files;
+import java.nio.file.Path;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
@@ -42,6 +44,9 @@ public class XsltCustomizeEntityResolverTest extends
ContextTestSupport {
mock.message(0).body().contains(EXPECTED_XML_CONSTANT);
+ String body =
Files.readString(Path.of("src/test/data/xml_with_entity.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -50,7 +55,7 @@ public class XsltCustomizeEntityResolverTest extends
ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=xml_with_entity.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:xslt/common/copy.xsl?output=string&entityResolver=#customEntityResolver")
.to("mock:resultURIResolverDirect");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java
index 0d70989244fa..505d55c44d6b 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomizeURIResolverTest.java
@@ -18,6 +18,8 @@ package org.apache.camel.component.xslt;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
@@ -45,6 +47,9 @@ public class XsltCustomizeURIResolverTest extends
ContextTestSupport {
mock.message(0).body().contains(EXPECTED_XML_CONSTANT);
+ String body = Files.readString(Path.of("src/test/data/staff.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -53,7 +58,7 @@ public class XsltCustomizeURIResolverTest extends
ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=staff.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:org/apache/camel/component/xslt/include_not_existing_resource.xsl?uriResolver=#customURIResolver")
.to("mock:resultURIResolverDirect");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeClasspathTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeClasspathTest.java
index e9fa9205fe10..167385cf00cd 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeClasspathTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeClasspathTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.xslt;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -33,6 +36,9 @@ public class XsltIncludeClasspathTest extends
ContextTestSupport {
// the include file has the span style so check that its there
mock.message(0).body().contains("<span
style=\"font-size=22px;\">Minnie Mouse</span>");
+ String body = Files.readString(Path.of("src/test/data/staff.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -41,7 +47,7 @@ public class XsltIncludeClasspathTest extends
ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=staff.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:org/apache/camel/component/xslt/staff_include_classpath.xsl")
.to("log:foo").to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeFileSchemeTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeFileSchemeTest.java
index b7cfe56fe1d3..103619c3910f 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeFileSchemeTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeFileSchemeTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.xslt;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -33,6 +36,9 @@ public class XsltIncludeRelativeFileSchemeTest extends
ContextTestSupport {
// the include file has the span style so check that its there
mock.message(0).body().contains("<span
style=\"font-size=22px;\">Minnie Mouse</span>");
+ String body = Files.readString(Path.of("src/test/data/staff.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -41,7 +47,7 @@ public class XsltIncludeRelativeFileSchemeTest extends
ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=staff.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:file:src/test/resources/xslt/staff/staff.xsl").to("log:foo")
.to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeNestedTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeNestedTest.java
index ae99523fe6d9..7215f7578ee0 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeNestedTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeNestedTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.xslt;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -30,6 +33,10 @@ public class XsltIncludeRelativeNestedTest extends
ContextTestSupport {
public void testXsltIncludeRelativeNested() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(1);
+
+ String body = Files.readString(Path.of("src/test/data/staff.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -38,7 +45,7 @@ public class XsltIncludeRelativeNestedTest extends
ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=staff.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:org/apache/camel/component/xslt/staff_include_relative_nested.xsl")
.to("log:foo").to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeOtherTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeOtherTest.java
index 106d33ab9a6e..4aa4191a930e 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeOtherTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeOtherTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.xslt;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -33,6 +36,9 @@ public class XsltIncludeRelativeOtherTest extends
ContextTestSupport {
// the include file has the span style so check that its there
mock.message(0).body().contains("<span
style=\"color:yellow;\">48</span>");
+ String body = Files.readString(Path.of("src/test/data/staff.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -41,7 +47,7 @@ public class XsltIncludeRelativeOtherTest extends
ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=staff.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:org/apache/camel/component/xslt/staff_include_relative_other.xsl")
.to("log:foo").to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeTest.java
index 92f460688bcb..ec866ea9b955 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeRelativeTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.xslt;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -33,6 +36,9 @@ public class XsltIncludeRelativeTest extends
ContextTestSupport {
// the include file has the span style so check that its there
mock.message(0).body().contains("<span
style=\"font-size=22px;\">Minnie Mouse</span>");
+ String body = Files.readString(Path.of("src/test/data/staff.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -41,7 +47,7 @@ public class XsltIncludeRelativeTest extends
ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=staff.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:org/apache/camel/component/xslt/staff_include_relative.xsl").to("log:foo")
.to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeTest.java
index aa55ca20aeb9..eeb0f2e45d6b 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltIncludeTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.xslt;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -33,6 +36,9 @@ public class XsltIncludeTest extends ContextTestSupport {
// the include file has the span style so check that its there
mock.message(0).body().contains("<span
style=\"font-size=22px;\">Minnie Mouse</span>");
+ String body = Files.readString(Path.of("src/test/data/staff.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
}
@@ -41,7 +47,7 @@ public class XsltIncludeTest extends ContextTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("file:src/test/data/?fileName=staff.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:org/apache/camel/component/xslt/staff_include.xsl").to("log:foo")
.to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltMessageTerminateTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltMessageTerminateTest.java
index ee746eaf1f3f..64180fc1c458 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltMessageTerminateTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltMessageTerminateTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.xslt;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
@@ -31,6 +34,9 @@ public class XsltMessageTerminateTest extends
ContextTestSupport {
getMockEndpoint("mock:result").expectedMessageCount(0);
getMockEndpoint("mock:dead").expectedMessageCount(1);
+ String body = Files.readString(Path.of("src/test/data/terminate.xml"));
+ template.sendBody("direct:start", body);
+
assertMockEndpointsSatisfied();
Exchange out =
getMockEndpoint("mock:dead").getReceivedExchanges().get(0);
@@ -53,7 +59,7 @@ public class XsltMessageTerminateTest extends
ContextTestSupport {
public void configure() {
errorHandler(deadLetterChannel("mock:dead"));
-
from("file:src/test/data/?fileName=terminate.xml&noop=true&initialDelay=0&delay=10")
+ from("direct:start")
.to("xslt:org/apache/camel/component/xslt/terminate.xsl").to("log:foo")
.to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java
index c00795c41557..1ee4b98a97aa 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltUriResolverFactoryTest.java
@@ -80,7 +80,7 @@ public class XsltUriResolverFactoryTest extends
ContextTestSupport {
sendBody(directStart, payloud);
// wait until endpoint is resolved
- await().atMost(1, TimeUnit.SECONDS).until(() ->
resolveMandatoryEndpoint(endpointUri, XsltEndpoint.class) != null);
+ await().atMost(10, TimeUnit.SECONDS).until(() ->
resolveMandatoryEndpoint(endpointUri, XsltEndpoint.class) != null);
assertMockEndpointsSatisfied();