package net.jsunit;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import net.jsunit.configuration.DummyConfigurationSource;
import net.jsunit.configuration.ServerConfiguration;
import net.jsunit.configuration.ServerType;
import net.jsunit.configuration.StubConfigurationSource;
import org.jdom.Document;
public class DistributedTestSuiteBuilderTest extends TestCase {
private DistributedTestSuiteBuilder builder;
protected void setUp() throws Exception {
super.setUp();
DummyConfigurationSource originalSource = new DummyConfigurationSource();
MockRemoteServerHitter mockHitter = new MockRemoteServerHitter();
originalSource.setNeeds3rdRemoteMachineURL();
mockHitter.urlToDocument.put(DummyConfigurationSource.REMOTE_URL_1 + "/config", remoteConfiguration1XmlDocument());
mockHitter.urlToDocument.put(DummyConfigurationSource.REMOTE_URL_2 + "/config", remoteConfiguration2XmlDocument());
mockHitter.urlToDocument.put(DummyConfigurationSource.REMOTE_URL_3 + "/config", remoteConfiguration3XmlDocument());
builder = new DistributedTestSuiteBuilder(originalSource, mockHitter);
}
public void testBuildSuite() throws Exception {
TestSuite aSuite = new TestSuite();
builder.addTestsTo(aSuite);
assertEquals(3, builder.getRemoteMachineURLCount());
assertEquals(5, builder.getBrowserCount());
assertEquals("JsUnit Tests (3 machines, 5 direct browsers)", aSuite.getName());
assertEquals(3, aSuite.testCount());
DistributedTest testForURL3 = (DistributedTest) aSuite.testAt(0);
assertEquals("his\u00B7machine\u00B7com:7070 - aggregate server with 2 remote machine(s)", testForURL3.getName());
TestSuite suiteForURL1 = (TestSuite) aSuite.testAt(1);
assertEquals("my\u00B7machine\u00B7com:8080 - server with 2 browser(s)", suiteForURL1.getName());
assertEquals(2, suiteForURL1.testCount());
DistributedTest testForBrowser1OnURL1 = (DistributedTest) suiteForURL1.testAt(0);
DistributedTest testForBrowser2OnURL1 = (DistributedTest) suiteForURL1.testAt(1);
assertEquals("browser1.exe", testForBrowser1OnURL1.getName());
assertEquals("browser2.exe", testForBrowser2OnURL1.getName());
TestSuite suiteForURL2 = (TestSuite) aSuite.testAt(2);
assertEquals("your\u00B7machine\u00B7com:9090 - server with 3 browser(s)", suiteForURL2.getName());
assertEquals(3, suiteForURL2.testCount());
DistributedTest testForBrowser3OnURL2 = (DistributedTest) suiteForURL2.testAt(0);
DistributedTest testForBrowser4OnURL2 = (DistributedTest) suiteForURL2.testAt(1);
DistributedTest testForBrowser5OnURL2 = (DistributedTest) suiteForURL2.testAt(2);
assertEquals("browser3.exe", testForBrowser3OnURL2.getName());
assertEquals("browser4.exe", testForBrowser4OnURL2.getName());
assertEquals("browser5.exe", testForBrowser5OnURL2.getName());
}
private Document remoteConfiguration1XmlDocument() {
ServerConfiguration configuration = new ServerConfiguration(new StubConfigurationSource() {
public String browserFileNames() {
return "browser1.exe,browser2.exe";
}
});
return new Document(configuration.asXml());
}
private Document remoteConfiguration2XmlDocument() {
ServerConfiguration configuration = new ServerConfiguration(new StubConfigurationSource() {
public String browserFileNames() {
return "browser3.exe,browser4.exe,browser5.exe";
}
});
return new Document(configuration.asXml());
}
private Document remoteConfiguration3XmlDocument() {
ServerConfiguration configuration = new ServerConfiguration(new StubConfigurationSource() {
public String remoteMachineURLs() {
return "http://machine4:6060/jsunit,http://machine5:5050/jsunit";
}
}) {
public ServerType getServerType() {
return ServerType.AGGREGATE;
}
};
return new Document(configuration.asXml());
}
}