You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by li...@apache.org on 2012/09/07 11:47:36 UTC
svn commit: r1381966 - in /incubator/ooo/trunk/test/testuno: ./
source/org/openoffice/test/uno/UnoApp.java source/testcase/uno/pvt/
source/testcase/uno/pvt/Conversion.java
Author: liuzhe
Date: Fri Sep 7 09:47:36 2012
New Revision: 1381966
URL: http://svn.apache.org/viewvc?rev=1381966&view=rev
Log:
"One test class for performance test"
Added:
incubator/ooo/trunk/test/testuno/source/testcase/uno/pvt/
incubator/ooo/trunk/test/testuno/source/testcase/uno/pvt/Conversion.java
Modified:
incubator/ooo/trunk/test/testuno/ (props changed)
incubator/ooo/trunk/test/testuno/source/org/openoffice/test/uno/UnoApp.java
Propchange: incubator/ooo/trunk/test/testuno/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Sep 7 09:47:36 2012
@@ -1 +1,2 @@
.classpath
+bin
Modified: incubator/ooo/trunk/test/testuno/source/org/openoffice/test/uno/UnoApp.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testuno/source/org/openoffice/test/uno/UnoApp.java?rev=1381966&r1=1381965&r2=1381966&view=diff
==============================================================================
--- incubator/ooo/trunk/test/testuno/source/org/openoffice/test/uno/UnoApp.java (original)
+++ incubator/ooo/trunk/test/testuno/source/org/openoffice/test/uno/UnoApp.java Fri Sep 7 09:47:36 2012
@@ -78,6 +78,15 @@ public class UnoApp {
* Start OpenOffice and connect to it
*/
public void start() {
+ if (componentContext != null) {
+ try {
+ componentContext.getServiceManager();
+ return;
+ } catch (Exception e) {
+
+ }
+ }
+
if (openOffice != null) {
openOffice.start();
unoUrl = openOffice.getUnoUrl();
@@ -154,15 +163,24 @@ public class UnoApp {
return desktop;
}
- public XComponent loadDocument(String file) throws Exception {
+// public XComponent loadDocument(String file) throws Exception {
+// XComponentLoader componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop);
+// return componentLoader.loadComponentFromURL(FileUtil.getUrl(file), "_blank", 0, new PropertyValue[0]);
+// }
+
+ public XComponent loadDocument(String file, PropertyValue... propertyValue) throws Exception {
XComponentLoader componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop);
- return componentLoader.loadComponentFromURL(FileUtil.getUrl(file), "_blank", 0, new PropertyValue[0]);
+ return componentLoader.loadComponentFromURL(FileUtil.getUrl(file), "_blank", 0, propertyValue);
}
+// public XComponent loadDocumentFromURL(String url) throws Exception {
+// XComponentLoader componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop);
+// return componentLoader.loadComponentFromURL(url, "_blank", 0, new PropertyValue[0]);
+// }
- public XComponent loadDocumentFromURL(String url) throws Exception {
+ public XComponent loadDocumentFromURL(String url, PropertyValue... propertyValue) throws Exception {
XComponentLoader componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop);
- return componentLoader.loadComponentFromURL(url, "_blank", 0, new PropertyValue[0]);
+ return componentLoader.loadComponentFromURL(url, "_blank", 0, propertyValue);
}
public XComponent newDocument(String type) throws Exception {
@@ -170,10 +188,21 @@ public class UnoApp {
return componentLoader.loadComponentFromURL("private:factory/" + type, "_blank", 0, new PropertyValue[0]);
}
- public void saveDocument(XComponent doc, String toPath) throws Exception {
+// public void saveDocument(XComponent doc, String toPath) throws Exception {
+// XStorable m_xstorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, doc);
+// String fileUrl = FileUtil.getUrl(new File(toPath));
+// m_xstorable.storeAsURL(fileUrl, new PropertyValue[0]);
+// }
+
+ public void saveDocument(XComponent doc, String toPath, PropertyValue... propertyValue) throws Exception {
XStorable m_xstorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, doc);
String fileUrl = FileUtil.getUrl(new File(toPath));
- m_xstorable.storeAsURL(fileUrl, new PropertyValue[0]);
+ m_xstorable.storeToURL(fileUrl, propertyValue);
+ }
+
+ public void saveDocumentToURL(XComponent doc, String toURL, PropertyValue... propertyValue) throws Exception {
+ XStorable m_xstorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, doc);
+ m_xstorable.storeToURL(toURL, propertyValue);
}
public void closeDocument(XComponent doc) {
Added: incubator/ooo/trunk/test/testuno/source/testcase/uno/pvt/Conversion.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testuno/source/testcase/uno/pvt/Conversion.java?rev=1381966&view=auto
==============================================================================
--- incubator/ooo/trunk/test/testuno/source/testcase/uno/pvt/Conversion.java (added)
+++ incubator/ooo/trunk/test/testuno/source/testcase/uno/pvt/Conversion.java Fri Sep 7 09:47:36 2012
@@ -0,0 +1,184 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+package testcase.uno.pvt;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+import org.openoffice.test.OpenOffice;
+import org.openoffice.test.common.FileUtil;
+import org.openoffice.test.common.Logger;
+import org.openoffice.test.common.Testspace;
+import org.openoffice.test.uno.UnoApp;
+
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.document.MacroExecMode;
+import com.sun.star.lang.XComponent;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.util.XCloseable;
+
+
+@RunWith(Parameterized.class)
+public class Conversion {
+ @Rule
+ public Logger log = Logger.getLogger(this);
+
+ public static String repos = System.getProperty("user.home") + "/pvt_conversion_data";
+
+ public static String[] params = {
+ ".*\\.((doc)|(dot)|(odt)|(ott))$", "writer_pdf_Export", "pdf",
+ ".*\\.((xls)|(xlt)|(ods)|(ots))$", "calc_pdf_Export", "pdf",
+ ".*\\.((ppt)|(ppt)|(odp)|(otp))$", "impress_pdf_Export", "pdf",
+ ".*\\.((doc)|(dot))$", "writer8", "odt",
+ ".*\\.((xls)|(xlt))$", "calc8", "ods",
+ ".*\\.((ppt)|(ppt))$", "impress8", "odp",
+ ".*\\.((odt)|(ott))$", "MS Word 97", "doc",
+ ".*\\.((ods)|(ots))$", "MS Excel 97", "xls",
+ ".*\\.((odp)|(otp))$", "MS PowerPoint 97", "ppt",
+ };
+
+ private static UnoApp app = new UnoApp();
+ private static PrintStream result;
+ @Parameters
+ public static Collection<Object[]> data() {
+ File dir = new File(repos);
+ ArrayList<Object[]> list = new ArrayList<Object[]>();
+ collect(dir, list);
+ return list;
+ }
+
+ /**
+ * @param dir
+ * @param list
+ */
+ public static void collect(File dir, ArrayList<Object[]> list) {
+ File[] files = dir.listFiles();
+ if (files == null)
+ return;
+
+ for (File file : files) {
+ if (file.isDirectory()) {
+ collect(file, list);
+ } else {
+ String fileName = file.getName().toLowerCase();
+ for (int i = 0; i < params.length;) {
+ String pattern = params[i++];
+ String targetFilterName = params[i++];
+ String targetExtName = params[i++];
+ if (pattern != null && fileName.matches(pattern)) {
+ Object[] data = {file, Testspace.getFile("classtemp/" + file.getName()+ "." + targetExtName), targetFilterName};
+ list.add(data);
+ }
+ }
+ }
+ }
+ }
+
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ //Disable automation
+ OpenOffice.getDefault().setAutomationPort(-1);
+ OpenOffice.getDefault().addArgs("-invisible", "-conversionmode", "-headless", "-hidemenu");
+
+ File resultFile = Testspace.getFile("output/conversion.csv");
+ resultFile.getParentFile().mkdirs();
+ result = new PrintStream(new FileOutputStream(resultFile));
+ result.println("File,Scenario,After Close,After Save,After Load");
+ }
+
+ @AfterClass
+ public static void afterClass() throws Exception {
+ result.close();
+ }
+
+ @Before
+ public void before() throws Exception {
+ app.start();
+ }
+
+ @After
+ public void after() throws Exception{
+ String scenario = FileUtil.getFileExtName(sourceFile.getName()).toLowerCase() + " to " + FileUtil.getFileExtName(targetFile.getName()).toLowerCase();
+ result.println(sourceFile.getName() + "," + scenario + "," + closeTime + "," + saveTime + "," + loadTime);
+ if (closeTime < 0) {
+ log.warning("Exception occurs during " + sourceFile.getName() + "->" + targetFile.getName());
+ app.close();
+ }
+ }
+
+ private File sourceFile = null;
+ private File targetFile = null;
+ private String sourceFileUrl = null;
+ private String targetFileUrl = null;
+ private String targetFilterName = null;
+ private long loadTime = -1;
+ private long saveTime = -1;
+ private long closeTime = -1;
+
+ public Conversion(File sourceFile, File targetFile, String targetFilterName) {
+ super();
+ this.sourceFile = sourceFile;
+ this.targetFile = targetFile;
+ this.targetFilterName = targetFilterName;
+ sourceFileUrl = FileUtil.getUrl(this.sourceFile);
+ targetFileUrl = FileUtil.getUrl(this.targetFile);
+ }
+
+ private PropertyValue propertyValue(String name, Object value) {
+ PropertyValue p = new PropertyValue();
+ p.Name = name;
+ p.Value= value;
+ return p;
+ }
+
+ @Test
+ public void testConversion() throws Exception {
+ // convert
+ long start = System.currentTimeMillis();
+ XComponent doc = app.loadDocumentFromURL(sourceFileUrl,
+ propertyValue("Hidden", true),
+ propertyValue("ReadOnly", true),
+ propertyValue("AsyncMode", false),
+ propertyValue("MacroExecutionMode", MacroExecMode.NEVER_EXECUTE));
+
+ loadTime = System.currentTimeMillis() - start;
+ app.saveDocumentToURL(doc, targetFileUrl,
+ propertyValue( "FilterName", targetFilterName),
+ propertyValue( "Overwrite", true));
+ saveTime = System.currentTimeMillis() - start;
+ XCloseable xCloseable = (XCloseable) UnoRuntime.queryInterface(XCloseable.class, doc);
+ xCloseable.close(true);
+ closeTime = System.currentTimeMillis() - start;
+ }
+}