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