You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2009/04/14 13:35:15 UTC
svn commit: r764744 [4/4] - in /xmlgraphics/fop/branches/Temp_Accessibility:
./ examples/embedding/java/embedding/intermediate/ src/documentation/
src/documentation/content/xdocs/trunk/
src/documentation/intermediate-format-ng/ src/java/META-INF/servic...
Modified: xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/intermediate/IFTester.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/intermediate/IFTester.java?rev=764744&r1=764743&r2=764744&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/intermediate/IFTester.java (original)
+++ xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/intermediate/IFTester.java Tue Apr 14 11:35:08 2009
@@ -48,12 +48,14 @@
import org.apache.fop.area.AreaTreeModel;
import org.apache.fop.area.AreaTreeParser;
import org.apache.fop.area.RenderPagesModel;
+import org.apache.fop.events.model.EventSeverity;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.layoutengine.EvalCheck;
import org.apache.fop.layoutengine.TrueCheck;
import org.apache.fop.render.intermediate.IFContext;
import org.apache.fop.render.intermediate.IFRenderer;
import org.apache.fop.render.intermediate.IFSerializer;
+import org.apache.fop.util.ConsoleEventListenerForTests;
import org.apache.fop.util.DelegatingContentHandler;
/**
@@ -106,9 +108,12 @@
}
}
- private Document createIF(Document areaTreeXML) throws TransformerException {
+ private Document createIF(File testFile, Document areaTreeXML) throws TransformerException {
try {
FOUserAgent ua = fopFactory.newFOUserAgent();
+ ua.setBaseURL(testFile.getParentFile().toURI().toURL().toExternalForm());
+ ua.getEventBroadcaster().addEventListener(
+ new ConsoleEventListenerForTests(testFile.getName(), EventSeverity.WARN));
IFRenderer ifRenderer = new IFRenderer();
ifRenderer.setUserAgent(ua);
@@ -160,7 +165,7 @@
*/
public void doIFChecks(File testFile, Element checksRoot, Document areaTreeXML)
throws TransformerException {
- Document ifDocument = createIF(areaTreeXML);
+ Document ifDocument = createIF(testFile, areaTreeXML);
if (this.backupDir != null) {
Transformer transformer = tfactory.newTransformer();
Source src = new DOMSource(ifDocument);
Modified: xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOPTestbed.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOPTestbed.java?rev=764744&r1=764743&r2=764744&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOPTestbed.java (original)
+++ xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOPTestbed.java Tue Apr 14 11:35:08 2009
@@ -20,9 +20,9 @@
package org.apache.fop.threading;
import java.io.File;
-import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -41,6 +41,8 @@
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.output.CountingOutputStream;
+import org.apache.commons.io.output.NullOutputStream;
/**
* Testbed for multi-threading tests. The class can run a configurable set of task a number of
@@ -55,13 +57,17 @@
private File outputDir;
private Configuration fopCfg;
private FOProcessor foprocessor;
+ private boolean writeToDevNull;
private int counter = 0;
+ private List results = Collections.synchronizedList(new java.util.LinkedList());
+
/** {@inheritDoc} */
public void configure(Configuration configuration) throws ConfigurationException {
this.threads = configuration.getChild("threads").getValueAsInteger(10);
this.outputDir = new File(configuration.getChild("output-dir").getValue());
+ this.writeToDevNull = configuration.getChild("devnull").getValueAsBoolean(false);
Configuration tasks = configuration.getChild("tasks");
this.repeat = tasks.getAttributeAsInteger("repeat", 1);
Configuration[] entries = tasks.getChildren("task");
@@ -85,11 +91,12 @@
this.counter = 0;
//Initialize threads
+ ThreadGroup workerGroup = new ThreadGroup("FOP workers");
List threadList = new java.util.LinkedList();
for (int ti = 0; ti < this.threads; ti++) {
TaskRunner runner = new TaskRunner();
ContainerUtil.enableLogging(runner, getLogger());
- Thread thread = new Thread(runner);
+ Thread thread = new Thread(workerGroup, runner, "Worker- " + ti);
threadList.add(thread);
}
@@ -112,7 +119,38 @@
//ignore
}
}
- getLogger().info("Stress test duration: " + (System.currentTimeMillis() - start) + "ms");
+ long duration = System.currentTimeMillis() - start;
+
+ report(duration);
+ }
+
+ private void report(long duration) {
+ int count = this.results.size();
+ int failures = 0;
+ long bytesWritten = 0;
+ System.out.println("Report on " + count + " tasks:");
+ Iterator iter = this.results.iterator();
+ while (iter.hasNext()) {
+ Result res = (Result)iter.next();
+ if (res.failure != null) {
+ System.out.println("FAIL: " + (res.end - res.start) + " " + res.task);
+ System.out.println(" -> " + res.failure.getMessage());
+ failures++;
+ } else {
+ System.out.println("good: " + (res.end - res.start) + " " + res.filesize
+ + " " + res.task);
+ bytesWritten += res.filesize;
+ }
+ }
+ System.out.println("Stress test duration: " + duration + "ms");
+ if (failures > 0) {
+ System.out.println(failures + " failures of " + count + " documents!!!");
+ } else {
+ float mb = 1024f * 1024f;
+ System.out.println("Bytes written: " + (bytesWritten / mb) + " MB, "
+ + (bytesWritten * 1000 / duration) + " bytes / sec");
+ System.out.println("NO failures with " + count + " documents.");
+ }
}
private class TaskRunner extends AbstractLogEnabled implements Runnable {
@@ -222,29 +260,61 @@
public void execute() throws Exception {
getLogger().info("Processing: " + def);
- DecimalFormat df = new DecimalFormat("00000");
- File outfile = new File(outputDir, df.format(num) + fop.getTargetFileExtension());
- OutputStream out = new java.io.FileOutputStream(outfile);
+ long start = System.currentTimeMillis();
try {
- InputStream in;
- Templates templates;
-
- if (def.getFO() != null) {
- in = new java.io.FileInputStream(new File(def.getFO()));
- templates = null;
+ DecimalFormat df = new DecimalFormat("00000");
+ File outfile = new File(outputDir, df.format(num) + fop.getTargetFileExtension());
+ OutputStream out;
+ if (writeToDevNull) {
+ out = new NullOutputStream();
} else {
- in = new java.io.FileInputStream(new File(def.getXML()));
- templates = def.getTemplates();
+ out = new java.io.FileOutputStream(outfile);
+ out = new java.io.BufferedOutputStream(out);
}
+ CountingOutputStream cout = new CountingOutputStream(out);
try {
- fop.process(in, templates, out);
+ Source src;
+ Templates templates;
+
+ if (def.getFO() != null) {
+ src = new StreamSource(new File(def.getFO()));
+ templates = null;
+ } else {
+ src = new StreamSource(new File(def.getXML()));
+ templates = def.getTemplates();
+ }
+ fop.process(src, templates, cout);
} finally {
- IOUtils.closeQuietly(in);
+ IOUtils.closeQuietly(cout);
}
- } finally {
- IOUtils.closeQuietly(out);
+ results.add(new Result(def, start, System.currentTimeMillis(),
+ cout.getByteCount()));
+ } catch (Exception e) {
+ results.add(new Result(def, start, System.currentTimeMillis(), e));
+ throw e;
}
}
}
+ private static class Result {
+
+ private TaskDef task;
+ private long start;
+ private long end;
+ private long filesize;
+ private Throwable failure;
+
+ public Result(TaskDef task, long start, long end, long filesize) {
+ this(task, start, end, null);
+ this.filesize = filesize;
+ }
+
+ public Result(TaskDef task, long start, long end, Throwable failure) {
+ this.task = task;
+ this.start = start;
+ this.end = end;
+ this.failure = failure;
+ }
+ }
+
}
\ No newline at end of file
Modified: xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessor.java?rev=764744&r1=764743&r2=764744&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessor.java (original)
+++ xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessor.java Tue Apr 14 11:35:08 2009
@@ -19,9 +19,9 @@
package org.apache.fop.threading;
-import java.io.InputStream;
import java.io.OutputStream;
+import javax.xml.transform.Source;
import javax.xml.transform.Templates;
/**
@@ -31,12 +31,12 @@
/**
* Process a file.
- * @param in the InputStream for the FO or XML file
+ * @param src the Source for the FO or XML file
* @param templates a JAXP Templates object for an XSLT transformation or null
* @param out the OutputStream for the target file
* @throws Exception if an error occurs
*/
- void process(InputStream in, Templates templates, OutputStream out)
+ void process(Source src, Templates templates, OutputStream out)
throws Exception;
/**
Modified: xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessorImpl.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessorImpl.java?rev=764744&r1=764743&r2=764744&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessorImpl.java (original)
+++ xmlgraphics/fop/branches/Temp_Accessibility/test/java/org/apache/fop/threading/FOProcessorImpl.java Tue Apr 14 11:35:08 2009
@@ -19,8 +19,9 @@
package org.apache.fop.threading;
-import java.io.InputStream;
import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
@@ -29,19 +30,23 @@
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamSource;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.commons.io.FilenameUtils;
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
+import org.apache.fop.events.Event;
+import org.apache.fop.events.EventFormatter;
+import org.apache.fop.events.EventListener;
+import org.apache.fop.events.model.EventSeverity;
/**
* Default implementation of the FOProcessor interface using FOP.
@@ -71,9 +76,17 @@
}
/** {@inheritDoc} */
- public void process(InputStream in, Templates templates, OutputStream out)
+ public void process(Source src, Templates templates, OutputStream out)
throws org.apache.fop.apps.FOPException, java.io.IOException {
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
+ foUserAgent.setBaseURL(src.getSystemId());
+ try {
+ URL url = new URL(src.getSystemId());
+ String filename = FilenameUtils.getName(url.getPath());
+ foUserAgent.getEventBroadcaster().addEventListener(new AvalonAdapter(filename));
+ } catch (MalformedURLException mfue) {
+ throw new RuntimeException(mfue);
+ }
Fop fop = fopFactory.newFop(this.mime, foUserAgent, out);
try {
@@ -83,7 +96,6 @@
} else {
transformer = templates.newTransformer();
}
- Source src = new StreamSource(in);
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res);
} catch (TransformerException e) {
@@ -96,4 +108,29 @@
return this.fileExtension;
}
+ private class AvalonAdapter implements EventListener {
+
+ private String filename;
+
+ public AvalonAdapter(String filename) {
+ this.filename = filename;
+ }
+
+ public void processEvent(Event event) {
+ String msg = EventFormatter.format(event);
+ EventSeverity severity = event.getSeverity();
+ if (severity == EventSeverity.INFO) {
+ //getLogger().info(filename + ": " + msg);
+ } else if (severity == EventSeverity.WARN) {
+ //getLogger().warn(filename + ": " + msg);
+ } else if (severity == EventSeverity.ERROR) {
+ getLogger().error(filename + ": " + msg);
+ } else if (severity == EventSeverity.FATAL) {
+ getLogger().fatalError(filename + ": " + msg);
+ } else {
+ assert false;
+ }
+ }
+
+ }
}
\ No newline at end of file
Modified: xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/afp-extension_1.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/afp-extension_1.xml?rev=764744&r1=764743&r2=764744&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/afp-extension_1.xml (original)
+++ xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/afp-extension_1.xml Tue Apr 14 11:35:08 2009
@@ -25,7 +25,8 @@
</info>
<fo>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
- xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp">
+ xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp"
+ xmlns:fox="http://xmlgraphics.apache.org/fop/extensions">
<fo:layout-master-set>
<fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
<afp:include-page-overlay name="O1SAMP1 "/>
@@ -35,7 +36,9 @@
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
- <fo:page-sequence master-reference="normal">
+ <fo:page-sequence master-reference="normal" fox:test-ignore="this">
+ <afp:invoke-medium-map name="MYMAP"/>
+ <afp:tag-logical-element name="foo" value="bar"/>
<fo:flow flow-name="xsl-region-body">
<fo:block>Text on page <fo:page-number/>.</fo:block>
<fo:block break-before="page">Text on page <fo:page-number/>.</fo:block>
@@ -43,7 +46,7 @@
</fo:page-sequence>
</fo:root>
</fo>
- <checks>
+ <checks xmlns:afp="apache:fop:extensions:afp">
<eval expected="4" xpath="count(/areaTree/pageSequence/pageViewport[@nr=1]/page/extension-attachments/child::*)"/>
<eval expected="O1SAMP1 " xpath="/areaTree/pageSequence/pageViewport[@nr=1]/page/extension-attachments/child::*[1]/@name"/>
<eval expected="S1ISLOGO" xpath="/areaTree/pageSequence/pageViewport[@nr=1]/page/extension-attachments/child::*[2]/@name"/>
@@ -52,5 +55,29 @@
<eval expected="My NOP" xpath="/areaTree/pageSequence/pageViewport[@nr=1]/page/extension-attachments/child::*[4]/@name"/>
<eval expected="4" xpath="count(/areaTree/pageSequence/pageViewport[@nr=2]/page/extension-attachments/child::*)"/>
+
+ <eval expected="2" xpath="count(/areaTree/pageSequence/extension-attachments/child::*)"/>
+ <eval expected="MYMAP" xpath="/areaTree/pageSequence/extension-attachments/child::*[1]/@name"/>
+ <eval expected="bar" xpath="/areaTree/pageSequence/extension-attachments/afp:tag-logical-element[@name = 'foo']/@value"/>
+
+ <!-- This just tests if extension attributes make it through to the PageSequence object. -->
+ <eval expected="this" xpath="/areaTree/pageSequence/@fox:test-ignore" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"/>
</checks>
+ <if-checks xmlns:if="http://xmlgraphics.apache.org/fop/intermediate"
+ xmlns:afp="apache:fop:extensions:afp">
+ <eval expected="4" xpath="count(//if:page[@name = '1']/if:page-header/child::*)"/>
+ <eval expected="O1SAMP1 " xpath="//if:page[@name = '1']/if:page-header/afp:include-page-overlay[1]/@name"/>
+ <eval expected="S1ISLOGO" xpath="//if:page[@name = '1']/if:page-header/afp:include-page-segment[1]/@name"/>
+ <eval expected="The TLE Value" xpath="//if:page[@name = '1']/if:page-header/afp:tag-logical-element[@name = 'The TLE Name']/@value"/>
+ <eval expected="My NOP" xpath="//if:page[@name = '1']/if:page-header/afp:no-operation[1]/@name"/>
+ <eval expected="insert up to 32k of character data here!" xpath="//if:page[@name = '1']/if:page-header/afp:no-operation[1]"/>
+
+ <eval expected="4" xpath="count(//if:page[@name = '2']/if:page-header/child::*)"/>
+
+ <eval expected="MYMAP" xpath="//if:page-sequence/afp:invoke-medium-map/@name"/>
+ <eval expected="bar" xpath="//if:page-sequence/afp:tag-logical-element[@name = 'foo']/@value"/>
+
+ <!-- This just tests if extension attributes make it through to the PageSequence object. -->
+ <eval expected="this" xpath="//if:page-sequence/@fox:test-ignore" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"/>
+ </if-checks>
</testcase>
Modified: xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/leader_border_padding.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/leader_border_padding.xml?rev=764744&r1=764743&r2=764744&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/leader_border_padding.xml (original)
+++ xmlgraphics/fop/branches/Temp_Accessibility/test/layoutengine/standard-testcases/leader_border_padding.xml Tue Apr 14 11:35:08 2009
@@ -130,7 +130,9 @@
<eval expected="360000" xpath="//flow/block[4]/lineArea/@ipd"/>
<eval expected="34000" xpath="//flow/block[4]/lineArea/space/@ipd"/>
<eval expected="36000" xpath="//flow/block[4]/lineArea/space/@ipda"/>
- <eval expected="8615" xpath="//flow/block[4]/lineArea/space/@offset"/>
+ <eval expected="1000" xpath="//flow/block[4]/lineArea/space/@bpd"/>
+ <eval expected="3000" xpath="//flow/block[4]/lineArea/space/@bpda"/>
+ <eval expected="7616" xpath="//flow/block[4]/lineArea/space/@offset"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[4]/lineArea/space/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[4]/lineArea/space/@border-before"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[4]/lineArea/space/@border-end"/>
@@ -192,7 +194,9 @@
<eval expected="360000" xpath="//flow/block[9]/lineArea/@ipd"/>
<eval expected="16000" xpath="//flow/block[9]/lineArea/space/@ipd"/>
<eval expected="36000" xpath="//flow/block[9]/lineArea/space/@ipda"/>
- <eval expected="8615" xpath="//flow/block[9]/lineArea/space/@offset"/>
+ <eval expected="1000" xpath="//flow/block[9]/lineArea/space/@bpd"/>
+ <eval expected="21000" xpath="//flow/block[9]/lineArea/space/@bpda"/>
+ <eval expected="7616" xpath="//flow/block[9]/lineArea/space/@offset"/>
<eval expected="(solid,#ff0000,5000)" xpath="//flow/block[9]/lineArea/space/@border-after"/>
<eval expected="(solid,#ff0000,5000)" xpath="//flow/block[9]/lineArea/space/@border-before"/>
<eval expected="(solid,#ff0000,5000)" xpath="//flow/block[9]/lineArea/space/@border-end"/>
@@ -262,7 +266,9 @@
<eval expected="360000" xpath="//flow/block[14]/lineArea/@ipd"/>
<eval expected="24000" xpath="//flow/block[14]/lineArea/space/@ipd"/>
<eval expected="36000" xpath="//flow/block[14]/lineArea/space/@ipda"/>
- <eval expected="8615" xpath="//flow/block[14]/lineArea/space/@offset"/>
+ <eval expected="1000" xpath="//flow/block[14]/lineArea/space/@bpd"/>
+ <eval expected="9000" xpath="//flow/block[14]/lineArea/space/@bpda"/>
+ <eval expected="7616" xpath="//flow/block[14]/lineArea/space/@offset"/>
<eval expected="(solid,#ff0000,3000)" xpath="//flow/block[14]/lineArea/space/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[14]/lineArea/space/@border-before"/>
<eval expected="(solid,#ff0000,2000)" xpath="//flow/block[14]/lineArea/space/@border-end"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org