summaryrefslogtreecommitdiff
path: root/qadevOOo/runner/base
diff options
context:
space:
mode:
Diffstat (limited to 'qadevOOo/runner/base')
-rw-r--r--qadevOOo/runner/base/TestBase.java39
-rw-r--r--qadevOOo/runner/base/basic_fat.java457
-rw-r--r--qadevOOo/runner/base/java_cmp.java83
-rw-r--r--qadevOOo/runner/base/java_complex.java170
-rw-r--r--qadevOOo/runner/base/java_fat.java602
-rw-r--r--qadevOOo/runner/base/java_fat_service.java267
-rw-r--r--qadevOOo/runner/base/makefile.mk52
7 files changed, 1670 insertions, 0 deletions
diff --git a/qadevOOo/runner/base/TestBase.java b/qadevOOo/runner/base/TestBase.java
new file mode 100644
index 000000000000..d09f28721ab0
--- /dev/null
+++ b/qadevOOo/runner/base/TestBase.java
@@ -0,0 +1,39 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package base;
+
+import lib.TestParameters;
+/**
+ *
+ * Base Interface to execute a given TestJob
+ */
+public interface TestBase {
+
+ public boolean executeTest(TestParameters param);
+
+}
diff --git a/qadevOOo/runner/base/basic_fat.java b/qadevOOo/runner/base/basic_fat.java
new file mode 100644
index 000000000000..74a6708cf801
--- /dev/null
+++ b/qadevOOo/runner/base/basic_fat.java
@@ -0,0 +1,457 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package base;
+
+
+import basicrunner.BasicIfcTest;
+import basicrunner.BasicTestCase;
+
+import com.sun.star.lang.XMultiServiceFactory;
+
+import helper.APIDescGetter;
+import helper.AppProvider;
+import helper.OfficeProvider;
+import helper.OfficeWatcher;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.PrintWriter;
+
+import java.util.Vector;
+
+import lib.TestCase;
+import lib.TestEnvironment;
+import lib.TestParameters;
+
+import share.DescEntry;
+import share.DescGetter;
+import share.LogWriter;
+
+import stats.OutProducerFactory;
+import stats.Summarizer;
+
+import util.DynamicClassLoader;
+
+/**
+ * The testbase for executing basic tests.
+ * @see lib.TestBase
+ */
+public class basic_fat implements TestBase
+{
+
+ public static boolean debug = false;
+
+ /**
+ * Execute a test.
+ * @param param The test parameters.
+ * @return True, if the test was executed.
+ */
+ public boolean executeTest(TestParameters param)
+ {
+ DescGetter dg = new APIDescGetter();
+ String job = (String) param.get("TestJob");
+ OfficeProvider office = null;
+ debug = param.getBool("DebugIsActive");
+
+
+ //get Job-Descriptions
+ System.out.print("Getting Descriptions for Job: " + job + " from ");
+
+ DescEntry[] entries = dg.getDescriptionFor(job,
+ (String) param.get(
+ "DescriptionPath"),
+ debug);
+
+ if (entries == null)
+ {
+ System.out.println("Couldn't get Description for Job");
+
+ return false;
+ }
+
+ String ExclusionFile = (String) param.get("ExclusionList");
+ Vector exclusions = null;
+
+ if (ExclusionFile != null)
+ {
+ exclusions = getExclusionList(ExclusionFile, debug);
+ }
+
+ String conStr = (String) param.get("ConnectionString");
+ System.out.println("");
+ System.out.print("> Connecting the Office ");
+ System.out.println("With " + conStr);
+
+ for (int l = 0; l < entries.length; l++)
+ {
+ if (entries[l].hasErrorMsg)
+ {
+ System.out.println(entries[l].ErrorMsg);
+
+ continue;
+ }
+
+ office = new OfficeProvider();
+
+ XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager(
+ param);
+
+ if (msf == null)
+ {
+ return false;
+ }
+
+ param.put("ServiceFactory", msf);
+
+ DescEntry entry = entries[l];
+
+ //get some helper classes
+ Summarizer sumIt = new Summarizer();
+ DynamicClassLoader dcl = new DynamicClassLoader();
+
+ TestCase tCase = null;
+
+ tCase = (TestCase) new BasicTestCase(entry);
+
+ if (tCase == null)
+ {
+ sumIt.summarizeDown(entry, entry.ErrorMsg);
+
+ LogWriter sumObj = OutProducerFactory.createOutProducer(param);
+ sumObj.initialize(entry, true);
+ sumObj.summary(entry);
+
+ continue;
+ }
+
+ System.out.println("Creating: " + tCase.getObjectName());
+
+ LogWriter log = (LogWriter) dcl.getInstance(
+ (String) param.get("LogWriter"));
+ log.initialize(entry, true);
+ entry.UserDefinedParams = param;
+ tCase.setLogWriter((PrintWriter) log);
+
+ try
+ {
+ tCase.initializeTestCase(param);
+ }
+ catch (RuntimeException e)
+ {
+ helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
+ "AppProvider");
+
+ if (ph != null)
+ {
+ OfficeWatcher ow = (OfficeWatcher) param.get("Watcher");
+
+ if ((ow != null) && ow.isAlive())
+ {
+ ow.finish = true;
+ }
+
+ ph.kill();
+ shortWait(5000);
+ }
+
+ continue;
+ }
+
+ TestEnvironment tEnv = tCase.getTestEnvironment(param);
+
+ if (tEnv == null)
+ {
+ sumIt.summarizeDown(entry, "Unable to create testcase");
+
+ LogWriter sumObj = OutProducerFactory.createOutProducer(param);
+ sumObj.initialize(entry, true);
+ sumObj.summary(entry);
+
+ helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
+ "AppProvider");
+
+ if (ph != null)
+ {
+ OfficeWatcher ow = (OfficeWatcher) param.get("Watcher");
+
+ if ((ow != null) && ow.isAlive())
+ {
+ ow.finish = true;
+ }
+
+ ph.kill();
+ shortWait(5000);
+ }
+
+ continue;
+ }
+
+ System.out.println("created " + tCase.getObjectName());
+
+ for (int j = 0; j < entry.SubEntryCount; j++)
+ {
+ if (!entry.SubEntries[j].isToTest)
+ {
+ Summarizer.summarizeDown(entry.SubEntries[j],
+ "not part of the job");
+
+ continue;
+ }
+
+ if ((exclusions != null) &&
+ (exclusions.contains(entry.SubEntries[j].longName)))
+ {
+ Summarizer.summarizeDown(entry.SubEntries[j],
+ "known issue");
+
+ continue;
+ }
+
+ System.out.println("running: " +
+ entry.SubEntries[j].entryName);
+
+ LogWriter ifclog = (LogWriter) dcl.getInstance(
+ (String) param.get("LogWriter"));
+ ifclog.initialize(entry.SubEntries[j], true);
+ entry.SubEntries[j].UserDefinedParams = param;
+ entry.SubEntries[j].Logger = ifclog;
+
+ if ((tEnv == null) || tEnv.isDisposed())
+ {
+ helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
+ "AppProvider");
+
+ if (ph != null)
+ {
+ office.closeExistingOffice(param, true);
+ shortWait(5000);
+ }
+
+ tEnv = getEnv(entry, param);
+ }
+
+ BasicIfcTest ifc = null;
+ lib.TestResult res = null;
+ ifc = new BasicIfcTest(entry.SubEntries[j].longName);
+ res = ifc.run(entry.SubEntries[j], tEnv, param);
+
+ sumIt.summarizeUp(entry.SubEntries[j]);
+
+ LogWriter sumIfc = OutProducerFactory.createOutProducer(param);
+
+ sumIfc.initialize(entry.SubEntries[j], true);
+ sumIfc.summary(entry.SubEntries[j]);
+ }
+
+ try
+ {
+ tCase.cleanupTestCase(param);
+ }
+ catch (Exception e)
+ {
+ log.println("TestCase already gone");
+
+ helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
+ "AppProvider");
+
+ if (ph != null)
+ {
+ office.closeExistingOffice(param, true);
+ shortWait(5000);
+ }
+ }
+
+ sumIt.summarizeUp(entry);
+
+ LogWriter sumObj = OutProducerFactory.createOutProducer(param);
+ sumObj.initialize(entry, true);
+ sumObj.summary(entry);
+ }
+
+ if (entries.length > 1)
+ {
+ System.out.println();
+
+ int counter = 0;
+ System.out.println(
+ "Failures that appeared during scenario execution:");
+
+ for (int i = 0; i < entries.length; i++)
+ {
+ if (!entries[i].State.endsWith("OK"))
+ {
+ System.out.println("\t " + entries[i].longName);
+ counter++;
+ }
+ }
+
+ System.out.println(counter + " of " + entries.length +
+ " tests failed");
+ }
+
+ helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
+ "AppProvider");
+
+ if (ph != null)
+ {
+ office.closeExistingOffice(param, true);
+ }
+
+ return true;
+ }
+
+ protected TestEnvironment getEnv(DescEntry entry, TestParameters param)
+ {
+ DynamicClassLoader dcl = new DynamicClassLoader();
+ String officeProviderName = (String) param.get("OfficeProvider");
+ AppProvider office = (AppProvider) dcl.getInstance(officeProviderName);
+
+ if (office == null)
+ {
+ System.out.println("ERROR: Wrong parameter 'OfficeProvider', " +
+ " it cannot be instantiated.");
+ System.exit(-1);
+ }
+
+ XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager(
+ param);
+
+ if (msf == null)
+ {
+ return null;
+ }
+
+ param.put("ServiceFactory", msf);
+
+ TestCase tCase = (TestCase) new BasicTestCase(entry);
+
+ System.out.println("Creating: " + tCase.getObjectName());
+
+ LogWriter log = (LogWriter) dcl.getInstance(
+ (String) param.get("LogWriter"));
+ log.initialize(entry, true);
+ entry.UserDefinedParams = param;
+ tCase.setLogWriter((PrintWriter) log);
+
+ TestEnvironment tEnv = null;
+
+ try
+ {
+ tCase.initializeTestCase(param);
+ tEnv = tCase.getTestEnvironment(param);
+ }
+ catch (java.lang.RuntimeException e)
+ {
+ System.out.println(e.getMessage());
+
+ helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
+ "AppProvider");
+
+ if (ph != null)
+ {
+ office.closeExistingOffice(param, true);
+ shortWait(5000);
+ }
+
+ entry.ErrorMsg = e.getMessage();
+ entry.hasErrorMsg = true;
+ }
+
+ return tEnv;
+ }
+
+ protected void shortWait(int millis)
+ {
+ try
+ {
+ Thread.sleep(millis);
+ }
+ catch (java.lang.InterruptedException ie)
+ {
+ }
+ }
+
+ protected Vector getExclusionList(String url, boolean debug)
+ {
+ Vector entryList = new Vector();
+ String line = "#";
+ BufferedReader exclusion = null;
+
+ try
+ {
+ exclusion = new BufferedReader(new FileReader(url));
+ }
+ catch (java.io.FileNotFoundException fnfe)
+ {
+ if (debug)
+ {
+ System.out.println("Couldn't find file " + url);
+ }
+
+ return entryList;
+ }
+
+ while (line != null)
+ {
+ try
+ {
+ if (!line.startsWith("#"))
+ {
+ entryList.add(line);
+ }
+
+ line = exclusion.readLine();
+ }
+ catch (java.io.IOException ioe)
+ {
+ if (debug)
+ {
+ System.out.println(
+ "Exception while reading exclusion list");
+ }
+
+ return entryList;
+ }
+ }
+
+ try
+ {
+ exclusion.close();
+ }
+ catch (java.io.IOException ioe)
+ {
+ if (debug)
+ {
+ System.out.println("Couldn't close file " + url);
+ }
+
+ return entryList;
+ }
+
+ return entryList;
+ }
+}
diff --git a/qadevOOo/runner/base/java_cmp.java b/qadevOOo/runner/base/java_cmp.java
new file mode 100644
index 000000000000..c25de6efc4a9
--- /dev/null
+++ b/qadevOOo/runner/base/java_cmp.java
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package base;
+
+
+
+
+/**
+ *
+ * this class handles tests written in java without running an Office with
+ * own bootstrapping of UNO
+ */
+public class java_cmp implements TestBase {
+
+ private TestBase mWrappedTestBase = new java_fat();
+
+ public boolean executeTest(lib.TestParameters param) {
+ param.put("OfficeProvider", "helper.UnoProvider");
+ return mWrappedTestBase.executeTest(param);
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qadevOOo/runner/base/java_complex.java b/qadevOOo/runner/base/java_complex.java
new file mode 100644
index 000000000000..946e14b42934
--- /dev/null
+++ b/qadevOOo/runner/base/java_complex.java
@@ -0,0 +1,170 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package base;
+
+import complexlib.ComplexTestCase;
+import util.DynamicClassLoader;
+import share.DescGetter;
+import stats.OutProducerFactory;
+import helper.ComplexDescGetter;
+import helper.AppProvider;
+import helper.CfgParser;
+import share.DescEntry;
+import share.LogWriter;
+import stats.Summarizer;
+import lib.TestParameters;
+import util.PropertyName;
+
+/**
+ * Test base for executing a java complex test.
+ * @see base.TestBase
+ */
+public class java_complex implements TestBase
+{
+
+ /**
+ * This function executes the complex tests given as parameter "-o" or "TestJob". It querys for the correspond class
+ * and crates the JobDescription.
+ * @param param
+ * @return true of all tests run successfuly, esle false
+ */
+ public boolean executeTest(TestParameters param)
+ {
+
+ // is there an ini file for the complex tests defined?
+ String complexIniFileName = ((String) param.get("ComplexIni"));
+ if (complexIniFileName != null)
+ {
+ CfgParser ini = new CfgParser(complexIniFileName);
+ ini.getIniParameters(param);
+ }
+
+ // get the test job
+ String testJob = ((String) param.get("TestJob"));
+
+ DescGetter descGetter = new ComplexDescGetter();
+ // get the test jobs
+ DescEntry[] entries = descGetter.getDescriptionFor(testJob, null, true);
+ return executeTest(param, entries);
+
+ }
+
+ /**
+ * This function run the given DescEntry[] as ComplexTest
+ * @param param
+ * @param entries
+ * @return true of all tests run successfuly, esle false
+ */
+ public boolean executeTest(TestParameters param, DescEntry[] entries)
+ {
+ // is there an ini file for the complex tests defined?
+ String complexIniFileName = ((String) param.get("ComplexIni"));
+ if (complexIniFileName != null)
+ {
+ CfgParser ini = new CfgParser(complexIniFileName);
+ ini.getIniParameters(param);
+ }
+
+ DynamicClassLoader dcl = new DynamicClassLoader();
+ ComplexTestCase testClass = null;
+ boolean returnVal = true;
+
+// the concept of the TimeOut depends on runner logs. If the runner log,
+// for exmaple to start a test method, the timeout was restet. This is not
+// while the test itself log something like "open docuent...".
+// An property of complex test could be that it have only one test method
+// which works for serveral minutes. Ih this case the TimeOut get not trigger
+// and the office was killed.
+// In complex tests just use "ThreadTimeOut" as timout.
+
+ // param.put("TimeOut", new Integer(0));
+
+ for (int i = 0; i < entries.length; i++)
+ {
+
+ if (entries[i] == null)
+ {
+ continue;
+ }
+ String iniName = entries[i].longName;
+ iniName = iniName.replace('.', '/');
+ CfgParser ini = new CfgParser(iniName + ".props");
+ ini.getIniParameters(param);
+
+ LogWriter log = (LogWriter) dcl.getInstance((String) param.get("LogWriter"));
+
+ AppProvider office = null;
+ if (!param.getBool("NoOffice"))
+ {
+ try
+ {
+ office = (AppProvider) dcl.getInstance("helper.OfficeProvider");
+ Object msf = office.getManager(param);
+ if (msf == null)
+ {
+ returnVal = false;
+ continue;
+ }
+ param.put("ServiceFactory", msf);
+ }
+ catch (IllegalArgumentException e)
+ {
+ office = null;
+ }
+ }
+ log.initialize(entries[i], param.getBool(PropertyName.LOGGING_IS_ACTIVE));
+ entries[i].Logger = log;
+
+ // create an instance
+ try
+ {
+ testClass = (ComplexTestCase) dcl.getInstance(entries[i].longName);
+ }
+ catch (java.lang.Exception e)
+ {
+ e.printStackTrace();
+ return false;
+ }
+ testClass.executeMethods(entries[i], param);
+
+ Summarizer sum = new Summarizer();
+ sum.summarizeUp(entries[i]);
+
+ if (office != null)
+ {
+ office.closeExistingOffice(param, false);
+ }
+
+ LogWriter out = OutProducerFactory.createOutProducer(param);
+
+ out.initialize(entries[i], true);
+ out.summary(entries[i]);
+ returnVal &= entries[i].State.endsWith("OK");
+ }
+ return returnVal;
+ }
+}
diff --git a/qadevOOo/runner/base/java_fat.java b/qadevOOo/runner/base/java_fat.java
new file mode 100644
index 000000000000..4dd3ad51a817
--- /dev/null
+++ b/qadevOOo/runner/base/java_fat.java
@@ -0,0 +1,602 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package base;
+
+import com.sun.star.lang.XMultiServiceFactory;
+
+import helper.APIDescGetter;
+import helper.AppProvider;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.PrintWriter;
+
+import java.util.Vector;
+
+import lib.MultiMethodTest;
+import lib.TestCase;
+import lib.TestEnvironment;
+import lib.TestParameters;
+import lib.TestResult;
+
+import share.DescEntry;
+import share.DescGetter;
+import share.LogWriter;
+
+import stats.OutProducerFactory;
+import stats.Summarizer;
+
+import util.DynamicClassLoader;
+
+/**
+ *
+ * this class handles tests written in java and running on a fat Office
+ */
+public class java_fat implements TestBase
+{
+
+ private static boolean m_isDebug = false;
+ private static boolean keepdocument = false;
+ private static boolean logging = true;
+ private static boolean newOffice = false;
+ private DynamicClassLoader m_aDynamicClassLoader = null;
+
+ private lib.TestParameters m_aParams;
+ private AppProvider m_aOffice;
+
+ public boolean executeTest(lib.TestParameters _aParams)
+ {
+ m_aParams = _aParams;
+
+ m_aDynamicClassLoader = new DynamicClassLoader();
+
+ DescGetter dg = new APIDescGetter();
+ String job = (String) m_aParams.get("TestJob");
+ String ExclusionFile = (String) m_aParams.get("ExclusionList");
+ Vector exclusions = null;
+ boolean retValue = true;
+ m_isDebug = m_aParams.getBool("DebugIsActive");
+ logging = m_aParams.getBool("LoggingIsActive");
+ keepdocument = m_aParams.getBool("KeepDocument");
+ newOffice = m_aParams.getBool(util.PropertyName.NEW_OFFICE_INSTANCE);
+ if (keepdocument)
+ {
+ System.setProperty("KeepDocument", "true");
+ }
+ if (ExclusionFile != null)
+ {
+ exclusions = getExclusionList(ExclusionFile, m_isDebug);
+ }
+ //get Job-Descriptions
+ // System.out.println("Getting Descriptions for Job: " + job);
+
+ String sDescriptionPath = (String) m_aParams.get("DescriptionPath");
+ DescEntry[] entries = dg.getDescriptionFor(job, sDescriptionPath, m_isDebug);
+
+ // System.out.println();
+
+ if (entries == null)
+ {
+ System.out.println("Couldn't get Description for Job: " + job);
+
+ return false;
+ }
+
+// String officeProviderName = (String) m_aParams.get("OfficeProvider");
+// AppProvider office = (AppProvider) m_aDynamicClassLoader.getInstance(officeProviderName);
+//
+// if (office == null) {
+// System.out.println("ERROR: Wrong parameter 'OfficeProvider', " +
+// " it cannot be instantiated.");
+// System.exit(-1);
+// }
+
+ m_aOffice = startOffice(m_aParams);
+
+ boolean firstRun = true;
+
+ // Run through all entries (e.g. sw.SwXBookmark.*)
+
+ for (int l = 0; l < entries.length; l++)
+ {
+ DescEntry entry = entries[l];
+
+ if (entry == null)
+ {
+ continue;
+ }
+
+ if (entry.hasErrorMsg)
+ {
+ System.out.println(entries[l].ErrorMsg);
+ retValue = false;
+ continue;
+ }
+
+ if (!firstRun && newOffice)
+ {
+ if (!m_aOffice.closeExistingOffice(m_aParams, true))
+ {
+ m_aOffice.disposeManager(m_aParams);
+ }
+ startOffice(m_aParams);
+ }
+ firstRun = false;
+
+ XMultiServiceFactory msf = (XMultiServiceFactory) m_aParams.getMSF();
+
+ if (msf == null)
+ {
+ retValue = false;
+ continue;
+ }
+
+ //get some helper classes
+ Summarizer sumIt = new Summarizer();
+ TestCase tCase = getTestCase(entry);
+ if (tCase == null)
+ {
+ continue;
+ }
+
+// if (m_isDebug)
+// {
+// System.out.println("sleeping 2 seconds..");
+// }
+ util.utils.shortWait(2000);
+
+ System.out.println("Creating: " + entry.entryName);
+
+ LogWriter log = (LogWriter) m_aDynamicClassLoader.getInstance((String) m_aParams.get("LogWriter"));
+ log.initialize(entry, logging);
+ entry.UserDefinedParams = m_aParams;
+
+ tCase.setLogWriter((PrintWriter) log);
+ tCase.initializeTestCase(m_aParams);
+
+ TestEnvironment tEnv = getTestEnvironment(tCase, entry);
+ if (tEnv == null)
+ {
+ continue;
+ }
+
+ final String sObjectName = tCase.getObjectName();
+ // System.out.println(sObjectName + " recreated ");
+
+ for (int j = 0; j < entry.SubEntryCount; j++)
+ {
+ DescEntry aSubEntry = entry.SubEntries[j];
+ final boolean bIsToTest = aSubEntry.isToTest;
+ if (!bIsToTest)
+ {
+ Summarizer.summarizeDown(aSubEntry, "not part of the job");
+ continue;
+ }
+
+ // final String sEntryName = aSubEntry.entryName;
+ final String sLongEntryName = aSubEntry.longName;
+
+ if ((exclusions != null) && (exclusions.contains(sLongEntryName)))
+ {
+ Summarizer.summarizeDown(aSubEntry, "known issue");
+ continue;
+ }
+
+ // System.out.println("running: '" + sLongEntryName + "' testcode: [" + sEntryName + "]");
+ // this will shown in test itself
+
+ LogWriter ifclog = (LogWriter) m_aDynamicClassLoader.getInstance( (String) m_aParams.get("LogWriter"));
+
+ ifclog.initialize(aSubEntry, logging);
+ aSubEntry.UserDefinedParams = m_aParams;
+ aSubEntry.Logger = ifclog;
+
+ if ((tEnv == null) || tEnv.isDisposed())
+ {
+ closeExistingOffice();
+ tEnv = getEnv(entry, m_aParams);
+ tCase = tEnv.getTestCase();
+ }
+
+ // MultiMethodTest ifc = null;
+ lib.TestResult res = null;
+
+ // run the interface test twice if it failed.
+ int countInterfaceTestRun = 0;
+ boolean finished = false;
+ while (!finished)
+ {
+ try
+ {
+ countInterfaceTestRun++;
+ finished = true;
+ res = executeInterfaceTest(aSubEntry, tEnv, m_aParams);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ System.out.println("Couldn't load class " + aSubEntry.entryName);
+ System.out.println("**** " + iae.getMessage() + " ****");
+ Summarizer.summarizeDown(aSubEntry, iae.getMessage());
+ }
+ catch (java.lang.NoClassDefFoundError iae)
+ {
+ System.out.println("Couldn't load class " + aSubEntry.entryName);
+ System.out.println("**** " + iae.getMessage() + " ****");
+ Summarizer.summarizeDown(aSubEntry, iae.getMessage());
+ }
+ catch (java.lang.RuntimeException e)
+ {
+ closeExistingOffice();
+ tEnv = getEnv(entry, m_aParams);
+ tCase = tEnv.getTestCase();
+ if (countInterfaceTestRun < 2)
+ {
+ finished = false;
+ }
+ else
+ {
+ Summarizer.summarizeDown(aSubEntry, e.toString() + ".FAILED");
+ }
+ }
+ }
+ setState(aSubEntry, res);
+
+ sumIt.summarizeUp(aSubEntry);
+
+ LogWriter sumIfc = OutProducerFactory.createOutProducer(m_aParams);
+ aSubEntry.UserDefinedParams = m_aParams;
+ sumIfc.initialize(aSubEntry, logging);
+ sumIfc.summary(aSubEntry);
+ }
+
+ try
+ {
+ if (!keepdocument)
+ {
+ tCase.cleanupTestCase(m_aParams);
+ }
+ }
+ catch (Exception e)
+ {
+ System.err.println( "couldn't cleanup:" + e.toString() );
+ }
+ catch (java.lang.NoClassDefFoundError e)
+ {
+ System.err.println( "couldn't cleanup:" + e.toString() );
+ }
+
+ sumIt.summarizeUp(entry);
+
+ LogWriter sumObj = OutProducerFactory.createOutProducer(m_aParams);
+
+ sumObj.initialize(entry, logging);
+ sumObj.summary(entry);
+ }
+
+ if (entries.length > 0)
+ {
+ System.out.println();
+
+ int counter = 0;
+ System.out.println("Failures that appeared during scenario execution:");
+
+ for (int i = 0; i < entries.length; i++)
+ {
+ final String sState = entries[i].State;
+ if (!sState.endsWith("OK"))
+ {
+ System.out.println("\t " + entries[i].longName);
+ counter++;
+ }
+ }
+
+ System.out.println(counter + " of " + entries.length + " tests failed");
+ if (counter != 0) {
+ retValue = false;
+ }
+ }
+
+ closeExistingOffice();
+ return retValue;
+ }
+
+//
+ private TestEnvironment getTestEnvironment(TestCase tCase, DescEntry entry)
+ {
+ TestEnvironment tEnv = null;
+
+ try
+ {
+ tEnv = tCase.getTestEnvironment(m_aParams);
+ }
+ catch (Exception e)
+ {
+ System.out.println("Exception while creating " + tCase.getObjectName());
+ System.out.println("Message " + e.getMessage());
+ e.printStackTrace();
+ tEnv = null;
+ }
+ catch (java.lang.UnsatisfiedLinkError e)
+ {
+ System.out.println("Exception while creating " + tCase.getObjectName());
+ System.out.println("Message " + e.getMessage());
+ tEnv = null;
+ }
+ catch (java.lang.NoClassDefFoundError e)
+ {
+ System.out.println("Exception while creating " + tCase.getObjectName());
+ System.out.println("Message " + e.getMessage());
+ tEnv = null;
+ }
+
+ if (tEnv == null)
+ {
+ Summarizer.summarizeDown(entry, "Couldn't create " + tCase.getObjectName());
+
+ LogWriter sumObj = OutProducerFactory.createOutProducer(m_aParams);
+ entry.UserDefinedParams = m_aParams;
+ sumObj.initialize(entry, logging);
+ sumObj.summary(entry);
+ }
+ return tEnv;
+ }
+ // -------------------------------------------------------------------------
+ private TestCase getTestCase(DescEntry _aEntry)
+ {
+ TestCase tCase = null;
+
+ try
+ {
+ tCase = (TestCase) m_aDynamicClassLoader.getInstance("mod._" + _aEntry.entryName);
+ }
+ catch (java.lang.IllegalArgumentException ie)
+ {
+ _aEntry.ErrorMsg = ie.getMessage();
+ _aEntry.hasErrorMsg = true;
+ }
+ catch (java.lang.NoClassDefFoundError ie)
+ {
+ _aEntry.ErrorMsg = ie.getMessage();
+ _aEntry.hasErrorMsg = true;
+ }
+
+ if (tCase == null)
+ {
+ Summarizer.summarizeDown(_aEntry, _aEntry.ErrorMsg);
+
+ LogWriter sumObj = OutProducerFactory.createOutProducer(m_aParams);
+ _aEntry.UserDefinedParams = m_aParams;
+ sumObj.initialize(_aEntry, logging);
+ sumObj.summary(_aEntry);
+ }
+ return tCase;
+}
+
+ private void setState(DescEntry aSubEntry, lib.TestResult res)
+ {
+ if (res != null)
+ {
+ for (int k = 0; k < aSubEntry.SubEntryCount; k++)
+ {
+ DescEntry aSubSubEntry = aSubEntry.SubEntries[k];
+ if (res.hasMethod( aSubSubEntry.entryName))
+ {
+ aSubSubEntry.State = res.getStatusFor(aSubSubEntry.entryName).toString();
+ }
+ }
+ }
+ }
+
+ private TestEnvironment getEnv(DescEntry entry, TestParameters param)
+ {
+// if (m_aDynamicClassLoader == null)
+// m_aDynamicClassLoader = new DynamicClassLoader();
+// String officeProviderName = (String) m_aParams.get("OfficeProvider");
+// AppProvider office = (AppProvider) m_aDynamicClassLoader.getInstance(officeProviderName);
+//
+// if (office == null) {
+// System.out.println("ERROR: Wrong parameter 'OfficeProvider', " +
+// " it cannot be instantiated.");
+// System.exit(-1);
+// }
+//
+// XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager(
+// m_aParams);
+//
+// if (msf == null) {
+// return null;
+// }
+//
+// m_aParams.put("ServiceFactory", msf);
+
+ // AppProvider office = startOffice(m_aParams);
+
+ TestCase tCase = null;
+
+ try
+ {
+ tCase = (TestCase) m_aDynamicClassLoader.getInstance("mod._" + entry.entryName);
+ }
+ catch (java.lang.IllegalArgumentException ie)
+ {
+ entry.ErrorMsg = ie.getMessage();
+ entry.hasErrorMsg = true;
+ }
+ catch (java.lang.NoClassDefFoundError ie)
+ {
+ entry.ErrorMsg = ie.getMessage();
+ entry.hasErrorMsg = true;
+ }
+
+ System.out.println("Creating: " + entry.entryName);
+
+ entry.UserDefinedParams = param;
+
+ LogWriter log = (LogWriter) m_aDynamicClassLoader.getInstance((String) param.get("LogWriter"));
+ log.initialize(entry, logging);
+ tCase.setLogWriter((PrintWriter) log);
+
+ try
+ {
+ tCase.initializeTestCase(param);
+ return tCase.getTestEnvironment(param);
+ }
+ catch (com.sun.star.lang.DisposedException de)
+ {
+ System.out.println("Office disposed");
+ closeExistingOffice();
+ throw de;
+ }
+ catch (lib.StatusException e)
+ {
+ System.out.println(e.getMessage());
+
+ closeExistingOffice();
+
+ entry.ErrorMsg = e.getMessage();
+ entry.hasErrorMsg = true;
+ throw e;
+ }
+ }
+
+ private void closeExistingOffice()
+ {
+ helper.ProcessHandler ph = (helper.ProcessHandler) m_aParams.get("AppProvider");
+
+ if (ph != null)
+ {
+ m_aOffice.closeExistingOffice(m_aParams, true);
+ util.utils.shortWait(5000);
+ }
+
+ }
+
+// private void shortWait(int millis)
+// {
+// try
+// {
+// Thread.sleep(millis);
+// }
+// catch (java.lang.InterruptedException ie)
+// {
+// }
+// }
+
+ private Vector getExclusionList(String url, boolean debug)
+ {
+ Vector entryList = new Vector();
+ String line = "#";
+ BufferedReader exclusion = null;
+
+ try
+ {
+ exclusion = new BufferedReader(new FileReader(url));
+ }
+ catch (java.io.FileNotFoundException fnfe)
+ {
+ if (debug)
+ {
+ System.out.println("Couldn't find file " + url);
+ }
+
+ return entryList;
+ }
+
+ while (line != null)
+ {
+ try
+ {
+ if (!line.startsWith("#") && (line.length() > 1))
+ {
+ entryList.add(line.trim());
+ }
+
+ line = exclusion.readLine();
+ }
+ catch (java.io.IOException ioe)
+ {
+ if (debug)
+ {
+ System.out.println("Exception while reading exclusion list");
+ }
+
+ return entryList;
+ }
+ }
+
+ try
+ {
+ exclusion.close();
+ }
+ catch (java.io.IOException ioe)
+ {
+ if (debug)
+ {
+ System.out.println("Couldn't close file " + url);
+ }
+
+ return entryList;
+ }
+
+ return entryList;
+ }
+
+ private TestResult executeInterfaceTest(
+ DescEntry entry, TestEnvironment tEnv, TestParameters param)
+ throws IllegalArgumentException, java.lang.NoClassDefFoundError
+ {
+ MultiMethodTest ifc = (MultiMethodTest) m_aDynamicClassLoader.getInstance(entry.entryName);
+ return ifc.run(entry, tEnv, param);
+ }
+
+ private AppProvider startOffice(lib.TestParameters param)
+ {
+
+ if (m_aDynamicClassLoader == null)
+ {
+ m_aDynamicClassLoader = new DynamicClassLoader();
+ }
+
+ String officeProviderName = (String) param.get("OfficeProvider");
+ AppProvider office = (AppProvider) m_aDynamicClassLoader.getInstance(officeProviderName);
+
+ if (office == null)
+ {
+ System.out.println("ERROR: Wrong parameter 'OfficeProvider', " + " it cannot be instantiated.");
+ System.exit(-1);
+ }
+
+ XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager(param);
+
+ if (msf != null)
+ {
+ param.put("ServiceFactory", msf);
+ }
+
+ return office;
+ }
+}
diff --git a/qadevOOo/runner/base/java_fat_service.java b/qadevOOo/runner/base/java_fat_service.java
new file mode 100644
index 000000000000..0c8fd17e43ec
--- /dev/null
+++ b/qadevOOo/runner/base/java_fat_service.java
@@ -0,0 +1,267 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package base;
+
+
+import java.io.PrintWriter;
+
+import lib.TestParameters;
+import lib.TestCase;
+import lib.MultiMethodTest;
+import lib.TestEnvironment;
+import util.DynamicClassLoader;
+
+import com.sun.star.lang.XMultiServiceFactory;
+
+import share.DescEntry;
+import share.DescGetter;
+import helper.APIDescGetter;
+
+import share.LogWriter;
+import stats.Summarizer;
+
+/**
+ * this class handles tests written in java and running on a fat Office
+ * with the runner as a service.
+ */
+public class java_fat_service implements TestBase {
+
+ static protected boolean debug = false;
+ protected LogWriter log = null;
+
+ public boolean executeTest(lib.TestParameters param) {
+ DynamicClassLoader dcl = new DynamicClassLoader();
+ log = (LogWriter)dcl.getInstance((String)param.get("LogWriter"));
+ debug = ((Boolean) param.get("DebugIsActive")).booleanValue();
+
+ DescGetter dg = new APIDescGetter();
+ String job = (String) param.get("TestJob");
+ boolean retValue = true;
+
+ //get Job-Descriptions
+ log.println("Getting Descriptions for Job: "+job);
+ DescEntry[] entries = dg.getDescriptionFor(job,
+ (String) param.get("DescriptionPath"),debug);
+
+ if (entries == null ) {
+ log.println("Couldn't get Description for Job");
+ return false;
+ }
+
+ String conStr = (String) param.get("ConnectionString");
+
+ XMultiServiceFactory msf = (XMultiServiceFactory)param.getMSF();
+
+ for (int l=0;l<entries.length;l++) {
+
+ if (entries[l] == null ) {
+ continue;
+ }
+
+ if (entries[l].hasErrorMsg) {
+ log.println(entries[l].ErrorMsg);
+ continue;
+ }
+
+ DescEntry entry = entries[l];
+
+ //get some helper classes
+ Summarizer sumIt = new Summarizer();
+
+ TestCase tCase = null;
+ try {
+ tCase = (TestCase)
+ dcl.getInstance("mod._"+entry.entryName);
+ } catch (java.lang.IllegalArgumentException ie) {
+ entry.ErrorMsg=ie.getMessage();
+ entry.hasErrorMsg=true;
+ }
+
+ if (tCase == null) {
+ sumIt.summarizeDown(entry,entry.ErrorMsg);
+ LogWriter sumObj = (LogWriter)dcl.getInstance(
+ (String)param.get("OutProducer"));
+ sumObj.initialize(entry,true);
+ entry.UserDefinedParams = param;
+ sumObj.summary(entry);
+ continue;
+ }
+
+ log.println("Creating: "+tCase.getObjectName());
+
+ log.initialize(entry,true);
+ entry.UserDefinedParams = param;
+ TestEnvironment tEnv = null;
+ try {
+ tCase.setLogWriter((PrintWriter) log);
+ tCase.initializeTestCase(param);
+ tEnv = tCase.getTestEnvironment(param);
+ } catch (Exception e) {
+ log.println("Exception while creating "+tCase.getObjectName());
+ log.println("Exception: " + e);
+ log.println("Message "+e.getMessage());
+ tEnv = null;
+ }
+ if (tEnv == null) {
+ sumIt.summarizeDown(entry,"Couldn't create "+tCase.getObjectName());
+ LogWriter sumObj = (LogWriter)dcl.getInstance(
+ (String)param.get("OutProducer"));
+ sumObj.initialize(entry,true);
+ entry.UserDefinedParams = param;
+ sumObj.summary(entry);
+ continue;
+ }
+ log.println("Created "+tCase.getObjectName()+"\n");
+
+ for (int j=0;j<entry.SubEntryCount;j++) {
+ if (!entry.SubEntries[j].isToTest) {
+ Summarizer.summarizeDown(entry.SubEntries[j],"not part of the job");
+ continue;
+ }
+
+ log.println("running: "+entry.SubEntries[j].entryName);
+
+ LogWriter ifclog = (LogWriter)dcl.getInstance(
+ (String)param.get("LogWriter"));
+
+ ifclog.initialize(entry.SubEntries[j],true);
+ entry.SubEntries[j].UserDefinedParams = param;
+ entry.SubEntries[j].Logger = ifclog;
+
+ if (tEnv == null || tEnv.isDisposed()) {
+ tEnv = getEnv(entry,param);
+ }
+
+ MultiMethodTest ifc = null;
+ lib.TestResult res = null;
+ try {
+ ifc = (MultiMethodTest) dcl.getInstance(
+ entry.SubEntries[j].entryName);
+ res = ifc.run(entry.SubEntries[j],tEnv,param);
+ } catch (IllegalArgumentException iae) {
+ log.println("Couldn't load class "+entry.SubEntries[j].entryName);
+ log.println("**** "+iae.getMessage()+" ****");
+ Summarizer.summarizeDown(entry.SubEntries[j],iae.getMessage());
+ } catch (java.lang.RuntimeException e) {
+ tEnv = getEnv(entry,param);
+ ifc = (MultiMethodTest) dcl.getInstance(
+ entry.SubEntries[j].entryName);
+ if ((tEnv != null) && (ifc != null)) {
+ res = ifc.run(entry.SubEntries[j],tEnv,param);
+ }
+ else
+ {
+ res = null;
+ }
+ }
+ if (res != null) {
+ for (int k=0;k<entry.SubEntries[j].SubEntryCount;k++) {
+ if (res.hasMethod(entry.SubEntries[j].SubEntries[k].entryName)) {
+ entry.SubEntries[j].SubEntries[k].State=
+ res.getStatusFor(entry.SubEntries[j].SubEntries[k].entryName).toString();
+ }
+ }
+ }
+ sumIt.summarizeUp(entry.SubEntries[j]);
+
+ LogWriter sumIfc = (LogWriter)dcl.getInstance(
+ (String)param.get("OutProducer"));
+
+ sumIfc.initialize(entry.SubEntries[j],true);
+ entry.SubEntries[j].UserDefinedParams = param;
+ sumIfc.summary(entry.SubEntries[j]);
+ }
+ try {
+ tCase.cleanupTestCase(param);
+ } catch (Exception e) {
+ e.printStackTrace((PrintWriter)log);
+ }
+ sumIt.summarizeUp(entry);
+ LogWriter sumObj = (LogWriter)dcl.getInstance(
+ (String)param.get("OutProducer"));
+ sumObj.initialize(entry,true);
+ sumObj.summary(entry);
+ }
+ if (entries.length > 1) {
+ log.println("");
+ int counter = 0;
+ log.println("Failures that appeared during scenario execution:");
+ for (int i=0;i<entries.length;i++) {
+ if (! entries[i].State.endsWith("OK")) {
+ log.println("\t "+entries[i].longName);
+ counter++;
+ }
+ }
+ log.println(counter +" of "+entries.length + " tests failed" );
+ }
+
+ return retValue;
+ }
+
+ protected TestEnvironment getEnv(DescEntry entry, TestParameters param) {
+ DynamicClassLoader dcl = new DynamicClassLoader();
+ log = (LogWriter)dcl.getInstance((String)param.get("LogWriter"));
+ XMultiServiceFactory msf = (XMultiServiceFactory)param.getMSF();
+
+ TestCase tCase = null;
+
+ try
+ {
+ tCase = (TestCase) dcl.getInstance("mod._"+entry.entryName);
+ }
+ catch (java.lang.IllegalArgumentException ie)
+ {
+ entry.ErrorMsg=ie.getMessage();
+ entry.hasErrorMsg=true;
+ }
+
+ log.println("Creating: "+tCase.getObjectName());
+ // LogWriter log = (LogWriter)dcl.getInstance( (String)param.get("LogWriter"));
+ log.initialize(entry,true);
+ entry.UserDefinedParams = param;
+ tCase.setLogWriter((PrintWriter) log);
+ TestEnvironment tEnv = null;
+ try
+ {
+ tCase.initializeTestCase(param);
+ tEnv = tCase.getTestEnvironment(param);
+ }
+ catch (com.sun.star.lang.DisposedException de)
+ {
+ log.println("Office disposed");
+ }
+ return tEnv;
+ }
+
+// protected void shortWait(int millis) {
+// try {
+// Thread.sleep(millis);
+// } catch (java.lang.InterruptedException ie) {}
+// }
+
+}
diff --git a/qadevOOo/runner/base/makefile.mk b/qadevOOo/runner/base/makefile.mk
new file mode 100644
index 000000000000..17fb497c0c8b
--- /dev/null
+++ b/qadevOOo/runner/base/makefile.mk
@@ -0,0 +1,52 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME = OOoRunner
+PACKAGE = base
+TARGET = runner_base
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+JARFILES = ridl.jar jurt.jar unoil.jar
+JAVAFILES = TestBase.java \
+ java_complex.java \
+ java_fat.java \
+ java_fat_service.java \
+ java_cmp.java \
+ basic_fat.java
+
+JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk