This is an automated email from the ASF dual-hosted git repository. orpiske 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 8fd7ba65d26 (chores) camel-core: fixed timing issue causing test flakiness 8fd7ba65d26 is described below commit 8fd7ba65d26234fa04ff4c23d60e6750c11b4de9 Author: Otavio Rodolfo Piske <angusyo...@gmail.com> AuthorDate: Mon Jul 15 16:38:55 2024 +0200 (chores) camel-core: fixed timing issue causing test flakiness --- .../file/FileExclusiveReadLockCopyTest.java | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/core/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadLockCopyTest.java b/core/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadLockCopyTest.java index e6ca4c7fb3a..80e51015a59 100644 --- a/core/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadLockCopyTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/component/file/FileExclusiveReadLockCopyTest.java @@ -16,10 +16,15 @@ */ package org.apache.camel.component.file; +import java.io.File; +import java.nio.file.Path; +import java.util.concurrent.TimeUnit; + import org.apache.camel.ContextTestSupport; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -27,24 +32,39 @@ import org.junit.jupiter.api.condition.OS; public class FileExclusiveReadLockCopyTest extends ContextTestSupport { public static final String FILE_QUERY = "?readLock=fileLock&initialDelay=0&delay=10"; + private static final String DEST = FileExclusiveReadLockCopyTest.class.getSimpleName(); @Test @DisabledOnOs(OS.WINDOWS) public void testCopy() throws Exception { MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMessageCount(1); - mock.expectedFileExists(testFile("out/hello.txt"), "Hello World"); + + final Path path = testFile(DEST + File.separator + "hello.txt"); + mock.expectedFileExists(path, "Hello World"); template.sendBodyAndHeader(fileUri(FILE_QUERY), "Hello World", Exchange.FILE_NAME, "hello.txt"); + // The file may have been created, but not yet flushed. + Awaitility.await() + .atMost(10, TimeUnit.SECONDS).until(this::isFlushed); + mock.assertIsSatisfied(); } + private boolean isFlushed() { + final Path path = testFile(DEST + File.separator + "hello.txt"); + + return path.toFile().exists() && "Hello World".length() == path.toFile().length(); + } + @Override protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { - from(fileUri(FILE_QUERY)).to(fileUri("out")).to("mock:result"); + from(fileUri(FILE_QUERY)) + .to(fileUri(DEST)) + .to("mock:result"); } }; }