package net.jsunit;
import junit.framework.TestCase;
import net.jsunit.model.Browser;
import net.jsunit.model.BrowserResult;
import net.jsunit.model.TestRunResult;
import net.jsunit.utility.SystemUtility;
import org.jdom.Element;
import java.util.Arrays;
import java.util.List;
public class TestRunManagerTest extends TestCase {
public void testDisposedDuringTestRun() throws InterruptedException {
KillableBrowserTestRunner runner = new KillableBrowserTestRunner();
final TestRunManager manager = new TestRunManager(runner);
Thread thread = new Thread() {
public void run() {
manager.runTests();
}
};
thread.start();
while (!runner.startTestRunCalled)
Thread.sleep(10);
runner.isAlive = false;
thread.join();
assertTrue(runner.finishTestRunCalled);
}
public void testOverrideUrl() {
MockBrowserTestRunner runner = new MockBrowserTestRunner();
runner.hasReceivedResult = true;
String overrideUrl = "http://my.override.url:8080/jsunit/testRunner.html?someParam=someValue&someOtherParam=someOtherValue";
TestRunManager manager = new TestRunManager(runner, overrideUrl);
manager.runTests();
assertEquals(2, runner.launchSpecs.size());
BrowserLaunchSpecification spec1 = runner.launchSpecs.get(0);
assertTrue(spec1.hasOverrideUrl());
assertEquals(overrideUrl, spec1.getOverrideUrl());
BrowserLaunchSpecification spec2 = runner.launchSpecs.get(1);
assertTrue(spec2.hasOverrideUrl());
assertEquals(overrideUrl, spec2.getOverrideUrl());
}
public void testNoOverrideUrl() {
MockBrowserTestRunner runner = new MockBrowserTestRunner();
runner.hasReceivedResult = true;
TestRunManager manager = new TestRunManager(runner, null);
manager.runTests();
assertEquals(2, runner.launchSpecs.size());
assertFalse(runner.launchSpecs.get(0).hasOverrideUrl());
assertFalse(runner.launchSpecs.get(1).hasOverrideUrl());
}
public void testPropertiesSet() throws Exception {
MockBrowserTestRunner runner = new MockBrowserTestRunner();
runner.hasReceivedResult = true;
TestRunManager manager = new TestRunManager(runner, null);
manager.runTests();
TestRunResult testRunResult = manager.getTestRunResult();
assertEquals(SystemUtility.osString(), testRunResult.getOsString());
assertEquals(SystemUtility.ipAddress(), testRunResult.getIpAddress());
assertEquals(SystemUtility.hostname(), testRunResult.getHostname());
}
static class SuccessfulBrowserTestRunner implements BrowserTestRunner {
public List<Browser> getBrowsers() {
return Arrays.asList(new Browser("browser1.exe", 0), new Browser("browser2.exe", 1));
}
public long launchBrowserTestRun(BrowserLaunchSpecification launchSpec) {
return 0;
}
public boolean hasReceivedResultSince(long launchTime) {
return true;
}
public BrowserResult lastResult() {
return new DummyBrowserResult(true, 0, 0);
}
public void accept(BrowserResult result) {
}
public void dispose() {
}
public BrowserResult findResultWithId(String id, int browserId) {
return null;
}
public Element asXml() {
return null;
}
public void startTestRun() {
}
public void finishTestRun() {
}
public void logStatus(String message) {
}
public int timeoutSeconds() {
return 0;
}
public boolean isAlive() {
return true;
}
}
static class FailingBrowserTestRunner implements BrowserTestRunner {
private Browser currentBrowser;
public List<Browser> getBrowsers() {
return Arrays.asList(
new Browser("browser1.exe", 0),
new Browser("browser2.exe", 1),
new Browser("browser3.exe", 2)
);
}
public long launchBrowserTestRun(BrowserLaunchSpecification launchSpec) {
currentBrowser = launchSpec.getBrowser();
return 0;
}
public boolean hasReceivedResultSince(long launchTime) {
return true;
}
public BrowserResult lastResult() {
if (currentBrowser.hasId(0))
return new DummyBrowserResult(false, 0, 1);
else if (currentBrowser.hasId(1))
return new DummyBrowserResult(false, 1, 0);
else
return new DummyBrowserResult(false, 2, 3);
}
public void accept(BrowserResult result) {
}
public void dispose() {
}
public BrowserResult findResultWithId(String id, int browserId) {
return null;
}
public Element asXml() {
return null;
}
public void startTestRun() {
}
public void finishTestRun() {
}
public void logStatus(String message) {
}
public int timeoutSeconds() {
return 0;
}
public boolean isAlive() {
return true;
}
}
static class KillableBrowserTestRunner implements BrowserTestRunner {
private boolean isAlive;
private boolean startTestRunCalled;
private boolean finishTestRunCalled;
public void startTestRun() {
startTestRunCalled = true;
}
public void finishTestRun() {
finishTestRunCalled = true;
}
public long launchBrowserTestRun(BrowserLaunchSpecification launchSpec) {
return 0;
}
public void accept(BrowserResult result) {
}
public boolean hasReceivedResultSince(long launchTime) {
return false;
}
public BrowserResult lastResult() {
return null;
}
public void dispose() {
}
public BrowserResult findResultWithId(String id, int browserId) {
return null;
}
public void logStatus(String message) {
}
public List<Browser> getBrowsers() {
return Arrays.asList(new Browser("browser1.exe", 0));
}
public int timeoutSeconds() {
return 0;
}
public boolean isAlive() {
return isAlive;
}
public Element asXml() {
return null;
}
}
}