1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package lib; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import java.util.Hashtable; 27*b1cdbd2cSJim Jagielski import util.PropertyName; 28*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 29*b1cdbd2cSJim Jagielski import com.sun.star.uno.XComponentContext; 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski //import com.sun.star.lang.XMultiServiceFactory; 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski /** 34*b1cdbd2cSJim Jagielski * TestParameters describes a parameters (in a form of pairs: name, value) to 35*b1cdbd2cSJim Jagielski * be passed to tests and which may affect the test behaviour. That can be, 36*b1cdbd2cSJim Jagielski * for example, standard paths, connection strings, etc. The TestParameters 37*b1cdbd2cSJim Jagielski * also provides XMultiServiceFactory for the test (tests). 38*b1cdbd2cSJim Jagielski */ 39*b1cdbd2cSJim Jagielski public class TestParameters extends Hashtable { 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski /** 42*b1cdbd2cSJim Jagielski * The ConnectionString for Office Connection<br> 43*b1cdbd2cSJim Jagielski * default is 'socket,host=localhost,port=8100' 44*b1cdbd2cSJim Jagielski */ 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski public String ConnectionString="socket,host=localhost,port=8100"; 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski /** 49*b1cdbd2cSJim Jagielski * The AppProvider contains the Application Provider<br> 50*b1cdbd2cSJim Jagielski * to control the ServiceFactory. 51*b1cdbd2cSJim Jagielski */ 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski public Object AppProvider=null; 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski /** 56*b1cdbd2cSJim Jagielski * The Process contains the Process handler<br> 57*b1cdbd2cSJim Jagielski * to control the Application. 58*b1cdbd2cSJim Jagielski */ 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski public Object ProcessHandler=null; 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski /** 63*b1cdbd2cSJim Jagielski * The AppExecutionCmd contains the full qualified<br> 64*b1cdbd2cSJim Jagielski * command to an Application to be started. 65*b1cdbd2cSJim Jagielski */ 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski public String AppExecutionCommand=""; 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski /** 70*b1cdbd2cSJim Jagielski * If this parameter is <CODE>true</CODE> the <CODE>OfficeProvider</CODE> tries 71*b1cdbd2cSJim Jagielski * to get the URL to the binary of the office and to fill the 72*b1cdbd2cSJim Jagielski * <CODE>AppExecutionCommand</CODE> with usefull content if needet 73*b1cdbd2cSJim Jagielski */ 74*b1cdbd2cSJim Jagielski public boolean AutoRestart = false; 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski /** 77*b1cdbd2cSJim Jagielski * Shoert wait time for the Office: default is 500 milliseconds 78*b1cdbd2cSJim Jagielski */ 79*b1cdbd2cSJim Jagielski public int ShortWait = 500; 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski /** 83*b1cdbd2cSJim Jagielski * The OfficeProvider contains the full qualified 84*b1cdbd2cSJim Jagielski * class that provides a connection to StarOffice<br> 85*b1cdbd2cSJim Jagielski * default is helper.OfficeProvider 86*b1cdbd2cSJim Jagielski */ 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski public String OfficeProvider = "helper.OfficeProvider"; 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski /** 91*b1cdbd2cSJim Jagielski * The Testbase to be executed by the runner<br> 92*b1cdbd2cSJim Jagielski * default is 'java_fat' 93*b1cdbd2cSJim Jagielski */ 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski public String TestBase="java_fat"; 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski /** 98*b1cdbd2cSJim Jagielski * The ServiceFactory to create instances 99*b1cdbd2cSJim Jagielski */ 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski public Object ServiceFactory; 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski /** 104*b1cdbd2cSJim Jagielski * The Path to the component description 105*b1cdbd2cSJim Jagielski */ 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski public String DescriptionPath; 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski /** 110*b1cdbd2cSJim Jagielski * The Path to the test documents that are loaded during the test <br> 111*b1cdbd2cSJim Jagielski */ 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski public String TestDocumentPath="unknown"; 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski /** 116*b1cdbd2cSJim Jagielski * 'true' is a log should be written, 'false' elsewhere <br> 117*b1cdbd2cSJim Jagielski * these will be provided by the testcases<br> 118*b1cdbd2cSJim Jagielski * default is true 119*b1cdbd2cSJim Jagielski */ 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski public boolean LoggingIsActive=true; 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski /** 124*b1cdbd2cSJim Jagielski * 'true' is a debug information should be written, 'false' elsewhere 125*b1cdbd2cSJim Jagielski * these will be provided by the framework.<br> 126*b1cdbd2cSJim Jagielski * Debug information will always be written on standard out.<br> 127*b1cdbd2cSJim Jagielski * default is true 128*b1cdbd2cSJim Jagielski */ 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski public boolean DebugIsActive=false; 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski /* 133*b1cdbd2cSJim Jagielski * This parameter contains the testjob to be executed<br> 134*b1cdbd2cSJim Jagielski * by the framework 135*b1cdbd2cSJim Jagielski */ 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski public Object TestJob; 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski /* 140*b1cdbd2cSJim Jagielski * This parameter contains the class used<br> 141*b1cdbd2cSJim Jagielski * for Logging 142*b1cdbd2cSJim Jagielski */ 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski public String LogWriter="stats.SimpleLogWriter"; 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski /* 147*b1cdbd2cSJim Jagielski * This parameter contains the class used<br> 148*b1cdbd2cSJim Jagielski * for Logging 149*b1cdbd2cSJim Jagielski */ 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski public String OutProducer="stats.SimpleOutProducer"; 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski /* 154*b1cdbd2cSJim Jagielski * This parameter contains the timeout used<br> 155*b1cdbd2cSJim Jagielski * by the watcher 156*b1cdbd2cSJim Jagielski */ 157*b1cdbd2cSJim Jagielski public Integer TimeOut = new Integer(3000000); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski /* 160*b1cdbd2cSJim Jagielski * This parameter contains the timeout used<br> 161*b1cdbd2cSJim Jagielski * by the complex tests 162*b1cdbd2cSJim Jagielski */ 163*b1cdbd2cSJim Jagielski public Integer ThreadTimeOut = new Integer(3000000); 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski /* 166*b1cdbd2cSJim Jagielski * This parameter contains the time which the office could use to close for 167*b1cdbd2cSJim Jagielski * itself before its destroyed. Default is 15000 ms 168*b1cdbd2cSJim Jagielski */ 169*b1cdbd2cSJim Jagielski public Integer OfficeCloseTimeOut = new Integer(15000); 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski /** 172*b1cdbd2cSJim Jagielski * Wraper around "get()" with some debug output 173*b1cdbd2cSJim Jagielski * @param key A key of this table. 174*b1cdbd2cSJim Jagielski * @return The value of this key. 175*b1cdbd2cSJim Jagielski * @see java.util.Hashtable 176*b1cdbd2cSJim Jagielski */ get(Object key)177*b1cdbd2cSJim Jagielski public Object get(Object key) { 178*b1cdbd2cSJim Jagielski Object val = super.get(key); 179*b1cdbd2cSJim Jagielski if (val == null && DebugIsActive) { 180*b1cdbd2cSJim Jagielski System.out.print("Have been asked for key \""+key.toString()); 181*b1cdbd2cSJim Jagielski System.out.println("\" which is not part of params."); 182*b1cdbd2cSJim Jagielski } 183*b1cdbd2cSJim Jagielski return val; 184*b1cdbd2cSJim Jagielski } 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski /** 187*b1cdbd2cSJim Jagielski * Special get method for boolean values: for convenience. 188*b1cdbd2cSJim Jagielski * Will return 'false' if the value is not of "Boolean" type. 189*b1cdbd2cSJim Jagielski * @param key A key of this table. 190*b1cdbd2cSJim Jagielski * @return The value of this key, castet to a boolean type. 191*b1cdbd2cSJim Jagielski */ getBool(Object key)192*b1cdbd2cSJim Jagielski public boolean getBool(Object key) { 193*b1cdbd2cSJim Jagielski Object val = super.get(key); 194*b1cdbd2cSJim Jagielski if (val != null) { 195*b1cdbd2cSJim Jagielski if (val instanceof String) { 196*b1cdbd2cSJim Jagielski String sVal = (String)val; 197*b1cdbd2cSJim Jagielski if (sVal.equalsIgnoreCase("true") || 198*b1cdbd2cSJim Jagielski sVal.equalsIgnoreCase("yes")) { 199*b1cdbd2cSJim Jagielski return true; 200*b1cdbd2cSJim Jagielski } 201*b1cdbd2cSJim Jagielski else if (sVal.equalsIgnoreCase("false") || 202*b1cdbd2cSJim Jagielski sVal.equalsIgnoreCase("no")) { 203*b1cdbd2cSJim Jagielski return false; 204*b1cdbd2cSJim Jagielski } 205*b1cdbd2cSJim Jagielski } 206*b1cdbd2cSJim Jagielski if (val instanceof Boolean) 207*b1cdbd2cSJim Jagielski return ((Boolean)val).booleanValue(); 208*b1cdbd2cSJim Jagielski } 209*b1cdbd2cSJim Jagielski return false; 210*b1cdbd2cSJim Jagielski } 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski /** 213*b1cdbd2cSJim Jagielski * Special get method for integer values: for convenience. 214*b1cdbd2cSJim Jagielski * Will return 0 if the value cannot be interpreted as Integer. 215*b1cdbd2cSJim Jagielski * @param key A key of this table. 216*b1cdbd2cSJim Jagielski * @return The value of this key, castet to an int type. 217*b1cdbd2cSJim Jagielski */ getInt(Object key)218*b1cdbd2cSJim Jagielski public int getInt(Object key) { 219*b1cdbd2cSJim Jagielski Object val = super.get(key); 220*b1cdbd2cSJim Jagielski if ( val != null ) { 221*b1cdbd2cSJim Jagielski if (val instanceof Integer) { 222*b1cdbd2cSJim Jagielski return ((Integer)val).intValue(); 223*b1cdbd2cSJim Jagielski } 224*b1cdbd2cSJim Jagielski else { 225*b1cdbd2cSJim Jagielski try { 226*b1cdbd2cSJim Jagielski if ( val instanceof String ) { 227*b1cdbd2cSJim Jagielski Integer nr = new Integer((String)val); 228*b1cdbd2cSJim Jagielski if (nr.intValue() > 0) return nr.intValue(); 229*b1cdbd2cSJim Jagielski } 230*b1cdbd2cSJim Jagielski } catch ( java.lang.NumberFormatException nfe) {} 231*b1cdbd2cSJim Jagielski } 232*b1cdbd2cSJim Jagielski } 233*b1cdbd2cSJim Jagielski return 0; 234*b1cdbd2cSJim Jagielski } 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski 237*b1cdbd2cSJim Jagielski /** 238*b1cdbd2cSJim Jagielski * Wraper around "put()" 239*b1cdbd2cSJim Jagielski * @param key A key of this table. 240*b1cdbd2cSJim Jagielski * @param val The value of the key. 241*b1cdbd2cSJim Jagielski * @return The value of this key. 242*b1cdbd2cSJim Jagielski * @see java.util.Hashtable 243*b1cdbd2cSJim Jagielski */ put(Object key, Object val)244*b1cdbd2cSJim Jagielski public Object put(Object key, Object val) { 245*b1cdbd2cSJim Jagielski return super.put(key,val); 246*b1cdbd2cSJim Jagielski } 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski /** 249*b1cdbd2cSJim Jagielski * Constructor, defaults for Parameters are set. 250*b1cdbd2cSJim Jagielski */ TestParameters()251*b1cdbd2cSJim Jagielski public TestParameters() { 252*b1cdbd2cSJim Jagielski //fill the propertyset 253*b1cdbd2cSJim Jagielski String user = System.getProperty("user.name"); 254*b1cdbd2cSJim Jagielski if ( user != null) 255*b1cdbd2cSJim Jagielski { 256*b1cdbd2cSJim Jagielski String PipeConnectionString = "pipe,name=" + user; 257*b1cdbd2cSJim Jagielski put(PropertyName.PIPE_CONNECTION_STRING,PipeConnectionString); 258*b1cdbd2cSJim Jagielski put(PropertyName.USE_PIPE_CONNECTION, Boolean.TRUE); 259*b1cdbd2cSJim Jagielski } 260*b1cdbd2cSJim Jagielski put(PropertyName.CONNECTION_STRING,ConnectionString); 261*b1cdbd2cSJim Jagielski put(PropertyName.TEST_BASE,TestBase); 262*b1cdbd2cSJim Jagielski put(PropertyName.TEST_DOCUMENT_PATH,TestDocumentPath); 263*b1cdbd2cSJim Jagielski put(PropertyName.LOGGING_IS_ACTIVE,LoggingIsActive?Boolean.TRUE:Boolean.FALSE); 264*b1cdbd2cSJim Jagielski put(PropertyName.DEBUG_IS_ACTIVE,DebugIsActive?Boolean.TRUE:Boolean.FALSE); 265*b1cdbd2cSJim Jagielski put(PropertyName.OUT_PRODUCER,OutProducer); 266*b1cdbd2cSJim Jagielski put(PropertyName.SHORT_WAIT,new Integer(ShortWait)); 267*b1cdbd2cSJim Jagielski put(PropertyName.OFFICE_PROVIDER,OfficeProvider); 268*b1cdbd2cSJim Jagielski put(PropertyName.LOG_WRITER,LogWriter); 269*b1cdbd2cSJim Jagielski put(PropertyName.APP_EXECUTION_COMMAND,AppExecutionCommand); 270*b1cdbd2cSJim Jagielski put(PropertyName.TIME_OUT,TimeOut); 271*b1cdbd2cSJim Jagielski put(PropertyName.THREAD_TIME_OUT,ThreadTimeOut); 272*b1cdbd2cSJim Jagielski put(PropertyName.AUTO_RESTART,AutoRestart?Boolean.TRUE:Boolean.FALSE); 273*b1cdbd2cSJim Jagielski put(PropertyName.OFFICE_CLOSE_TIME_OUT, OfficeCloseTimeOut); 274*b1cdbd2cSJim Jagielski 275*b1cdbd2cSJim Jagielski // get the operating system 276*b1cdbd2cSJim Jagielski put(PropertyName.OPERATING_SYSTEM, getSOCompatibleOSName()); 277*b1cdbd2cSJim Jagielski 278*b1cdbd2cSJim Jagielski //For compatibility Reasons 279*b1cdbd2cSJim Jagielski put("CNCSTR",ConnectionString); 280*b1cdbd2cSJim Jagielski put("DOCPTH",TestDocumentPath); 281*b1cdbd2cSJim Jagielski System.setProperty("DOCPTH",TestDocumentPath); 282*b1cdbd2cSJim Jagielski } 283*b1cdbd2cSJim Jagielski 284*b1cdbd2cSJim Jagielski /** 285*b1cdbd2cSJim Jagielski * @return a XMultiServiceFactory to be used by a test (tests). 286*b1cdbd2cSJim Jagielski */ getMSF()287*b1cdbd2cSJim Jagielski public Object getMSF() { 288*b1cdbd2cSJim Jagielski Object ret = null; 289*b1cdbd2cSJim Jagielski ret = get("ServiceFactory"); 290*b1cdbd2cSJim Jagielski return ret; 291*b1cdbd2cSJim Jagielski } 292*b1cdbd2cSJim Jagielski getComponentContext()293*b1cdbd2cSJim Jagielski public XComponentContext getComponentContext() { 294*b1cdbd2cSJim Jagielski Object context = get( "ComponentContext" ); 295*b1cdbd2cSJim Jagielski if ( context == null ) 296*b1cdbd2cSJim Jagielski { 297*b1cdbd2cSJim Jagielski XPropertySet factoryProps = (XPropertySet)com.sun.star.uno.UnoRuntime.queryInterface( 298*b1cdbd2cSJim Jagielski XPropertySet.class, getMSF() ); 299*b1cdbd2cSJim Jagielski try 300*b1cdbd2cSJim Jagielski { 301*b1cdbd2cSJim Jagielski context = com.sun.star.uno.UnoRuntime.queryInterface( 302*b1cdbd2cSJim Jagielski XComponentContext.class, factoryProps.getPropertyValue( "DefaultContext" ) ); 303*b1cdbd2cSJim Jagielski put( "ComponentContext", context ); 304*b1cdbd2cSJim Jagielski } 305*b1cdbd2cSJim Jagielski catch( com.sun.star.beans.UnknownPropertyException e ) { } 306*b1cdbd2cSJim Jagielski catch( com.sun.star.lang.WrappedTargetException e ) { } 307*b1cdbd2cSJim Jagielski } 308*b1cdbd2cSJim Jagielski return (XComponentContext)context; 309*b1cdbd2cSJim Jagielski } 310*b1cdbd2cSJim Jagielski 311*b1cdbd2cSJim Jagielski /** 312*b1cdbd2cSJim Jagielski * Convert the system dependent operating system name to a name according 313*b1cdbd2cSJim Jagielski * to OOo rules. 314*b1cdbd2cSJim Jagielski * @return A valid OS name, or "" if the name is not known. 315*b1cdbd2cSJim Jagielski */ getSOCompatibleOSName()316*b1cdbd2cSJim Jagielski String getSOCompatibleOSName() { 317*b1cdbd2cSJim Jagielski String osname = System.getProperty ("os.name").toLowerCase (); 318*b1cdbd2cSJim Jagielski String osarch = System.getProperty ("os.arch"); 319*b1cdbd2cSJim Jagielski String operatingSystem = ""; 320*b1cdbd2cSJim Jagielski if (osname.indexOf ("windows")>-1) { 321*b1cdbd2cSJim Jagielski operatingSystem = PropertyName.WNTMSCI; 322*b1cdbd2cSJim Jagielski } else if (osname.indexOf ("linux")>-1) { 323*b1cdbd2cSJim Jagielski operatingSystem = PropertyName.UNXLNGI; 324*b1cdbd2cSJim Jagielski } else if (osname.indexOf ("sunos")>-1) { 325*b1cdbd2cSJim Jagielski if (osarch.equals ("x86")) { 326*b1cdbd2cSJim Jagielski operatingSystem = PropertyName.UNXSOLI; 327*b1cdbd2cSJim Jagielski } else { 328*b1cdbd2cSJim Jagielski operatingSystem = PropertyName.UNXSOLS; 329*b1cdbd2cSJim Jagielski } 330*b1cdbd2cSJim Jagielski } else if (osname.indexOf ("mac")>-1) { 331*b1cdbd2cSJim Jagielski operatingSystem = PropertyName.UNXMACXI; 332*b1cdbd2cSJim Jagielski } else { 333*b1cdbd2cSJim Jagielski System.out.println("ERROR: not supported platform: " + osname); 334*b1cdbd2cSJim Jagielski System.exit(1); 335*b1cdbd2cSJim Jagielski } 336*b1cdbd2cSJim Jagielski return operatingSystem; 337*b1cdbd2cSJim Jagielski } 338*b1cdbd2cSJim Jagielski 339*b1cdbd2cSJim Jagielski }// finish class TestParamenters 340