Repository: camel
Updated Branches:
  refs/heads/camel-2.15.x 11e795b91 -> 0c268d4a4


CAMEL-8887: Added unit test


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/73900189
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/73900189
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/73900189

Branch: refs/heads/camel-2.15.x
Commit: 73900189a25ed3f80fd8acc18f4eb2b9f7e8e3dc
Parents: 11e795b
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Aug 5 12:49:38 2015 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Aug 5 13:39:31 2015 +0200

----------------------------------------------------------------------
 .../component/file/GenericFileConsumer.java     | 25 +++---
 .../file/remote/FromFtpSedaDeleteFileTest.java  | 90 ++++++++++++++++++++
 .../remote/sftp/SftpFromSedaDeleteFileTest.java | 80 +++++++++++++++++
 3 files changed, 185 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/73900189/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
 
b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
index 00afddc..d867428 100644
--- 
a/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
+++ 
b/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
@@ -429,17 +429,22 @@ public abstract class GenericFileConsumer<T> extends 
ScheduledBatchPollingConsum
 
             log.debug("About to process file: {} using exchange: {}", target, 
exchange);
 
-            // process the exchange using the async consumer to support async 
routing engine
-            // which can be supported by this file consumer as all the done 
work is
-            // provided in the GenericFileOnCompletion
-            getAsyncProcessor().process(exchange, new AsyncCallback() {
-                public void done(boolean doneSync) {
-                    // noop
-                    if (log.isTraceEnabled()) {
-                        log.trace("Done processing file: {} {}", target, 
doneSync ? "synchronously" : "asynchronously");
+            if (endpoint.isSynchronous()) {
+                // process synchronously
+                getProcessor().process(exchange);
+            } else {
+                // process the exchange using the async consumer to support 
async routing engine
+                // which can be supported by this file consumer as all the 
done work is
+                // provided in the GenericFileOnCompletion
+                getAsyncProcessor().process(exchange, new AsyncCallback() {
+                    public void done(boolean doneSync) {
+                        // noop
+                        if (log.isTraceEnabled()) {
+                            log.trace("Done processing file: {} {}", target, 
doneSync ? "synchronously" : "asynchronously");
+                        }
                     }
-                }
-            });
+                });
+            }
 
         } catch (Exception e) {
             // remove file from the in progress list due to failure

http://git-wip-us.apache.org/repos/asf/camel/blob/73900189/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpSedaDeleteFileTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpSedaDeleteFileTest.java
 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpSedaDeleteFileTest.java
new file mode 100644
index 0000000..dfb8806
--- /dev/null
+++ 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpSedaDeleteFileTest.java
@@ -0,0 +1,90 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.file.remote;
+
+import java.io.File;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Producer;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit test to test delete option.
+ */
+public class FromFtpSedaDeleteFileTest extends FtpServerTestSupport {
+
+    protected String getFtpUrl() {
+        return "ftp://admin@localhost:"; + getPort() + 
"/deletefile?password=admin&binary=false&delete=true";
+    }
+
+    @Override
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        prepareFtpServer();
+    }
+    
+    @Test
+    public void testPollFileAndShouldBeDeleted() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        mock.expectedBodiesReceived("Hello World this file will be deleted");
+
+        mock.assertIsSatisfied();
+
+        Thread.sleep(500);
+
+        // assert the file is deleted
+        File file = new File(FTP_ROOT_DIR + "/deletefile/hello.txt");
+        assertFalse("The file should have been deleted", file.exists());
+    }
+
+    private void prepareFtpServer() throws Exception {
+        // prepares the FTP Server by creating a file on the server that we 
want to unit
+        // test that we can pool and store as a local file
+        Endpoint endpoint = context.getEndpoint(getFtpUrl());
+        Exchange exchange = endpoint.createExchange();
+        exchange.getIn().setBody("Hello World this file will be deleted");
+        exchange.getIn().setHeader(Exchange.FILE_NAME, "hello.txt");
+        Producer producer = endpoint.createProducer();
+        producer.start();
+        producer.process(exchange);
+        producer.stop();
+
+        // assert file is created
+        File file = new File(FTP_ROOT_DIR + "/deletefile/hello.txt");
+        assertTrue("The file should exists", file.exists());
+    }
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from(getFtpUrl()).to("seda:foo");
+
+                from("seda:foo")
+                    .delay(750)
+                    .log("${body}")
+                    .delay(750)
+                    .to("mock:result");
+            }
+        };
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/73900189/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpFromSedaDeleteFileTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpFromSedaDeleteFileTest.java
 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpFromSedaDeleteFileTest.java
new file mode 100644
index 0000000..5926a9e
--- /dev/null
+++ 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/SftpFromSedaDeleteFileTest.java
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.file.remote.sftp;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.commons.io.FileUtils;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit test to test delete option.
+ */
+public class SftpFromSedaDeleteFileTest extends SftpServerTestSupport {
+
+    protected String getFtpUrl() {
+        return "sftp://localhost:"; + getPort() + "/" + FTP_ROOT_DIR
+                + 
"?username=admin&knownHostsFile=./src/test/resources/known_hosts&privateKeyFile=./src/test/resources/id_rsa"
+                + 
"&privateKeyFilePassphrase=secret&delay=500&disconnect=false&delete=true";
+    }
+
+    @Override
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        createSampleFile();
+    }
+    
+    @Test
+    public void testPollFileAndShouldBeDeleted() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        mock.expectedBodiesReceived("Hello World this file will be deleted");
+
+        mock.assertIsSatisfied();
+
+        Thread.sleep(500);
+
+        // assert the file is deleted
+        File file = new File(FTP_ROOT_DIR + "/hello.txt");
+        assertFalse("The file should have been deleted", file.exists());
+    }
+
+    private void createSampleFile() throws IOException {
+        File file = new File(FTP_ROOT_DIR + "/" + "foo.txt");
+
+        FileUtils.write(file, "Hello World this file will be deleted");
+    }
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from(getFtpUrl()).to("seda:foo");
+
+                from("seda:foo")
+                        .delay(750)
+                        .log("${body}")
+                        .delay(750)
+                        .to("mock:result");
+            }
+        };
+    }
+}
\ No newline at end of file

Reply via email to