This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new a149852  (choress) camel-ftp: fix flaky 
FtpReconnectAttemptServerStoppedIT test
a149852 is described below

commit a149852adc9fd6a8eb71d39edc1ff4736c881975
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Tue Oct 26 16:24:35 2021 +0200

    (choress) camel-ftp: fix flaky FtpReconnectAttemptServerStoppedIT test
---
 .../FtpReconnectAttemptServerStoppedIT.java           | 19 ++++++++++---------
 .../file/remote/services/FtpEmbeddedService.java      | 12 ++++++++++++
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpReconnectAttemptServerStoppedIT.java
 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpReconnectAttemptServerStoppedIT.java
index 60c0631..30aa502 100644
--- 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpReconnectAttemptServerStoppedIT.java
+++ 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpReconnectAttemptServerStoppedIT.java
@@ -19,19 +19,25 @@ package org.apache.camel.component.file.remote.integration;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.awaitility.Awaitility;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
 public class FtpReconnectAttemptServerStoppedIT extends FtpServerTestSupport {
 
     private String getFtpUrl() {
         return "ftp://admin@localhost:{{ftp.server.port}}";
-               + 
"/reconnect?password=admin&maximumReconnectAttempts=2&reconnectDelay=500&delete=true";
+               + 
"/reconnect?password=admin&maximumReconnectAttempts=5&reconnectDelay=1000&delete=true";
     }
 
     @Test
+    @Timeout(15)
     public void testFromFileToFtp() throws Exception {
-        // suspect serve so we cannot connect
-        service.suspend();
+        // disconnect all the connections so that they have to reconnect again
+        service.disconnectAllSessions();
+
+        Awaitility.await().until(() -> service.countConnections() == 0);
 
         // put a file in the folder (do not use ftp as we then will connect)
         template.sendBodyAndHeader("file:{{ftp.root.dir}}/reconnect", "Hello 
World", Exchange.FILE_NAME,
@@ -40,9 +46,6 @@ public class FtpReconnectAttemptServerStoppedIT extends 
FtpServerTestSupport {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(0);
 
-        // let it run a little
-        Thread.sleep(3000);
-
         assertMockEndpointsSatisfied();
 
         mock.reset();
@@ -51,10 +54,8 @@ public class FtpReconnectAttemptServerStoppedIT extends 
FtpServerTestSupport {
         // resume the server so we can connect
         service.resume();
 
-        // wait a bit so that the server resumes properly
-        Thread.sleep(3000);
-
         assertMockEndpointsSatisfied();
+        Awaitility.await().untilAsserted(() -> Assertions.assertEquals(1, 
service.countConnections()));
     }
 
     @Override
diff --git 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/FtpEmbeddedService.java
 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/FtpEmbeddedService.java
index d1f8277..5953a37 100644
--- 
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/FtpEmbeddedService.java
+++ 
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/services/FtpEmbeddedService.java
@@ -179,4 +179,16 @@ public class FtpEmbeddedService extends 
AbstractTestService implements FtpServic
     public int getPort() {
         return port;
     }
+
+    public int countConnections() {
+        int count = 0;
+
+        // stop all listeners
+        Map<String, Listener> listeners = ((DefaultFtpServer) 
ftpServer).getListeners();
+        for (Listener listener : listeners.values()) {
+            count += listener.getActiveSessions().size();
+        }
+
+        return count;
+    }
 }

Reply via email to