diff options
Diffstat (limited to 'qadevOOo/runner/lib/TestParameters.java')
-rw-r--r-- | qadevOOo/runner/lib/TestParameters.java | 343 |
1 files changed, 343 insertions, 0 deletions
diff --git a/qadevOOo/runner/lib/TestParameters.java b/qadevOOo/runner/lib/TestParameters.java new file mode 100644 index 000000000000..9d1e171b95d9 --- /dev/null +++ b/qadevOOo/runner/lib/TestParameters.java @@ -0,0 +1,343 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +package lib; + +import java.util.Hashtable; +import util.PropertyName; +import com.sun.star.beans.XPropertySet; +import com.sun.star.uno.XComponentContext; + +//import com.sun.star.lang.XMultiServiceFactory; + +/** + * TestParameters describes a parameters (in a form of pairs: name, value) to + * be passed to tests and which may affect the test behaviour. That can be, + * for example, standard paths, connection strings, etc. The TestParameters + * also provides XMultiServiceFactory for the test (tests). + */ +public class TestParameters extends Hashtable { + + /** + * The ConnectionString for Office Connection<br> + * default is 'socket,host=localhost,port=8100' + */ + + public String ConnectionString="socket,host=localhost,port=8100"; + + /** + * The AppProvider contains the Application Provider<br> + * to control the ServiceFactory. + */ + + public Object AppProvider=null; + + /** + * The Process contains the Process handler<br> + * to control the Application. + */ + + public Object ProcessHandler=null; + + /** + * The AppExecutionCmd contains the full qualified<br> + * command to an Application to be started. + */ + + public String AppExecutionCommand=""; + + /** + * If this parameter is <CODE>true</CODE> the <CODE>OfficeProvider</CODE> tries + * to get the URL to the binary of the office and to fill the + * <CODE>AppExecutionCommand</CODE> with usefull content if needet + */ + public boolean AutoRestart = false; + + /** + * Shoert wait time for the Office: default is 500 milliseconds + */ + public int ShortWait = 500; + + + /** + * The OfficeProvider contains the full qualified + * class that provides a connection to StarOffice<br> + * default is helper.OfficeProvider + */ + + public String OfficeProvider = "helper.OfficeProvider"; + + /** + * The Testbase to be executed by the runner<br> + * default is 'java_fat' + */ + + public String TestBase="java_fat"; + + /** + * The ServiceFactory to create instances + */ + + public Object ServiceFactory; + + /** + * The Path to the component description + */ + + public String DescriptionPath; + + /** + * The Path to the test documents that are loaded during the test <br> + */ + + public String TestDocumentPath="unknown"; + + /** + * 'true' is a log should be written, 'false' elsewhere <br> + * these will be provided by the testcases<br> + * default is true + */ + + public boolean LoggingIsActive=true; + + /** + * 'true' is a debug information should be written, 'false' elsewhere + * these will be provided by the framework.<br> + * Debug information will always be written on standard out.<br> + * default is true + */ + + public boolean DebugIsActive=false; + + /* + * This parameter contains the testjob to be executed<br> + * by the framework + */ + + public Object TestJob; + + /* + * This parameter contains the class used<br> + * for Logging + */ + + public String LogWriter="stats.SimpleLogWriter"; + + /* + * This parameter contains the class used<br> + * for Logging + */ + + public String OutProducer="stats.SimpleOutProducer"; + + /* + * This parameter contains the timeout used<br> + * by the watcher + */ + public Integer TimeOut = new Integer(3000000); + + /* + * This parameter contains the timeout used<br> + * by the complex tests + */ + public Integer ThreadTimeOut = new Integer(3000000); + + /* + * This parameter contains the time which the office could use to close for + * itself before its destroyed. Default is 15000 ms + */ + public Integer OfficeCloseTimeOut = new Integer(15000); + + /** + * Wraper around "get()" with some debug output + * @param key A key of this table. + * @return The value of this key. + * @see java.util.Hashtable + */ + public Object get(Object key) { + Object val = super.get(key); + if (val == null && DebugIsActive) { + System.out.print("Have been asked for key \""+key.toString()); + System.out.println("\" which is not part of params."); + } + return val; + } + + /** + * Special get method for boolean values: for convenience. + * Will return 'false' if the value is not of "Boolean" type. + * @param key A key of this table. + * @return The value of this key, castet to a boolean type. + */ + public boolean getBool(Object key) { + Object val = super.get(key); + if (val != null) { + if (val instanceof String) { + String sVal = (String)val; + if (sVal.equalsIgnoreCase("true") || + sVal.equalsIgnoreCase("yes")) { + return true; + } + else if (sVal.equalsIgnoreCase("false") || + sVal.equalsIgnoreCase("no")) { + return false; + } + } + if (val instanceof Boolean) + return ((Boolean)val).booleanValue(); + } + return false; + } + + /** + * Special get method for integer values: for convenience. + * Will return 0 if the value cannot be interpreted as Integer. + * @param key A key of this table. + * @return The value of this key, castet to an int type. + */ + public int getInt(Object key) { + Object val = super.get(key); + if ( val != null ) { + if (val instanceof Integer) { + return ((Integer)val).intValue(); + } + else { + try { + if ( val instanceof String ) { + Integer nr = new Integer((String)val); + if (nr.intValue() > 0) return nr.intValue(); + } + } catch ( java.lang.NumberFormatException nfe) {} + } + } + return 0; + } + + + /** + * Wraper around "put()" + * @param key A key of this table. + * @param val The value of the key. + * @return The value of this key. + * @see java.util.Hashtable + */ + public Object put(Object key, Object val) { + return super.put(key,val); + } + + /** + * Constructor, defaults for Parameters are set. + */ + public TestParameters() { + //fill the propertyset + String user = System.getProperty("user.name"); + if ( user != null) + { + String PipeConnectionString = "pipe,name=" + user; + put(PropertyName.PIPE_CONNECTION_STRING,PipeConnectionString); + put(PropertyName.USE_PIPE_CONNECTION, Boolean.TRUE); + } + put(PropertyName.CONNECTION_STRING,ConnectionString); + put(PropertyName.TEST_BASE,TestBase); + put(PropertyName.TEST_DOCUMENT_PATH,TestDocumentPath); + put(PropertyName.LOGGING_IS_ACTIVE,LoggingIsActive?Boolean.TRUE:Boolean.FALSE); + put(PropertyName.DEBUG_IS_ACTIVE,DebugIsActive?Boolean.TRUE:Boolean.FALSE); + put(PropertyName.OUT_PRODUCER,OutProducer); + put(PropertyName.SHORT_WAIT,new Integer(ShortWait)); + put(PropertyName.OFFICE_PROVIDER,OfficeProvider); + put(PropertyName.LOG_WRITER,LogWriter); + put(PropertyName.APP_EXECUTION_COMMAND,AppExecutionCommand); + put(PropertyName.TIME_OUT,TimeOut); + put(PropertyName.THREAD_TIME_OUT,ThreadTimeOut); + put(PropertyName.AUTO_RESTART,AutoRestart?Boolean.TRUE:Boolean.FALSE); + put(PropertyName.OFFICE_CLOSE_TIME_OUT, OfficeCloseTimeOut); + + // get the operating system + put(PropertyName.OPERATING_SYSTEM, getSOCompatibleOSName()); + + //For compatibility Reasons + put("CNCSTR",ConnectionString); + put("DOCPTH",TestDocumentPath); + System.setProperty("DOCPTH",TestDocumentPath); + } + + /** + * @return a XMultiServiceFactory to be used by a test (tests). + */ + public Object getMSF() { + Object ret = null; + ret = get("ServiceFactory"); + return ret; + } + + public XComponentContext getComponentContext() { + Object context = get( "ComponentContext" ); + if ( context == null ) + { + XPropertySet factoryProps = (XPropertySet)com.sun.star.uno.UnoRuntime.queryInterface( + XPropertySet.class, getMSF() ); + try + { + context = com.sun.star.uno.UnoRuntime.queryInterface( + XComponentContext.class, factoryProps.getPropertyValue( "DefaultContext" ) ); + put( "ComponentContext", context ); + } + catch( com.sun.star.beans.UnknownPropertyException e ) { } + catch( com.sun.star.lang.WrappedTargetException e ) { } + } + return (XComponentContext)context; + } + + /** + * Convert the system dependent operating system name to a name according + * to OOo rules. + * @return A valid OS name, or "" if the name is not known. + */ + String getSOCompatibleOSName() { + String osname = System.getProperty ("os.name").toLowerCase (); + String osarch = System.getProperty ("os.arch"); + String operatingSystem = ""; + if (osname.indexOf ("windows")>-1) { + operatingSystem = PropertyName.WNTMSCI; + } else if (osname.indexOf ("linux")>-1) { + operatingSystem = PropertyName.UNXLNGI; + } else if (osname.indexOf ("sunos")>-1) { + if (osarch.equals ("x86")) { + operatingSystem = PropertyName.UNXSOLI; + } else { + operatingSystem = PropertyName.UNXSOLS; + } + } else if (osname.indexOf ("mac")>-1) { + operatingSystem = PropertyName.UNXMACXI; + } else { + System.out.println("ERROR: not supported platform: " + osname); + System.exit(1); + } + return operatingSystem; + } + +}// finish class TestParamenters |