Package net.jsunit.action

Source Code of net.jsunit.action.DistributedTestRunnerAction

package net.jsunit.action;

import com.opensymphony.xwork.ActionSupport;
import net.jsunit.*;
import net.jsunit.configuration.Configuration;
import net.jsunit.configuration.RemoteConfiguration;
import net.jsunit.server.RemoteRunSpecificationBuilder;

import java.util.List;
import java.util.logging.Logger;

public class DistributedTestRunnerAction
        extends ActionSupport
        implements RequestSourceAware,
        TestPageURLAware,
        XmlProducer,
        RemoteRunnerHitterAware,
        RemoteRunSpecificationAware,
        JsUnitAggregateServerAware {

    private JsUnitAggregateServer aggregateServer;
    protected DistributedTestRunManager manager;
    protected String overrideURL;
    protected String remoteIpAddress;
    protected String remoteHost;
    protected String referrer;
    protected RemoteServerHitter hitter;
    protected List<RemoteRunSpecification> remoteRunSpecs;
    private String errorMessage;
    private static final Logger logger = Logger.getLogger("net.jsunit");

    public void setRemoteServerHitter(RemoteServerHitter hitter) {
        this.hitter = hitter;
    }

    public String execute() throws Exception {
        if (errorMessage == null) {
            long startTime = System.currentTimeMillis();
            logger.info(new RequestReceivedMessage(remoteHost, remoteIpAddress, overrideURL).generateMessage());
            //noinspection SynchronizeOnNonFinalField
            synchronized (gateKeeper()) {
                runTests();
            }
            logger.info("Done running aggregate tests ( " + ((System.currentTimeMillis() - startTime) / 1000d) + " seconds)");
        }
        return SUCCESS;
    }

    protected Object gateKeeper() {
        return aggregateServer;
    }

    private void runTests() {
        createTestRunManager();
        manager.runTests();
    }

    protected void createTestRunManager() {
        this.manager = new DistributedTestRunManager(hitter, getConfiguration(), overrideURL, remoteRunSpecs);
    }

    public XmlRenderable getXmlRenderable() {
        if (errorMessage != null)
            return new ErrorXmlRenderable(errorMessage);
        else
            return manager.getDistributedTestRunResult();
    }

    public DistributedTestRunManager getTestRunManager() {
        return manager;
    }

    public void setUrl(String overrideURL) {
        this.overrideURL = overrideURL.trim();
    }

    public void setRequestIPAddress(String ipAddress) {
        this.remoteIpAddress = ipAddress;
    }

    public void setRequestHost(String host) {
        this.remoteHost = host;
    }

    public String getRequestIpAddress() {
        return this.remoteIpAddress;
    }

    public String getReferrer() {
        return this.referrer;
    }

    public void setReferrer(String referrer) {
        this.referrer = referrer;
    }

    public void setRemoteRunSpecifications(List<RemoteRunSpecification> remoteRunSpecs) {
        this.remoteRunSpecs = remoteRunSpecs;
    }

    public RemoteConfiguration getRemoteMachineConfigurationById(int id) {
        return remoteMachineConfigurationCache().getRemoteMachineConfigurationById(id);
    }

    public List<RemoteConfiguration> getAllRemoteMachineConfigurations() {
        return remoteMachineConfigurationCache().getAllRemoteMachineConfigurations();
    }

    protected RemoteConfigurationCache remoteMachineConfigurationCache() {
        return aggregateServer;
    }

    public Configuration getConfiguration() {
        return aggregateServer.getConfiguration();
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setAggregateServer(JsUnitAggregateServer aggregateServer) {
        this.aggregateServer = aggregateServer;
        List<RemoteConfiguration> remoteMachineConfigurations = aggregateServer.getAllRemoteMachineConfigurations();
        remoteRunSpecs = new RemoteRunSpecificationBuilder().forAllBrowsersFromRemoteConfigurations(remoteMachineConfigurations);
    }

    public JsUnitAggregateServer getAggregateServer() {
        return aggregateServer;
    }
}
TOP

Related Classes of net.jsunit.action.DistributedTestRunnerAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.