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/pageviewpo...@nr=1]/page/extension-attachments/child::*)"/>
     <eval expected="O1SAMP1 " 
xpath="/areaTree/pageSequence/pageviewpo...@nr=1]/page/extension-attachments/child::*[1]/@name"/>
     <eval expected="S1ISLOGO" 
xpath="/areaTree/pageSequence/pageviewpo...@nr=1]/page/extension-attachments/child::*[2]/@name"/>
@@ -52,5 +55,29 @@
     <eval expected="My NOP" 
xpath="/areaTree/pageSequence/pageviewpo...@nr=1]/page/extension-attachments/child::*[4]/@name"/>
     
     <eval expected="4" 
xpath="count(/areaTree/pageSequence/pageviewpo...@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-eleme...@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:pa...@name = 
'1']/if:page-header/child::*)"/>
+    <eval expected="O1SAMP1 " xpath="//if:pa...@name = 
'1']/if:page-header/afp:include-page-overlay[1]/@name"/>
+    <eval expected="S1ISLOGO" xpath="//if:pa...@name = 
'1']/if:page-header/afp:include-page-segment[1]/@name"/>
+    <eval expected="The TLE Value" xpath="//if:pa...@name = 
'1']/if:page-header/afp:tag-logical-eleme...@name = 'The TLE Name']/@value"/>
+    <eval expected="My NOP" xpath="//if:pa...@name = 
'1']/if:page-header/afp:no-operation[1]/@name"/>
+    <eval expected="insert up to 32k of character data here!" 
xpath="//if:pa...@name = '1']/if:page-header/afp:no-operation[1]"/>
+    
+    <eval expected="4" xpath="count(//if:pa...@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-eleme...@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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to