in java/src/org/apache/qetest/trax/TestMultiTypeThreads.java [191:354]
public void runTest()
{
// Prepare a log file and dump out some basic info
createLogFile(logFileName);
println("<?xml version=\"1.0\"?>");
println("<resultsfile logFile=\"" + logFileName + "\">");
println("<message desc=\"threads=" + (3 * numRunners)
+ " iterations=" + numRunnerCalls + "\"/>");
println("<message desc=\"oneF=" + setOneFilenameRoot + " twof="
+ setTwoFilenameRoot + " threef=" + setThreeFilenameRoot
+ "\"/>");
println("<message desc=\"param=" + paramName + " val=" + paramVal
+ " liaison=" + liaison + "\"/>");
// Preprocess some stylesheets for use by the runners
String errStr = "Create processor threw: ";
Templates stylesheet1, stylesheet2, stylesheet3;
try
{
String setOneURL = filenameToURI(inputDir + setOneFilenameRoot + ".xsl");
String setTwoURL = filenameToURI(inputDir + setTwoFilenameRoot + ".xsl");
String setThreeURL = filenameToURI(inputDir + setThreeFilenameRoot + ".xsl");
TransformerFactory factory = TransformerFactory.newInstance();
// Note: for now, just use StreamSources to build all stylesheets
errStr = "Processing stylesheet1 threw: ";
stylesheet1 =
factory.newTemplates(new StreamSource(setOneURL));
errStr = "Processing stylesheet2 threw: ";
stylesheet2 =
factory.newTemplates(new StreamSource(setTwoURL));
errStr = "Processing stylesheet3 threw: ";
stylesheet3 =
factory.newTemplates(new StreamSource(setThreeURL));
}
catch (Exception e)
{
println("<arbitrary desc=\"" + errStr + e.toString() + "\">");
if (pWriter != null)
{
e.printStackTrace(pWriter);
}
e.printStackTrace();
println("</arbitrary>");
return;
}
errStr = "PreCreating runners threw: ";
try
{
String[] rValues = new String[FUTUREUSE];
// Create a whole bunch of worker threads and run them
for (int i = 0; i < numRunners; i++)
{
TMTThreadsRunner r1, r2, r3;
Thread t1, t2, t3;
String transformType = StreamSource.FEATURE;
// Alternate sets of runners use alternate transform types
if ((i % 3) == 2)
{
transformType = DOMSource.FEATURE;
}
else if ((i % 3) == 1)
{
transformType = StreamSource.FEATURE;
}
else
{
transformType = SAXSource.FEATURE;
}
// First set of runners reports on memory usage periodically
rValues[ID] = "one-" + i;
rValues[XMLNAME] = filenameToURI(inputDir + setOneFilenameRoot + ".xml");
rValues[XSLNAME] = filenameToURI(inputDir + setOneFilenameRoot + ".xsl");
rValues[OUTNAME] = outputDir + setOneFilenameRoot + "r" + i;
rValues[PARAMNAME] = paramName;
rValues[PARAMVAL] = paramVal;
rValues[OPTIONS] = "memory;param";
rValues[TRANSFORM_TYPE] = transformType;
errStr = "Creating runnerone-" + i + " threw: ";
r1 = new TMTThreadsRunner(rValues, stylesheet1,
numRunnerCalls);
t1 = new Thread(r1);
t1.start();
// Second set of runners is polite; uses optional liaison
rValues[ID] = "two-" + i;
rValues[XMLNAME] = filenameToURI(inputDir + setTwoFilenameRoot + ".xml");
rValues[XSLNAME] = filenameToURI(inputDir + setTwoFilenameRoot + ".xsl");
rValues[OUTNAME] = outputDir + setTwoFilenameRoot + "r" + i;
rValues[PARAMNAME] = paramName;
rValues[PARAMVAL] = paramVal;
rValues[OPTIONS] = "polite;param";
rValues[TRANSFORM_TYPE] = transformType;
if ((liaison != null) &&!(liaison.equals("")))
rValues[LIAISON] = liaison;
errStr = "Creating runnertwo-" + i + " threw: ";
r2 = new TMTThreadsRunner(rValues, stylesheet2,
numRunnerCalls);
t2 = new Thread(r2);
t2.start();
rValues[LIAISON] = null;
// Third set of runners will recreate it's processor each time
// and report memory usage; but not set the param
// Note: this causes lots of calls to System.gc
rValues[ID] = "thr-" + i;
rValues[XMLNAME] = filenameToURI(inputDir + setThreeFilenameRoot + ".xml");
rValues[XSLNAME] = filenameToURI(inputDir + setThreeFilenameRoot + ".xsl");
rValues[OUTNAME] = outputDir + setThreeFilenameRoot + "r" + i;
rValues[PARAMNAME] = paramName;
rValues[PARAMVAL] = paramVal;
rValues[OPTIONS] = "recreate;memory";
rValues[TRANSFORM_TYPE] = transformType;
errStr = "Creating runnerthree-" + i + " threw: ";
r3 = new TMTThreadsRunner(rValues, stylesheet3,
numRunnerCalls);
t3 = new Thread(r3);
t3.start();
println("<message desc=\"Created " + i
+ "th set of runners.\"/>");
}
}
catch (Exception e)
{
println("<arbitrary desc=\"" + errStr + e.toString() + "\">");
if (pWriter != null)
{
e.printStackTrace(pWriter);
}
e.printStackTrace();
println("</arbitrary>");
}
// Clean up our own references, just for completeness
stylesheet1 = null;
stylesheet2 = null;
stylesheet3 = null;
errStr = null;
println("<message desc=\"Created all our runners!\"/>");
println("<message desc=\"TestMultiTypeThreads main thread now complete\"/>");
println("</resultsfile>");
if (pWriter != null)
pWriter.flush();
}