From c041534439d37164110ac8ae93279f44d1a21a97 Mon Sep 17 00:00:00 2001 From: Stephane Bailliez Date: Sun, 27 Jan 2002 11:39:52 +0000 Subject: [PATCH] - Change to RJUnitTask to avoid conflicts git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270947 13f79535-47bb-0310-9956-ffa450edef68 --- .../optional/junit/ClientElement.java | 4 +- .../optional/junit/FormatterElement.java | 2 +- .../taskdefs/optional/junit/RJUnitTask.java | 170 ++++++++++++++++++ .../optional/junit/ServerElement.java | 4 +- 4 files changed, 175 insertions(+), 5 deletions(-) create mode 100644 proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/RJUnitTask.java diff --git a/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ClientElement.java b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ClientElement.java index 7b1b58189..ea9853c2d 100644 --- a/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ClientElement.java +++ b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ClientElement.java @@ -105,10 +105,10 @@ public final class ClientElement extends ProjectComponent { private CommandlineJava cmd = new CommandlineJava(); /** the parent task */ - private JUnitTask parent; + private RJUnitTask parent; /** create a new client */ - public ClientElement(JUnitTask value) { + public ClientElement(RJUnitTask value) { parent = value; cmd.setClassname("org.apache.tools.ant.taskdefs.optional.junit.remote.TestRunner"); } diff --git a/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java index a89a528d0..09ca0fb35 100644 --- a/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java +++ b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java @@ -77,7 +77,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute; * * @author Stephane Bailliez * - * @see JUnitTask + * @see RJUnitTask * @see Formatter */ public class FormatterElement { diff --git a/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/RJUnitTask.java b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/RJUnitTask.java new file mode 100644 index 000000000..df688637e --- /dev/null +++ b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/RJUnitTask.java @@ -0,0 +1,170 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Ant", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ +package org.apache.tools.ant.taskdefs.optional.junit; + +import org.apache.avalon.excalibur.i18n.ResourceManager; +import org.apache.avalon.excalibur.i18n.Resources; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Task; + +/** + * The core JUnit task. + * + * @author Stephane Bailliez + */ +public class RJUnitTask extends Task { + + private final static Resources RES = + ResourceManager.getPackageResources(RJUnitTask.class); + + /** port to run the server on */ + private int port = -1; + + /** timeout period in ms */ + private long timeout = -1; + + /** client configuraiton element */ + private ClientElement client = null; + + /** server configuration element */ + private ServerElement server = null; + +// task implementation + + public void execute() throws BuildException { + if (client == null && server == null) { + throw new BuildException("Invalid state: need to be server, client or both"); + } + + // 1) server and client + if (server != null && client != null) { + ServerWorker worker = new ServerWorker(); + worker.start(); + client.execute(); + Exception caught = null; + try { + worker.join(); + caught = worker.getException(); + } catch (InterruptedException e){ + caught = e; + } + if (caught != null){ + throw new BuildException(caught); + } + return; + } + + // 2) server only (waiting for client) + if (server != null && client == null) { + server.execute(); + return; + } + + // 3) client only (connecting to server) + if (server == null && client != null) { + client.execute(); + return; + } + } + +// Ant bean accessors + + public void setPort(int port) { + this.port = port; + } + + public void setTimeout(long timeout) { + this.timeout = timeout; + } + + /** + * create a new client in charge of running tests and sending + * the results to the server that collect them. + */ + public ClientElement createClient() { + if (client == null) { + client = new ClientElement(this); + } + return client; + } + + /** + * create a new client in charge of running tests and sending + * the results to the server that collect them. + */ + public ServerElement createServer() { + if (server == null) { + server = new ServerElement(this); + } + return server; + } + + + /** the worker to run the server on */ + class ServerWorker extends Thread { + private Exception caught = null; + + public void run() { + try { + server.execute(); + } catch (Exception e) { + caught = e; + } + } + + public Exception getException() { + return caught; + } + } +} diff --git a/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ServerElement.java b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ServerElement.java index ad79e9c74..11478e31e 100644 --- a/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ServerElement.java +++ b/proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ServerElement.java @@ -88,10 +88,10 @@ public final class ServerElement extends ProjectComponent { private boolean haltOnError = false; /** the parent task */ - private JUnitTask parent; + private RJUnitTask parent; /** create a new server */ - public ServerElement(JUnitTask value) { + public ServerElement(RJUnitTask value) { parent = value; }