package net.jsunit;
import net.jsunit.model.Browser;
import net.jsunit.model.BrowserResult;
import net.jsunit.utility.XmlUtility;
public class TestRunNotifierServer implements TestRunListener {
public static final String TEST_RUN_FINISHED = "testRunFinished";
public static final String TEST_RUN_STARTED = "testRunStarted";
public static final String BROWSER_TEST_RUN_FINISHED = "browserTestRunFinished";
public static final String BROWSER_TEST_RUN_STARTED = "browserTestRunStarted";
public static final String END_XML = "endXml";
private ServerSideConnection serverSideConnection;
public TestRunNotifierServer(BrowserTestRunner runner, int port) {
serverSideConnection = new ServerSideConnection(new StopMessageReceiver(runner), port);
}
public void browserTestRunStarted(Browser browser) {
serverSideConnection.sendMessage(BROWSER_TEST_RUN_STARTED);
serverSideConnection.sendMessage(String.valueOf(browser.getId()));
}
public void browserTestRunFinished(Browser browser, BrowserResult result) {
serverSideConnection.sendMessage(BROWSER_TEST_RUN_FINISHED);
serverSideConnection.sendMessage(String.valueOf(browser.getId()));
serverSideConnection.sendMessage(XmlUtility.asString(result.asXmlDocument()));
serverSideConnection.sendMessage(END_XML);
}
public void testRunStarted() {
serverSideConnection.connect();
serverSideConnection.sendMessage(TEST_RUN_STARTED);
}
public void testRunFinished() {
serverSideConnection.sendMessage(TEST_RUN_FINISHED);
serverSideConnection.shutDown();
}
public boolean isReady() {
return serverSideConnection.isConnected();
}
static class StopMessageReceiver implements MessageReceiver {
private final BrowserTestRunner runner;
public StopMessageReceiver(BrowserTestRunner runner) {
this.runner = runner;
}
public void messageReceived(String message) {
if ("stop".equals(message)) {
runner.logStatus("Stopping Test Run");
runner.dispose();
}
}
}
}