blob: d17a90e104a2c20f7b33bb717bc788ff1311c34c [file] [log] [blame]
package test.thread;
import org.testng.Assert;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
import org.testng.annotations.Test;
import test.SimpleBaseTest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class ParallelSuiteTest extends SimpleBaseTest {
@Test
public void suitesShouldRunInParallel1() {
runTest(5, 2, 2, null, Arrays.asList(
getPathToResource("suite-parallel-1.xml"),
getPathToResource("suite-parallel-2.xml")));
}
@Test
public void suitesShouldRunInParallel2() {
runTest(5, 3, 3, null, Arrays.asList(
getPathToResource("suite-parallel-0.xml")));
}
@Test(description = "Number of threads (2) is less than number of suites (3)")
public void suitesShouldRunInParallel3() {
final int SUITE_THREAD_POOL_SIZE = 2;
TestListenerAdapter tla = new TestListenerAdapter();
TestNG tng = create();
tng.setSuiteThreadPoolSize(SUITE_THREAD_POOL_SIZE);
tng.setTestSuites(Arrays.asList(getPathToResource("suite-parallel-0.xml")));
tng.addListener(tla);
BaseThreadTest.initThreadLog();
tng.run(); //Shouldn't not deadlock
Assert.assertEquals(BaseThreadTest.getThreadCount(), SUITE_THREAD_POOL_SIZE);
}
private void runTest(int suiteThreadPoolSize, int expectedThreadCount,
int expectedSuiteCount, Boolean randomizeSuites, List<String> paths) {
TestListenerAdapter tla = new TestListenerAdapter();
TestNG tng = create();
tng.setSuiteThreadPoolSize(suiteThreadPoolSize);
tng.setTestSuites(paths);
tng.addListener(tla);
if (null != randomizeSuites) {
tng.setRandomizeSuites(randomizeSuites);
}
BaseThreadTest.initThreadLog();
tng.run();
Assert.assertEquals(BaseThreadTest.getThreadCount(), expectedThreadCount);
Assert.assertEquals(BaseThreadTest.getSuitesMap().keySet().size(), expectedSuiteCount);
}
@Test
public void suitesShouldRunInParallel4() {
runTest(10, 5, 5, null, Arrays.asList(
getPathToResource("parallel-suites/suite-parallel-1.xml"),
getPathToResource("parallel-suites/suite-parallel-2.xml"),
getPathToResource("parallel-suites/suite-parallel-2-1.xml"),
getPathToResource("parallel-suites/suite-parallel-2-2.xml")));
}
@Test
public void suitesShouldRunInParallel5() {
runTest(5, 5, 7, null, Arrays.asList(
getPathToResource("parallel-suites/suite-parallel-0.xml")));
}
@Test(description = "Number of threads (2) is less than level of suites (3)")
public void suitesShouldRunInParallel6() {
runTest(2, 2, 7, null, Arrays.asList(
getPathToResource("parallel-suites/suite-parallel-0.xml")));
}
@Test(description = "If suiteThreadPoolSize and randomizeSuites are not specified" +
" suites should run in order specified in XML")
public void suitesShouldRunInOrder() {
TestListenerAdapter tla = new TestListenerAdapter();
TestNG tng = create();
tng.setTestSuites(Arrays.asList(getPathToResource("suite-parallel-0.xml")));
tng.addListener(tla);
BaseThreadTest.initThreadLog();
tng.run();
Map<String, Long> suitesMap = BaseThreadTest.getSuitesMap();
Assert.assertEquals(BaseThreadTest.getThreadCount(), 1);
Assert.assertEquals(suitesMap.keySet().size(), 3);
final String SUITE_NAME_PREFIX = "Suite Parallel ";
if (suitesMap.get(SUITE_NAME_PREFIX + 1) > suitesMap.get(SUITE_NAME_PREFIX + 2)) {
Assert.fail("Suite " + (SUITE_NAME_PREFIX + 1) + " should have run before "
+ (SUITE_NAME_PREFIX + 2));
}
Assert.assertTrue(suitesMap.get(SUITE_NAME_PREFIX + 2)
<= suitesMap.get(SUITE_NAME_PREFIX + 0));
}
@Test(description = "Number of threads (1) is less than number of levels of suites (2)")
public void suitesShouldRun1() {
runTest(1, 1, 3, true, Arrays.asList(
getPathToResource("suite-parallel-0.xml")));
runTest(1, 1, 7, true, Arrays.asList(
getPathToResource("parallel-suites/suite-parallel-0.xml")));
runTest(2, 2, 7, true, Arrays.asList(
getPathToResource("parallel-suites/suite-parallel-0.xml")));
}
}