Author: ngn
Date: Wed Mar 23 08:16:09 2011
New Revision: 1084501
URL: http://svn.apache.org/viewvc?rev=1084501&view=rev
Log:
Add integration test for SOCKS5 direct connections (VYSPER-276)
Added:
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java
- copied, changed from r1084488,
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Runner.java
Removed:
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Runner.java
Modified:
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/resources/log4j.properties
Copied:
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java
(from r1084488,
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Runner.java)
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java?p2=mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java&p1=mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Runner.java&r1=1084488&r2=1084501&rev=1084501&view=diff
==============================================================================
---
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Runner.java
(original)
+++
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java
Wed Mar 23 08:16:09 2011
@@ -20,8 +20,10 @@
package org.apache.vysper.xmpp.extension.xep0065_socks;
import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
@@ -50,92 +52,109 @@ import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
-
/**
* Integration test for SOCKS5 mediated connections
*
+ * This test requires that "vysper.org" and "socks.vysper.org" resolves to
127.0.0.1
+ * and is therefore disabled by default.
+ *
+ * On Linux/OS X, add the following to /etc/hosts:
+ * 127.0.0.1 vysper.org
+ * 127.0.0.1 socks.vysper.org
+ *
* @author The Apache MINA Project ([email protected])
*/
-public class Runner {
+@Ignore("Requires host resolution configuration, see comment")
+public class Socks5IntegrationTest {
-
private static final String CHARSET = "ASCII";
- private static final String HELLO_WORLD = "hello world";
+ private static final String TEST_DATA = "hello world";
private XMPPServer server;
-
- private XMPPConnection requestor;
+ private XMPPConnection requestor;
private XMPPConnection target;
-
+
@Before
public void before() throws Exception {
server = startServer();
- SmackConfiguration.setLocalSocks5ProxyEnabled(false);
requestor = connectClient("[email protected]");
-
target = connectClient("[email protected]");
}
-
-
- /*
- * This test requires that "vysper.org" and "socks.vysper.org" resolves to
127.0.0.1
- * and is therefore disabled by default.
- *
- * On Linux/OS X, add the following to /etc/hosts:
- * 127.0.0.1 vysper.org
- * 127.0.0.1 socks.vysper.org
- */
+
@Test
- @Ignore("Requires host resolution configuration, see comment")
- public void testTransfer() throws Exception {
- final LinkedBlockingQueue<String> queue = new
LinkedBlockingQueue<String>();
-
+ public void medidiatedConnectionTransfer() throws Exception {
+ // adding support for mediated connections
+ server.addModule(new Socks5Module("socks"));
+
+ // disabling direct connections
+ SmackConfiguration.setLocalSocks5ProxyEnabled(false);
+
+ assertTransfer();
+ }
+
+ @Test
+ public void directConnectionTransfer() throws Exception {
+ server.addModule(new Socks5Module("socks"));
+
+ assertTransfer();
+ }
+
+ private void assertTransfer() throws InterruptedException, XMPPException,
IOException, UnsupportedEncodingException {
+ LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>();
+
Socks5BytestreamManager mng2 =
Socks5BytestreamManager.getBytestreamManager(target);
- mng2.addIncomingBytestreamListener(new BytestreamListener() {
- public void incomingBytestreamRequest(BytestreamRequest request) {
- BytestreamSession session;
- try {
- session = request.accept();
-
- byte[] b = new byte[HELLO_WORLD.getBytes(CHARSET).length];
- InputStream in = session.getInputStream();
- in.read(b);
- in.close();
-
- queue.put(new String(b));
- } catch (Exception e) {
- Assert.fail(e.getMessage());
- }
- }
- });
-
+ mng2.addIncomingBytestreamListener(new TestByteStreamListener(queue));
+
Thread.sleep(2000);
System.out.println("##################");
System.out.println("Starting SOCKS5 transfer");
System.out.println("##################");
-
+
String targetJid =
requestor.getRoster().getPresence("[email protected]").getFrom();
-
+
Socks5BytestreamManager mng1 =
Socks5BytestreamManager.getBytestreamManager(requestor);
Socks5BytestreamSession session = mng1.establishSession(targetJid);
OutputStream out = session.getOutputStream();
- out.write(HELLO_WORLD.getBytes(CHARSET));
+ out.write(TEST_DATA.getBytes(CHARSET));
out.flush();
out.close();
-
- Assert.assertEquals(HELLO_WORLD, queue.poll(10000,
TimeUnit.MILLISECONDS));
+
+ Assert.assertEquals(TEST_DATA, queue.poll(10000,
TimeUnit.MILLISECONDS));
}
+ private final class TestByteStreamListener implements BytestreamListener {
+ private final LinkedBlockingQueue<String> queue;
+ private TestByteStreamListener(LinkedBlockingQueue<String> queue) {
+ this.queue = queue;
+ }
+
+ public void incomingBytestreamRequest(BytestreamRequest request) {
+ BytestreamSession session;
+ try {
+ session = request.accept();
+
+ byte[] b = new byte[TEST_DATA.getBytes(CHARSET).length];
+ InputStream in = session.getInputStream();
+ in.read(b);
+ in.close();
+
+ queue.put(new String(b));
+ } catch (Exception e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+ }
+
@After
public void after() {
requestor.disconnect();
target.disconnect();
-
+
server.stop();
}
-
+
private XMPPConnection connectClient(String username) throws XMPPException
{
ConnectionConfiguration config1 = new
ConnectionConfiguration("vysper.org", 5222);
XMPPConnection conn1 = new XMPPConnection(config1);
@@ -154,22 +173,21 @@ public class Runner {
accountManagement.addUser(user1, "password");
Entity user2 = EntityImpl.parse("[email protected]");
accountManagement.addUser(user2, "password");
-
+
XMPPServer server = new XMPPServer("vysper.org");
server.addEndpoint(new TCPEndpoint());
server.setStorageProviderRegistry(providerRegistry);
server.setTLSCertificateInfo(new
File("src/test/resources/bogus_mina_tls.cert"), "boguspw");
-
+
server.start();
System.out.println("vysper server is running...");
- RosterManager rosterManager = (RosterManager)
server.getServerRuntimeContext().getStorageProvider(RosterManager.class);
+ RosterManager rosterManager = (RosterManager)
server.getServerRuntimeContext().getStorageProvider(
+ RosterManager.class);
rosterManager.addContact(user1, new RosterItem(user2,
SubscriptionType.BOTH));
rosterManager.addContact(user2, new RosterItem(user1,
SubscriptionType.BOTH));
-
- server.addModule(new Socks5Module("socks"));
-
+
return server;
}
-
+
}
Modified:
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/resources/log4j.properties
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0065-socks/src/test/resources/log4j.properties?rev=1084501&r1=1084500&r2=1084501&view=diff
==============================================================================
---
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/resources/log4j.properties
(original)
+++
mina/vysper/trunk/server/extensions/xep0065-socks/src/test/resources/log4j.properties
Wed Mar 23 08:16:09 2011
@@ -19,8 +19,8 @@ log4j.rootLogger=info, C
log4j.logger.org.apache.vysper.mina.XmppIoHandlerAdapter=WARN,C
log4j.logger.org.apache.mina.filter.executor.ExecutorFilter=WARN,C
-log4j.logger.org.apache.http=DEBUG
-
+log4j.logger.stanza.server=DEBUG,C
+log4j.logger.stanza.client=DEBUG,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.layout=org.apache.log4j.PatternLayout