[jboss-svn-commits] JBL Code SVN: r31847 - in labs/jbosstm/trunk/XTS: WS-C/tests/src/com/arjuna/qa/junit and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 26 04:22:47 EST 2010
Author: adinn
Date: 2010-02-26 04:22:47 -0500 (Fri, 26 Feb 2010)
New Revision: 31847
Added:
labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerServlet.java
labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerXMLServlet.java
labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerServlet.java
labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerXMLServlet.java
Removed:
labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java
labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java
labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java
labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java
Modified:
labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c-tests_web-app.xml
labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c11-tests_web-app.xml
labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t-tests_web-app.xml
labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t11-tests_web-app.xml
Log:
renamed test servlets to avoid ambiguity
Modified: labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c-tests_web-app.xml 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c-tests_web-app.xml 2010-02-26 09:22:47 UTC (rev 31847)
@@ -34,7 +34,7 @@
<servlet>
<servlet-name>JUnitTestsServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wsc.tests.junit.TestSuite</param-value>
@@ -44,7 +44,7 @@
<servlet>
<servlet-name>JUnitTestsXMLServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerXMLServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wsc.tests.junit.TestSuite</param-value>
Modified: labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c11-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c11-tests_web-app.xml 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c11-tests_web-app.xml 2010-02-26 09:22:47 UTC (rev 31847)
@@ -34,7 +34,7 @@
<servlet>
<servlet-name>JUnitTestsServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wsc11.tests.junit.TestSuite</param-value>
@@ -44,7 +44,7 @@
<servlet>
<servlet-name>JUnitTestsXMLServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerXMLServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wsc11.tests.junit.TestSuite</param-value>
Deleted: labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -1,628 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags.
- * See the copyright.txt in the distribution for a full listing
- * of individual contributors.
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- *
- * (C) 2005-2006,
- * @author JBoss Inc.
- */
-/*
- * Copyright (c) 2002, 2003, Arjuna Technologies Limited.
- *
- * TestRunnerServlet.java
- */
-
-package com.arjuna.qa.junit;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestListener;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-public class TestRunnerServlet extends HttpServlet
-{
- public void init(ServletConfig config) throws ServletException
- {
- super.init(config);
-
- _testSuiteClassName = config.getInitParameter("TestSuiteClassName");
- }
-
- protected String getContentType()
- {
- return "text/html";
- }
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- try
- {
- PrintWriter writer = response.getWriter();
-
- response.setContentType(getContentType());
- response.setHeader("Cache-Control", "no-cache");
-
- if (request.getParameter("failednumber") != null)
- doStatusFailed(writer, request, response);
- else if (request.getParameter("errornumber") != null)
- doStatusError(writer, request, response);
- else
- doStatus(writer, request, response);
- }
- catch (Exception exception)
- {
- log("Test Runner: doGet failed", exception);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
- }
- catch (Error error)
- {
- log("Test Runner: doGet failed", error);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
- }
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- try
- {
- PrintWriter writer = response.getWriter();
-
- response.setContentType(getContentType());
- response.setHeader("Cache-Control", "no-cache");
-
- if ((_runnerThread == null) || (! _runnerThread.isAlive()))
- {
- _runnerThread = new RunnerThread();
- _runnerThread.start();
- }
-
- if (request.getParameter("failednumber") != null)
- doStatusFailed(writer, request, response);
- else if (request.getParameter("errornumber") != null)
- doStatusError(writer, request, response);
- else
- doStatus(writer, request, response);
- }
- catch (Exception exception)
- {
- log("Test Runner: doPost failed", exception);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
- }
- catch (Error error)
- {
- log("Test Runner: doPost failed", error);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
- }
- }
-
- public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException {
- writer.println("<HTML>");
- writer.println("<HEAD>");
- writer.println("<TITLE>Test Runner</TITLE>");
- writer.println("</HEAD>");
- writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Status<BR> </DIV>");
-
- writer.println("<TABLE width=\"100%\">");
-
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Status</TD></TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test suite class:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _testSuiteClassName + "</TD>");
- writer.println("</TR>");
-
- if ((_runnerThread == null) || (! _runnerThread.isAlive()))
- {
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<FORM method=\"POST\" action=\"" + request.getRequestURL() + "\">");
- writer.print("<INPUT type=\"button\" value=\"run\" onclick=\"this.form.submit()\">");
- writer.print("</FORM>");
- writer.println("</TD>");
- writer.println("</TR>");
- }
- else
- {
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<FORM method=\"GET\" action=\"" + request.getRequestURL() + "\">");
- writer.print("<INPUT type=\"button\" value=\"reload\" onclick=\"this.form.submit()\">");
- writer.print("</FORM>");
- writer.println("</TD>");
- writer.println("</TR>");
-
- if (_currentTest != null)
- {
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Current test:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, _currentTest.toString());
- writer.println("</TD>");
- writer.println("</TR>");
- }
- }
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passed count:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _passedTests.size() + "</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failed count:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _failedTests.size() + "</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Error count:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _errorTests.size() + "</TD>");
- writer.println("</TR>");
-
- writer.println("</TABLE>");
-
- if (! _passedTests.isEmpty())
- {
- writer.println("<BR>");
-
- writer.println("<TABLE width=\"100%\">");
-
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passes</TD></TR>");
-
- writer.println("<TR>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
- writer.println("</TR>");
-
- Iterator passedTestsIterator = _passedTests.iterator();
- while (passedTestsIterator.hasNext())
- {
- PassedTest passedTest = (PassedTest) passedTestsIterator.next();
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, passedTest.test.toString());
- writer.println("</TD>");
- writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + passedTest.duration + " ms</TD>");
- writer.println("</TR>");
- }
-
- writer.println("</TABLE>");
- }
-
- if (! _failedTests.isEmpty())
- {
- writer.println("<BR>");
-
- writer.println("<TABLE width=\"100%\">");
-
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failures</TD></TR>");
- writer.println("<TR>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message</TD>");
- writer.println("</TR>");
-
- int failedNumber = 0;
- Iterator failedTestsIterator = _failedTests.iterator();
- while (failedTestsIterator.hasNext())
- {
- FailedTest failedTest = (FailedTest) failedTestsIterator.next();
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<A href=\"" + request.getRequestURL() + "?failednumber=" + failedNumber + "\">");
- encode(writer, failedTest.test.toString());
- writer.print("</A>");
- writer.println("</TD>");
- writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, failedTest.assertionFailedError.getMessage());
- writer.println("</TD>");
- writer.println("</TR>");
- failedNumber++;
- }
-
- writer.println("</TABLE>");
-
- writer.println("<BR>");
- }
-
- if (! _errorTests.isEmpty())
- {
- writer.println("<TABLE width=\"100%\">");
- writer.println("<TR>");
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Errors</TD></TR>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/Error</TD>");
- writer.println("</TR>");
-
- int errorNumber = 0;
- Iterator errorTestsIterator = _errorTests.iterator();
- while (errorTestsIterator.hasNext())
- {
- ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<A href=\"" + request.getRequestURL() + "?errornumber=" + errorNumber + "\">");
- encode(writer, errorTest.test.toString());
- writer.print("</A>");
- writer.println("</TD>");
- writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, errorTest.throwable.toString());
- writer.println("</TD>");
- writer.println("</TR>");
- errorNumber++;
- }
-
- writer.println("</TABLE>");
- }
-
- writer.println("</BODY>");
- writer.println("</HTML>");
- }
-
- public void doStatusFailed(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
- int failedIndex = 0;
- FailedTest failedTest = null;
-
- try
- {
- String failedIndexString = (String) request.getParameter("failednumber");
-
- failedIndex = Integer.parseInt(failedIndexString);
- failedTest = (FailedTest) _failedTests.get(failedIndex);
- }
- catch (Exception exception)
- {
- failedTest = null;
- }
-
- if (failedTest != null)
- {
- writer.println("<HTML>");
- writer.println("<HEAD>");
- writer.println("<TITLE>Test Runner</TITLE>");
- writer.println("</HEAD>");
- writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Failed Status<BR> </DIV>");
-
- writer.println("<TABLE>");
-
- writer.print("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, failedTest.test.toString());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, failedTest.assertionFailedError.getMessage());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.print("<TR>");
- writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<PRE>");
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- failedTest.assertionFailedError.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
- encode(writer, charArrayWriter.toString());
- writer.println("</PRE>");
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("</TABLE>");
-
- writer.println("<TABLE width=\"100%\">");
- writer.println("<TR>");
- writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (failedIndex > 0)
- writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex - 1)+ "\">previous</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
- writer.println("</TD>");
- writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (failedIndex < (_failedTests.size() - 1))
- writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex + 1)+ "\">next</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("</TR>");
- writer.println("</TABLE>");
-
- writer.println("</BODY>");
- writer.println("</HTML>");
- }
- else
- doStatus(writer, request, response);
- }
-
- public void doStatusError(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
- int errorIndex = 0;
- ErrorTest errorTest = null;
-
- try
- {
- String errorIndexString = (String) request.getParameter("errornumber");
-
- errorIndex = Integer.parseInt(errorIndexString);
- errorTest = (ErrorTest) _errorTests.get(errorIndex);
- }
- catch (Exception exception)
- {
- errorTest = null;
- }
-
- if (errorTest != null)
- {
- writer.println("<HTML>");
- writer.println("<HEAD>");
- writer.println("<TITLE>Test Runner</TITLE>");
- writer.println("</HEAD>");
- writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Error Status<BR> </DIV>");
-
- writer.println("<TABLE>");
-
- writer.print("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, errorTest.test.toString());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/error:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, errorTest.throwable.toString());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.print("<TR>");
- writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<PRE>");
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- errorTest.throwable.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
- encode(writer, charArrayWriter.toString());
- writer.println("</PRE>");
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("</TABLE>");
-
- writer.println("<TABLE width=\"100%\">");
- writer.println("<TR>");
- writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (errorIndex > 0)
- writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex - 1)+ "\">previous</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
- writer.println("</TD>");
- writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (errorIndex < (_errorTests.size() - 1))
- writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex + 1)+ "\">next</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("</TR>");
- writer.println("</TABLE>");
-
- writer.println("</BODY>");
- writer.println("</HTML>");
- }
- else
- doStatus(writer, request, response);
- }
-
- protected class PassedTest
- {
- public Test test;
- public long duration;
- }
-
- protected class FailedTest
- {
- public Test test;
- public long duration;
- public AssertionFailedError assertionFailedError;
- }
-
- protected class ErrorTest
- {
- public Test test;
- public long duration;
- public Throwable throwable;
- }
-
- protected class RunnerThread extends Thread
- {
- RunnerThread()
- {
- super("JUnit Runner Thread") ;
- }
-
- public void run()
- {
- try
- {
- _passedTests.clear();
- _failedTests.clear();
- _errorTests.clear();
-
- Class testSuiteClass = Class.forName(_testSuiteClassName);
- TestListener testListener = new BasicTestListener();
-
- _testResult = new TestResult();
- _testSuite = (TestSuite) testSuiteClass.newInstance();
-
- _testResult.addListener(testListener);
- _testSuite.run(_testResult);
- _testResult.removeListener(testListener);
- }
- catch (Exception exception)
- {
- log("Runner Thread: run failed", exception);
- }
- catch (Error error)
- {
- log("Runner Thread: run failed", error);
- }
- }
- }
-
- private class BasicTestListener implements TestListener
- {
- public void startTest(Test test)
- {
- _startTime = System.currentTimeMillis();
- _failed = false;
- _error = false;
- _assertionFailedError = null;
- _throwable = null;
- _currentTest = test;
- }
-
- public void addError(Test test, Throwable throwable)
- {
- _error = true;
- _throwable = throwable;
- throwable.printStackTrace(System.out);
- }
-
- public void addFailure(Test test, AssertionFailedError assertionFailedError)
- {
- _failed = true;
- _assertionFailedError = assertionFailedError;
- assertionFailedError.printStackTrace(System.out);
- }
-
- public void endTest(Test test)
- {
- if (_failed)
- {
- FailedTest failedTest = new FailedTest();
- failedTest.test = test;
- failedTest.duration = System.currentTimeMillis() - _startTime;
- failedTest.assertionFailedError = _assertionFailedError;
- _failedTests.add(failedTest);
- }
- else if (_error)
- {
- ErrorTest errorTest = new ErrorTest();
- errorTest.test = test;
- errorTest.duration = System.currentTimeMillis() - _startTime;
- errorTest.throwable = _throwable;
- _errorTests.add(errorTest);
- }
- else
- {
- PassedTest passedTest = new PassedTest();
- passedTest.test = test;
- passedTest.duration = System.currentTimeMillis() - _startTime;
- _passedTests.add(passedTest);
- }
-
- _currentTest = null;
- }
-
- private long _startTime = 0;
- private boolean _failed = false;
- private boolean _error = false;
- private AssertionFailedError _assertionFailedError = null;
- private Throwable _throwable = null;
- }
-
- protected static void encode(PrintWriter writer, String string)
- {
- if (string != null)
- {
- char[] chars = string.toCharArray();
-
- for (int index = 0; index < chars.length; index++)
- if (chars[index] == '<')
- writer.print("<");
- else if (chars[index] == '>')
- writer.print(">");
- else if (chars[index] == '&')
- writer.print("&");
- else
- writer.print(chars[index]);
- }
- else
- writer.print("null");
- }
-
- protected List _passedTests = new LinkedList();
- protected List _failedTests = new LinkedList();
- protected List _errorTests = new LinkedList();
- protected Test _currentTest = null;
- protected String _testSuiteClassName = null;
- protected RunnerThread _runnerThread = null;
- protected TestResult _testResult = null;
- protected TestSuite _testSuite = null;
-
-}
Deleted: labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -1,209 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags.
- * See the copyright.txt in the distribution for a full listing
- * of individual contributors.
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- *
- * (C) 2005-2006,
- * @author JBoss Inc.
- */
-package com.arjuna.qa.junit;
-
-import org.dom4j.dom.DOMDocument;
-import org.dom4j.dom.DOMElement;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Date;
-import java.util.Iterator;
-
-/**
- * @author <a href="mailto:istudens at redhat.com">Ivo Studensky</a>
- * @version $Revision$
- */
-public class TestRunnerXMLServlet extends TestRunnerServlet
-{
-
- @Override
- protected String getContentType()
- {
- return "text/xml";
- }
-
- @Override
- public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
-
- DOMDocument report = new DOMDocument();
- DOMElement testsuite = new DOMElement("testsuite");
- report.setRootElement(testsuite);
- testsuite.addAttribute("name", _testSuiteClassName);
- testsuite.addAttribute("errors", Integer.toString(_errorTests.size()));
- testsuite.addAttribute("failures", Integer.toString(_failedTests.size()));
- testsuite.addAttribute("hostname", request.getServerName());
- testsuite.addAttribute("tests", Integer.toString((_testResult != null) ? _testResult.runCount() : 0));
- testsuite.addAttribute("timestamp", new Date().toString());
-
- DOMElement properties = new DOMElement("properties");
- testsuite.add(properties);
- DOMElement status = newPropertyDOMElement("status");
- properties.add(status);
- if ((_runnerThread == null) || (! _runnerThread.isAlive()))
- {
- if (_passedTests.isEmpty() && _failedTests.isEmpty() && _errorTests.isEmpty())
- {
- status.addAttribute("value", "stopped");
- }
- else
- {
- status.addAttribute("value", "finished");
- }
- }
- else if (_currentTest != null)
- {
- status.addAttribute("value", "running");
- properties.add(newPropertyDOMElement("current-test", _currentTest.toString()));
- }
-
- long totalDuration = 0;
-
- if (! _passedTests.isEmpty())
- {
- Iterator passedTestsIterator = _passedTests.iterator();
- while (passedTestsIterator.hasNext())
- {
- PassedTest passedTest = (PassedTest) passedTestsIterator.next();
- totalDuration += passedTest.duration;
-
- testsuite.add(newTestcase(
- passedTest.test.getClass().getName(), passedTest.test.toString(), passedTest.duration));
- }
- }
-
- if (! _failedTests.isEmpty())
- {
- Iterator failedTestsIterator = _failedTests.iterator();
- while (failedTestsIterator.hasNext())
- {
- FailedTest failedTest = (FailedTest) failedTestsIterator.next();
- totalDuration += failedTest.duration;
-
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- failedTest.assertionFailedError.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
-
- testsuite.add(newFailedTestcase(
- failedTest.test.getClass().getName(), failedTest.test.toString(), failedTest.duration,
- failedTest.assertionFailedError.getMessage(), charArrayWriter.toString()));
- }
- }
-
- if (! _errorTests.isEmpty())
- {
- Iterator errorTestsIterator = _errorTests.iterator();
- while (errorTestsIterator.hasNext())
- {
- ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
- totalDuration += errorTest.duration;
-
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- errorTest.throwable.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
-
- System.out.println("charArrayWriter.toString()=" + charArrayWriter.toString());
- testsuite.add(newErrorTestcase(
- errorTest.test.getClass().getName(), errorTest.test.toString(), errorTest.duration,
- errorTest.throwable.getMessage(), charArrayWriter.toString()));
- }
- }
- testsuite.add(new DOMElement("system-out").addCDATA(""));
- testsuite.add(new DOMElement("system-err").addCDATA(""));
- // total time of all tests
- testsuite.addAttribute("time", Float.toString(totalDuration / 1000f));
-
- XMLWriter outputter = new XMLWriter(writer, OutputFormat.createPrettyPrint());
- try {
- outputter.write(testsuite);
- outputter.close();
- } catch (IOException e) {
- throw new ServletException(e);
- }
- }
-
- private DOMElement newPropertyDOMElement(String name)
- {
- return newPropertyDOMElement(name, null);
- }
-
- private DOMElement newPropertyDOMElement(String name, String value)
- {
- DOMElement property = new DOMElement("property");
- property.addAttribute("name", name);
- if (value != null)
- {
- property.addAttribute("value", value);
- }
- return property;
- }
-
- private DOMElement newTestcase(String classname, String name, long duration)
- {
- return newTestcase(classname, name, duration, null, null, null);
- }
-
- private DOMElement newFailedTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
- {
- return newTestcase(classname, name, duration, "junit.framework.AssertionFailedError", failureMessage, failureDetail);
- }
-
- private DOMElement newErrorTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
- {
- return newTestcase(classname, name, duration, "junit.framework.throwable", failureMessage, failureDetail);
- }
-
- private DOMElement newTestcase(String classname, String name, long duration, String failureMessage, String failureType, String failureDetail)
- {
- DOMElement testcase = new DOMElement("testcase");
- testcase.addAttribute("classname", classname);
- testcase.addAttribute("name", name);
- testcase.addAttribute("time", Float.toString(duration / 1000f)); // converts from miliseconds to seconds
- if (failureMessage != null)
- {
- DOMElement failure = new DOMElement("failure");
- testcase.add(failure);
- failure.addAttribute("message", failureMessage);
- if (failureType != null)
- {
- failure.addAttribute("type", failureType);
- }
- if (failureDetail != null)
- {
- failure.addCDATA(failureDetail);
- }
- }
- return testcase;
- }
-
-}
Copied: labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerServlet.java (from rev 31258, labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java)
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerServlet.java (rev 0)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -0,0 +1,628 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a full listing
+ * of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (c) 2002, 2003, Arjuna Technologies Limited.
+ *
+ * TestRunnerServlet.java
+ */
+
+package com.arjuna.qa.junit;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestListener;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+public class WSCTestRunnerServlet extends HttpServlet
+{
+ public void init(ServletConfig config) throws ServletException
+ {
+ super.init(config);
+
+ _testSuiteClassName = config.getInitParameter("TestSuiteClassName");
+ }
+
+ protected String getContentType()
+ {
+ return "text/html";
+ }
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ try
+ {
+ PrintWriter writer = response.getWriter();
+
+ response.setContentType(getContentType());
+ response.setHeader("Cache-Control", "no-cache");
+
+ if (request.getParameter("failednumber") != null)
+ doStatusFailed(writer, request, response);
+ else if (request.getParameter("errornumber") != null)
+ doStatusError(writer, request, response);
+ else
+ doStatus(writer, request, response);
+ }
+ catch (Exception exception)
+ {
+ log("Test Runner: doGet failed", exception);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
+ }
+ catch (Error error)
+ {
+ log("Test Runner: doGet failed", error);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
+ }
+ }
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ try
+ {
+ PrintWriter writer = response.getWriter();
+
+ response.setContentType(getContentType());
+ response.setHeader("Cache-Control", "no-cache");
+
+ if ((_runnerThread == null) || (! _runnerThread.isAlive()))
+ {
+ _runnerThread = new RunnerThread();
+ _runnerThread.start();
+ }
+
+ if (request.getParameter("failednumber") != null)
+ doStatusFailed(writer, request, response);
+ else if (request.getParameter("errornumber") != null)
+ doStatusError(writer, request, response);
+ else
+ doStatus(writer, request, response);
+ }
+ catch (Exception exception)
+ {
+ log("Test Runner: doPost failed", exception);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
+ }
+ catch (Error error)
+ {
+ log("Test Runner: doPost failed", error);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
+ }
+ }
+
+ public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException {
+ writer.println("<HTML>");
+ writer.println("<HEAD>");
+ writer.println("<TITLE>Test Runner</TITLE>");
+ writer.println("</HEAD>");
+ writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Status<BR> </DIV>");
+
+ writer.println("<TABLE width=\"100%\">");
+
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Status</TD></TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test suite class:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _testSuiteClassName + "</TD>");
+ writer.println("</TR>");
+
+ if ((_runnerThread == null) || (! _runnerThread.isAlive()))
+ {
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<FORM method=\"POST\" action=\"" + request.getRequestURL() + "\">");
+ writer.print("<INPUT type=\"button\" value=\"run\" onclick=\"this.form.submit()\">");
+ writer.print("</FORM>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+ }
+ else
+ {
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<FORM method=\"GET\" action=\"" + request.getRequestURL() + "\">");
+ writer.print("<INPUT type=\"button\" value=\"reload\" onclick=\"this.form.submit()\">");
+ writer.print("</FORM>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ if (_currentTest != null)
+ {
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Current test:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, _currentTest.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+ }
+ }
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passed count:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _passedTests.size() + "</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failed count:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _failedTests.size() + "</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Error count:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _errorTests.size() + "</TD>");
+ writer.println("</TR>");
+
+ writer.println("</TABLE>");
+
+ if (! _passedTests.isEmpty())
+ {
+ writer.println("<BR>");
+
+ writer.println("<TABLE width=\"100%\">");
+
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passes</TD></TR>");
+
+ writer.println("<TR>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
+ writer.println("</TR>");
+
+ Iterator passedTestsIterator = _passedTests.iterator();
+ while (passedTestsIterator.hasNext())
+ {
+ PassedTest passedTest = (PassedTest) passedTestsIterator.next();
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, passedTest.test.toString());
+ writer.println("</TD>");
+ writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + passedTest.duration + " ms</TD>");
+ writer.println("</TR>");
+ }
+
+ writer.println("</TABLE>");
+ }
+
+ if (! _failedTests.isEmpty())
+ {
+ writer.println("<BR>");
+
+ writer.println("<TABLE width=\"100%\">");
+
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failures</TD></TR>");
+ writer.println("<TR>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message</TD>");
+ writer.println("</TR>");
+
+ int failedNumber = 0;
+ Iterator failedTestsIterator = _failedTests.iterator();
+ while (failedTestsIterator.hasNext())
+ {
+ FailedTest failedTest = (FailedTest) failedTestsIterator.next();
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<A href=\"" + request.getRequestURL() + "?failednumber=" + failedNumber + "\">");
+ encode(writer, failedTest.test.toString());
+ writer.print("</A>");
+ writer.println("</TD>");
+ writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, failedTest.assertionFailedError.getMessage());
+ writer.println("</TD>");
+ writer.println("</TR>");
+ failedNumber++;
+ }
+
+ writer.println("</TABLE>");
+
+ writer.println("<BR>");
+ }
+
+ if (! _errorTests.isEmpty())
+ {
+ writer.println("<TABLE width=\"100%\">");
+ writer.println("<TR>");
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Errors</TD></TR>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/Error</TD>");
+ writer.println("</TR>");
+
+ int errorNumber = 0;
+ Iterator errorTestsIterator = _errorTests.iterator();
+ while (errorTestsIterator.hasNext())
+ {
+ ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<A href=\"" + request.getRequestURL() + "?errornumber=" + errorNumber + "\">");
+ encode(writer, errorTest.test.toString());
+ writer.print("</A>");
+ writer.println("</TD>");
+ writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, errorTest.throwable.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+ errorNumber++;
+ }
+
+ writer.println("</TABLE>");
+ }
+
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ }
+
+ public void doStatusFailed(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException
+ {
+ int failedIndex = 0;
+ FailedTest failedTest = null;
+
+ try
+ {
+ String failedIndexString = (String) request.getParameter("failednumber");
+
+ failedIndex = Integer.parseInt(failedIndexString);
+ failedTest = (FailedTest) _failedTests.get(failedIndex);
+ }
+ catch (Exception exception)
+ {
+ failedTest = null;
+ }
+
+ if (failedTest != null)
+ {
+ writer.println("<HTML>");
+ writer.println("<HEAD>");
+ writer.println("<TITLE>Test Runner</TITLE>");
+ writer.println("</HEAD>");
+ writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Failed Status<BR> </DIV>");
+
+ writer.println("<TABLE>");
+
+ writer.print("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, failedTest.test.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, failedTest.assertionFailedError.getMessage());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.print("<TR>");
+ writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<PRE>");
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ failedTest.assertionFailedError.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+ encode(writer, charArrayWriter.toString());
+ writer.println("</PRE>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("</TABLE>");
+
+ writer.println("<TABLE width=\"100%\">");
+ writer.println("<TR>");
+ writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (failedIndex > 0)
+ writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex - 1)+ "\">previous</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
+ writer.println("</TD>");
+ writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (failedIndex < (_failedTests.size() - 1))
+ writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex + 1)+ "\">next</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("</TR>");
+ writer.println("</TABLE>");
+
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ }
+ else
+ doStatus(writer, request, response);
+ }
+
+ public void doStatusError(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException
+ {
+ int errorIndex = 0;
+ ErrorTest errorTest = null;
+
+ try
+ {
+ String errorIndexString = (String) request.getParameter("errornumber");
+
+ errorIndex = Integer.parseInt(errorIndexString);
+ errorTest = (ErrorTest) _errorTests.get(errorIndex);
+ }
+ catch (Exception exception)
+ {
+ errorTest = null;
+ }
+
+ if (errorTest != null)
+ {
+ writer.println("<HTML>");
+ writer.println("<HEAD>");
+ writer.println("<TITLE>Test Runner</TITLE>");
+ writer.println("</HEAD>");
+ writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Error Status<BR> </DIV>");
+
+ writer.println("<TABLE>");
+
+ writer.print("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, errorTest.test.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/error:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, errorTest.throwable.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.print("<TR>");
+ writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<PRE>");
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ errorTest.throwable.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+ encode(writer, charArrayWriter.toString());
+ writer.println("</PRE>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("</TABLE>");
+
+ writer.println("<TABLE width=\"100%\">");
+ writer.println("<TR>");
+ writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (errorIndex > 0)
+ writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex - 1)+ "\">previous</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
+ writer.println("</TD>");
+ writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (errorIndex < (_errorTests.size() - 1))
+ writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex + 1)+ "\">next</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("</TR>");
+ writer.println("</TABLE>");
+
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ }
+ else
+ doStatus(writer, request, response);
+ }
+
+ protected class PassedTest
+ {
+ public Test test;
+ public long duration;
+ }
+
+ protected class FailedTest
+ {
+ public Test test;
+ public long duration;
+ public AssertionFailedError assertionFailedError;
+ }
+
+ protected class ErrorTest
+ {
+ public Test test;
+ public long duration;
+ public Throwable throwable;
+ }
+
+ protected class RunnerThread extends Thread
+ {
+ RunnerThread()
+ {
+ super("JUnit Runner Thread") ;
+ }
+
+ public void run()
+ {
+ try
+ {
+ _passedTests.clear();
+ _failedTests.clear();
+ _errorTests.clear();
+
+ Class testSuiteClass = Class.forName(_testSuiteClassName);
+ TestListener testListener = new BasicTestListener();
+
+ _testResult = new TestResult();
+ _testSuite = (TestSuite) testSuiteClass.newInstance();
+
+ _testResult.addListener(testListener);
+ _testSuite.run(_testResult);
+ _testResult.removeListener(testListener);
+ }
+ catch (Exception exception)
+ {
+ log("Runner Thread: run failed", exception);
+ }
+ catch (Error error)
+ {
+ log("Runner Thread: run failed", error);
+ }
+ }
+ }
+
+ private class BasicTestListener implements TestListener
+ {
+ public void startTest(Test test)
+ {
+ _startTime = System.currentTimeMillis();
+ _failed = false;
+ _error = false;
+ _assertionFailedError = null;
+ _throwable = null;
+ _currentTest = test;
+ }
+
+ public void addError(Test test, Throwable throwable)
+ {
+ _error = true;
+ _throwable = throwable;
+ throwable.printStackTrace(System.out);
+ }
+
+ public void addFailure(Test test, AssertionFailedError assertionFailedError)
+ {
+ _failed = true;
+ _assertionFailedError = assertionFailedError;
+ assertionFailedError.printStackTrace(System.out);
+ }
+
+ public void endTest(Test test)
+ {
+ if (_failed)
+ {
+ FailedTest failedTest = new FailedTest();
+ failedTest.test = test;
+ failedTest.duration = System.currentTimeMillis() - _startTime;
+ failedTest.assertionFailedError = _assertionFailedError;
+ _failedTests.add(failedTest);
+ }
+ else if (_error)
+ {
+ ErrorTest errorTest = new ErrorTest();
+ errorTest.test = test;
+ errorTest.duration = System.currentTimeMillis() - _startTime;
+ errorTest.throwable = _throwable;
+ _errorTests.add(errorTest);
+ }
+ else
+ {
+ PassedTest passedTest = new PassedTest();
+ passedTest.test = test;
+ passedTest.duration = System.currentTimeMillis() - _startTime;
+ _passedTests.add(passedTest);
+ }
+
+ _currentTest = null;
+ }
+
+ private long _startTime = 0;
+ private boolean _failed = false;
+ private boolean _error = false;
+ private AssertionFailedError _assertionFailedError = null;
+ private Throwable _throwable = null;
+ }
+
+ protected static void encode(PrintWriter writer, String string)
+ {
+ if (string != null)
+ {
+ char[] chars = string.toCharArray();
+
+ for (int index = 0; index < chars.length; index++)
+ if (chars[index] == '<')
+ writer.print("<");
+ else if (chars[index] == '>')
+ writer.print(">");
+ else if (chars[index] == '&')
+ writer.print("&");
+ else
+ writer.print(chars[index]);
+ }
+ else
+ writer.print("null");
+ }
+
+ protected List _passedTests = new LinkedList();
+ protected List _failedTests = new LinkedList();
+ protected List _errorTests = new LinkedList();
+ protected Test _currentTest = null;
+ protected String _testSuiteClassName = null;
+ protected RunnerThread _runnerThread = null;
+ protected TestResult _testResult = null;
+ protected TestSuite _testSuite = null;
+
+}
Copied: labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerXMLServlet.java (from rev 31258, labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java)
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerXMLServlet.java (rev 0)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/WSCTestRunnerXMLServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -0,0 +1,209 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a full listing
+ * of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+package com.arjuna.qa.junit;
+
+import org.dom4j.dom.DOMDocument;
+import org.dom4j.dom.DOMElement;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.XMLWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Date;
+import java.util.Iterator;
+
+/**
+ * @author <a href="mailto:istudens at redhat.com">Ivo Studensky</a>
+ * @version $Revision$
+ */
+public class WSCTestRunnerXMLServlet extends WSCTestRunnerServlet
+{
+
+ @Override
+ protected String getContentType()
+ {
+ return "text/xml";
+ }
+
+ @Override
+ public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException
+ {
+
+ DOMDocument report = new DOMDocument();
+ DOMElement testsuite = new DOMElement("testsuite");
+ report.setRootElement(testsuite);
+ testsuite.addAttribute("name", _testSuiteClassName);
+ testsuite.addAttribute("errors", Integer.toString(_errorTests.size()));
+ testsuite.addAttribute("failures", Integer.toString(_failedTests.size()));
+ testsuite.addAttribute("hostname", request.getServerName());
+ testsuite.addAttribute("tests", Integer.toString((_testResult != null) ? _testResult.runCount() : 0));
+ testsuite.addAttribute("timestamp", new Date().toString());
+
+ DOMElement properties = new DOMElement("properties");
+ testsuite.add(properties);
+ DOMElement status = newPropertyDOMElement("status");
+ properties.add(status);
+ if ((_runnerThread == null) || (! _runnerThread.isAlive()))
+ {
+ if (_passedTests.isEmpty() && _failedTests.isEmpty() && _errorTests.isEmpty())
+ {
+ status.addAttribute("value", "stopped");
+ }
+ else
+ {
+ status.addAttribute("value", "finished");
+ }
+ }
+ else if (_currentTest != null)
+ {
+ status.addAttribute("value", "running");
+ properties.add(newPropertyDOMElement("current-test", _currentTest.toString()));
+ }
+
+ long totalDuration = 0;
+
+ if (! _passedTests.isEmpty())
+ {
+ Iterator passedTestsIterator = _passedTests.iterator();
+ while (passedTestsIterator.hasNext())
+ {
+ PassedTest passedTest = (PassedTest) passedTestsIterator.next();
+ totalDuration += passedTest.duration;
+
+ testsuite.add(newTestcase(
+ passedTest.test.getClass().getName(), passedTest.test.toString(), passedTest.duration));
+ }
+ }
+
+ if (! _failedTests.isEmpty())
+ {
+ Iterator failedTestsIterator = _failedTests.iterator();
+ while (failedTestsIterator.hasNext())
+ {
+ FailedTest failedTest = (FailedTest) failedTestsIterator.next();
+ totalDuration += failedTest.duration;
+
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ failedTest.assertionFailedError.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+
+ testsuite.add(newFailedTestcase(
+ failedTest.test.getClass().getName(), failedTest.test.toString(), failedTest.duration,
+ failedTest.assertionFailedError.getMessage(), charArrayWriter.toString()));
+ }
+ }
+
+ if (! _errorTests.isEmpty())
+ {
+ Iterator errorTestsIterator = _errorTests.iterator();
+ while (errorTestsIterator.hasNext())
+ {
+ ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
+ totalDuration += errorTest.duration;
+
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ errorTest.throwable.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+
+ System.out.println("charArrayWriter.toString()=" + charArrayWriter.toString());
+ testsuite.add(newErrorTestcase(
+ errorTest.test.getClass().getName(), errorTest.test.toString(), errorTest.duration,
+ errorTest.throwable.getMessage(), charArrayWriter.toString()));
+ }
+ }
+ testsuite.add(new DOMElement("system-out").addCDATA(""));
+ testsuite.add(new DOMElement("system-err").addCDATA(""));
+ // total time of all tests
+ testsuite.addAttribute("time", Float.toString(totalDuration / 1000f));
+
+ XMLWriter outputter = new XMLWriter(writer, OutputFormat.createPrettyPrint());
+ try {
+ outputter.write(testsuite);
+ outputter.close();
+ } catch (IOException e) {
+ throw new ServletException(e);
+ }
+ }
+
+ private DOMElement newPropertyDOMElement(String name)
+ {
+ return newPropertyDOMElement(name, null);
+ }
+
+ private DOMElement newPropertyDOMElement(String name, String value)
+ {
+ DOMElement property = new DOMElement("property");
+ property.addAttribute("name", name);
+ if (value != null)
+ {
+ property.addAttribute("value", value);
+ }
+ return property;
+ }
+
+ private DOMElement newTestcase(String classname, String name, long duration)
+ {
+ return newTestcase(classname, name, duration, null, null, null);
+ }
+
+ private DOMElement newFailedTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
+ {
+ return newTestcase(classname, name, duration, "junit.framework.AssertionFailedError", failureMessage, failureDetail);
+ }
+
+ private DOMElement newErrorTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
+ {
+ return newTestcase(classname, name, duration, "junit.framework.throwable", failureMessage, failureDetail);
+ }
+
+ private DOMElement newTestcase(String classname, String name, long duration, String failureMessage, String failureType, String failureDetail)
+ {
+ DOMElement testcase = new DOMElement("testcase");
+ testcase.addAttribute("classname", classname);
+ testcase.addAttribute("name", name);
+ testcase.addAttribute("time", Float.toString(duration / 1000f)); // converts from miliseconds to seconds
+ if (failureMessage != null)
+ {
+ DOMElement failure = new DOMElement("failure");
+ testcase.add(failure);
+ failure.addAttribute("message", failureMessage);
+ if (failureType != null)
+ {
+ failure.addAttribute("type", failureType);
+ }
+ if (failureDetail != null)
+ {
+ failure.addCDATA(failureDetail);
+ }
+ }
+ return testcase;
+ }
+
+}
Modified: labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t-tests_web-app.xml 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t-tests_web-app.xml 2010-02-26 09:22:47 UTC (rev 31847)
@@ -34,7 +34,7 @@
<servlet>
<servlet-name>JUnitTestsServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wst.tests.junit.TestSuite</param-value>
@@ -44,7 +44,7 @@
<servlet>
<servlet-name>JUnitTestsXMLServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerXMLServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wst.tests.junit.TestSuite</param-value>
Modified: labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t11-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t11-tests_web-app.xml 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t11-tests_web-app.xml 2010-02-26 09:22:47 UTC (rev 31847)
@@ -34,7 +34,7 @@
<servlet>
<servlet-name>JUnitTestsServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wst11.tests.junit.TestSuite</param-value>
@@ -44,7 +44,7 @@
<servlet>
<servlet-name>JUnitTestsXMLServlet</servlet-name>
- <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <servlet-class>com.arjuna.qa.junit.WSCTestRunnerXMLServlet</servlet-class>
<init-param>
<param-name>TestSuiteClassName</param-name>
<param-value>com.arjuna.wst11.tests.junit.TestSuite</param-value>
Deleted: labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -1,624 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags.
- * See the copyright.txt in the distribution for a full listing
- * of individual contributors.
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- *
- * (C) 2005-2006,
- * @author JBoss Inc.
- */
-/*
- * Copyright (c) 2002, 2003, Arjuna Technologies Limited.
- *
- * TestRunnerServlet.java
- */
-
-package com.arjuna.qa.junit;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestListener;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-public class TestRunnerServlet extends HttpServlet
-{
- public void init(ServletConfig config) throws ServletException
- {
- super.init(config);
-
- _testSuiteClassName = config.getInitParameter("TestSuiteClassName");
- }
-
- protected String getContentType()
- {
- return "text/html";
- }
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- try
- {
- PrintWriter writer = response.getWriter();
-
- response.setContentType(getContentType());
- response.setHeader("Cache-Control", "no-cache");
-
- if (request.getParameter("failednumber") != null)
- doStatusFailed(writer, request, response);
- else if (request.getParameter("errornumber") != null)
- doStatusError(writer, request, response);
- else
- doStatus(writer, request, response);
- }
- catch (Exception exception)
- {
- log("Test Runner: doGet failed", exception);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
- }
- catch (Error error)
- {
- log("Test Runner: doGet failed", error);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
- }
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- try
- {
- PrintWriter writer = response.getWriter();
-
- response.setContentType(getContentType());
- response.setHeader("Cache-Control", "no-cache");
-
- if ((_runnerThread == null) || (! _runnerThread.isAlive()))
- {
- _runnerThread = new RunnerThread();
- _runnerThread.start();
- }
-
- if (request.getParameter("failednumber") != null)
- doStatusFailed(writer, request, response);
- else if (request.getParameter("errornumber") != null)
- doStatusError(writer, request, response);
- else
- doStatus(writer, request, response);
- }
- catch (Exception exception)
- {
- log("Test Runner: doPost failed", exception);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
- }
- catch (Error error)
- {
- log("Test Runner: doPost failed", error);
-
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
- }
- }
-
- public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
- writer.println("<HTML>");
- writer.println("<HEAD>");
- writer.println("<TITLE>Test Runner</TITLE>");
- writer.println("</HEAD>");
- writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Status<BR> </DIV>");
-
- writer.println("<TABLE width=\"100%\">");
-
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Status</TD></TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test suite class:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _testSuiteClassName + "</TD>");
- writer.println("</TR>");
-
- if ((_runnerThread == null) || (! _runnerThread.isAlive()))
- {
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<FORM method=\"POST\" action=\"" + request.getRequestURL() + "\">");
- writer.print("<INPUT type=\"button\" value=\"run\" onclick=\"this.form.submit()\">");
- writer.print("</FORM>");
- writer.println("</TD>");
- writer.println("</TR>");
- }
- else
- {
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<FORM method=\"GET\" action=\"" + request.getRequestURL() + "\">");
- writer.print("<INPUT type=\"button\" value=\"reload\" onclick=\"this.form.submit()\">");
- writer.print("</FORM>");
- writer.println("</TD>");
- writer.println("</TR>");
-
- if (_currentTest != null)
- {
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Current test:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, _currentTest.toString());
- writer.println("</TD>");
- writer.println("</TR>");
- }
- }
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passed count:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _passedTests.size() + "</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failed count:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _failedTests.size() + "</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Error count:</TD>");
- writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _errorTests.size() + "</TD>");
- writer.println("</TR>");
-
- writer.println("</TABLE>");
-
- if (! _passedTests.isEmpty())
- {
- writer.println("<BR>");
-
- writer.println("<TABLE width=\"100%\">");
-
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passes</TD></TR>");
-
- writer.println("<TR>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
- writer.println("</TR>");
-
- Iterator passedTestsIterator = _passedTests.iterator();
- while (passedTestsIterator.hasNext())
- {
- PassedTest passedTest = (PassedTest) passedTestsIterator.next();
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, passedTest.test.toString());
- writer.println("</TD>");
- writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + passedTest.duration + " ms</TD>");
- writer.println("</TR>");
- }
-
- writer.println("</TABLE>");
- }
-
- if (! _failedTests.isEmpty())
- {
- writer.println("<BR>");
-
- writer.println("<TABLE width=\"100%\">");
-
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failures</TD></TR>");
- writer.println("<TR>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message</TD>");
- writer.println("</TR>");
-
- int failedNumber = 0;
- Iterator failedTestsIterator = _failedTests.iterator();
- while (failedTestsIterator.hasNext())
- {
- FailedTest failedTest = (FailedTest) failedTestsIterator.next();
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<A href=\"" + request.getRequestURL() + "?failednumber=" + failedNumber + "\">");
- encode(writer, failedTest.test.toString());
- writer.print("</A>");
- writer.println("</TD>");
- writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, failedTest.assertionFailedError.getMessage());
- writer.println("</TD>");
- writer.println("</TR>");
- failedNumber++;
- }
-
- writer.println("</TABLE>");
-
- writer.println("<BR>");
- }
-
- if (! _errorTests.isEmpty())
- {
- writer.println("<TABLE width=\"100%\">");
- writer.println("<TR>");
- writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Errors</TD></TR>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
- writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/Error</TD>");
- writer.println("</TR>");
-
- int errorNumber = 0;
- Iterator errorTestsIterator = _errorTests.iterator();
- while (errorTestsIterator.hasNext())
- {
- ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.print("<A href=\"" + request.getRequestURL() + "?errornumber=" + errorNumber + "\">");
- encode(writer, errorTest.test.toString());
- writer.print("</A>");
- writer.println("</TD>");
- writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, errorTest.throwable.toString());
- writer.println("</TD>");
- writer.println("</TR>");
- errorNumber++;
- }
-
- writer.println("</TABLE>");
- }
-
- writer.println("</BODY>");
- writer.println("</HTML>");
- }
-
- public void doStatusFailed(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
- int failedIndex = 0;
- FailedTest failedTest = null;
-
- try
- {
- String failedIndexString = (String) request.getParameter("failednumber");
-
- failedIndex = Integer.parseInt(failedIndexString);
- failedTest = (FailedTest) _failedTests.get(failedIndex);
- }
- catch (Exception exception)
- {
- failedTest = null;
- }
-
- if (failedTest != null)
- {
- writer.println("<HTML>");
- writer.println("<HEAD>");
- writer.println("<TITLE>Test Runner</TITLE>");
- writer.println("</HEAD>");
- writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Failed Status<BR> </DIV>");
-
- writer.println("<TABLE>");
-
- writer.print("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, failedTest.test.toString());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, failedTest.assertionFailedError.getMessage());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.print("<TR>");
- writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<PRE>");
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- failedTest.assertionFailedError.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
- encode(writer, charArrayWriter.toString());
- writer.println("</PRE>");
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("</TABLE>");
-
- writer.println("<TABLE width=\"100%\">");
- writer.println("<TR>");
- writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (failedIndex > 0)
- writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex - 1)+ "\">previous</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
- writer.println("</TD>");
- writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (failedIndex < (_failedTests.size() - 1))
- writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex + 1)+ "\">next</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("</TR>");
- writer.println("</TABLE>");
-
- writer.println("</BODY>");
- writer.println("</HTML>");
- }
- else
- doStatus(writer, request, response);
- }
-
- public void doStatusError(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
- int errorIndex = 0;
- ErrorTest errorTest = null;
-
- try
- {
- String errorIndexString = (String) request.getParameter("errornumber");
-
- errorIndex = Integer.parseInt(errorIndexString);
- errorTest = (ErrorTest) _errorTests.get(errorIndex);
- }
- catch (Exception exception)
- {
- errorTest = null;
- }
-
- if (errorTest != null)
- {
- writer.println("<HTML>");
- writer.println("<HEAD>");
- writer.println("<TITLE>Test Runner</TITLE>");
- writer.println("</HEAD>");
- writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Error Status<BR> </DIV>");
-
- writer.println("<TABLE>");
-
- writer.print("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, errorTest.test.toString());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
- writer.println("</TR>");
-
- writer.println("<TR>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/error:</TD>");
- writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
- encode(writer, errorTest.throwable.toString());
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.print("<TR>");
- writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
- writer.println("</TR>");
- writer.println("<TR>");
- writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<PRE>");
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- errorTest.throwable.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
- encode(writer, charArrayWriter.toString());
- writer.println("</PRE>");
- writer.println("</TD>");
- writer.println("</TR>");
-
- writer.println("</TABLE>");
-
- writer.println("<TABLE width=\"100%\">");
- writer.println("<TR>");
- writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (errorIndex > 0)
- writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex - 1)+ "\">previous</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
- writer.println("</TD>");
- writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
- if (errorIndex < (_errorTests.size() - 1))
- writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex + 1)+ "\">next</A>");
- else
- writer.print(" ");
- writer.println("</TD>");
- writer.println("</TR>");
- writer.println("</TABLE>");
-
- writer.println("</BODY>");
- writer.println("</HTML>");
- }
- else
- doStatus(writer, request, response);
- }
-
- protected class PassedTest
- {
- public Test test;
- public long duration;
- }
-
- protected class FailedTest
- {
- public Test test;
- public long duration;
- public AssertionFailedError assertionFailedError;
- }
-
- protected class ErrorTest
- {
- public Test test;
- public long duration;
- public Throwable throwable;
- }
-
- protected class RunnerThread extends Thread
- {
- public void run()
- {
- try
- {
- _passedTests.clear();
- _failedTests.clear();
- _errorTests.clear();
-
- Class testSuiteClass = Class.forName(_testSuiteClassName);
- TestListener testListener = new BasicTestListener();
-
- _testResult = new TestResult();
- _testSuite = (TestSuite) testSuiteClass.newInstance();
-
- _testResult.addListener(testListener);
- _testSuite.run(_testResult);
- _testResult.removeListener(testListener);
- }
- catch (Exception exception)
- {
- log("Runner Thread: run failed", exception);
- }
- catch (Error error)
- {
- log("Runner Thread: run failed", error);
- }
- }
- }
-
- protected class BasicTestListener implements TestListener
- {
- public void startTest(Test test)
- {
- _startTime = System.currentTimeMillis();
- _failed = false;
- _error = false;
- _assertionFailedError = null;
- _throwable = null;
- _currentTest = test;
- }
-
- public void addError(Test test, Throwable throwable)
- {
- _error = true;
- _throwable = throwable;
- throwable.printStackTrace(System.out);
- }
-
- public void addFailure(Test test, AssertionFailedError assertionFailedError)
- {
- _failed = true;
- _assertionFailedError = assertionFailedError;
- assertionFailedError.printStackTrace(System.out);
- }
-
- public void endTest(Test test)
- {
- if (_failed)
- {
- FailedTest failedTest = new FailedTest();
- failedTest.test = test;
- failedTest.duration = System.currentTimeMillis() - _startTime;
- failedTest.assertionFailedError = _assertionFailedError;
- _failedTests.add(failedTest);
- }
- else if (_error)
- {
- ErrorTest errorTest = new ErrorTest();
- errorTest.test = test;
- errorTest.duration = System.currentTimeMillis() - _startTime;
- errorTest.throwable = _throwable;
- _errorTests.add(errorTest);
- }
- else
- {
- PassedTest passedTest = new PassedTest();
- passedTest.test = test;
- passedTest.duration = System.currentTimeMillis() - _startTime;
- _passedTests.add(passedTest);
- }
-
- _currentTest = null;
- }
-
- private long _startTime = 0;
- private boolean _failed = false;
- private boolean _error = false;
- private AssertionFailedError _assertionFailedError = null;
- private Throwable _throwable = null;
- }
-
- private static void encode(PrintWriter writer, String string)
- {
- if (string != null)
- {
- char[] chars = string.toCharArray();
-
- for (int index = 0; index < chars.length; index++)
- if (chars[index] == '<')
- writer.print("<");
- else if (chars[index] == '>')
- writer.print(">");
- else if (chars[index] == '&')
- writer.print("&");
- else
- writer.print(chars[index]);
- }
- else
- writer.print("null");
- }
-
- protected List _passedTests = new LinkedList();
- protected List _failedTests = new LinkedList();
- protected List _errorTests = new LinkedList();
- protected Test _currentTest = null;
- protected String _testSuiteClassName = null;
- protected RunnerThread _runnerThread = null;
- protected TestResult _testResult = null;
- private TestSuite _testSuite = null;
-
-}
Deleted: labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java 2010-02-26 00:37:39 UTC (rev 31846)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -1,209 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags.
- * See the copyright.txt in the distribution for a full listing
- * of individual contributors.
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- *
- * (C) 2005-2006,
- * @author JBoss Inc.
- */
-package com.arjuna.qa.junit;
-
-import org.dom4j.dom.DOMDocument;
-import org.dom4j.dom.DOMElement;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Date;
-import java.util.Iterator;
-
-/**
- * @author <a href="mailto:istudens at redhat.com">Ivo Studensky</a>
- * @version $Revision$
- */
-public class TestRunnerXMLServlet extends TestRunnerServlet
-{
-
- @Override
- protected String getContentType()
- {
- return "text/xml";
- }
-
- @Override
- public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
-
- DOMDocument report = new DOMDocument();
- DOMElement testsuite = new DOMElement("testsuite");
- report.setRootElement(testsuite);
- testsuite.addAttribute("name", _testSuiteClassName);
- testsuite.addAttribute("errors", Integer.toString(_errorTests.size()));
- testsuite.addAttribute("failures", Integer.toString(_failedTests.size()));
- testsuite.addAttribute("hostname", request.getServerName());
- testsuite.addAttribute("tests", Integer.toString((_testResult != null) ? _testResult.runCount() : 0));
- testsuite.addAttribute("timestamp", new Date().toString());
-
- DOMElement properties = new DOMElement("properties");
- testsuite.add(properties);
- DOMElement status = newPropertyDOMElement("status");
- properties.add(status);
- if ((_runnerThread == null) || (! _runnerThread.isAlive()))
- {
- if (_passedTests.isEmpty() && _failedTests.isEmpty() && _errorTests.isEmpty())
- {
- status.addAttribute("value", "stopped");
- }
- else
- {
- status.addAttribute("value", "finished");
- }
- }
- else if (_currentTest != null)
- {
- status.addAttribute("value", "running");
- properties.add(newPropertyDOMElement("current-test", _currentTest.toString()));
- }
-
- long totalDuration = 0;
-
- if (! _passedTests.isEmpty())
- {
- Iterator passedTestsIterator = _passedTests.iterator();
- while (passedTestsIterator.hasNext())
- {
- PassedTest passedTest = (PassedTest) passedTestsIterator.next();
- totalDuration += passedTest.duration;
-
- testsuite.add(newTestcase(
- passedTest.test.getClass().getName(), passedTest.test.toString(), passedTest.duration));
- }
- }
-
- if (! _failedTests.isEmpty())
- {
- Iterator failedTestsIterator = _failedTests.iterator();
- while (failedTestsIterator.hasNext())
- {
- FailedTest failedTest = (FailedTest) failedTestsIterator.next();
- totalDuration += failedTest.duration;
-
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- failedTest.assertionFailedError.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
-
- testsuite.add(newFailedTestcase(
- failedTest.test.getClass().getName(), failedTest.test.toString(), failedTest.duration,
- failedTest.assertionFailedError.getMessage(), charArrayWriter.toString()));
- }
- }
-
- if (! _errorTests.isEmpty())
- {
- Iterator errorTestsIterator = _errorTests.iterator();
- while (errorTestsIterator.hasNext())
- {
- ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
- totalDuration += errorTest.duration;
-
- CharArrayWriter charArrayWriter = new CharArrayWriter();
- PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
- errorTest.throwable.printStackTrace(printWriter);
- printWriter.close();
- charArrayWriter.close();
-
- System.out.println("charArrayWriter.toString()=" + charArrayWriter.toString());
- testsuite.add(newErrorTestcase(
- errorTest.test.getClass().getName(), errorTest.test.toString(), errorTest.duration,
- errorTest.throwable.getMessage(), charArrayWriter.toString()));
- }
- }
- testsuite.add(new DOMElement("system-out").addCDATA(""));
- testsuite.add(new DOMElement("system-err").addCDATA(""));
- // total time of all tests
- testsuite.addAttribute("time", Float.toString(totalDuration / 1000f));
-
- XMLWriter outputter = new XMLWriter(writer, OutputFormat.createPrettyPrint());
- try {
- outputter.write(testsuite);
- outputter.close();
- } catch (IOException e) {
- throw new ServletException(e);
- }
- }
-
- private DOMElement newPropertyDOMElement(String name)
- {
- return newPropertyDOMElement(name, null);
- }
-
- private DOMElement newPropertyDOMElement(String name, String value)
- {
- DOMElement property = new DOMElement("property");
- property.addAttribute("name", name);
- if (value != null)
- {
- property.addAttribute("value", value);
- }
- return property;
- }
-
- private DOMElement newTestcase(String classname, String name, long duration)
- {
- return newTestcase(classname, name, duration, null, null, null);
- }
-
- private DOMElement newFailedTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
- {
- return newTestcase(classname, name, duration, "junit.framework.AssertionFailedError", failureMessage, failureDetail);
- }
-
- private DOMElement newErrorTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
- {
- return newTestcase(classname, name, duration, "junit.framework.throwable", failureMessage, failureDetail);
- }
-
- private DOMElement newTestcase(String classname, String name, long duration, String failureMessage, String failureType, String failureDetail)
- {
- DOMElement testcase = new DOMElement("testcase");
- testcase.addAttribute("classname", classname);
- testcase.addAttribute("name", name);
- testcase.addAttribute("time", Float.toString(duration / 1000f)); // converts from miliseconds to seconds
- if (failureMessage != null)
- {
- DOMElement failure = new DOMElement("failure");
- testcase.add(failure);
- failure.addAttribute("message", failureMessage);
- if (failureType != null)
- {
- failure.addAttribute("type", failureType);
- }
- if (failureDetail != null)
- {
- failure.addCDATA(failureDetail);
- }
- }
- return testcase;
- }
-
-}
\ No newline at end of file
Copied: labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerServlet.java (from rev 31258, labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java)
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerServlet.java (rev 0)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -0,0 +1,624 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a full listing
+ * of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (c) 2002, 2003, Arjuna Technologies Limited.
+ *
+ * TestRunnerServlet.java
+ */
+
+package com.arjuna.qa.junit;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestListener;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+public class WSTTestRunnerServlet extends HttpServlet
+{
+ public void init(ServletConfig config) throws ServletException
+ {
+ super.init(config);
+
+ _testSuiteClassName = config.getInitParameter("TestSuiteClassName");
+ }
+
+ protected String getContentType()
+ {
+ return "text/html";
+ }
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ try
+ {
+ PrintWriter writer = response.getWriter();
+
+ response.setContentType(getContentType());
+ response.setHeader("Cache-Control", "no-cache");
+
+ if (request.getParameter("failednumber") != null)
+ doStatusFailed(writer, request, response);
+ else if (request.getParameter("errornumber") != null)
+ doStatusError(writer, request, response);
+ else
+ doStatus(writer, request, response);
+ }
+ catch (Exception exception)
+ {
+ log("Test Runner: doGet failed", exception);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
+ }
+ catch (Error error)
+ {
+ log("Test Runner: doGet failed", error);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
+ }
+ }
+
+ public void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ try
+ {
+ PrintWriter writer = response.getWriter();
+
+ response.setContentType(getContentType());
+ response.setHeader("Cache-Control", "no-cache");
+
+ if ((_runnerThread == null) || (! _runnerThread.isAlive()))
+ {
+ _runnerThread = new RunnerThread();
+ _runnerThread.start();
+ }
+
+ if (request.getParameter("failednumber") != null)
+ doStatusFailed(writer, request, response);
+ else if (request.getParameter("errornumber") != null)
+ doStatusError(writer, request, response);
+ else
+ doStatus(writer, request, response);
+ }
+ catch (Exception exception)
+ {
+ log("Test Runner: doPost failed", exception);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, exception.toString());
+ }
+ catch (Error error)
+ {
+ log("Test Runner: doPost failed", error);
+
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, error.toString());
+ }
+ }
+
+ public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException
+ {
+ writer.println("<HTML>");
+ writer.println("<HEAD>");
+ writer.println("<TITLE>Test Runner</TITLE>");
+ writer.println("</HEAD>");
+ writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Status<BR> </DIV>");
+
+ writer.println("<TABLE width=\"100%\">");
+
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Status</TD></TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test suite class:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _testSuiteClassName + "</TD>");
+ writer.println("</TR>");
+
+ if ((_runnerThread == null) || (! _runnerThread.isAlive()))
+ {
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<FORM method=\"POST\" action=\"" + request.getRequestURL() + "\">");
+ writer.print("<INPUT type=\"button\" value=\"run\" onclick=\"this.form.submit()\">");
+ writer.print("</FORM>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+ }
+ else
+ {
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Action:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<FORM method=\"GET\" action=\"" + request.getRequestURL() + "\">");
+ writer.print("<INPUT type=\"button\" value=\"reload\" onclick=\"this.form.submit()\">");
+ writer.print("</FORM>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ if (_currentTest != null)
+ {
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Current test:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, _currentTest.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+ }
+ }
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passed count:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _passedTests.size() + "</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failed count:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _failedTests.size() + "</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Error count:</TD>");
+ writer.println("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + _errorTests.size() + "</TD>");
+ writer.println("</TR>");
+
+ writer.println("</TABLE>");
+
+ if (! _passedTests.isEmpty())
+ {
+ writer.println("<BR>");
+
+ writer.println("<TABLE width=\"100%\">");
+
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Passes</TD></TR>");
+
+ writer.println("<TR>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
+ writer.println("</TR>");
+
+ Iterator passedTestsIterator = _passedTests.iterator();
+ while (passedTestsIterator.hasNext())
+ {
+ PassedTest passedTest = (PassedTest) passedTestsIterator.next();
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, passedTest.test.toString());
+ writer.println("</TD>");
+ writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + passedTest.duration + " ms</TD>");
+ writer.println("</TR>");
+ }
+
+ writer.println("</TABLE>");
+ }
+
+ if (! _failedTests.isEmpty())
+ {
+ writer.println("<BR>");
+
+ writer.println("<TABLE width=\"100%\">");
+
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Failures</TD></TR>");
+ writer.println("<TR>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message</TD>");
+ writer.println("</TR>");
+
+ int failedNumber = 0;
+ Iterator failedTestsIterator = _failedTests.iterator();
+ while (failedTestsIterator.hasNext())
+ {
+ FailedTest failedTest = (FailedTest) failedTestsIterator.next();
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<A href=\"" + request.getRequestURL() + "?failednumber=" + failedNumber + "\">");
+ encode(writer, failedTest.test.toString());
+ writer.print("</A>");
+ writer.println("</TD>");
+ writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, failedTest.assertionFailedError.getMessage());
+ writer.println("</TD>");
+ writer.println("</TR>");
+ failedNumber++;
+ }
+
+ writer.println("</TABLE>");
+
+ writer.println("<BR>");
+ }
+
+ if (! _errorTests.isEmpty())
+ {
+ writer.println("<TABLE width=\"100%\">");
+ writer.println("<TR>");
+ writer.println("<TR><TD colspan=\"3\" align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Errors</TD></TR>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration</TD>");
+ writer.println("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/Error</TD>");
+ writer.println("</TR>");
+
+ int errorNumber = 0;
+ Iterator errorTestsIterator = _errorTests.iterator();
+ while (errorTestsIterator.hasNext())
+ {
+ ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.print("<A href=\"" + request.getRequestURL() + "?errornumber=" + errorNumber + "\">");
+ encode(writer, errorTest.test.toString());
+ writer.print("</A>");
+ writer.println("</TD>");
+ writer.print("<TD align=\"center\" style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, errorTest.throwable.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+ errorNumber++;
+ }
+
+ writer.println("</TABLE>");
+ }
+
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ }
+
+ public void doStatusFailed(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException
+ {
+ int failedIndex = 0;
+ FailedTest failedTest = null;
+
+ try
+ {
+ String failedIndexString = (String) request.getParameter("failednumber");
+
+ failedIndex = Integer.parseInt(failedIndexString);
+ failedTest = (FailedTest) _failedTests.get(failedIndex);
+ }
+ catch (Exception exception)
+ {
+ failedTest = null;
+ }
+
+ if (failedTest != null)
+ {
+ writer.println("<HTML>");
+ writer.println("<HEAD>");
+ writer.println("<TITLE>Test Runner</TITLE>");
+ writer.println("</HEAD>");
+ writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Failed Status<BR> </DIV>");
+
+ writer.println("<TABLE>");
+
+ writer.print("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, failedTest.test.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + failedTest.duration + " ms</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Message:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, failedTest.assertionFailedError.getMessage());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.print("<TR>");
+ writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<PRE>");
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ failedTest.assertionFailedError.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+ encode(writer, charArrayWriter.toString());
+ writer.println("</PRE>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("</TABLE>");
+
+ writer.println("<TABLE width=\"100%\">");
+ writer.println("<TR>");
+ writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (failedIndex > 0)
+ writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex - 1)+ "\">previous</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
+ writer.println("</TD>");
+ writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (failedIndex < (_failedTests.size() - 1))
+ writer.println("<A href=\"" + request.getRequestURL() + "?failednumber=" + (failedIndex + 1)+ "\">next</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("</TR>");
+ writer.println("</TABLE>");
+
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ }
+ else
+ doStatus(writer, request, response);
+ }
+
+ public void doStatusError(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException
+ {
+ int errorIndex = 0;
+ ErrorTest errorTest = null;
+
+ try
+ {
+ String errorIndexString = (String) request.getParameter("errornumber");
+
+ errorIndex = Integer.parseInt(errorIndexString);
+ errorTest = (ErrorTest) _errorTests.get(errorIndex);
+ }
+ catch (Exception exception)
+ {
+ errorTest = null;
+ }
+
+ if (errorTest != null)
+ {
+ writer.println("<HTML>");
+ writer.println("<HEAD>");
+ writer.println("<TITLE>Test Runner</TITLE>");
+ writer.println("</HEAD>");
+ writer.println("<BODY bgcolor=\"white\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<DIV style=\"font-family: Arial, Helvetica, sans-serif; font-size: large\"> <BR>Test Runner: Error Status<BR> </DIV>");
+
+ writer.println("<TABLE>");
+
+ writer.print("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Test:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, errorTest.test.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Duration:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">" + errorTest.duration + " ms</TD>");
+ writer.println("</TR>");
+
+ writer.println("<TR>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Exception/error:</TD>");
+ writer.print("<TD style=\"font-family: Arial, Helvetica, sans-serif\">");
+ encode(writer, errorTest.throwable.toString());
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.print("<TR>");
+ writer.print("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif; font-weight: bold\">Stack trace:</TD>");
+ writer.println("</TR>");
+ writer.println("<TR>");
+ writer.println("<TD colspan=\"2\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<PRE>");
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ errorTest.throwable.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+ encode(writer, charArrayWriter.toString());
+ writer.println("</PRE>");
+ writer.println("</TD>");
+ writer.println("</TR>");
+
+ writer.println("</TABLE>");
+
+ writer.println("<TABLE width=\"100%\">");
+ writer.println("<TR>");
+ writer.println("<TD align=\"left\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (errorIndex > 0)
+ writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex - 1)+ "\">previous</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("<TD align=\"center\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ writer.println("<A href=\"" + request.getRequestURL() + "\">all</A>");
+ writer.println("</TD>");
+ writer.println("<TD align=\"right\" width=\"33%\" style=\"font-family: Arial, Helvetica, sans-serif\">");
+ if (errorIndex < (_errorTests.size() - 1))
+ writer.println("<A href=\"" + request.getRequestURL() + "?errornumber=" + (errorIndex + 1)+ "\">next</A>");
+ else
+ writer.print(" ");
+ writer.println("</TD>");
+ writer.println("</TR>");
+ writer.println("</TABLE>");
+
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ }
+ else
+ doStatus(writer, request, response);
+ }
+
+ protected class PassedTest
+ {
+ public Test test;
+ public long duration;
+ }
+
+ protected class FailedTest
+ {
+ public Test test;
+ public long duration;
+ public AssertionFailedError assertionFailedError;
+ }
+
+ protected class ErrorTest
+ {
+ public Test test;
+ public long duration;
+ public Throwable throwable;
+ }
+
+ protected class RunnerThread extends Thread
+ {
+ public void run()
+ {
+ try
+ {
+ _passedTests.clear();
+ _failedTests.clear();
+ _errorTests.clear();
+
+ Class testSuiteClass = Class.forName(_testSuiteClassName);
+ TestListener testListener = new BasicTestListener();
+
+ _testResult = new TestResult();
+ _testSuite = (TestSuite) testSuiteClass.newInstance();
+
+ _testResult.addListener(testListener);
+ _testSuite.run(_testResult);
+ _testResult.removeListener(testListener);
+ }
+ catch (Exception exception)
+ {
+ log("Runner Thread: run failed", exception);
+ }
+ catch (Error error)
+ {
+ log("Runner Thread: run failed", error);
+ }
+ }
+ }
+
+ protected class BasicTestListener implements TestListener
+ {
+ public void startTest(Test test)
+ {
+ _startTime = System.currentTimeMillis();
+ _failed = false;
+ _error = false;
+ _assertionFailedError = null;
+ _throwable = null;
+ _currentTest = test;
+ }
+
+ public void addError(Test test, Throwable throwable)
+ {
+ _error = true;
+ _throwable = throwable;
+ throwable.printStackTrace(System.out);
+ }
+
+ public void addFailure(Test test, AssertionFailedError assertionFailedError)
+ {
+ _failed = true;
+ _assertionFailedError = assertionFailedError;
+ assertionFailedError.printStackTrace(System.out);
+ }
+
+ public void endTest(Test test)
+ {
+ if (_failed)
+ {
+ FailedTest failedTest = new FailedTest();
+ failedTest.test = test;
+ failedTest.duration = System.currentTimeMillis() - _startTime;
+ failedTest.assertionFailedError = _assertionFailedError;
+ _failedTests.add(failedTest);
+ }
+ else if (_error)
+ {
+ ErrorTest errorTest = new ErrorTest();
+ errorTest.test = test;
+ errorTest.duration = System.currentTimeMillis() - _startTime;
+ errorTest.throwable = _throwable;
+ _errorTests.add(errorTest);
+ }
+ else
+ {
+ PassedTest passedTest = new PassedTest();
+ passedTest.test = test;
+ passedTest.duration = System.currentTimeMillis() - _startTime;
+ _passedTests.add(passedTest);
+ }
+
+ _currentTest = null;
+ }
+
+ private long _startTime = 0;
+ private boolean _failed = false;
+ private boolean _error = false;
+ private AssertionFailedError _assertionFailedError = null;
+ private Throwable _throwable = null;
+ }
+
+ private static void encode(PrintWriter writer, String string)
+ {
+ if (string != null)
+ {
+ char[] chars = string.toCharArray();
+
+ for (int index = 0; index < chars.length; index++)
+ if (chars[index] == '<')
+ writer.print("<");
+ else if (chars[index] == '>')
+ writer.print(">");
+ else if (chars[index] == '&')
+ writer.print("&");
+ else
+ writer.print(chars[index]);
+ }
+ else
+ writer.print("null");
+ }
+
+ protected List _passedTests = new LinkedList();
+ protected List _failedTests = new LinkedList();
+ protected List _errorTests = new LinkedList();
+ protected Test _currentTest = null;
+ protected String _testSuiteClassName = null;
+ protected RunnerThread _runnerThread = null;
+ protected TestResult _testResult = null;
+ private TestSuite _testSuite = null;
+
+}
Copied: labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerXMLServlet.java (from rev 31258, labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java)
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerXMLServlet.java (rev 0)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/WSTTestRunnerXMLServlet.java 2010-02-26 09:22:47 UTC (rev 31847)
@@ -0,0 +1,209 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a full listing
+ * of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+package com.arjuna.qa.junit;
+
+import org.dom4j.dom.DOMDocument;
+import org.dom4j.dom.DOMElement;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.XMLWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Date;
+import java.util.Iterator;
+
+/**
+ * @author <a href="mailto:istudens at redhat.com">Ivo Studensky</a>
+ * @version $Revision$
+ */
+public class WSTTestRunnerXMLServlet extends WSTTestRunnerServlet
+{
+
+ @Override
+ protected String getContentType()
+ {
+ return "text/xml";
+ }
+
+ @Override
+ public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
+ throws ServletException
+ {
+
+ DOMDocument report = new DOMDocument();
+ DOMElement testsuite = new DOMElement("testsuite");
+ report.setRootElement(testsuite);
+ testsuite.addAttribute("name", _testSuiteClassName);
+ testsuite.addAttribute("errors", Integer.toString(_errorTests.size()));
+ testsuite.addAttribute("failures", Integer.toString(_failedTests.size()));
+ testsuite.addAttribute("hostname", request.getServerName());
+ testsuite.addAttribute("tests", Integer.toString((_testResult != null) ? _testResult.runCount() : 0));
+ testsuite.addAttribute("timestamp", new Date().toString());
+
+ DOMElement properties = new DOMElement("properties");
+ testsuite.add(properties);
+ DOMElement status = newPropertyDOMElement("status");
+ properties.add(status);
+ if ((_runnerThread == null) || (! _runnerThread.isAlive()))
+ {
+ if (_passedTests.isEmpty() && _failedTests.isEmpty() && _errorTests.isEmpty())
+ {
+ status.addAttribute("value", "stopped");
+ }
+ else
+ {
+ status.addAttribute("value", "finished");
+ }
+ }
+ else if (_currentTest != null)
+ {
+ status.addAttribute("value", "running");
+ properties.add(newPropertyDOMElement("current-test", _currentTest.toString()));
+ }
+
+ long totalDuration = 0;
+
+ if (! _passedTests.isEmpty())
+ {
+ Iterator passedTestsIterator = _passedTests.iterator();
+ while (passedTestsIterator.hasNext())
+ {
+ PassedTest passedTest = (PassedTest) passedTestsIterator.next();
+ totalDuration += passedTest.duration;
+
+ testsuite.add(newTestcase(
+ passedTest.test.getClass().getName(), passedTest.test.toString(), passedTest.duration));
+ }
+ }
+
+ if (! _failedTests.isEmpty())
+ {
+ Iterator failedTestsIterator = _failedTests.iterator();
+ while (failedTestsIterator.hasNext())
+ {
+ FailedTest failedTest = (FailedTest) failedTestsIterator.next();
+ totalDuration += failedTest.duration;
+
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ failedTest.assertionFailedError.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+
+ testsuite.add(newFailedTestcase(
+ failedTest.test.getClass().getName(), failedTest.test.toString(), failedTest.duration,
+ failedTest.assertionFailedError.getMessage(), charArrayWriter.toString()));
+ }
+ }
+
+ if (! _errorTests.isEmpty())
+ {
+ Iterator errorTestsIterator = _errorTests.iterator();
+ while (errorTestsIterator.hasNext())
+ {
+ ErrorTest errorTest = (ErrorTest) errorTestsIterator.next();
+ totalDuration += errorTest.duration;
+
+ CharArrayWriter charArrayWriter = new CharArrayWriter();
+ PrintWriter printWriter = new PrintWriter(charArrayWriter, true);
+ errorTest.throwable.printStackTrace(printWriter);
+ printWriter.close();
+ charArrayWriter.close();
+
+ System.out.println("charArrayWriter.toString()=" + charArrayWriter.toString());
+ testsuite.add(newErrorTestcase(
+ errorTest.test.getClass().getName(), errorTest.test.toString(), errorTest.duration,
+ errorTest.throwable.getMessage(), charArrayWriter.toString()));
+ }
+ }
+ testsuite.add(new DOMElement("system-out").addCDATA(""));
+ testsuite.add(new DOMElement("system-err").addCDATA(""));
+ // total time of all tests
+ testsuite.addAttribute("time", Float.toString(totalDuration / 1000f));
+
+ XMLWriter outputter = new XMLWriter(writer, OutputFormat.createPrettyPrint());
+ try {
+ outputter.write(testsuite);
+ outputter.close();
+ } catch (IOException e) {
+ throw new ServletException(e);
+ }
+ }
+
+ private DOMElement newPropertyDOMElement(String name)
+ {
+ return newPropertyDOMElement(name, null);
+ }
+
+ private DOMElement newPropertyDOMElement(String name, String value)
+ {
+ DOMElement property = new DOMElement("property");
+ property.addAttribute("name", name);
+ if (value != null)
+ {
+ property.addAttribute("value", value);
+ }
+ return property;
+ }
+
+ private DOMElement newTestcase(String classname, String name, long duration)
+ {
+ return newTestcase(classname, name, duration, null, null, null);
+ }
+
+ private DOMElement newFailedTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
+ {
+ return newTestcase(classname, name, duration, "junit.framework.AssertionFailedError", failureMessage, failureDetail);
+ }
+
+ private DOMElement newErrorTestcase(String classname, String name, long duration, String failureMessage, String failureDetail)
+ {
+ return newTestcase(classname, name, duration, "junit.framework.throwable", failureMessage, failureDetail);
+ }
+
+ private DOMElement newTestcase(String classname, String name, long duration, String failureMessage, String failureType, String failureDetail)
+ {
+ DOMElement testcase = new DOMElement("testcase");
+ testcase.addAttribute("classname", classname);
+ testcase.addAttribute("name", name);
+ testcase.addAttribute("time", Float.toString(duration / 1000f)); // converts from miliseconds to seconds
+ if (failureMessage != null)
+ {
+ DOMElement failure = new DOMElement("failure");
+ testcase.add(failure);
+ failure.addAttribute("message", failureMessage);
+ if (failureType != null)
+ {
+ failure.addAttribute("type", failureType);
+ }
+ if (failureDetail != null)
+ {
+ failure.addCDATA(failureDetail);
+ }
+ }
+ return testcase;
+ }
+
+}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list