This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 9781d8e955 file: migrate the sortBy test to non flaky harness #3584
(#5765)
9781d8e955 is described below
commit 9781d8e955837b3f9bd225a70a0a1317d7fcdb60
Author: Alexandre Gallice <[email protected]>
AuthorDate: Mon Feb 19 14:24:18 2024 +0100
file: migrate the sortBy test to non flaky harness #3584 (#5765)
---
.../quarkus/component/file/it/FileResource.java | 7 ---
.../quarkus/component/file/it/FileRoutes.java | 4 +-
.../component/file/it/FileLanguageTest.java | 49 ++++++++++++++--
.../camel/quarkus/component/file/it/FileTest.java | 66 +---------------------
.../component/file/it/NonFlakyFileTest.java | 13 +++++
.../file/it/NonFlakyFileTestResource.java | 11 ++++
6 files changed, 70 insertions(+), 80 deletions(-)
diff --git
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
index 4c8e6d6b2f..550caca4ce 100644
---
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
+++
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
@@ -98,13 +98,6 @@ public class FileResource {
return result;
}
- @Path("/resetMock/{mockId}")
- @GET
- public void resetMock(@PathParam("mockId") String mockId) {
- MockEndpoint mockEndpoint = context.getEndpoint("mock:" + mockId,
MockEndpoint.class);
- mockEndpoint.reset();
- }
-
@Path("/create-file")
@POST
@Consumes(MediaType.TEXT_PLAIN)
diff --git
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
index a88c3eb381..1caf3c4dfa 100644
---
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
+++
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
@@ -78,9 +78,7 @@ public class FileRoutes extends RouteBuilder {
from(("file://target/test-files/filter?initialDelay=0&delay=10&filter=#myFilter"))
.convertBodyTo(String.class).to("mock:filter");
-
from(("file://target/sortBy?initialDelay=0&delay=10&sortBy=reverse:file:name"))
- .id(SORT_BY)
- .noAutoStartup()
+
from(("file://target/test-files/sortby-in?initialDelay=0&delay=10&sortBy=reverse:file:name"))
.convertBodyTo(String.class).to("mock:" + SORT_BY);
from("direct:pollEnrich")
diff --git
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileLanguageTest.java
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileLanguageTest.java
index 327591bf00..028dce8d64 100644
---
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileLanguageTest.java
+++
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileLanguageTest.java
@@ -23,6 +23,8 @@ import java.util.Date;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+import org.apache.camel.quarkus.core.util.FileUtils;
import org.junit.jupiter.api.Test;
import static
org.apache.camel.quarkus.component.file.it.FileLanguageRoutes.FILE_LANGUAGE;
@@ -36,13 +38,13 @@ class FileLanguageTest {
@Test
public void fileLanguageExt() throws UnsupportedEncodingException,
InterruptedException {
// Create a new file
- String txtFileName = FileTest.createFile(FILE_BODY, "/file/create/" +
FileLanguageRoutes.FILE_LANG_TXT_IN, null,
+ String txtFileName = createFile(FILE_BODY, "/file/create/" +
FileLanguageRoutes.FILE_LANG_TXT_IN, null,
"in.txt");
- String xmlFileName = FileTest.createFile(FILE_BODY, "/file/create/" +
FileLanguageRoutes.FILE_LANG_TXT_IN, null,
+ String xmlFileName = createFile(FILE_BODY, "/file/create/" +
FileLanguageRoutes.FILE_LANG_TXT_IN, null,
"in.xml");
// Start route with ${file:onlyname.noext}.txt"
- FileTest.startRouteAndWait(FILE_LANGUAGE + "_txt");
+ startRouteAndWait(FILE_LANGUAGE + "_txt");
// Read the file matched fileLanguage
RestAssured
@@ -61,10 +63,10 @@ class FileLanguageTest {
@Test
public void fileLanguageDate() throws UnsupportedEncodingException,
InterruptedException {
// Create a new file
- FileTest.createFile(FILE_BODY, "/file/create/" +
FileLanguageRoutes.FILE_LANG_DATE_IN, null, "in.xml");
+ createFile(FILE_BODY, "/file/create/" +
FileLanguageRoutes.FILE_LANG_DATE_IN, null, "in.xml");
// Start route with
${date:now:yyyyMMdd}-${in.header.myHeader}.${file:ext}
- FileTest.startRouteAndWait(FILE_LANGUAGE + "_date");
+ startRouteAndWait(FILE_LANGUAGE + "_date");
SimpleDateFormat format = new SimpleDateFormat();
format.applyPattern("yyyyMMdd");
@@ -78,4 +80,41 @@ class FileLanguageTest {
.body(equalTo(FILE_BODY));
}
+ private static void startRouteAndWait(String routeId) throws
InterruptedException {
+ RestAssured.given()
+ .contentType(ContentType.TEXT)
+ .body(routeId)
+ .post("/file/startRoute")
+ .then()
+ .statusCode(204);
+
+ // wait for start
+ Thread.sleep(500);
+ }
+
+ private static String createFile(String content, String path, String
charset, String prefix)
+ throws UnsupportedEncodingException {
+ if (charset == null) {
+ charset = "UTF-8";
+ }
+ return createFile(content.getBytes(charset), path, charset, prefix);
+ }
+
+ private static String createFile(byte[] content, String path, String
charset, String fileName) {
+ String createdFilePath = RestAssured.given()
+ .urlEncodingEnabled(true)
+ .queryParam("charset", charset)
+ .contentType(ContentType.BINARY)
+ .body(content)
+ .queryParam("fileName", fileName)
+ .post(path)
+ .then()
+ .statusCode(201)
+ .extract()
+ .body()
+ .asString();
+
+ return FileUtils.nixifyPath(createdFilePath);
+ }
+
}
diff --git
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
index f91983f54f..12238e8cc6 100644
---
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
+++
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
@@ -17,51 +17,25 @@
package org.apache.camel.quarkus.component.file.it;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.UUID;
import java.util.concurrent.TimeUnit;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
-import io.restassured.http.ContentType;
import io.restassured.path.json.JsonPath;
import io.restassured.response.ValidatableResponse;
import org.apache.camel.quarkus.core.util.FileUtils;
import org.junit.jupiter.api.Test;
-import static
org.apache.camel.quarkus.component.file.it.FileResource.SEPARATOR;
-import static org.apache.camel.quarkus.component.file.it.FileResource.SORT_BY;
import static org.awaitility.Awaitility.await;
-import static org.hamcrest.core.IsEqual.equalTo;
@QuarkusTest
class FileTest {
- private static final String FILE_CONTENT_01 = "Hello1";
- private static final String FILE_CONTENT_02 = "Hello2";
- private static final String FILE_CONTENT_03 = "Hello3";
-
- @Test
- public void sortBy() throws IOException, InterruptedException {
- createFile(FILE_CONTENT_03, "/file/create/" + SORT_BY, null, "c_" +
UUID.randomUUID().toString());
- createFile(FILE_CONTENT_01, "/file/create/" + SORT_BY, null, "a_" +
UUID.randomUUID().toString());
- createFile(FILE_CONTENT_02, "/file/create/" + SORT_BY, null, "b_" +
UUID.randomUUID().toString());
-
- startRouteAndWait(SORT_BY);
-
- await().atMost(10, TimeUnit.SECONDS).until(
- () -> RestAssured
- .get("/file/getFromMock/" + SORT_BY)
- .then()
- .extract().asString(),
- equalTo(FILE_CONTENT_03 + SEPARATOR + FILE_CONTENT_02 +
SEPARATOR + FILE_CONTENT_01));
- }
-
@Test
- public void fileWatchCreateUpdate() throws IOException,
InterruptedException {
+ public void fileWatchCreateUpdate() throws IOException {
final Path dir =
Files.createTempDirectory(FileTest.class.getSimpleName()).toRealPath();
RestAssured.given()
.queryParam("path", dir.toString())
@@ -83,44 +57,6 @@ class FileTest {
awaitEvent(dir, file, "DELETE");
}
- static String createFile(String content, String path, String charset,
String prefix)
- throws UnsupportedEncodingException {
- if (charset == null) {
- charset = "UTF-8";
- }
- return createFile(content.getBytes(charset), path, charset, prefix);
- }
-
- static String createFile(byte[] content, String path, String charset,
String fileName) {
- String createdFilePath = RestAssured.given()
- .urlEncodingEnabled(true)
- .queryParam("charset", charset)
- .contentType(ContentType.BINARY)
- .body(content)
- .queryParam("fileName", fileName)
- .post(path)
- .then()
- .statusCode(201)
- .extract()
- .body()
- .asString();
-
- return FileUtils.nixifyPath(createdFilePath);
- }
-
- static void startRouteAndWait(String routeId) throws InterruptedException {
- RestAssured.given()
- .contentType(ContentType.TEXT)
- .body(routeId)
- .post("/file/startRoute")
- .then()
- .statusCode(204);
-
- // wait for start
- Thread.sleep(500);
-
- }
-
private static void awaitEvent(final Path dir, final Path file, final
String type) {
await()
.pollInterval(10, TimeUnit.MILLISECONDS)
diff --git
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTest.java
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTest.java
index 503c6bd9dd..6854d55288 100644
---
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTest.java
+++
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTest.java
@@ -31,6 +31,8 @@ import io.restassured.http.ContentType;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
+import static
org.apache.camel.quarkus.component.file.it.FileResource.SEPARATOR;
+import static org.apache.camel.quarkus.component.file.it.FileResource.SORT_BY;
import static
org.apache.camel.quarkus.component.file.it.NonFlakyFileTestResource.*;
import static org.apache.commons.io.FileUtils.readFileToString;
import static org.awaitility.Awaitility.await;
@@ -195,4 +197,15 @@ class NonFlakyFileTest {
&& records.values().contains(0) &&
records.values().contains(1);
});
}
+
+ @Test
+ void filesCreatedInWrongOrderShouldBeSortedByReverseFilename() {
+ await().atMost(10, TimeUnit.SECONDS).until(
+ () -> RestAssured
+ .get("/file/getFromMock/" + SORT_BY)
+ .then()
+ .extract().asString(),
+ equalTo(SORT_BY_NAME_3_CONTENT + SEPARATOR +
SORT_BY_NAME_2_CONTENT + SEPARATOR + SORT_BY_NAME_1_CONTENT));
+ }
+
}
diff --git
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTestResource.java
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTestResource.java
index fe36912dcb..ea11deafc4 100644
---
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTestResource.java
+++
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/NonFlakyFileTestResource.java
@@ -60,6 +60,13 @@ public class NonFlakyFileTestResource implements
QuarkusTestResourceLifecycleMan
static final String BATCH_FILE_NAME_1_CONTENT = BATCH_FILE_NAME_1 +
"-CONTENT";
static final String BATCH_FILE_NAME_2 = "batch-file-2";
static final String BATCH_FILE_NAME_2_CONTENT = BATCH_FILE_NAME_2 +
"-CONTENT";
+ static final String SORT_BY_FOLDER_IN = "sortby-in";
+ static final String SORT_BY_NAME_1 = "sortby-file-1";
+ static final String SORT_BY_NAME_1_CONTENT = SORT_BY_NAME_1 + "-CONTENT";
+ static final String SORT_BY_NAME_2 = "sortby-file-2";
+ static final String SORT_BY_NAME_2_CONTENT = SORT_BY_NAME_2 + "-CONTENT";
+ static final String SORT_BY_NAME_3 = "sortby-file-3";
+ static final String SORT_BY_NAME_3_CONTENT = SORT_BY_NAME_3 + "-CONTENT";
private final Map<Path, byte[]> createdTestFilesExpectedContent = new
HashMap<>();
@@ -84,6 +91,10 @@ public class NonFlakyFileTestResource implements
QuarkusTestResourceLifecycleMan
createTestFile("batch-in", BATCH_FILE_NAME_1);
createTestFile("batch-in", BATCH_FILE_NAME_2);
+ createTestFile("sortby-in", SORT_BY_NAME_3);
+ createTestFile("sortby-in", SORT_BY_NAME_1);
+ createTestFile("sortby-in", SORT_BY_NAME_2);
+
// Do not use createTestFile("file-creation"... as it is already
reserved by the createFileShouldSucceed test
// Do not use createTestFile("charset-write"... as it is already
reserved by the writeFileWithIso8859_1CharsetShouldSucceed test
// Do not use createTestFile("read-lock-out"... as it is already
reserved by the readLockCantBeAcquiredOnFileSmallerThanReadLockMinLength test