1*ef39d40dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*ef39d40dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ef39d40dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ef39d40dSAndrew Rist * distributed with this work for additional information 6*ef39d40dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ef39d40dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ef39d40dSAndrew Rist * "License"); you may not use this file except in compliance 9*ef39d40dSAndrew Rist * with the License. You may obtain a copy of the License at 10*ef39d40dSAndrew Rist * 11*ef39d40dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ef39d40dSAndrew Rist * 13*ef39d40dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ef39d40dSAndrew Rist * software distributed under the License is distributed on an 15*ef39d40dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ef39d40dSAndrew Rist * KIND, either express or implied. See the License for the 17*ef39d40dSAndrew Rist * specific language governing permissions and limitations 18*ef39d40dSAndrew Rist * under the License. 19*ef39d40dSAndrew Rist * 20*ef39d40dSAndrew Rist *************************************************************/ 21*ef39d40dSAndrew Rist 22*ef39d40dSAndrew Rist 23cdf0e10cSrcweir package base; 24cdf0e10cSrcweir 25cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 26cdf0e10cSrcweir 27cdf0e10cSrcweir import helper.APIDescGetter; 28cdf0e10cSrcweir import helper.AppProvider; 29cdf0e10cSrcweir 30cdf0e10cSrcweir import java.io.BufferedReader; 31cdf0e10cSrcweir import java.io.FileReader; 32cdf0e10cSrcweir import java.io.PrintWriter; 33cdf0e10cSrcweir 34cdf0e10cSrcweir import java.util.Vector; 35cdf0e10cSrcweir 36cdf0e10cSrcweir import lib.MultiMethodTest; 37cdf0e10cSrcweir import lib.TestCase; 38cdf0e10cSrcweir import lib.TestEnvironment; 39cdf0e10cSrcweir import lib.TestParameters; 40cdf0e10cSrcweir import lib.TestResult; 41cdf0e10cSrcweir 42cdf0e10cSrcweir import share.DescEntry; 43cdf0e10cSrcweir import share.DescGetter; 44cdf0e10cSrcweir import share.LogWriter; 45cdf0e10cSrcweir 46cdf0e10cSrcweir import stats.OutProducerFactory; 47cdf0e10cSrcweir import stats.Summarizer; 48cdf0e10cSrcweir 49cdf0e10cSrcweir import util.DynamicClassLoader; 50cdf0e10cSrcweir 51cdf0e10cSrcweir /** 52cdf0e10cSrcweir * 53cdf0e10cSrcweir * this class handles tests written in java and running on a fat Office 54cdf0e10cSrcweir */ 55cdf0e10cSrcweir public class java_fat implements TestBase 56cdf0e10cSrcweir { 57cdf0e10cSrcweir 58cdf0e10cSrcweir private static boolean m_isDebug = false; 59cdf0e10cSrcweir private static boolean keepdocument = false; 60cdf0e10cSrcweir private static boolean logging = true; 61cdf0e10cSrcweir private static boolean newOffice = false; 62cdf0e10cSrcweir private DynamicClassLoader m_aDynamicClassLoader = null; 63cdf0e10cSrcweir 64cdf0e10cSrcweir private lib.TestParameters m_aParams; 65cdf0e10cSrcweir private AppProvider m_aOffice; 66cdf0e10cSrcweir executeTest(lib.TestParameters _aParams)67cdf0e10cSrcweir public boolean executeTest(lib.TestParameters _aParams) 68cdf0e10cSrcweir { 69cdf0e10cSrcweir m_aParams = _aParams; 70cdf0e10cSrcweir 71cdf0e10cSrcweir m_aDynamicClassLoader = new DynamicClassLoader(); 72cdf0e10cSrcweir 73cdf0e10cSrcweir DescGetter dg = new APIDescGetter(); 74cdf0e10cSrcweir String job = (String) m_aParams.get("TestJob"); 75cdf0e10cSrcweir String ExclusionFile = (String) m_aParams.get("ExclusionList"); 76cdf0e10cSrcweir Vector exclusions = null; 77cdf0e10cSrcweir boolean retValue = true; 78cdf0e10cSrcweir m_isDebug = m_aParams.getBool("DebugIsActive"); 79cdf0e10cSrcweir logging = m_aParams.getBool("LoggingIsActive"); 80cdf0e10cSrcweir keepdocument = m_aParams.getBool("KeepDocument"); 81cdf0e10cSrcweir newOffice = m_aParams.getBool(util.PropertyName.NEW_OFFICE_INSTANCE); 82cdf0e10cSrcweir if (keepdocument) 83cdf0e10cSrcweir { 84cdf0e10cSrcweir System.setProperty("KeepDocument", "true"); 85cdf0e10cSrcweir } 86cdf0e10cSrcweir if (ExclusionFile != null) 87cdf0e10cSrcweir { 88cdf0e10cSrcweir exclusions = getExclusionList(ExclusionFile, m_isDebug); 89cdf0e10cSrcweir } 90cdf0e10cSrcweir //get Job-Descriptions 91cdf0e10cSrcweir // System.out.println("Getting Descriptions for Job: " + job); 92cdf0e10cSrcweir 93cdf0e10cSrcweir String sDescriptionPath = (String) m_aParams.get("DescriptionPath"); 94cdf0e10cSrcweir DescEntry[] entries = dg.getDescriptionFor(job, sDescriptionPath, m_isDebug); 95cdf0e10cSrcweir 96cdf0e10cSrcweir // System.out.println(); 97cdf0e10cSrcweir 98cdf0e10cSrcweir if (entries == null) 99cdf0e10cSrcweir { 100cdf0e10cSrcweir System.out.println("Couldn't get Description for Job: " + job); 101cdf0e10cSrcweir 102cdf0e10cSrcweir return false; 103cdf0e10cSrcweir } 104cdf0e10cSrcweir 105cdf0e10cSrcweir // String officeProviderName = (String) m_aParams.get("OfficeProvider"); 106cdf0e10cSrcweir // AppProvider office = (AppProvider) m_aDynamicClassLoader.getInstance(officeProviderName); 107cdf0e10cSrcweir // 108cdf0e10cSrcweir // if (office == null) { 109cdf0e10cSrcweir // System.out.println("ERROR: Wrong parameter 'OfficeProvider', " + 110cdf0e10cSrcweir // " it cannot be instantiated."); 111cdf0e10cSrcweir // System.exit(-1); 112cdf0e10cSrcweir // } 113cdf0e10cSrcweir 114cdf0e10cSrcweir m_aOffice = startOffice(m_aParams); 115cdf0e10cSrcweir 116cdf0e10cSrcweir boolean firstRun = true; 117cdf0e10cSrcweir 118cdf0e10cSrcweir // Run through all entries (e.g. sw.SwXBookmark.*) 119cdf0e10cSrcweir 120cdf0e10cSrcweir for (int l = 0; l < entries.length; l++) 121cdf0e10cSrcweir { 122cdf0e10cSrcweir DescEntry entry = entries[l]; 123cdf0e10cSrcweir 124cdf0e10cSrcweir if (entry == null) 125cdf0e10cSrcweir { 126cdf0e10cSrcweir continue; 127cdf0e10cSrcweir } 128cdf0e10cSrcweir 129cdf0e10cSrcweir if (entry.hasErrorMsg) 130cdf0e10cSrcweir { 131cdf0e10cSrcweir System.out.println(entries[l].ErrorMsg); 132cdf0e10cSrcweir retValue = false; 133cdf0e10cSrcweir continue; 134cdf0e10cSrcweir } 135cdf0e10cSrcweir 136cdf0e10cSrcweir if (!firstRun && newOffice) 137cdf0e10cSrcweir { 138cdf0e10cSrcweir if (!m_aOffice.closeExistingOffice(m_aParams, true)) 139cdf0e10cSrcweir { 140cdf0e10cSrcweir m_aOffice.disposeManager(m_aParams); 141cdf0e10cSrcweir } 142cdf0e10cSrcweir startOffice(m_aParams); 143cdf0e10cSrcweir } 144cdf0e10cSrcweir firstRun = false; 145cdf0e10cSrcweir 146cdf0e10cSrcweir XMultiServiceFactory msf = (XMultiServiceFactory) m_aParams.getMSF(); 147cdf0e10cSrcweir 148cdf0e10cSrcweir if (msf == null) 149cdf0e10cSrcweir { 150cdf0e10cSrcweir retValue = false; 151cdf0e10cSrcweir continue; 152cdf0e10cSrcweir } 153cdf0e10cSrcweir 154cdf0e10cSrcweir //get some helper classes 155cdf0e10cSrcweir Summarizer sumIt = new Summarizer(); 156cdf0e10cSrcweir TestCase tCase = getTestCase(entry); 157cdf0e10cSrcweir if (tCase == null) 158cdf0e10cSrcweir { 159cdf0e10cSrcweir continue; 160cdf0e10cSrcweir } 161cdf0e10cSrcweir 162cdf0e10cSrcweir // if (m_isDebug) 163cdf0e10cSrcweir // { 164cdf0e10cSrcweir // System.out.println("sleeping 2 seconds.."); 165cdf0e10cSrcweir // } 166cdf0e10cSrcweir util.utils.shortWait(2000); 167cdf0e10cSrcweir 168cdf0e10cSrcweir System.out.println("Creating: " + entry.entryName); 169cdf0e10cSrcweir 170cdf0e10cSrcweir LogWriter log = (LogWriter) m_aDynamicClassLoader.getInstance((String) m_aParams.get("LogWriter")); 171cdf0e10cSrcweir log.initialize(entry, logging); 172cdf0e10cSrcweir entry.UserDefinedParams = m_aParams; 173cdf0e10cSrcweir 174cdf0e10cSrcweir tCase.setLogWriter((PrintWriter) log); 175cdf0e10cSrcweir tCase.initializeTestCase(m_aParams); 176cdf0e10cSrcweir 177cdf0e10cSrcweir TestEnvironment tEnv = getTestEnvironment(tCase, entry); 178cdf0e10cSrcweir if (tEnv == null) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir continue; 181cdf0e10cSrcweir } 182cdf0e10cSrcweir 183cdf0e10cSrcweir final String sObjectName = tCase.getObjectName(); 184cdf0e10cSrcweir // System.out.println(sObjectName + " recreated "); 185cdf0e10cSrcweir 186cdf0e10cSrcweir for (int j = 0; j < entry.SubEntryCount; j++) 187cdf0e10cSrcweir { 188cdf0e10cSrcweir DescEntry aSubEntry = entry.SubEntries[j]; 189cdf0e10cSrcweir final boolean bIsToTest = aSubEntry.isToTest; 190cdf0e10cSrcweir if (!bIsToTest) 191cdf0e10cSrcweir { 192cdf0e10cSrcweir Summarizer.summarizeDown(aSubEntry, "not part of the job"); 193cdf0e10cSrcweir continue; 194cdf0e10cSrcweir } 195cdf0e10cSrcweir 196cdf0e10cSrcweir // final String sEntryName = aSubEntry.entryName; 197cdf0e10cSrcweir final String sLongEntryName = aSubEntry.longName; 198cdf0e10cSrcweir 199cdf0e10cSrcweir if ((exclusions != null) && (exclusions.contains(sLongEntryName))) 200cdf0e10cSrcweir { 201cdf0e10cSrcweir Summarizer.summarizeDown(aSubEntry, "known issue"); 202cdf0e10cSrcweir continue; 203cdf0e10cSrcweir } 204cdf0e10cSrcweir 205cdf0e10cSrcweir // System.out.println("running: '" + sLongEntryName + "' testcode: [" + sEntryName + "]"); 206cdf0e10cSrcweir // this will shown in test itself 207cdf0e10cSrcweir 208cdf0e10cSrcweir LogWriter ifclog = (LogWriter) m_aDynamicClassLoader.getInstance( (String) m_aParams.get("LogWriter")); 209cdf0e10cSrcweir 210cdf0e10cSrcweir ifclog.initialize(aSubEntry, logging); 211cdf0e10cSrcweir aSubEntry.UserDefinedParams = m_aParams; 212cdf0e10cSrcweir aSubEntry.Logger = ifclog; 213cdf0e10cSrcweir 214cdf0e10cSrcweir if ((tEnv == null) || tEnv.isDisposed()) 215cdf0e10cSrcweir { 216cdf0e10cSrcweir closeExistingOffice(); 217cdf0e10cSrcweir tEnv = getEnv(entry, m_aParams); 218cdf0e10cSrcweir tCase = tEnv.getTestCase(); 219cdf0e10cSrcweir } 220cdf0e10cSrcweir 221cdf0e10cSrcweir // MultiMethodTest ifc = null; 222cdf0e10cSrcweir lib.TestResult res = null; 223cdf0e10cSrcweir 224cdf0e10cSrcweir // run the interface test twice if it failed. 225cdf0e10cSrcweir int countInterfaceTestRun = 0; 226cdf0e10cSrcweir boolean finished = false; 227cdf0e10cSrcweir while (!finished) 228cdf0e10cSrcweir { 229cdf0e10cSrcweir try 230cdf0e10cSrcweir { 231cdf0e10cSrcweir countInterfaceTestRun++; 232cdf0e10cSrcweir finished = true; 233cdf0e10cSrcweir res = executeInterfaceTest(aSubEntry, tEnv, m_aParams); 234cdf0e10cSrcweir } 235cdf0e10cSrcweir catch (IllegalArgumentException iae) 236cdf0e10cSrcweir { 237cdf0e10cSrcweir System.out.println("Couldn't load class " + aSubEntry.entryName); 238cdf0e10cSrcweir System.out.println("**** " + iae.getMessage() + " ****"); 239cdf0e10cSrcweir Summarizer.summarizeDown(aSubEntry, iae.getMessage()); 240cdf0e10cSrcweir } 241cdf0e10cSrcweir catch (java.lang.NoClassDefFoundError iae) 242cdf0e10cSrcweir { 243cdf0e10cSrcweir System.out.println("Couldn't load class " + aSubEntry.entryName); 244cdf0e10cSrcweir System.out.println("**** " + iae.getMessage() + " ****"); 245cdf0e10cSrcweir Summarizer.summarizeDown(aSubEntry, iae.getMessage()); 246cdf0e10cSrcweir } 247cdf0e10cSrcweir catch (java.lang.RuntimeException e) 248cdf0e10cSrcweir { 249cdf0e10cSrcweir closeExistingOffice(); 250cdf0e10cSrcweir tEnv = getEnv(entry, m_aParams); 251cdf0e10cSrcweir tCase = tEnv.getTestCase(); 252cdf0e10cSrcweir if (countInterfaceTestRun < 2) 253cdf0e10cSrcweir { 254cdf0e10cSrcweir finished = false; 255cdf0e10cSrcweir } 256cdf0e10cSrcweir else 257cdf0e10cSrcweir { 258cdf0e10cSrcweir Summarizer.summarizeDown(aSubEntry, e.toString() + ".FAILED"); 259cdf0e10cSrcweir } 260cdf0e10cSrcweir } 261cdf0e10cSrcweir } 262cdf0e10cSrcweir setState(aSubEntry, res); 263cdf0e10cSrcweir 264cdf0e10cSrcweir sumIt.summarizeUp(aSubEntry); 265cdf0e10cSrcweir 266cdf0e10cSrcweir LogWriter sumIfc = OutProducerFactory.createOutProducer(m_aParams); 267cdf0e10cSrcweir aSubEntry.UserDefinedParams = m_aParams; 268cdf0e10cSrcweir sumIfc.initialize(aSubEntry, logging); 269cdf0e10cSrcweir sumIfc.summary(aSubEntry); 270cdf0e10cSrcweir } 271cdf0e10cSrcweir 272cdf0e10cSrcweir try 273cdf0e10cSrcweir { 274cdf0e10cSrcweir if (!keepdocument) 275cdf0e10cSrcweir { 276cdf0e10cSrcweir tCase.cleanupTestCase(m_aParams); 277cdf0e10cSrcweir } 278cdf0e10cSrcweir } 279cdf0e10cSrcweir catch (Exception e) 280cdf0e10cSrcweir { 281cdf0e10cSrcweir System.err.println( "couldn't cleanup:" + e.toString() ); 282cdf0e10cSrcweir } 283cdf0e10cSrcweir catch (java.lang.NoClassDefFoundError e) 284cdf0e10cSrcweir { 285cdf0e10cSrcweir System.err.println( "couldn't cleanup:" + e.toString() ); 286cdf0e10cSrcweir } 287cdf0e10cSrcweir 288cdf0e10cSrcweir sumIt.summarizeUp(entry); 289cdf0e10cSrcweir 290cdf0e10cSrcweir LogWriter sumObj = OutProducerFactory.createOutProducer(m_aParams); 291cdf0e10cSrcweir 292cdf0e10cSrcweir sumObj.initialize(entry, logging); 293cdf0e10cSrcweir sumObj.summary(entry); 294cdf0e10cSrcweir } 295cdf0e10cSrcweir 296cdf0e10cSrcweir if (entries.length > 0) 297cdf0e10cSrcweir { 298cdf0e10cSrcweir System.out.println(); 299cdf0e10cSrcweir 300cdf0e10cSrcweir int counter = 0; 301cdf0e10cSrcweir System.out.println("Failures that appeared during scenario execution:"); 302cdf0e10cSrcweir 303cdf0e10cSrcweir for (int i = 0; i < entries.length; i++) 304cdf0e10cSrcweir { 305cdf0e10cSrcweir final String sState = entries[i].State; 306cdf0e10cSrcweir if (!sState.endsWith("OK")) 307cdf0e10cSrcweir { 308cdf0e10cSrcweir System.out.println("\t " + entries[i].longName); 309cdf0e10cSrcweir counter++; 310cdf0e10cSrcweir } 311cdf0e10cSrcweir } 312cdf0e10cSrcweir 313cdf0e10cSrcweir System.out.println(counter + " of " + entries.length + " tests failed"); 314cdf0e10cSrcweir if (counter != 0) { 315cdf0e10cSrcweir retValue = false; 316cdf0e10cSrcweir } 317cdf0e10cSrcweir } 318cdf0e10cSrcweir 319cdf0e10cSrcweir closeExistingOffice(); 320cdf0e10cSrcweir return retValue; 321cdf0e10cSrcweir } 322cdf0e10cSrcweir 323cdf0e10cSrcweir // getTestEnvironment(TestCase tCase, DescEntry entry)324cdf0e10cSrcweir private TestEnvironment getTestEnvironment(TestCase tCase, DescEntry entry) 325cdf0e10cSrcweir { 326cdf0e10cSrcweir TestEnvironment tEnv = null; 327cdf0e10cSrcweir 328cdf0e10cSrcweir try 329cdf0e10cSrcweir { 330cdf0e10cSrcweir tEnv = tCase.getTestEnvironment(m_aParams); 331cdf0e10cSrcweir } 332cdf0e10cSrcweir catch (Exception e) 333cdf0e10cSrcweir { 334cdf0e10cSrcweir System.out.println("Exception while creating " + tCase.getObjectName()); 335cdf0e10cSrcweir System.out.println("Message " + e.getMessage()); 336cdf0e10cSrcweir e.printStackTrace(); 337cdf0e10cSrcweir tEnv = null; 338cdf0e10cSrcweir } 339cdf0e10cSrcweir catch (java.lang.UnsatisfiedLinkError e) 340cdf0e10cSrcweir { 341cdf0e10cSrcweir System.out.println("Exception while creating " + tCase.getObjectName()); 342cdf0e10cSrcweir System.out.println("Message " + e.getMessage()); 343cdf0e10cSrcweir tEnv = null; 344cdf0e10cSrcweir } 345cdf0e10cSrcweir catch (java.lang.NoClassDefFoundError e) 346cdf0e10cSrcweir { 347cdf0e10cSrcweir System.out.println("Exception while creating " + tCase.getObjectName()); 348cdf0e10cSrcweir System.out.println("Message " + e.getMessage()); 349cdf0e10cSrcweir tEnv = null; 350cdf0e10cSrcweir } 351cdf0e10cSrcweir 352cdf0e10cSrcweir if (tEnv == null) 353cdf0e10cSrcweir { 354cdf0e10cSrcweir Summarizer.summarizeDown(entry, "Couldn't create " + tCase.getObjectName()); 355cdf0e10cSrcweir 356cdf0e10cSrcweir LogWriter sumObj = OutProducerFactory.createOutProducer(m_aParams); 357cdf0e10cSrcweir entry.UserDefinedParams = m_aParams; 358cdf0e10cSrcweir sumObj.initialize(entry, logging); 359cdf0e10cSrcweir sumObj.summary(entry); 360cdf0e10cSrcweir } 361cdf0e10cSrcweir return tEnv; 362cdf0e10cSrcweir } 363cdf0e10cSrcweir // ------------------------------------------------------------------------- getTestCase(DescEntry _aEntry)364cdf0e10cSrcweir private TestCase getTestCase(DescEntry _aEntry) 365cdf0e10cSrcweir { 366cdf0e10cSrcweir TestCase tCase = null; 367cdf0e10cSrcweir 368cdf0e10cSrcweir try 369cdf0e10cSrcweir { 370cdf0e10cSrcweir tCase = (TestCase) m_aDynamicClassLoader.getInstance("mod._" + _aEntry.entryName); 371cdf0e10cSrcweir } 372cdf0e10cSrcweir catch (java.lang.IllegalArgumentException ie) 373cdf0e10cSrcweir { 374cdf0e10cSrcweir _aEntry.ErrorMsg = ie.getMessage(); 375cdf0e10cSrcweir _aEntry.hasErrorMsg = true; 376cdf0e10cSrcweir } 377cdf0e10cSrcweir catch (java.lang.NoClassDefFoundError ie) 378cdf0e10cSrcweir { 379cdf0e10cSrcweir _aEntry.ErrorMsg = ie.getMessage(); 380cdf0e10cSrcweir _aEntry.hasErrorMsg = true; 381cdf0e10cSrcweir } 382cdf0e10cSrcweir 383cdf0e10cSrcweir if (tCase == null) 384cdf0e10cSrcweir { 385cdf0e10cSrcweir Summarizer.summarizeDown(_aEntry, _aEntry.ErrorMsg); 386cdf0e10cSrcweir 387cdf0e10cSrcweir LogWriter sumObj = OutProducerFactory.createOutProducer(m_aParams); 388cdf0e10cSrcweir _aEntry.UserDefinedParams = m_aParams; 389cdf0e10cSrcweir sumObj.initialize(_aEntry, logging); 390cdf0e10cSrcweir sumObj.summary(_aEntry); 391cdf0e10cSrcweir } 392cdf0e10cSrcweir return tCase; 393cdf0e10cSrcweir } 394cdf0e10cSrcweir setState(DescEntry aSubEntry, lib.TestResult res)395cdf0e10cSrcweir private void setState(DescEntry aSubEntry, lib.TestResult res) 396cdf0e10cSrcweir { 397cdf0e10cSrcweir if (res != null) 398cdf0e10cSrcweir { 399cdf0e10cSrcweir for (int k = 0; k < aSubEntry.SubEntryCount; k++) 400cdf0e10cSrcweir { 401cdf0e10cSrcweir DescEntry aSubSubEntry = aSubEntry.SubEntries[k]; 402cdf0e10cSrcweir if (res.hasMethod( aSubSubEntry.entryName)) 403cdf0e10cSrcweir { 404cdf0e10cSrcweir aSubSubEntry.State = res.getStatusFor(aSubSubEntry.entryName).toString(); 405cdf0e10cSrcweir } 406cdf0e10cSrcweir } 407cdf0e10cSrcweir } 408cdf0e10cSrcweir } 409cdf0e10cSrcweir getEnv(DescEntry entry, TestParameters param)410cdf0e10cSrcweir private TestEnvironment getEnv(DescEntry entry, TestParameters param) 411cdf0e10cSrcweir { 412cdf0e10cSrcweir // if (m_aDynamicClassLoader == null) 413cdf0e10cSrcweir // m_aDynamicClassLoader = new DynamicClassLoader(); 414cdf0e10cSrcweir // String officeProviderName = (String) m_aParams.get("OfficeProvider"); 415cdf0e10cSrcweir // AppProvider office = (AppProvider) m_aDynamicClassLoader.getInstance(officeProviderName); 416cdf0e10cSrcweir // 417cdf0e10cSrcweir // if (office == null) { 418cdf0e10cSrcweir // System.out.println("ERROR: Wrong parameter 'OfficeProvider', " + 419cdf0e10cSrcweir // " it cannot be instantiated."); 420cdf0e10cSrcweir // System.exit(-1); 421cdf0e10cSrcweir // } 422cdf0e10cSrcweir // 423cdf0e10cSrcweir // XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager( 424cdf0e10cSrcweir // m_aParams); 425cdf0e10cSrcweir // 426cdf0e10cSrcweir // if (msf == null) { 427cdf0e10cSrcweir // return null; 428cdf0e10cSrcweir // } 429cdf0e10cSrcweir // 430cdf0e10cSrcweir // m_aParams.put("ServiceFactory", msf); 431cdf0e10cSrcweir 432cdf0e10cSrcweir // AppProvider office = startOffice(m_aParams); 433cdf0e10cSrcweir 434cdf0e10cSrcweir TestCase tCase = null; 435cdf0e10cSrcweir 436cdf0e10cSrcweir try 437cdf0e10cSrcweir { 438cdf0e10cSrcweir tCase = (TestCase) m_aDynamicClassLoader.getInstance("mod._" + entry.entryName); 439cdf0e10cSrcweir } 440cdf0e10cSrcweir catch (java.lang.IllegalArgumentException ie) 441cdf0e10cSrcweir { 442cdf0e10cSrcweir entry.ErrorMsg = ie.getMessage(); 443cdf0e10cSrcweir entry.hasErrorMsg = true; 444cdf0e10cSrcweir } 445cdf0e10cSrcweir catch (java.lang.NoClassDefFoundError ie) 446cdf0e10cSrcweir { 447cdf0e10cSrcweir entry.ErrorMsg = ie.getMessage(); 448cdf0e10cSrcweir entry.hasErrorMsg = true; 449cdf0e10cSrcweir } 450cdf0e10cSrcweir 451cdf0e10cSrcweir System.out.println("Creating: " + entry.entryName); 452cdf0e10cSrcweir 453cdf0e10cSrcweir entry.UserDefinedParams = param; 454cdf0e10cSrcweir 455cdf0e10cSrcweir LogWriter log = (LogWriter) m_aDynamicClassLoader.getInstance((String) param.get("LogWriter")); 456cdf0e10cSrcweir log.initialize(entry, logging); 457cdf0e10cSrcweir tCase.setLogWriter((PrintWriter) log); 458cdf0e10cSrcweir 459cdf0e10cSrcweir try 460cdf0e10cSrcweir { 461cdf0e10cSrcweir tCase.initializeTestCase(param); 462cdf0e10cSrcweir return tCase.getTestEnvironment(param); 463cdf0e10cSrcweir } 464cdf0e10cSrcweir catch (com.sun.star.lang.DisposedException de) 465cdf0e10cSrcweir { 466cdf0e10cSrcweir System.out.println("Office disposed"); 467cdf0e10cSrcweir closeExistingOffice(); 468cdf0e10cSrcweir throw de; 469cdf0e10cSrcweir } 470cdf0e10cSrcweir catch (lib.StatusException e) 471cdf0e10cSrcweir { 472cdf0e10cSrcweir System.out.println(e.getMessage()); 473cdf0e10cSrcweir 474cdf0e10cSrcweir closeExistingOffice(); 475cdf0e10cSrcweir 476cdf0e10cSrcweir entry.ErrorMsg = e.getMessage(); 477cdf0e10cSrcweir entry.hasErrorMsg = true; 478cdf0e10cSrcweir throw e; 479cdf0e10cSrcweir } 480cdf0e10cSrcweir } 481cdf0e10cSrcweir closeExistingOffice()482cdf0e10cSrcweir private void closeExistingOffice() 483cdf0e10cSrcweir { 484cdf0e10cSrcweir helper.ProcessHandler ph = (helper.ProcessHandler) m_aParams.get("AppProvider"); 485cdf0e10cSrcweir 486cdf0e10cSrcweir if (ph != null) 487cdf0e10cSrcweir { 488cdf0e10cSrcweir m_aOffice.closeExistingOffice(m_aParams, true); 489cdf0e10cSrcweir util.utils.shortWait(5000); 490cdf0e10cSrcweir } 491cdf0e10cSrcweir 492cdf0e10cSrcweir } 493cdf0e10cSrcweir 494cdf0e10cSrcweir // private void shortWait(int millis) 495cdf0e10cSrcweir // { 496cdf0e10cSrcweir // try 497cdf0e10cSrcweir // { 498cdf0e10cSrcweir // Thread.sleep(millis); 499cdf0e10cSrcweir // } 500cdf0e10cSrcweir // catch (java.lang.InterruptedException ie) 501cdf0e10cSrcweir // { 502cdf0e10cSrcweir // } 503cdf0e10cSrcweir // } 504cdf0e10cSrcweir getExclusionList(String url, boolean debug)505cdf0e10cSrcweir private Vector getExclusionList(String url, boolean debug) 506cdf0e10cSrcweir { 507cdf0e10cSrcweir Vector entryList = new Vector(); 508cdf0e10cSrcweir String line = "#"; 509cdf0e10cSrcweir BufferedReader exclusion = null; 510cdf0e10cSrcweir 511cdf0e10cSrcweir try 512cdf0e10cSrcweir { 513cdf0e10cSrcweir exclusion = new BufferedReader(new FileReader(url)); 514cdf0e10cSrcweir } 515cdf0e10cSrcweir catch (java.io.FileNotFoundException fnfe) 516cdf0e10cSrcweir { 517cdf0e10cSrcweir if (debug) 518cdf0e10cSrcweir { 519cdf0e10cSrcweir System.out.println("Couldn't find file " + url); 520cdf0e10cSrcweir } 521cdf0e10cSrcweir 522cdf0e10cSrcweir return entryList; 523cdf0e10cSrcweir } 524cdf0e10cSrcweir 525cdf0e10cSrcweir while (line != null) 526cdf0e10cSrcweir { 527cdf0e10cSrcweir try 528cdf0e10cSrcweir { 529cdf0e10cSrcweir if (!line.startsWith("#") && (line.length() > 1)) 530cdf0e10cSrcweir { 531cdf0e10cSrcweir entryList.add(line.trim()); 532cdf0e10cSrcweir } 533cdf0e10cSrcweir 534cdf0e10cSrcweir line = exclusion.readLine(); 535cdf0e10cSrcweir } 536cdf0e10cSrcweir catch (java.io.IOException ioe) 537cdf0e10cSrcweir { 538cdf0e10cSrcweir if (debug) 539cdf0e10cSrcweir { 540cdf0e10cSrcweir System.out.println("Exception while reading exclusion list"); 541cdf0e10cSrcweir } 542cdf0e10cSrcweir 543cdf0e10cSrcweir return entryList; 544cdf0e10cSrcweir } 545cdf0e10cSrcweir } 546cdf0e10cSrcweir 547cdf0e10cSrcweir try 548cdf0e10cSrcweir { 549cdf0e10cSrcweir exclusion.close(); 550cdf0e10cSrcweir } 551cdf0e10cSrcweir catch (java.io.IOException ioe) 552cdf0e10cSrcweir { 553cdf0e10cSrcweir if (debug) 554cdf0e10cSrcweir { 555cdf0e10cSrcweir System.out.println("Couldn't close file " + url); 556cdf0e10cSrcweir } 557cdf0e10cSrcweir 558cdf0e10cSrcweir return entryList; 559cdf0e10cSrcweir } 560cdf0e10cSrcweir 561cdf0e10cSrcweir return entryList; 562cdf0e10cSrcweir } 563cdf0e10cSrcweir executeInterfaceTest( DescEntry entry, TestEnvironment tEnv, TestParameters param)564cdf0e10cSrcweir private TestResult executeInterfaceTest( 565cdf0e10cSrcweir DescEntry entry, TestEnvironment tEnv, TestParameters param) 566cdf0e10cSrcweir throws IllegalArgumentException, java.lang.NoClassDefFoundError 567cdf0e10cSrcweir { 568cdf0e10cSrcweir MultiMethodTest ifc = (MultiMethodTest) m_aDynamicClassLoader.getInstance(entry.entryName); 569cdf0e10cSrcweir return ifc.run(entry, tEnv, param); 570cdf0e10cSrcweir } 571cdf0e10cSrcweir startOffice(lib.TestParameters param)572cdf0e10cSrcweir private AppProvider startOffice(lib.TestParameters param) 573cdf0e10cSrcweir { 574cdf0e10cSrcweir 575cdf0e10cSrcweir if (m_aDynamicClassLoader == null) 576cdf0e10cSrcweir { 577cdf0e10cSrcweir m_aDynamicClassLoader = new DynamicClassLoader(); 578cdf0e10cSrcweir } 579cdf0e10cSrcweir 580cdf0e10cSrcweir String officeProviderName = (String) param.get("OfficeProvider"); 581cdf0e10cSrcweir AppProvider office = (AppProvider) m_aDynamicClassLoader.getInstance(officeProviderName); 582cdf0e10cSrcweir 583cdf0e10cSrcweir if (office == null) 584cdf0e10cSrcweir { 585cdf0e10cSrcweir System.out.println("ERROR: Wrong parameter 'OfficeProvider', " + " it cannot be instantiated."); 586cdf0e10cSrcweir System.exit(-1); 587cdf0e10cSrcweir } 588cdf0e10cSrcweir 589cdf0e10cSrcweir XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager(param); 590cdf0e10cSrcweir 591cdf0e10cSrcweir if (msf != null) 592cdf0e10cSrcweir { 593cdf0e10cSrcweir param.put("ServiceFactory", msf); 594cdf0e10cSrcweir } 595cdf0e10cSrcweir 596cdf0e10cSrcweir return office; 597cdf0e10cSrcweir } 598cdf0e10cSrcweir } 599