You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/02/17 06:24:45 UTC

[camel] 16/31: CAMEL-15964 create camel-google-storage component

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 <ma...@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);