This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 0c20732 CAMEL-15680: [camel-azure] Add integration test (#4480) 0c20732 is described below commit 0c20732d34117279c7c2228880d6f186f07d5500 Author: Luigi De Masi <5583341+luigidem...@users.noreply.github.com> AuthorDate: Tue Oct 20 06:19:05 2020 +0200 CAMEL-15680: [camel-azure] Add integration test (#4480) --- .../component/azure/storage/blob/BlobConsumer.java | 2 +- .../azure/storage/blob/BlobConsumerIT.java | 56 ++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConsumer.java b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConsumer.java index f46dffb..e8bd3e2 100644 --- a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConsumer.java +++ b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConsumer.java @@ -94,6 +94,7 @@ public class BlobConsumer extends ScheduledBatchPollingConsumer { getEndpoint().setResponseOnExchange(response, exchange); + exchange.getIn().setHeader(BlobConstants.BLOB_NAME, blobName); return exchange; } @@ -111,7 +112,6 @@ public class BlobConsumer extends ScheduledBatchPollingConsumer { for (BlobItem blobItem : blobs) { exchanges.add(createExchangeFromBlob(blobItem.getName(), blobContainerClient)); } - return exchanges; } diff --git a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConsumerIT.java b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConsumerIT.java index 0f2254f..bf1f533 100644 --- a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConsumerIT.java +++ b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConsumerIT.java @@ -23,6 +23,8 @@ import java.io.InputStreamReader; import java.nio.charset.Charset; import java.nio.file.Path; import java.util.Properties; +import java.util.concurrent.TimeUnit; +import java.util.regex.Pattern; import com.azure.storage.blob.BlobContainerClient; import com.azure.storage.blob.BlobServiceClient; @@ -30,6 +32,7 @@ import com.azure.storage.blob.specialized.BlobInputStream; import com.azure.storage.common.StorageSharedKeyCredential; import org.apache.camel.CamelContext; import org.apache.camel.EndpointInject; +import org.apache.camel.Exchange; import org.apache.camel.ExchangePattern; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; @@ -44,8 +47,10 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.io.TempDir; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; @TestInstance(TestInstance.Lifecycle.PER_CLASS) class BlobConsumerIT extends CamelTestSupport { @@ -61,6 +66,7 @@ class BlobConsumerIT extends CamelTestSupport { private BlobContainerClient containerClient; private BlobContainerClient batchContainerClient; + private final String regex = ".*\\.pdf"; @BeforeAll public void prepare() throws Exception { @@ -168,6 +174,53 @@ class BlobConsumerIT extends CamelTestSupport { assertEquals("Block Batch Blob 2", FileUtils.readFileToString(file2, Charset.defaultCharset())); } + @Test + void testRegexPolling() throws InterruptedException, IOException { + Pattern pattern = Pattern.compile(regex); + + //create pdf blobs + for (int i = 0; i < 10; i++) { + templateStart.send("direct:createBlob", ExchangePattern.InOnly, exchange -> { + exchange.getIn().setBody("Block Batch Blob Test"); + exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, batchContainerName); + exchange.getIn().setHeader(BlobConstants.BLOB_NAME, generateRandomBlobName("regexp-test_batch_blob_", "pdf")); + }); + } + + for (int i = 0; i < 5; i++) { + templateStart.send("direct:createBlob", ExchangePattern.InOnly, exchange -> { + exchange.getIn().setBody("Block Batch Blob Test"); + exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, batchContainerName); + exchange.getIn().setHeader(BlobConstants.BLOB_NAME, generateRandomBlobName("aaaa-test_batch_blob_", "pdf")); + }); + } + + //create docx blobs + for (int i = 0; i < 20; i++) { + templateStart.send("direct:createBlob", ExchangePattern.InOnly, exchange -> { + exchange.getIn().setBody("Block Batch Blob Test"); + exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, batchContainerName); + exchange.getIn().setHeader(BlobConstants.BLOB_NAME, generateRandomBlobName("regexp-test_batch_blob_", "docx")); + }); + } + + final MockEndpoint mockEndpoint = getMockEndpoint("mock:resultBatch"); + mockEndpoint.expectedMessageCount(15); + mockEndpoint.assertIsSatisfied(5000); + mockEndpoint.await(10, TimeUnit.SECONDS); + String blobName; + for (Exchange e : mockEndpoint.getExchanges()) { + BlobInputStream blob = e.getIn().getBody(BlobInputStream.class); + blobName = e.getIn().getHeader(BlobConstants.BLOB_NAME, String.class); + assertTrue(pattern.matcher(blobName).matches()); + } + } + + private String generateRandomBlobName(String prefix, String extension) { + return prefix + + randomAlphabetic(5).toLowerCase() + "." + extension; + } + @AfterAll public void tearDown() { // delete container @@ -201,6 +254,9 @@ class BlobConsumerIT extends CamelTestSupport { from("azure-storage-blob://cameldev/" + batchContainerName + "?credentials=#creds&fileDir=" + testDir.toString()).to("mock:resultBatchFile"); + + from("azure-storage-blob://cameldev/" + batchContainerName + "?credentials=#creds&prefix=aaaa®ex=" + regex) + .to("mock:resultRegex"); } }; }