public void runTest()

in java/src/org/apache/qetest/trax/TestThreads.java [171:316]


    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();

            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++)
            {
                TestThreadsRunner r1, r2, r3;
                Thread t1, t2, t3;

                // 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";
                errStr = "Creating runnerone-" + i + " threw: ";
                r1 = new TestThreadsRunner(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";

                if ((liaison != null) &&!(liaison.equals("")))
                    rValues[LIAISON] = liaison;

                errStr = "Creating runnertwo-" + i + " threw: ";
                r2 = new TestThreadsRunner(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";
                errStr = "Creating runnerthree-" + i + " threw: ";
                r3 = new TestThreadsRunner(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=\"TestThreads main thread now complete\"/>");
        println("</resultsfile>");

        if (pWriter != null)
            pWriter.flush();
    }