You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2012/05/21 16:35:41 UTC

svn commit: r1341048 - in /mina/sshd/trunk/sshd-core/src/test: java/org/apache/sshd/PortForwardingTest.java resources/log4j.properties

Author: gnodet
Date: Mon May 21 14:35:40 2012
New Revision: 1341048

URL: http://svn.apache.org/viewvc?rev=1341048&view=rev
Log:
Add [SSHD-85] unit test (disabled by default though it seems to work reliably)

Modified:
    mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
    mina/sshd/trunk/sshd-core/src/test/resources/log4j.properties

Modified: mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java?rev=1341048&r1=1341047&r2=1341048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java (original)
+++ mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java Mon May 21 14:35:40 2012
@@ -18,16 +18,24 @@
  */
 package org.apache.sshd;
 
-import java.io.*;
+import java.io.IOException;
 import java.lang.reflect.Field;
-import java.net.*;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.URL;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
 
-import com.jcraft.jsch.*;
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Logger;
+import com.jcraft.jsch.Session;
+import com.jcraft.jsch.UserInfo;
 import org.apache.commons.httpclient.HostConfiguration;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpVersion;
@@ -39,8 +47,8 @@ import org.apache.mina.core.service.IoHa
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
-import org.apache.sshd.util.BogusPasswordAuthenticator;
 import org.apache.sshd.util.BogusForwardingFilter;
+import org.apache.sshd.util.BogusPasswordAuthenticator;
 import org.apache.sshd.util.EchoShellFactory;
 import org.junit.After;
 import org.junit.Assert;
@@ -199,6 +207,81 @@ public class PortForwardingTest {
         session.delPortForwardingR(forwardedPort);
     }
 
+    @Test
+    @Ignore
+    public void testRemoteForwardingPayload() throws Exception {
+        final int NUM_ITERATIONS = 100;
+        final String PAYLOAD = "This is significantly longer Test Data. This is significantly "+
+                "longer Test Data. This is significantly longer Test Data. This is significantly "+
+                "longer Test Data. This is significantly longer Test Data. This is significantly "+
+                "longer Test Data. This is significantly longer Test Data. This is significantly "+
+                "longer Test Data. This is significantly longer Test Data. This is significantly "+
+                "longer Test Data. ";
+        Session session = createSession();
+        final ServerSocket ss = new ServerSocket(0);
+        int forwardedPort = ss.getLocalPort();
+        int sinkPort = getFreePort();
+        session.setPortForwardingR(sinkPort, "localhost", forwardedPort);
+        final boolean started[] = new boolean[1];
+        started[0] = false;
+        final AtomicInteger conCount = new AtomicInteger(0);
+
+        new Thread() {
+            public void run() {
+                started[0] = true;
+                try {
+                    for (int i = 0; i < NUM_ITERATIONS; ++i) {
+                        Socket s = ss.accept();
+                        conCount.incrementAndGet();
+                        s.getOutputStream().write(PAYLOAD.getBytes());
+                        s.getOutputStream().flush();
+                        s.close();
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }.start();
+        Thread.sleep(50);
+        Assert.assertTrue("Server not started", started[0]);
+
+        final boolean lenOK[] = new boolean[NUM_ITERATIONS];
+        final boolean dataOK[] = new boolean[NUM_ITERATIONS];
+        for ( int i = 0; i < NUM_ITERATIONS; i++) {
+            final int ii = i;
+            Socket s = null;
+            try {
+                s = new Socket("localhost", sinkPort);
+                byte b1[] = new byte[PAYLOAD.length() / 2];
+                byte b2[] = new byte[PAYLOAD.length()];
+                int read1 = s.getInputStream().read(b1);
+                Thread.sleep(50);
+                int read2 = s.getInputStream().read(b2);
+                lenOK[ii] = PAYLOAD.length() == read1 + read2;
+                dataOK[ii] = PAYLOAD.equals(new String(b1, 0, read1) + new String(b2, 0, read2));
+                if (!lenOK[ii] || !dataOK[ii] ) {
+                    throw new Exception("Bad data");
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                if (s != null) {
+                    s.close();
+                }
+            }
+        }
+        int ok = 0;
+        for (int i = 0; i < NUM_ITERATIONS; i++) {
+            ok += lenOK[i] ? 1 : 0;
+        }
+        Thread.sleep(50);
+        for (int i = 0; i < NUM_ITERATIONS; i++) {
+            Assert.assertTrue(lenOK[i]);
+            Assert.assertTrue(dataOK[i]);
+        }
+        session.delPortForwardingR(forwardedPort);
+    }
+
     /**
      * Close the socket inside this JSCH session. Use reflection to find it and
      * just close it.

Modified: mina/sshd/trunk/sshd-core/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/test/resources/log4j.properties?rev=1341048&r1=1341047&r2=1341048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/test/resources/log4j.properties (original)
+++ mina/sshd/trunk/sshd-core/src/test/resources/log4j.properties Mon May 21 14:35:40 2012
@@ -21,7 +21,7 @@
 #
 # The logging properties used during tests..
 #
-log4j.rootLogger=TRACE, stdout
+log4j.rootLogger=INFO, stdout
 #log4j.logger.org.apache.mina=TRACE
 #log4j.logger.org.apache.sshd.common.channel.Window=DEBUG