X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fext%2Ftest%2Forg%2Fargeo%2Fjcr%2Fdocbook%2FDocBookModelTest.java;fp=org.argeo.jcr%2Fext%2Ftest%2Forg%2Fargeo%2Fjcr%2Fdocbook%2FDocBookModelTest.java;h=5af20bad49b89d22f4c249eb9c8503fec5457def;hb=e66b9893b0e511f8ab295e3cee42b7dc966f1597;hp=0000000000000000000000000000000000000000;hpb=8260f4470f514ea347ca53f5b4dfc632c4a4de66;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/ext/test/org/argeo/jcr/docbook/DocBookModelTest.java b/org.argeo.jcr/ext/test/org/argeo/jcr/docbook/DocBookModelTest.java new file mode 100644 index 000000000..5af20bad4 --- /dev/null +++ b/org.argeo.jcr/ext/test/org/argeo/jcr/docbook/DocBookModelTest.java @@ -0,0 +1,115 @@ +package org.argeo.jcr.docbook; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; + +import javax.jcr.RepositoryException; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jackrabbit.commons.cnd.CndImporter; +import org.argeo.jackrabbit.unit.AbstractJackrabbitTestCase; +import org.argeo.jcr.JcrUtils; + +public class DocBookModelTest extends AbstractJackrabbitTestCase { + private final static Log log = LogFactory.getLog(DocBookModelTest.class); + + public void testLoadWikipediaSample() throws Exception { + importXml("WikipediaSample.dbk.xml"); + } + + public void XXXtestLoadHowTo() throws Exception { + importXml("howto.xml", false); + } + + protected void importXml(String res) throws Exception { + importXml(res, true); + } + + protected void importXml(String res, Boolean mini) throws Exception { + byte[] bytes; + try (InputStream in = getClass().getResourceAsStream(res)) { + bytes = IOUtils.toByteArray(in); + } + + {// cnd + long begin = System.currentTimeMillis(); + if (mini) { + InputStreamReader reader = new InputStreamReader(getClass() + .getResourceAsStream( + "/org/argeo/jcr/docbook/docbook.cnd")); + CndImporter.registerNodeTypes(reader, session()); + reader.close(); + } else { + InputStreamReader reader = new InputStreamReader(getClass() + .getResourceAsStream( + "/org/argeo/jcr/docbook/docbook-full.cnd")); + CndImporter.registerNodeTypes(reader, session()); + reader.close(); + } + long duration = System.currentTimeMillis() - begin; + if (log.isDebugEnabled()) + log.debug(" CND loaded in " + duration + " ms"); + } + + String testPath = "/" + res; + // if (mini) + JcrUtils.mkdirs(session(), testPath, "dbk:set"); + // else + // JcrUtils.mkdirs(session(), testPath, "dbk:book"); + + DocBookModel model = new DocBookModel(session()); + try (InputStream in = new ByteArrayInputStream(bytes)) { + long begin = System.currentTimeMillis(); + model.importXml(testPath, in); + long duration = System.currentTimeMillis() - begin; + if (log.isDebugEnabled()) + log.debug("Imported " + res + " " + (bytes.length / 1024l) + + " kB in " + duration + " ms (" + + (bytes.length / duration) + " B/ms)"); + } + + saveSession(); + // JcrUtils.debug(session().getRootNode()); + + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + try { + model.exportXml(testPath + "/dbk:book", out); + } catch (Exception e) { + model.exportXml(testPath + "/dbk:article", out); + } + bytes = out.toByteArray(); + + session().logout(); + model.setSession(session()); + + // log.debug(new String(bytes)); + try (InputStream in = new ByteArrayInputStream(bytes)) { + long begin = System.currentTimeMillis(); + model.importXml(testPath, in); + long duration = System.currentTimeMillis() - begin; + if (log.isDebugEnabled()) + log.debug("Re-imported " + res + " " + + (bytes.length / 1024l) + " kB in " + duration + + " ms (" + (bytes.length / duration) + " B/ms)"); + } + } + saveSession(); + } + + protected void saveSession() throws RepositoryException { + long begin = System.currentTimeMillis(); + session().save(); + long duration = System.currentTimeMillis() - begin; + if (log.isDebugEnabled()) + log.debug(" Session save took " + duration + " ms"); + } + + // public static Test suite() { + // return defaultTestSuite(DocBookModelTest.class); + // } + +}