package test.thread;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.testng.Assert;
import org.testng.TestNG;
import org.testng.annotations.Test;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
import test.BaseTest;
public class ParallelTestTest extends BaseTest {
@Test
public void verifyParallelNone() {
verifyExpected(XmlSuite.PARALLEL_NONE, 1);
}
@Test
public void verifyParallelTests() {
verifyExpected(XmlSuite.PARALLEL_TESTS, 2);
}
@Test
public void verifyParallelMethods() {
verifyExpected(XmlSuite.PARALLEL_METHODS, 4);
}
@Test
public void verifyParallelClasses() {
verifyExpected(XmlSuite.PARALLEL_CLASSES, 2);
}
public static final String CLASS1 = "test.thread.Test1Test";
public static final String CLASS2 = "test.thread.Test2Test";
private void createTest(XmlSuite xmlSuite, String className) {
XmlTest result = new XmlTest(xmlSuite);
List<XmlClass> classes = result.getXmlClasses();
XmlClass xmlClass = new XmlClass(className);
classes.add(xmlClass);
}
private void verifyExpected(String parallelMode, int expectedThreadCount) {
XmlSuite xmlSuite = new XmlSuite();
xmlSuite.setName("ParallelTestTest");
xmlSuite.setParallel(parallelMode);
createTest(xmlSuite, CLASS1);
createTest(xmlSuite, CLASS2);
TestNG tng = new TestNG();
tng.setVerbose(0);
tng.setXmlSuites(Arrays.asList(new XmlSuite[] { xmlSuite }));
Helper.reset();
tng.run();
Map<Long, Long>[] maps = new Map[] {
Helper.getMap(CLASS1),
Helper.getMap(CLASS2),
};
Map<Long, Long> mergedMap = new HashMap<Long, Long>();
for (Map<Long, Long>m : maps) {
mergedMap.putAll(m);
}
Assert.assertEquals(mergedMap.size(), expectedThreadCount);
}
private static void ppp(String s) {
if (false) {
System.out.println("[SequentialTest] " + s);
}
}
}