[jboss-svn-commits] JBL Code SVN: r25132 - in labs/jbosstm/trunk/XTS: WS-C and 21 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 6 05:57:07 EST 2009
Author: istudens at redhat.com
Date: 2009-02-06 05:57:07 -0500 (Fri, 06 Feb 2009)
New Revision: 25132
Added:
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/TestRunnerXMLServlet.java
labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerXMLServlet.java
labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerXMLServlet.java
labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerXMLServlet.java
labs/jbosstm/trunk/XTS/localjunit/
labs/jbosstm/trunk/XTS/localjunit/build.xml
labs/jbosstm/trunk/XTS/localjunit/ext/
labs/jbosstm/trunk/XTS/localjunit/ext/commons-codec.jar
labs/jbosstm/trunk/XTS/localjunit/ext/commons-httpclient.jar
labs/jbosstm/trunk/XTS/localjunit/ext/commons-logging.jar
labs/jbosstm/trunk/XTS/localjunit/run-tests.xml
labs/jbosstm/trunk/XTS/localjunit/src/
labs/jbosstm/trunk/XTS/localjunit/src/com/
labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/
labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/
labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/
labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/HttpUtils.java
labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/LocalJUnitRunner.java
Modified:
labs/jbosstm/trunk/XTS/WS-C/build.xml
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-C/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java
labs/jbosstm/trunk/XTS/WS-T/build.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
labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java
labs/jbosstm/trunk/XTS/WSAS/build.xml
labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerServlet.java
labs/jbosstm/trunk/XTS/WSAS/tests/dd/wsas-tests_web-app.xml
labs/jbosstm/trunk/XTS/WSCF/build.xml
labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerServlet.java
labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf-tests_web-app.xml
labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf11-tests_web-app.xml
labs/jbosstm/trunk/XTS/WSTX/build.xml
labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerServlet.java
labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx-tests_web-app.xml
labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx11-tests_web-app.xml
Log:
JBQA-2039, automation of basic XTS testsuites for Hudson
Modified: labs/jbosstm/trunk/XTS/WS-C/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/build.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-C/build.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -84,6 +84,7 @@
jbossws-native-jaxws.jar jbossws-client.jar stax-api.jar jbossws-native-saaj.jar
jbossws-native-jaxws-ext.jar jbossws-native-core.jar jbossws-common.jar jboss-logging-spi.jar"/>
<property name="jboss.common.lib.jars" value="servlet-api.jar"/>
+ <property name="jboss.lib.jars" value="dom4j.jar"/>
<property name="tests.libs" value="junit.jar"/>
@@ -95,6 +96,7 @@
<fileset dir="${com.arjuna.jta.install.lib}" includes="${jta.lib.jars}"/>
<fileset dir="${jboss.client.lib.dir}" includes="${jboss.client.lib.jars}"/>
<fileset dir="${jboss.common.lib.dir}" includes="${jboss.common.lib.jars}"/>
+ <fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
</path>
<path id="tests.lib.path">
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 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -42,12 +42,27 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wsc.tests.junit.TestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
+
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
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 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/dd/ws-c11-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -42,12 +42,27 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wsc11.tests.junit.TestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
+
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
Modified: 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 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -26,13 +26,24 @@
package com.arjuna.qa.junit;
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import junit.framework.*;
+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
@@ -42,6 +53,11 @@
_testSuiteClassName = config.getInitParameter("TestSuiteClassName");
}
+ protected String getContentType()
+ {
+ return "text/html";
+ }
+
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
@@ -49,7 +65,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if (request.getParameter("failednumber") != null)
@@ -80,7 +96,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if ((_runnerThread == null) || (! _runnerThread.isAlive()))
@@ -111,8 +127,7 @@
}
public void doStatus(PrintWriter writer, HttpServletRequest request, HttpServletResponse response)
- throws ServletException
- {
+ throws ServletException {
writer.println("<HTML>");
writer.println("<HEAD>");
writer.println("<TITLE>Test Runner</TITLE>");
@@ -463,27 +478,27 @@
doStatus(writer, request, response);
}
- private class PassedTest
+ protected class PassedTest
{
public Test test;
public long duration;
}
- private class FailedTest
+ protected class FailedTest
{
public Test test;
public long duration;
public AssertionFailedError assertionFailedError;
}
- private class ErrorTest
+ protected class ErrorTest
{
public Test test;
public long duration;
public Throwable throwable;
}
- private class RunnerThread extends Thread
+ protected class RunnerThread extends Thread
{
RunnerThread()
{
@@ -581,7 +596,7 @@
private Throwable _throwable = null;
}
- private static void encode(PrintWriter writer, String string)
+ protected static void encode(PrintWriter writer, String string)
{
if (string != null)
{
@@ -601,13 +616,13 @@
writer.print("null");
}
- private List _passedTests = new LinkedList();
- private List _failedTests = new LinkedList();
- private List _errorTests = new LinkedList();
- private Test _currentTest = null;
- private String _testSuiteClassName = null;
- private RunnerThread _runnerThread = null;
- private TestResult _testResult = null;
- private TestSuite _testSuite = 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;
}
Added: 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 (rev 0)
+++ labs/jbosstm/trunk/XTS/WS-C/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -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 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;
+ }
+
+}
Modified: labs/jbosstm/trunk/XTS/WS-T/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/build.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-T/build.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -103,6 +103,7 @@
jbossws-native-jaxws.jar jbossws-client.jar stax-api.jar jbossws-native-saaj.jar
jbossws-native-jaxws-ext.jar jbossws-native-core.jar jbossws-common.jar jboss-logging-spi.jar"/>
<property name="jboss.common.lib.jars" value="servlet-api.jar"/>
+ <property name="jboss.lib.jars" value="dom4j.jar"/>
<property name="tests.libs" value="junit.jar"/>
<property name="ws-c.libs" value="ws-c.jar"/>
@@ -141,6 +142,7 @@
<fileset dir="${com.arjuna.jta.install.lib}" includes="${jta.lib.jars}"/>
<fileset dir="${jboss.client.lib.dir}" includes="${jboss.client.lib.jars}"/>
<fileset dir="${jboss.common.lib.dir}" includes="${jboss.common.lib.jars}"/>
+ <fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
</path>
<path id="tests.lib.path">
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 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -42,11 +42,26 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wst.tests.junit.TestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
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 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/dd/ws-t11-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -42,12 +42,27 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.TestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wst11.tests.junit.TestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
-
+
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
+
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
Modified: 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 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -26,13 +26,24 @@
package com.arjuna.qa.junit;
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import junit.framework.*;
+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
@@ -42,6 +53,11 @@
_testSuiteClassName = config.getInitParameter("TestSuiteClassName");
}
+ protected String getContentType()
+ {
+ return "text/html";
+ }
+
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
@@ -49,7 +65,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if (request.getParameter("failednumber") != null)
@@ -80,7 +96,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if ((_runnerThread == null) || (! _runnerThread.isAlive()))
@@ -463,27 +479,27 @@
doStatus(writer, request, response);
}
- private class PassedTest
+ protected class PassedTest
{
public Test test;
public long duration;
}
- private class FailedTest
+ protected class FailedTest
{
public Test test;
public long duration;
public AssertionFailedError assertionFailedError;
}
- private class ErrorTest
+ protected class ErrorTest
{
public Test test;
public long duration;
public Throwable throwable;
}
- private class RunnerThread extends Thread
+ protected class RunnerThread extends Thread
{
public void run()
{
@@ -514,7 +530,7 @@
}
}
- private class BasicTestListener implements TestListener
+ protected class BasicTestListener implements TestListener
{
public void startTest(Test test)
{
@@ -596,13 +612,13 @@
writer.print("null");
}
- private List _passedTests = new LinkedList();
- private List _failedTests = new LinkedList();
- private List _errorTests = new LinkedList();
- private Test _currentTest = null;
- private String _testSuiteClassName = null;
- private RunnerThread _runnerThread = null;
- private TestResult _testResult = 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;
}
Added: 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 (rev 0)
+++ labs/jbosstm/trunk/XTS/WS-T/tests/src/com/arjuna/qa/junit/TestRunnerXMLServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -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 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
Modified: labs/jbosstm/trunk/XTS/WSAS/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSAS/build.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSAS/build.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -34,6 +34,7 @@
<property name="jboss.dir" value="${env.JBOSS_HOME}"/>
<property name="deploy.dir" value="${jboss.dir}/server/default/deploy"/>
+ <property name="jboss.lib.dir" location="${jboss.dir}/lib"/>
<property name="jboss.client.lib.dir" location="${jboss.dir}/client"/>
<property name="com.arjuna.buildsystem.dir" location="../../antbuildsystem"/>
@@ -51,6 +52,7 @@
<property name="jboss.client.lib.jars" value="jaxb-api.jar jboss-javaee.jar jbossws-native-jaxrpc.jar
jbossws-native-jaxws.jar jbossws-client.jar stax-api.jar jbossws-native-saaj.jar
jbossws-native-jaxws-ext.jar jbossws-native-core.jar jbossws-common.jar jboss-logging-spi.jar"/>
+ <property name="jboss.lib.jars" value="dom4j.jar"/>
<property name="com.arjuna.mwlabs.wsas.resourcebundle" value="wsas_msg_en_US.properties"/>
@@ -91,6 +93,7 @@
<path id="com.arjuna.mwlabs.wsas.tests.lib.path">
<fileset dir="${com.arjuna.xts.ext}" includes="${tests.libs}"/>
<fileset dir="${jboss.client.lib.dir}" includes="${jboss.client.lib.jars}"/>
+ <fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
</path>
<!-- Initialisation -->
Modified: labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerServlet.java 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -26,12 +26,24 @@
package com.arjuna.qa.junit;
-import java.io.*;
-import java.util.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import junit.framework.*;
+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 WSASTestRunnerServlet extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
@@ -41,6 +53,11 @@
_testSuiteClassName = config.getInitParameter("TestSuiteClassName");
}
+ protected String getContentType()
+ {
+ return "text/html";
+ }
+
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
@@ -48,7 +65,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if (request.getParameter("failednumber") != null)
@@ -79,7 +96,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if ((_runnerThread == null) || (! _runnerThread.isAlive()))
@@ -462,27 +479,27 @@
doStatus(writer, request, response);
}
- private class PassedTest
+ protected class PassedTest
{
public Test test;
public long duration;
}
- private class FailedTest
+ protected class FailedTest
{
public Test test;
public long duration;
public AssertionFailedError assertionFailedError;
}
- private class ErrorTest
+ protected class ErrorTest
{
public Test test;
public long duration;
public Throwable throwable;
}
- private class RunnerThread extends Thread
+ protected class RunnerThread extends Thread
{
public void run()
{
@@ -513,7 +530,7 @@
}
}
- private class BasicTestListener implements TestListener
+ protected class BasicTestListener implements TestListener
{
public void startTest(Test test)
{
@@ -595,13 +612,13 @@
writer.print("null");
}
- private List _passedTests = new LinkedList();
- private List _failedTests = new LinkedList();
- private List _errorTests = new LinkedList();
- private Test _currentTest = null;
- private String _testSuiteClassName = null;
- private RunnerThread _runnerThread = null;
- private TestResult _testResult = 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;
}
\ No newline at end of file
Added: labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerXMLServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerXMLServlet.java (rev 0)
+++ labs/jbosstm/trunk/XTS/WSAS/tests/classes/com/arjuna/qa/junit/WSASTestRunnerXMLServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -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 WSASTestRunnerXMLServlet extends WSASTestRunnerServlet
+{
+
+ @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
Modified: labs/jbosstm/trunk/XTS/WSAS/tests/dd/wsas-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSAS/tests/dd/wsas-tests_web-app.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSAS/tests/dd/wsas-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -32,7 +32,7 @@
<listener-class>com.arjuna.wsas.tests.TestInitialisation</listener-class>
</listener>
- <servlet>
+ <servlet>
<servlet-name>JUnit Tests Servlet</servlet-name>
<servlet-class>com.arjuna.qa.junit.WSASTestRunnerServlet</servlet-class>
<init-param>
@@ -42,11 +42,26 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.WSASTestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wsas.tests.WSASTestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
Modified: labs/jbosstm/trunk/XTS/WSCF/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSCF/build.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSCF/build.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -80,6 +80,7 @@
jbossws-native-jaxws.jar jbossws-client.jar stax-api.jar jbossws-native-saaj.jar
jbossws-native-jaxws-ext.jar jbossws-native-core.jar jbossws-common.jar jboss-logging-spi.jar"/>
<property name="jboss.common.lib.jars" value="servlet-api.jar"/>
+ <property name="jboss.lib.jars" value="dom4j.jar"/>
<property name="wsas.libs" value="wsas.jar"/>
<property name="wsc.libs" value="ws-c.jar"/>
@@ -121,6 +122,7 @@
<path id="com.arjuna.mwlabs.wscf.tests.lib.path">
<fileset dir="${com.arjuna.xts.ext}" includes="${tests.libs}"/>
+ <fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
</path>
<!-- Initialisation -->
Modified: labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerServlet.java 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -26,12 +26,24 @@
package com.arjuna.qa.junit;
-import java.io.*;
-import java.util.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import junit.framework.*;
+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 WSCFTestRunnerServlet extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
@@ -41,6 +53,11 @@
_testSuiteClassName = config.getInitParameter("TestSuiteClassName");
}
+ protected String getContentType()
+ {
+ return "text/html";
+ }
+
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
@@ -48,7 +65,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if (request.getParameter("failednumber") != null)
@@ -79,7 +96,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if ((_runnerThread == null) || (! _runnerThread.isAlive()))
@@ -462,27 +479,27 @@
doStatus(writer, request, response);
}
- private class PassedTest
+ protected class PassedTest
{
public Test test;
public long duration;
}
- private class FailedTest
+ protected class FailedTest
{
public Test test;
public long duration;
public AssertionFailedError assertionFailedError;
}
- private class ErrorTest
+ protected class ErrorTest
{
public Test test;
public long duration;
public Throwable throwable;
}
- private class RunnerThread extends Thread
+ protected class RunnerThread extends Thread
{
public void run()
{
@@ -513,7 +530,7 @@
}
}
- private class BasicTestListener implements TestListener
+ protected class BasicTestListener implements TestListener
{
public void startTest(Test test)
{
@@ -595,13 +612,13 @@
writer.print("null");
}
- private List _passedTests = new LinkedList();
- private List _failedTests = new LinkedList();
- private List _errorTests = new LinkedList();
- private Test _currentTest = null;
- private String _testSuiteClassName = null;
- private RunnerThread _runnerThread = null;
- private TestResult _testResult = 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;
}
\ No newline at end of file
Added: labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerXMLServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerXMLServlet.java (rev 0)
+++ labs/jbosstm/trunk/XTS/WSCF/tests/classes/com/arjuna/qa/junit/WSCFTestRunnerXMLServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -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 WSCFTestRunnerXMLServlet extends WSCFTestRunnerServlet
+{
+
+ @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
Modified: labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf-tests_web-app.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -32,7 +32,7 @@
<listener-class>com.arjuna.wscf.tests.TestInitialisation</listener-class>
</listener>
- <servlet>
+ <servlet>
<servlet-name>JUnit Tests Servlet</servlet-name>
<servlet-class>com.arjuna.qa.junit.WSCFTestRunnerServlet</servlet-class>
<init-param>
@@ -42,11 +42,26 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.WSCFTestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wscf.tests.WSCFTestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
Modified: labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf11-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf11-tests_web-app.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSCF/tests/dd/wscf11-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -42,11 +42,26 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.WSCFTestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wscf11.tests.WSCF11TestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
Modified: labs/jbosstm/trunk/XTS/WSTX/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSTX/build.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSTX/build.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -101,6 +101,7 @@
jbossws-native-jaxws.jar jbossws-client.jar stax-api.jar jbossws-native-saaj.jar
jbossws-native-jaxws-ext.jar jbossws-native-core.jar jbossws-common.jar jboss-logging-spi.jar"/>
<property name="jboss.common.lib.jars" value="servlet-api.jar"/>
+ <property name="jboss.lib.jars" value="dom4j.jar"/>
<property name="wsas.libs" value="wsas.jar"/>
<property name="wsc.libs" value="ws-c.jar"/>
@@ -132,6 +133,7 @@
<path id="com.arjuna.mwlabs.wstx.tests.lib.path">
<fileset dir="${com.arjuna.xts.ext}" includes="${tests.libs}"/>
+ <fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
</path>
<!-- Define classpath builder task -->
Modified: labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerServlet.java 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -26,12 +26,24 @@
package com.arjuna.qa.junit;
-import java.io.*;
-import java.util.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import junit.framework.*;
+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 WSTXTestRunnerServlet extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
@@ -41,6 +53,11 @@
_testSuiteClassName = config.getInitParameter("TestSuiteClassName");
}
+ protected String getContentType()
+ {
+ return "text/html";
+ }
+
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
@@ -48,7 +65,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if (request.getParameter("failednumber") != null)
@@ -79,7 +96,7 @@
{
PrintWriter writer = response.getWriter();
- response.setContentType("text/html");
+ response.setContentType(getContentType());
response.setHeader("Cache-Control", "no-cache");
if ((_runnerThread == null) || (! _runnerThread.isAlive()))
@@ -462,27 +479,27 @@
doStatus(writer, request, response);
}
- private class PassedTest
+ protected class PassedTest
{
public Test test;
public long duration;
}
- private class FailedTest
+ protected class FailedTest
{
public Test test;
public long duration;
public AssertionFailedError assertionFailedError;
}
- private class ErrorTest
+ protected class ErrorTest
{
public Test test;
public long duration;
public Throwable throwable;
}
- private class RunnerThread extends Thread
+ protected class RunnerThread extends Thread
{
public void run()
{
@@ -513,7 +530,7 @@
}
}
- private class BasicTestListener implements TestListener
+ protected class BasicTestListener implements TestListener
{
public void startTest(Test test)
{
@@ -595,13 +612,13 @@
writer.print("null");
}
- private List _passedTests = new LinkedList();
- private List _failedTests = new LinkedList();
- private List _errorTests = new LinkedList();
- private Test _currentTest = null;
- private String _testSuiteClassName = null;
- private RunnerThread _runnerThread = null;
- private TestResult _testResult = 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;
}
\ No newline at end of file
Added: labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerXMLServlet.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerXMLServlet.java (rev 0)
+++ labs/jbosstm/trunk/XTS/WSTX/tests/classes/com/arjuna/qa/junit/WSTXTestRunnerXMLServlet.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -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 WSTXTestRunnerXMLServlet extends WSTXTestRunnerServlet
+{
+
+ @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
Modified: labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx-tests_web-app.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -42,11 +42,26 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.WSTXTestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wst.tests.WSTXTestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
Modified: labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx11-tests_web-app.xml
===================================================================
--- labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx11-tests_web-app.xml 2009-02-06 06:45:54 UTC (rev 25131)
+++ labs/jbosstm/trunk/XTS/WSTX/tests/dd/wstx11-tests_web-app.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -42,11 +42,26 @@
<load-on-startup>4</load-on-startup>
</servlet>
+ <servlet>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <servlet-class>com.arjuna.qa.junit.WSTXTestRunnerXMLServlet</servlet-class>
+ <init-param>
+ <param-name>TestSuiteClassName</param-name>
+ <param-value>com.arjuna.wst11.tests.WSTX11TestSuite</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>JUnit Tests Servlet</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>JUnit Tests XML Servlet</servlet-name>
+ <url-pattern>/index.xml</url-pattern>
+ </servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
Added: labs/jbosstm/trunk/XTS/localjunit/build.xml
===================================================================
--- labs/jbosstm/trunk/XTS/localjunit/build.xml (rev 0)
+++ labs/jbosstm/trunk/XTS/localjunit/build.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="localjunit" default="all">
+
+ <property name="build.dir" value="build"/>
+ <property name="build.dir.classes" value="${build.dir}/classes"/>
+ <property name="src.dir" value="src"/>
+ <property name="reports.dir" value="reports"/>
+ <property name="javac.debug" value="on"/>
+ <property name="javac.optimize" value="off"/>
+
+ <path id="tests.classpath">
+ <pathelement location="ext/commons-httpclient.jar"/>
+ <pathelement location="ext/commons-logging.jar"/>
+ <pathelement location="ext/commons-codec.jar"/>
+ <pathelement location="../ext/junit.jar"/>
+ </path>
+
+ <target name="all" depends="init,jar">
+ </target>
+
+ <target name="clean">
+ <delete dir="${build.dir}"/>
+ <delete dir="${reports.dir}"/>
+ </target>
+
+ <target name="init" depends="clean,init-dir"/>
+
+ <target name="init-dir">
+ <mkdir dir="${build.dir}"/>
+ <mkdir dir="${build.dir.classes}"/>
+ <mkdir dir="${reports.dir}"/>
+ </target>
+
+ <target name="compile">
+ <javac destdir="${build.dir.classes}" debug="${javac.debug}" optimize="${javac.optimize}">
+ <classpath>
+ <path refid="tests.classpath" />
+ </classpath>
+ <src path="${src.dir}" />
+ </javac>
+ </target>
+
+ <target name="jar" depends="compile">
+ <jar jarfile="${build.dir}/localjunit.jar">
+ <fileset dir="${build.dir.classes}" />
+ </jar>
+ </target>
+
+</project>
Added: labs/jbosstm/trunk/XTS/localjunit/ext/commons-codec.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/trunk/XTS/localjunit/ext/commons-codec.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/trunk/XTS/localjunit/ext/commons-httpclient.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/trunk/XTS/localjunit/ext/commons-httpclient.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/trunk/XTS/localjunit/ext/commons-logging.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/trunk/XTS/localjunit/ext/commons-logging.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/trunk/XTS/localjunit/run-tests.xml
===================================================================
--- labs/jbosstm/trunk/XTS/localjunit/run-tests.xml (rev 0)
+++ labs/jbosstm/trunk/XTS/localjunit/run-tests.xml 2009-02-06 10:57:07 UTC (rev 25132)
@@ -0,0 +1,72 @@
+<!--
+ JBoss, Home of Professional Open Source
+ Copyright 2008, 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) 2008,
+ @author JBoss Inc.
+-->
+
+<project name="Local JUnit Test for basic XTS testsuite" default="run" basedir=".">
+
+ <property environment="env"/>
+ <!--property name="server.hostname" value="${env.MYTESTIP_1}"/-->
+ <property name="server.hostname" value="localhost"/>
+ <property name="base.url" value="http://${server.hostname}:8080"/>
+ <property name="reports.dir" value="reports"/>
+
+ <path id="tests.classpath">
+ <pathelement location="build/localjunit.jar"/>
+ <pathelement location="ext/commons-httpclient.jar"/>
+ <pathelement location="ext/commons-logging.jar"/>
+ <pathelement location="ext/commons-codec.jar"/>
+ <pathelement location="../ext/junit.jar"/>
+ </path>
+
+
+ <target name="run">
+ <run-localjunit-test serverUrl="${base.url}/wsas-tests/index.xml" outfile="TEST-wsas-test.xml" />
+ <run-localjunit-test serverUrl="${base.url}/wscf-tests/index.xml" outfile="TEST-wscf-test.xml" />
+ <run-localjunit-test serverUrl="${base.url}/ws-c-tests/index.xml" outfile="TEST-ws-c-test.xml" />
+ <run-localjunit-test serverUrl="${base.url}/ws-c11-tests/index.xml" outfile="TEST-ws-c11-test.xml" />
+ <run-localjunit-test serverUrl="${base.url}/ws-t-tests/index.xml" outfile="TEST-ws-t-test.xml" />
+ <run-localjunit-test serverUrl="${base.url}/ws-t11-tests/index.xml" outfile="TEST-ws-t11-test.xml" />
+ <run-localjunit-test serverUrl="${base.url}/wstx-tests/index.xml" outfile="TEST-wstx-test.xml" />
+ </target>
+
+
+ <macrodef name="run-localjunit-test">
+ <attribute name="serverUrl" />
+ <attribute name="outfile" />
+ <sequential>
+ <junit printsummary="yes" haltonfailure="yes" fork="true" dir="." maxmemory="256m" showoutput="yes">
+ <classpath>
+ <path refid="tests.classpath"/>
+ </classpath>
+
+ <formatter type="xml"/>
+
+ <sysproperty key="serverUrl" value="@{serverUrl}" />
+ <sysproperty key="outfile" value="${reports.dir}/@{outfile}" />
+
+ <test name="com.arjuna.qa.junit.LocalJUnitRunner" />
+
+ <!--jvmarg value="-Xdebug"/>
+ <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"/-->
+ </junit>
+ </sequential>
+ </macrodef>
+
+</project>
Added: labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/HttpUtils.java
===================================================================
--- labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/HttpUtils.java (rev 0)
+++ labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/HttpUtils.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -0,0 +1,162 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package com.arjuna.qa.junit;
+
+import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethodBase;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.methods.DeleteMethod;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.HeadMethod;
+import org.apache.commons.httpclient.methods.OptionsMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.methods.TraceMethod;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/** Utilities for client http requests
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: 82338 $
+ */
+public class HttpUtils
+{
+// private static Logger log = Logger.getLogger(HttpUtils.class);
+
+ public static final int GET = 1;
+ public static final int POST = 2;
+ public static final int HEAD = 3;
+ public static final int OPTIONS = 4;
+ public static final int PUT = 5;
+ public static final int DELETE = 6;
+ public static final int TRACE = 7;
+
+ /** Perform a get on the indicated URL and assert an HTTP_OK response code
+ *
+ * @param url
+ * @return The commons HttpClient used to perform the get
+ * @throws Exception on any failure
+ */
+ public static HttpMethodBase accessURL(URL url) throws Exception
+ {
+ return accessURL(url, null, HttpURLConnection.HTTP_OK);
+ }
+ /** Perform a get on the indicated URL and assert that the response code
+ * matches the expectedHttpCode argument.
+ *
+ * @param url
+ * @param expectedHttpCode the http response code expected
+ * @return The commons HttpClient used to perform the get
+ * @throws Exception on any failure
+ */
+ public static HttpMethodBase accessURL(URL url, String realm,
+ int expectedHttpCode)
+ throws Exception
+ {
+ return accessURL(url, realm, expectedHttpCode, null);
+ }
+ public static HttpMethodBase accessURL(URL url, String realm,
+ int expectedHttpCode, int type)
+ throws Exception
+ {
+ return accessURL(url, realm, expectedHttpCode, null, type);
+ }
+ public static HttpMethodBase accessURL(URL url, String realm,
+ int expectedHttpCode, Header[] hdrs)
+ throws Exception
+ {
+ return accessURL(url, realm, expectedHttpCode, hdrs, GET);
+ }
+ public static HttpMethodBase accessURL(URL url, String realm,
+ int expectedHttpCode, Header[] hdrs, int type)
+ throws Exception
+ {
+ HttpClient httpConn = new HttpClient();
+ HttpMethodBase request = createMethod(url, type);
+
+ int hdrCount = hdrs != null ? hdrs.length : 0;
+ for(int n = 0; n < hdrCount; n ++)
+ request.addRequestHeader(hdrs[n]);
+ try
+ {
+ System.err.println("Connecting to: "+url);
+ String userInfo = url.getUserInfo();
+
+ if( userInfo != null )
+ {
+ UsernamePasswordCredentials auth = new UsernamePasswordCredentials(userInfo);
+ httpConn.getState().setCredentials(realm, url.getHost(), auth);
+ }
+ System.err.println("RequestURI: "+request.getURI());
+ int responseCode = httpConn.executeMethod(request);
+ String response = request.getStatusText();
+ System.err.println("responseCode="+responseCode+", response="+response);
+ String content = request.getResponseBodyAsString();
+ System.err.println(content);
+ // Validate that we are seeing the requested response code
+ if( responseCode != expectedHttpCode )
+ {
+ throw new IOException("Expected reply code:"+expectedHttpCode
+ +", actual="+responseCode);
+ }
+ }
+ catch(IOException e)
+ {
+ throw e;
+ }
+ return request;
+ }
+
+ public static HttpMethodBase createMethod(URL url, int type)
+ {
+ HttpMethodBase request = null;
+ switch( type )
+ {
+ case GET:
+ request = new GetMethod(url.toString());
+ break;
+ case POST:
+ request = new PostMethod(url.toString());
+ break;
+ case HEAD:
+ request = new HeadMethod(url.toString());
+ break;
+ case OPTIONS:
+ request = new OptionsMethod(url.toString());
+ break;
+ case PUT:
+ request = new PutMethod(url.toString());
+ break;
+ case DELETE:
+ request = new DeleteMethod(url.toString());
+ break;
+ case TRACE:
+ request = new TraceMethod(url.toString());
+ break;
+ }
+ return request;
+ }
+}
Added: labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/LocalJUnitRunner.java
===================================================================
--- labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/LocalJUnitRunner.java (rev 0)
+++ labs/jbosstm/trunk/XTS/localjunit/src/com/arjuna/qa/junit/LocalJUnitRunner.java 2009-02-06 10:57:07 UTC (rev 25132)
@@ -0,0 +1,82 @@
+package com.arjuna.qa.junit;
+
+import junit.framework.TestCase;
+import org.apache.commons.httpclient.HttpMethodBase;
+import org.apache.commons.httpclient.Header;
+
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.io.FileWriter;
+import java.io.BufferedWriter;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: studensky
+ * Date: 30.1.2009
+ * Time: 14:09:23
+ * To change this template use File | Settings | File Templates.
+ */
+public class LocalJUnitRunner extends TestCase
+{
+ private String serverUrl = null;
+ private String outfile = null;
+
+ protected void setUp() throws Exception
+ {
+ serverUrl = System.getProperty("serverUrl");
+ outfile = System.getProperty("outfile");
+ System.err.println("serverUrl=" + serverUrl);
+ System.err.println("outfile=" + outfile);
+ }
+
+ public void testCallServlet()
+ {
+ boolean result = true;
+ try
+ {
+ // run tests by calling a servlet
+ Header runParam = new Header("run", "run");
+ HttpMethodBase request = HttpUtils.accessURL(
+ new URL(serverUrl), null,
+ HttpURLConnection.HTTP_OK,
+ new Header[] {runParam},
+ HttpUtils.POST);
+
+ String response = null;
+ int index = 0;
+ do
+ {
+ System.err.println("_____________ " +( index++) + "th round");
+ // we have to give some time to the tests to finish
+ Thread.sleep(10000); // 10 secs
+
+ // tries to get results
+ request = HttpUtils.accessURL(
+ new URL(serverUrl), null,
+ HttpURLConnection.HTTP_OK,
+ HttpUtils.GET);
+
+ response = request.getResponseBodyAsString();
+ }
+ while (response != null && response.indexOf("finished") == -1);
+
+ System.err.println("======================================================");
+ System.err.println("==================== RESULT =====================");
+ System.err.println("======================================================");
+ System.err.println(response);
+
+ // writes response to the outfile
+ BufferedWriter writer = new BufferedWriter(new FileWriter(outfile));
+ writer.write(response);
+ writer.close();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ result = false;
+ }
+
+ assertTrue(result);
+ }
+
+}
More information about the jboss-svn-commits
mailing list