[twxproxy-ep commit] r59 - in trunk/twxbbs/src: main/java/org/twdata/twxbbs main/java/org/twdata/twxbbs/proxy main/jav...

1 view
Skip to first unread message

codesite...@google.com

unread,
Aug 28, 2008, 9:30:37 AM8/28/08
to twxp...@googlegroups.com
Author: donald.brown
Date: Thu Aug 28 06:30:18 2008
New Revision: 59

Modified:
trunk/twxbbs/src/main/java/org/twdata/twxbbs/Container.java

trunk/twxbbs/src/main/java/org/twdata/twxbbs/proxy/DefaultProxyManager.java
trunk/twxbbs/src/main/java/org/twdata/twxbbs/web/JettyWebManager.java
trunk/twxbbs/src/test/java/org/twdata/twxbbs/AppIntegrationTest.java

Log:
Added a shutdown event, added a new integration test that tests the speed
of the proxy under load
with and without a script


Modified: trunk/twxbbs/src/main/java/org/twdata/twxbbs/Container.java
==============================================================================
--- trunk/twxbbs/src/main/java/org/twdata/twxbbs/Container.java (original)
+++ trunk/twxbbs/src/main/java/org/twdata/twxbbs/Container.java Thu Aug 28
06:30:18 2008
@@ -89,6 +89,11 @@
}
}

+ public void stop() {
+ get(EventManager.class).broadcast(new ContainerStoppedEvent());
+ }
+
public static class ContainerInitializedEvent {}
+ public static class ContainerStoppedEvent {}

}

Modified:
trunk/twxbbs/src/main/java/org/twdata/twxbbs/proxy/DefaultProxyManager.java
==============================================================================
---
trunk/twxbbs/src/main/java/org/twdata/twxbbs/proxy/DefaultProxyManager.java
(original)
+++
trunk/twxbbs/src/main/java/org/twdata/twxbbs/proxy/DefaultProxyManager.java
Thu Aug 28 06:30:18 2008
@@ -4,6 +4,7 @@
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;
import org.twdata.twxbbs.GameRegistration;
+import org.twdata.twxbbs.Container;
import org.twdata.twxbbs.proxy.script.ScriptIoFilter;
import org.twdata.twxbbs.config.ConfigurationRefreshedEvent;
import org.twdata.twxbbs.config.Configuration;
@@ -75,6 +76,11 @@
throw new IllegalStateException("Proxy server hasn't been
configured yet");
}

+ }
+
+ @EventListener
+ public void shutdown(Container.ContainerStoppedEvent event) {
+ stop();
}

public void registerClient(String sessionToken, GameRegistration reg) {

Modified:
trunk/twxbbs/src/main/java/org/twdata/twxbbs/web/JettyWebManager.java
==============================================================================
--- trunk/twxbbs/src/main/java/org/twdata/twxbbs/web/JettyWebManager.java
(original)
+++ trunk/twxbbs/src/main/java/org/twdata/twxbbs/web/JettyWebManager.java
Thu Aug 28 06:30:18 2008
@@ -11,6 +11,7 @@
import org.twdata.twxbbs.event.EventListener;
import org.twdata.twxbbs.event.EventManager;
import org.twdata.twxbbs.web.template.TemplateGenerator;
+import org.twdata.twxbbs.Container;

import javax.servlet.Servlet;
import java.io.IOException;
@@ -93,6 +94,11 @@
throw new RuntimeException(e);
}
}
+ }
+
+ @EventListener
+ public void shutdown(Container.ContainerStoppedEvent event) {
+ stop();
}

public boolean hasStarted() {

Modified:
trunk/twxbbs/src/test/java/org/twdata/twxbbs/AppIntegrationTest.java
==============================================================================
--- trunk/twxbbs/src/test/java/org/twdata/twxbbs/AppIntegrationTest.java
(original)
+++ trunk/twxbbs/src/test/java/org/twdata/twxbbs/AppIntegrationTest.java
Thu Aug 28 06:30:18 2008
@@ -7,7 +7,6 @@
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
-import java.net.URL;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
@@ -21,6 +20,19 @@
*/
public class AppIntegrationTest extends TestCase {

+ private File baseDir;
+
+ @Override
+ public void setUp() {
+ File tmpDir = getTempDirectory();
+ baseDir = new File(tmpDir, "it-base");
+ baseDir.mkdir();
+ }
+
+ @Override
+ public void tearDown() throws IOException {
+ FileUtils.deleteDirectory(baseDir);
+ }
private File getTempDirectory() {
File tmpDir;
File targetDir = new File("target");
@@ -32,12 +44,28 @@
return tmpDir;
}

- public void testPushThroughData() throws Exception {
- /* Work in progress...need to find a way to shut down the app
- File tmpDir = getTempDirectory();
- final File baseDir = new File(tmpDir, "it-base");
- baseDir.mkdir();
+ public void testNothing() {}

+ /* Remove the underscore to run the tests via 'mvn clean test' */
+ public void _testRunAllTests() throws Exception {
+ new Container(new File(".")).stop();
+ runTests(false, false);
+ runTests(false, true);
+ runTests(true, true);
+ }
+
+ public void runTests(boolean includeScript, boolean runThroughProxy)
throws Exception {
+ long avgStart = System.currentTimeMillis();
+ for (int x=0; x<5; x++) {
+ pushThroughData(includeScript, runThroughProxy);
+ Thread.sleep(1000);
+ }
+ long avgEnd = System.currentTimeMillis();
+ System.out.println("--------- Push
in "+(((avgEnd-avgStart)-10000)/5)+" ms");
+
+ }
+
+ public void pushThroughData(boolean includeScript, final boolean
runThroughProxy) throws Exception {
FileUtils.writeStringToFile(new File(baseDir, "twxbbs.ini"),
"[Proxy]\n" +
"Port = 8023\n" +
@@ -48,16 +76,66 @@
"\n" +
"[Global]\n" +
"Setup = 1");
+ if (includeScript) {
+ File scripts = new File(baseDir, "scripts");
+ scripts.mkdir();
+ FileUtils.writeStringToFile(new File(scripts, "foo.js"),
+ "println('script start');\n" +
+ "player.setTextTrigger('foo','God');\n" +
+ "while (true) {\n" +
+ "player.pause();\n" +
+ //"println('god found'+player.matchedLine);\n"
+
+ "}");
+ }

- App.main(new String[]{baseDir.getAbsolutePath()});
- InputStream in = getClass().getResourceAsStream("/bible12.txt");
- ServerSocket server = new ServerSocket(2222);
- Socket socket = server.accept();
- IOUtils.copy(in, socket.getOutputStream());
- in.close();
- socket.close();
- server.close();
- */
+ Thread t = new Thread(new Runnable() {

+ public void run() {
+ ServerSocket server = null;
+ try {
+ server = new ServerSocket(2222);
+ Socket incomingSocket = server.accept();
+ byte[] buffer = new byte[1024];
+ int len = 0;
+ int lastLen = 0;
+ while ((len =
incomingSocket.getInputStream().read(buffer)) > 0) {
+ lastLen = len;
+ if (buffer[len-1] == -1) {
+ break;
+ }
+ }
+ //System.out.println("received data: "+new
String(buffer, 0, lastLen-1));
+ incomingSocket.close();
+ server.close();
+ } catch (IOException e) {
+ e.printStackTrace(); //To change body of catch
statement use File | Settings | File Templates.
+ }
+ }
+ });
+ t.start();
+ Container container = new Container(baseDir);
+ final int port = (runThroughProxy ? 8023 : 2222);
+ System.out.println("Sending data to port "+port);
+ Thread sendingThread = new Thread(new Runnable() {
+ public void run() {
+ Socket socket = null;
+ try {
+ InputStream in =
getClass().getResourceAsStream("/bible12.txt");
+ socket = new Socket("localhost", port);
+ Thread.sleep(1000);
+ IOUtils.copy(in, socket.getOutputStream());
+ socket.getOutputStream().write((byte)255);
+ socket.getOutputStream().flush();
+ //System.out.println("data sent");
+ } catch (IOException e) {
+ e.printStackTrace(); //To change body of catch
statement use File | Settings | File Templates.
+ } catch (InterruptedException e) {
+ e.printStackTrace(); //To change body of catch
statement use File | Settings | File Templates.
+ }
+ }
+ });
+ sendingThread.start();
+ t.join();
+ container.stop();
}
}

Reply all
Reply to author
Forward
0 new messages