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