diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java b/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java index 4f0f81457..891acc583 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java @@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.net.URL; import java.util.zip.ZipInputStream; import org.apache.poi.POIDataSamples; @@ -90,6 +91,58 @@ public class HWPFTestDataSamples { } } + /** + * Open a remote sample from URL. opening is performd in two phases: + * (1) download content into a byte array + * (2) construct HWPFDocument + * + * @param sampleFileUrl the url to open + */ + public static HWPFDocument openRemoteFile( String sampleFileUrl ) + { + final long start = System.currentTimeMillis(); + try + { + InputStream is = new URL( sampleFileUrl ).openStream(); + try + { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try + { + IOUtils.copy( is, baos ); + } + finally + { + baos.close(); + } + + final long endDownload = System.currentTimeMillis(); + byte[] byteArray = baos.toByteArray(); + + logger.log( POILogger.DEBUG, "Downloaded in ", + Long.valueOf( endDownload - start ), " ms -- ", + Long.valueOf( byteArray.length ), " byte(s)" ); + + ByteArrayInputStream bais = new ByteArrayInputStream( byteArray ); + HWPFDocument doc = new HWPFDocument( bais ); + final long endParse = System.currentTimeMillis(); + + logger.log( POILogger.DEBUG, "Parsed in ", + Long.valueOf( endParse - start ), " ms" ); + + return doc; + } + finally + { + is.close(); + } + } + catch ( IOException e ) + { + throw new RuntimeException( e ); + } + } + public static HWPFOldDocument openOldSampleFile(String sampleFileName) { try { InputStream is = POIDataSamples.getDocumentInstance().openResourceAsStream(sampleFileName); diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java index b19622ff3..5566caf46 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java @@ -511,14 +511,6 @@ public class TestBugs extends TestCase } } - /** - * Bug 51524 - PapBinTable constructor is slow - */ - public void test51524() - { - HWPFTestDataSamples.openSampleFileFromArchive( "Bug51524.zip" ); - } - /** * [RESOLVED FIXED] Bug 51604 - replace text fails for doc ( poi 3.8 beta * release from download site ) @@ -649,13 +641,22 @@ public class TestBugs extends TestCase } + /** * Bug 51678 - Extracting text from Bug51524.zip is slow + * Bug 51524 - PapBinTable constructor is slow */ - public void test51678() + public void test51678And51524() { - HWPFDocument hwpfDocument = HWPFTestDataSamples.openSampleFileFromArchive( "Bug51524.zip" ); - WordExtractor wordExtractor = new WordExtractor( hwpfDocument ); - wordExtractor.getText(); + // YK: the test will run only if the poi.test.remote system property is set. + // TODO: refactor into something nicer! + if(System.getProperty("poi.test.remote") != null) { + String href = "http://domex.nps.edu/corp/files/govdocs1/007/007488.doc"; + HWPFDocument hwpfDocument = HWPFTestDataSamples.openRemoteFile( href ); + + WordExtractor wordExtractor = new WordExtractor( hwpfDocument ); + wordExtractor.getText(); + } + } } diff --git a/test-data/document/Bug51524.zip b/test-data/document/Bug51524.zip deleted file mode 100644 index 4e5281f0c..000000000 Binary files a/test-data/document/Bug51524.zip and /dev/null differ