This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit f1f6b4653d2a45d2260cbafa3c445c59c4a2884a Author: Raffaele Marcello <marcelloraffa...@gmail.com> AuthorDate: Sun Feb 14 20:05:42 2021 +0100 CAMEL-15964 create camel-google-storage component --- .../google/storage/GoogleCloudStorageProducer.java | 4 +- .../integration/ComplexIntegrationTest.java | 132 +++++++++++++++++++ .../integration/ConsumerIntegrationTest.java | 93 -------------- .../integration/ProducerIntegrationTest.java | 141 --------------------- .../storage/localstorage/FakeStorageRpc.java | 9 +- .../storage/localstorage/LocalStorageHelper.java | 10 +- .../google/storage/unit/ConsumerLocalTest.java | 54 +++----- .../google/storage/unit/ProducerLocalTest.java | 3 - 8 files changed, 164 insertions(+), 282 deletions(-) diff --git a/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java b/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java index b835aea..af4d477 100644 --- a/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java +++ b/components/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java @@ -98,7 +98,7 @@ public class GoogleCloudStorageProducer extends DefaultProducer { private void processFile(Storage storage, Exchange exchange) throws IOException, InvalidPayloadException { final String bucketName = determineBucketName(exchange); final String objectName = determineObjectName(exchange); - //LOG.info("processFile, bucketName={}, objectName={}", bucketName, objectName); + Map<String, String> objectMetadata = determineMetadata(exchange); File filePayload = null; @@ -327,7 +327,7 @@ public class GoogleCloudStorageProducer extends DefaultProducer { key = getConfiguration().getObjectName(); } if (key == null) { - throw new IllegalArgumentException("Google Cloud Storage onject name header missing."); + throw new IllegalArgumentException("Google Cloud Storage object name header missing."); } return key; } diff --git a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ComplexIntegrationTest.java b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ComplexIntegrationTest.java new file mode 100644 index 0000000..9470afc --- /dev/null +++ b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ComplexIntegrationTest.java @@ -0,0 +1,132 @@ +package org.apache.camel.component.google.storage.integration; + +import java.io.ByteArrayInputStream; +import java.util.List; + +import com.google.cloud.storage.Blob; +import org.apache.camel.EndpointInject; +import org.apache.camel.ProducerTemplate; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.google.storage.GoogleCloudStorageConstants; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.junit5.CamelTestSupport; +import org.junit.jupiter.api.Test; + +public class ComplexIntegrationTest extends CamelTestSupport { + + @EndpointInject + private ProducerTemplate template; + + @EndpointInject("mock:bucket1") + private MockEndpoint mockBucket1; + + @EndpointInject("mock:bucket2") + private MockEndpoint mockBucket2; + + @EndpointInject("mock:processed") + private MockEndpoint mockProcessed; + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + final int numberOfObjects = 3; + //final String serviceAccountKeyFile = "somefile.json"; + final String serviceAccountKeyFile = System.getenv("GOOGLE_APPLICATION_CREDENTIALS"); + final String bucket1 = "camel_test_bucket1"; + final String bucket2 = "camel_test_bucket2"; + final String bucket3 = "camel_test_processed_bucket"; + final String bucket4 = "camel_test_bucket4"; + + //upload 3 file into bucket1 + byte[] payload = "Camel rocks!".getBytes(); + ByteArrayInputStream bais = new ByteArrayInputStream(payload); + from("timer:timer1?repeatCount=" + numberOfObjects) + .process(exchange -> { + String filename = "file_" + ((int) (Math.random() * 10000)) + ".txt"; + exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, filename); + exchange.getIn().setBody(bais); + }) + .to("google-storage://" + bucket1 + "?serviceAccountKey=" + serviceAccountKeyFile) + .log("upload file object:${header.CamelGoogleCloudStorageObjectName}, body:${body}") + .to("mock:bucket1"); + + //poll from bucket1, moving processed into bucket_processed and deleting original + from("google-storage://" + bucket1 + "?serviceAccountKey=" + serviceAccountKeyFile + + "&moveAfterRead=true" + + "&destinationBucket=" + bucket3 + + "&autoCreateBucket=true" + + "&deleteAfterRead=true" + + "&includeBody=true") + .log("consuming: ${header.CamelGoogleCloudStorageBucketName}/${header.CamelGoogleCloudStorageObjectName}") + .to("direct:processed") + .to("mock:processed"); + + //upload these files to bucket2 + from("direct:processed") + .to("google-storage://" + bucket2 + "?serviceAccountKey=" + serviceAccountKeyFile) + .log("uploaded file object:${header.CamelGoogleCloudStorageObjectName}, body:${body}") + .process(exchange -> { + exchange.getIn().setHeader(GoogleCloudStorageConstants.DOWNLOAD_LINK_EXPIRATION_TIME, 86400000L); //1 day + }) + .to("google-storage://" + bucket2 + "?serviceAccountKey=" + serviceAccountKeyFile + + "&operation=createDownloadLink") + .log("URL for ${header.CamelGoogleCloudStorageBucketName}/${header.CamelGoogleCloudStorageObjectName} =${body}") + .to("mock:bucket2"); + ; + + //list all buckets + from("timer:timer1?repeatCount=1&fixedRate=true&period=10000") + .to("google-storage://" + bucket2 + "?serviceAccountKey=" + serviceAccountKeyFile + + "&operation=listBuckets") + .log("list buckets:${body}"); + + //list all object of the bucket2 and send result to direct:moreinfo and direct:copy + from("timer:timer1?repeatCount=1&fixedRate=true&period=10000") + .to("google-storage://" + bucket2 + "?serviceAccountKey=" + serviceAccountKeyFile + + "&operation=listObjects") + .log("list " + bucket2 + " objects body:${body}") + .split(bodyAs(List.class)) + .log("splitted: ${body}") + .multicast().to("direct:moreinfo", "direct:copy"); + + from("direct:moreinfo") + .process(exchange -> { + Blob blob = exchange.getIn().getBody(Blob.class); + String fileName = blob.getName(); + exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, fileName); + }) + .to("google-storage://" + bucket2 + "?serviceAccountKey=" + serviceAccountKeyFile + + "&operation=getObject") + .log("get object bucket:${header.CamelGoogleCloudStorageBucketName} object:${header.CamelGoogleCloudStorageObjectName}, body:${body}"); + + //copy object + from("direct:copy") + .process(exchange -> { + Blob blob = exchange.getIn().getBody(Blob.class); + String fileName = blob.getName(); + String copyFileName = "copy_" + fileName; + exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, fileName); + exchange.getIn().setHeader(GoogleCloudStorageConstants.DESTINATION_BUCKET_NAME, bucket4); + exchange.getIn().setHeader(GoogleCloudStorageConstants.DESTINATION_OBJECT_NAME, copyFileName); + }) + .to("google-storage://" + bucket2 + "?serviceAccountKey=" + serviceAccountKeyFile + + "&operation=copyObject") + .log("${body}"); + + } + }; + } + + @Test + public void sendIn() throws Exception { + mockBucket1.expectedMessageCount(3); + mockBucket2.expectedMessageCount(3); + mockProcessed.expectedMessageCount(3); + + Thread.sleep(10000); + assertMockEndpointsSatisfied(); + } + +} diff --git a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ConsumerIntegrationTest.java b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ConsumerIntegrationTest.java deleted file mode 100644 index 5d19daf..0000000 --- a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ConsumerIntegrationTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.apache.camel.component.google.storage.integration; - -import org.apache.camel.EndpointInject; -import org.apache.camel.ProducerTemplate; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.google.storage.GoogleCloudStorageConstants; -import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.test.junit5.CamelTestSupport; -import org.junit.jupiter.api.Test; - -public class ConsumerIntegrationTest extends CamelTestSupport { - - @EndpointInject - private ProducerTemplate template; - - @EndpointInject("mock:result") - private MockEndpoint result; - - @EndpointInject("mock:consumedObjects") - private MockEndpoint consumedObjects; - - private final String bucketName = "rafa_test_bucket"; - final String serviceAccountKey = "C:\\Users\\rmarc\\Desktop\\LABS\\GCP_Storage\\FunctionExampleProject-c59c4a999d8a.json"; - - @Override - protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { - @Override - public void configure() throws Exception { - - String endpoint = String.format("google-storage://%s?serviceAccountKey=%s&autoCreateBucket=true", bucketName, - serviceAccountKey); - //String endpoint = String.format("google-storage://%s?autoCreateBucket=true", bucketName); - - from("direct:putObject") - .startupOrder(1) - .to(endpoint) - .to("mock:result"); - - from("google-storage://myCamelBucket?" - + "moveAfterRead=true" - + "&destinationBucket=camelDestinationBucket" - + "&autoCreateBucket=true" - + "&deleteAfterRead=true" - + "&includeBody=true") - .startupOrder(2) - .log("consuming: ${header.CamelGoogleCloudStorageBucketName}/${header.CamelGoogleCloudStorageObjectName}, body=${body}") - .to("mock:consumedObjects"); - - } - }; - } - - @Test - public void sendIn() throws Exception { - result.expectedMessageCount(3); - consumedObjects.expectedMessageCount(3); - - //upload a files - - template.send("direct:putObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "test.txt"); - exchange.getIn().setBody("Test"); - }); - - template.send("direct:putObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "test1.txt"); - exchange.getIn().setBody("Test1"); - }); - - template.send("direct:putObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "test2.txt"); - exchange.getIn().setBody("Test2"); - }); - /* - Exchange listBucketsExchange = template.request("direct:listBucket", exchange -> { - // exchange.getIn().setHeader(GoogleCloudStorageConstants.BUCKET_NAME, "myBucket"); not needed - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.listBuckets); - }); - List<Bucket> bucketsList = listBucketsExchange.getMessage().getBody(List.class); - LOG.info("bucketsList {}", bucketsList ); - - - Exchange listObjectsExchange = template.request("direct:listObjects", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.listObjects); - }); - LOG.info("listObjectsExchange.body={}", listObjectsExchange.getMessage().getBody()); - */ - Thread.sleep(10000); - assertMockEndpointsSatisfied(); - } - -} diff --git a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ProducerIntegrationTest.java b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ProducerIntegrationTest.java deleted file mode 100644 index 2c76f0b..0000000 --- a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ProducerIntegrationTest.java +++ /dev/null @@ -1,141 +0,0 @@ -package org.apache.camel.component.google.storage.integration; - -import java.io.ByteArrayInputStream; -import java.util.List; - -import com.google.cloud.storage.Blob; -import com.google.cloud.storage.Bucket; -import org.apache.camel.EndpointInject; -import org.apache.camel.Exchange; -import org.apache.camel.ProducerTemplate; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.google.storage.GoogleCloudStorageComponentOperations; -import org.apache.camel.component.google.storage.GoogleCloudStorageConstants; -import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.test.junit5.CamelTestSupport; -import org.junit.jupiter.api.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -public class ProducerIntegrationTest extends CamelTestSupport { - - private static final Logger LOG = LoggerFactory.getLogger(ProducerIntegrationTest.class); - - @EndpointInject - private ProducerTemplate template; - - @EndpointInject("mock:result") - private MockEndpoint result; - - private final String bucketName = "rafa_test_bucket"; - final String serviceAccountKey = "C:\\Users\\rmarc\\Desktop\\LABS\\GCP_Storage\\FunctionExampleProject-c59c4a999d8a.json"; - - @Override - protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { - public void configure() { - - String endpoint = String.format("google-storage://%s?serviceAccountKey=%s&autoCreateBucket=true", bucketName, - serviceAccountKey); - //String endpoint = String.format("google-storage://%s?autoCreateBucket=true", bucketName); - - from("direct:addObject").to(endpoint); - from("direct:getObject").to(endpoint); - from("direct:listBucket").log("-> ${body}").to(endpoint).log("--> ${body}"); - from("direct:listObjects").to(endpoint).log("--> ${body}"); - from("direct:downloadLink").to(endpoint); - from("direct:deleteObject").to(endpoint); - from("direct:deleteBucket").to(endpoint).to("mock:result"); - - } - }; - } - - @SuppressWarnings("unchecked") - @Test - public void sendIn() throws Exception { - LOG.info("start sending something"); - result.expectedMessageCount(1); - - final String FILENAME_1 = "just_a_file.txt"; - - //upload a file - byte[] payload = "Hi, How are you ?".getBytes(); - ByteArrayInputStream bais = new ByteArrayInputStream(payload); - Exchange addObjectExchange = template.request("direct:addObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, FILENAME_1); - exchange.getIn().setHeader(GoogleCloudStorageConstants.CONTENT_ENCODING, "text/plain"); - exchange.getIn().setBody(bais); - }); - Blob addObject = addObjectExchange.getMessage().getBody(Blob.class); - LOG.info("addObject {}", addObject); - assertNotNull(addObject); - assertEquals(FILENAME_1, addObject.getName()); - - Exchange listBucketsExchange = template.request("direct:listBucket", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, - GoogleCloudStorageComponentOperations.listBuckets); - }); - List<Bucket> bucketsList = listBucketsExchange.getMessage().getBody(List.class); - LOG.info("bucketsList {}", bucketsList); - assertEquals(1, bucketsList.size()); - - Exchange listObjectsExchange = template.request("direct:listObjects", exchange -> { - // exchange.getIn().setHeader(GoogleCloudStorageConstants.BUCKET_NAME, "myBucket"); not needed - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, - GoogleCloudStorageComponentOperations.listObjects); - }); - LOG.info("listObjectsExchange.body={}", listObjectsExchange.getMessage().getBody()); - List<Blob> resp = listObjectsExchange.getMessage().getBody(List.class); - assertEquals(1, resp.size()); - assertEquals(FILENAME_1, resp.get(0).getName()); - /* - Exchange getObjectExchange = template.request("direct:getObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, - GoogleCloudStorageComponentOperations.getObject); - // exchange.getIn().setHeader(GoogleCloudStorageConstants.BUCKET_NAME, "myBucket"); not needed - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, FILENAME_1); - }); - Blob getObject = getObjectExchange.getMessage().getBody(Blob.class); - LOG.info("getObject: {}", getObject); - assertNotNull(getObject); - assertEquals(FILENAME_1, getObject.getName()); - - /* - //sign url - Exchange downloadLinkExchange = template.request( "direct:downloadLink", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.createDownloadLink); - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "readme.txt" ); - exchange.getIn().setHeader(GoogleCloudStorageConstants.DOWNLOAD_LINK_EXPIRATION_TIME, 86400000L); //1 day - }); - URL downloadLink = downloadLinkExchange.getMessage().getBody(URL.class); - LOG.info("downloadLink {}", downloadLink ); - assertNotNull( downloadLink ); - */ - /* - Exchange deleteObjectExchange = template.send("direct:deleteObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, - GoogleCloudStorageComponentOperations.deleteObject); - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, FILENAME_1); - }); - - boolean deleteObject = deleteObjectExchange.getMessage().getBody(Boolean.class).booleanValue(); - LOG.info("deleteObject {}", deleteObject); - assertTrue(deleteObject); - - Exchange deleteBucketExchange = template.send("direct:deleteBucket", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, - GoogleCloudStorageComponentOperations.deleteBucket); - }); - boolean deleteBucket = deleteBucketExchange.getMessage().getBody(Boolean.class).booleanValue(); - LOG.info("deleteBucket {}", deleteBucket); - assertTrue(deleteBucket); - - assertMockEndpointsSatisfied(); - */ - } - -} diff --git a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/FakeStorageRpc.java b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/FakeStorageRpc.java index 9a7cda6..b2908e1 100644 --- a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/FakeStorageRpc.java +++ b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/FakeStorageRpc.java @@ -28,6 +28,7 @@ import com.google.cloud.storage.testing.StorageRpcTestBase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +//this class has been extended from //https://github.com/googleapis/java-storage-nio/blob/master/google-cloud-nio/src/main/java/com/google/cloud/storage/contrib/nio/testing/FakeStorageRpc.java /** * A bare-bones in-memory implementation of StorageRpc, meant for testing. @@ -43,13 +44,13 @@ import org.slf4j.LoggerFactory; * <li>object delete * <li>list the contents of a bucket * <li>generations + * <li>NOW SUPPORTED bucket create + * <li>NOW SUPPORTED bucket get + * <li>NOW SUPPORTED bucket delete + * <li>NOW SUPPORTED list all buckets * </ul> * <li>Unsupported * <ul> - * <li>bucket create - * <li>bucket get - * <li>bucket delete - * <li>list all buckets * <li>file attributes * <li>patch * <li>continueRewrite diff --git a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/LocalStorageHelper.java b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/LocalStorageHelper.java index 9d1e827..fb28518 100644 --- a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/LocalStorageHelper.java +++ b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/LocalStorageHelper.java @@ -4,6 +4,8 @@ import com.google.cloud.spi.ServiceRpcFactory; import com.google.cloud.storage.StorageOptions; import com.google.cloud.storage.spi.v1.StorageRpc; +//this class has been extended from +//https://github.com/googleapis/java-storage-nio/blob/master/google-cloud-nio/src/main/java/com/google/cloud/storage/contrib/nio/testing/LocalStorageHelper.java /** * Utility to create an in-memory storage configuration for testing. Storage options can be obtained via the * {@link #getOptions()} method. Returned options will point to FakeStorageRpc. @@ -18,13 +20,13 @@ import com.google.cloud.storage.spi.v1.StorageRpc; * <li>object get * <li>object delete * <li>list the contents of a bucket + * <li>bucket create (now supported) + * <li>bucket get (now supported) + * <li>bucket delete (now supported) + * <li>list all buckets (now supported) * </ul> * <li>Unsupported operations * <ul> - * <li>bucket create - * <li>bucket get - * <li>bucket delete - * <li>list all buckets * <li>generations * <li>file attributes * <li>patch diff --git a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ConsumerLocalTest.java b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ConsumerLocalTest.java index b6b3c4f..184fedd 100644 --- a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ConsumerLocalTest.java +++ b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ConsumerLocalTest.java @@ -42,7 +42,7 @@ public class ConsumerLocalTest extends GoogleCloudStorageBaseTest { + "&deleteAfterRead=true" + "&includeBody=true") .startupOrder(2) - .log("consuming: ${header.CamelGoogleCloudStorageBucketName}/${header.CamelGoogleCloudStorageObjectName}, body=${body}") + //.log("consuming: ${header.CamelGoogleCloudStorageBucketName}/${header.CamelGoogleCloudStorageObjectName}, body=${body}") .to("mock:consumedObjects"); } @@ -51,41 +51,25 @@ public class ConsumerLocalTest extends GoogleCloudStorageBaseTest { @Test public void sendIn() throws Exception { - result.expectedMessageCount(3); - consumedObjects.expectedMessageCount(3); - - //upload a files - - template.send("direct:putObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "test.txt"); - exchange.getIn().setBody("Test"); - }); - - template.send("direct:putObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "test1.txt"); - exchange.getIn().setBody("Test1"); - }); - - template.send("direct:putObject", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "test2.txt"); - exchange.getIn().setBody("Test2"); - }); - /* - Exchange listBucketsExchange = template.request("direct:listBucket", exchange -> { - // exchange.getIn().setHeader(GoogleCloudStorageConstants.BUCKET_NAME, "myBucket"); not needed - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.listBuckets); - }); - List<Bucket> bucketsList = listBucketsExchange.getMessage().getBody(List.class); - LOG.info("bucketsList {}", bucketsList ); - - - Exchange listObjectsExchange = template.request("direct:listObjects", exchange -> { - exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.listObjects); - }); - LOG.info("listObjectsExchange.body={}", listObjectsExchange.getMessage().getBody()); - */ - Thread.sleep(10000); + + final int NUMBER_OF_FILES = 3; + + result.expectedMessageCount(NUMBER_OF_FILES); + consumedObjects.expectedMessageCount(NUMBER_OF_FILES); + + for (int i = 0; i < NUMBER_OF_FILES; i++) { + final String filename = String.format("file_%s.txt", i); + final String body = String.format("body_%s", i); + //upload a file + template.send("direct:putObject", exchange -> { + exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, filename); + exchange.getIn().setBody(body); + }); + } + + Thread.sleep(5000); assertMockEndpointsSatisfied(); + } } diff --git a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java index 591c633..1c0d731 100644 --- a/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java +++ b/components/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java @@ -69,7 +69,6 @@ public class ProducerLocalTest extends GoogleCloudStorageBaseTest { assertEquals(FILENAME_1, addObject.getName()); Exchange listBucketsExchange = template.request("direct:listBucket", exchange -> { - // exchange.getIn().setHeader(GoogleCloudStorageConstants.BUCKET_NAME, "myBucket"); not needed exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.listBuckets); }); @@ -78,7 +77,6 @@ public class ProducerLocalTest extends GoogleCloudStorageBaseTest { assertEquals(1, bucketsList.size()); Exchange listObjectsExchange = template.request("direct:listObjects", exchange -> { - // exchange.getIn().setHeader(GoogleCloudStorageConstants.BUCKET_NAME, "myBucket"); not needed exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.listObjects); }); @@ -90,7 +88,6 @@ public class ProducerLocalTest extends GoogleCloudStorageBaseTest { Exchange getObjectExchange = template.request("direct:getObject", exchange -> { exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION, GoogleCloudStorageComponentOperations.getObject); - // exchange.getIn().setHeader(GoogleCloudStorageConstants.BUCKET_NAME, "myBucket"); not needed exchange.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, FILENAME_1); }); Blob getObject = getObjectExchange.getMessage().getBody(Blob.class);