Reconnect when connection fails
[jFCPlib.git] / src / test / java / net / pterodactylus / fcp / quelaton / DefaultFcpClientTest.java
index 47b787d..bfb2b78 100644 (file)
@@ -33,6 +33,7 @@ import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeDiagnosingMatcher;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Test;
 
 /**
@@ -267,6 +268,32 @@ public class DefaultFcpClientTest {
        }
 
        @Test
+       public void defaultFcpClientCanReconnectAfterConnectionHasBeenClosed()
+       throws InterruptedException, ExecutionException, IOException {
+               Future<FcpKeyPair> keyPair = fcpClient.generateKeypair().execute();
+               connectNode();
+               fcpServer.collectUntil(is("EndMessage"));
+               fcpServer.close();
+               try {
+                       keyPair.get();
+                       Assert.fail();
+               } catch (ExecutionException e) {
+               }
+               keyPair = fcpClient.generateKeypair().execute();
+               connectNode();
+               List<String> lines = fcpServer.collectUntil(is("EndMessage"));
+               String identifier = extractIdentifier(lines);
+               fcpServer.writeLine(
+                       "SSKKeypair",
+                       "InsertURI=" + INSERT_URI + "",
+                       "RequestURI=" + REQUEST_URI + "",
+                       "Identifier=" + identifier,
+                       "EndMessage"
+               );
+               keyPair.get();
+       }
+
+       @Test
        public void clientGetWithIgnoreDataStoreSettingSendsCorrectCommands()
        throws InterruptedException, ExecutionException, IOException {
                fcpClient.clientGet().ignoreDataStore().uri("KSK@foo.txt").execute();