package org.smartly.commons.network.socket.server;
import junit.framework.TestCase;
import org.smartly.commons.network.socket.client.Client;
import org.smartly.commons.network.socket.server.helpers.FooFilter;
import org.smartly.commons.network.socket.server.helpers.SampleFilter;
import org.smartly.commons.network.socket.server.helpers.ThreadClient;
import java.util.ResourceBundle;
public class TestServer extends TestCase {
static private int port;
static private String host;
static {
ResourceBundle resources = ResourceBundle.getBundle("org.smartly.commons.network.socket.server.TestServer");
port = Integer.parseInt(resources.getString("server.port"));
host = resources.getString("server.host");
}
private Server simpleSocketServer;
public void setUp() throws Exception {
simpleSocketServer = Server.startServer(port, new Class[]{FooFilter.class, SampleFilter.class});
simpleSocketServer.addFilter(FooFilter.class);
}
public void tearDown() {
simpleSocketServer.stopServer();
}
public void test1() throws Exception {
String testString = "Hello";
String response = Client.sendString(host, port, testString);
assertTrue(response.indexOf("Hello") > 0);
Client.sendString("Another String");
}
public void test2() throws Exception {
String testString = "Hello World\nHow are you?";
String response = Client.sendString(host, port, testString);
assertTrue(response.indexOf("Hello") > 0);
Client.sendString(host, port, "Another String");
}
public void test3() {
//Force error by starting another server on same port
Throwable ex = null;
try {
Server.startServer(port, null);
} catch (Throwable t) {
ex = t;
}
assertNotNull(ex);
System.out.println("Multiple instances not allowed: " + ex.getMessage());
}
public void test4() throws Exception {
Thread[] tasks = new Thread[50];
for (int i = 0; i < tasks.length; i++) {
tasks[i] = new Thread(new ThreadClient(host, port, i));
}
for (Thread task : tasks) {
task.start();
}
for (Thread task : tasks) {
task.join();
}
}
}