xref: /aoo41x/main/qadevOOo/runner/base/java_fat.java (revision ef39d40d)
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