/************************************************************** * * 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 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
* default is 'socket,host=localhost,port=8100' */ public String ConnectionString="socket,host=localhost,port=8100"; /** * The AppProvider contains the Application Provider
* to control the ServiceFactory. */ public Object AppProvider=null; /** * The Process contains the Process handler
* to control the Application. */ public Object ProcessHandler=null; /** * The AppExecutionCmd contains the full qualified
* command to an Application to be started. */ public String AppExecutionCommand=""; /** * If this parameter is true the OfficeProvider tries * to get the URL to the binary of the office and to fill the * AppExecutionCommand with useful 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
* default is helper.OfficeProvider */ public String OfficeProvider = "helper.OfficeProvider"; /** * The Testbase to be executed by the runner
* 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
*/ public String TestDocumentPath="unknown"; /** * 'true' is a log should be written, 'false' elsewhere
* these will be provided by the testcases
* default is true */ public boolean LoggingIsActive=true; /** * 'true' is a debug information should be written, 'false' elsewhere * these will be provided by the framework.
* Debug information will always be written on standard out.
* default is true */ public boolean DebugIsActive=false; /* * This parameter contains the testjob to be executed
* by the framework */ public Object TestJob; /* * This parameter contains the class used
* for Logging */ public String LogWriter="stats.SimpleLogWriter"; /* * This parameter contains the class used
* for Logging */ public String OutProducer="stats.SimpleOutProducer"; /* * This parameter contains the timeout used
* by the watcher */ public Integer TimeOut = new Integer(3000000); /* * This parameter contains the timeout used
* 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 if (osname.equals("freebsd")) { operatingSystem = PropertyName.UNXFBSDX; } else { System.out.println("ERROR: not supported platform: " + osname); System.exit(1); } return operatingSystem; } }// finish class TestParamenters