blob: ba8863048ff3aa125a552b2d15b0c36c0e216fd9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.royale.test.ant.tasks.configuration;
import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.royale.test.ant.LoggingUtil;
import org.apache.royale.test.ant.launcher.OperatingSystem;
public class TestRunConfiguration implements StepConfiguration
{
private final int FLOOR_FOR_PORT = 1;
private final int SHORTEST_SOCKET_TIMEOUT = 5000; //ms
private String player;
private File command = null;
private int display = 99;
private boolean failOnTestFailure = false;
private String failureProperty = "royaleunit.failed";
private File royaleHome = null;
private boolean headless = false;
private boolean isLocalTrusted = true;
private int port = 1024;
private File reportDir = null;
private int serverBufferSize = 262144; //bytes
private int socketTimeout = 60000; //milliseconds
private File swf = null;
private String url = null;
private File precompiledAppDescriptor = null;
private OperatingSystem os = OperatingSystem.identify();
public File getCommand()
{
return command;
}
public void setCommand(File command)
{
this.command = command;
}
public boolean isCustomCommand()
{
return command != null;
}
public int getDisplay()
{
return display;
}
public void setDisplay(int display)
{
this.display = display;
}
public boolean isFailOnTestFailure()
{
return failOnTestFailure;
}
public void setFailOnTestFailure(boolean failOnTestFailure)
{
this.failOnTestFailure = failOnTestFailure;
}
public String getFailureProperty()
{
return failureProperty;
}
public void setFailureProperty(String failureProperty)
{
this.failureProperty = failureProperty;
}
public File getRoyaleHome()
{
return royaleHome;
}
public void setRoyaleHome(File royaleHome)
{
this.royaleHome = royaleHome;
}
public boolean isHeadless()
{
return headless;
}
public void setHeadless(boolean headless)
{
this.headless = headless;
}
public boolean isLocalTrusted()
{
return isLocalTrusted;
}
public boolean usePolicyFile()
{
return !isLocalTrusted && player.equals("flash");
}
public void setLocalTrusted(boolean isLocalTrusted)
{
this.isLocalTrusted = isLocalTrusted;
}
public String getPlayer()
{
return player;
}
public void setPlayer(String player)
{
this.player = player;
}
public int getPort()
{
return port;
}
public void setPort(int port)
{
this.port = port;
}
public File getReportDir()
{
return reportDir;
}
public void setReportDir(File reportDir)
{
this.reportDir = reportDir;
}
public int getServerBufferSize()
{
return serverBufferSize;
}
public void setServerBufferSize(int serverBufferSize)
{
this.serverBufferSize = serverBufferSize;
}
public int getSocketTimeout()
{
return socketTimeout;
}
public void setSocketTimeout(int socketTimeout)
{
this.socketTimeout = socketTimeout;
}
public File getSwf()
{
return swf;
}
public void setSwf(File swf)
{
this.swf = swf;
}
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
public File getPrecompiledAppDescriptor()
{
return precompiledAppDescriptor;
}
public void setPrecompiledAppDescriptor(File precompiledAppDescriptor)
{
this.precompiledAppDescriptor = precompiledAppDescriptor;
}
public OperatingSystem getOs()
{
return os;
}
public void validate() throws BuildException
{
if(port < FLOOR_FOR_PORT)
{
throw new BuildException("The provided 'port' property value [" + port + "] must be great than " + FLOOR_FOR_PORT + ".");
}
if(socketTimeout < SHORTEST_SOCKET_TIMEOUT)
{
throw new BuildException("The provided 'timeout' property value [" + socketTimeout + "] must be great than " + SHORTEST_SOCKET_TIMEOUT + ".");
}
if(reportDir != null && !reportDir.exists())
{
LoggingUtil.log("Provided report directory path [" + reportDir.getPath() + "] does not exist.");
}
if(command != null && !command.exists())
{
throw new BuildException("The provided command path [" + command + "] does not exist.");
}
if(headless)
{
if(OperatingSystem.identify() != OperatingSystem.LINUX)
{
throw new BuildException("Headless mode can only be used on Linux with vncserver installed.");
}
if(display < 1)
{
throw new BuildException("The provided 'display' number must be set higher than 0. 99 or higher is recommended.");
}
}
}
public void log()
{
LoggingUtil.log("Using the following settings for the test run:");
//ROYALE_HOME not required to run if not using ADL
if(royaleHome != null)
{
LoggingUtil.log("\tROYALE_HOME: [" + royaleHome.getAbsolutePath() + "]");
}
LoggingUtil.log("\thaltonfailure: [" + failOnTestFailure + "]");
LoggingUtil.log("\theadless: [" + headless + "]");
LoggingUtil.log("\tdisplay: [" + display + "]");
LoggingUtil.log("\tlocalTrusted: [" + isLocalTrusted + "]");
LoggingUtil.log("\tplayer: [" + player + "]");
if(isCustomCommand())
{
LoggingUtil.log("\tcommand: [" + command + "]");
}
LoggingUtil.log("\tport: [" + port + "]");
LoggingUtil.log("\tswf: [" + swf + "]");
LoggingUtil.log("\ttimeout: [" + socketTimeout + "ms]");
LoggingUtil.log("\ttoDir: [" + reportDir.getAbsolutePath() + "]");
}
}