/* * Copyright (C) 2009 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.load.perf; import java.io.ByteArrayInputStream; import java.io.File; import java.io.PrintWriter; import java.util.Calendar; import javax.jcr.Node; import org.exoplatform.services.jcr.JcrAPIBaseTest; /** * Created by The eXo Platform SAS Author : Peter Nedonosko peter.nedonosko@exoplatform.com.ua * 20.07.2006 * * @version $Id: TestBulkItemsAdd.java 352 2009-10-23 09:28:36Z pnedonosko $ */ public class TestBulkItemsAdd extends JcrAPIBaseTest { public void testNodeAdd() throws Exception { StringBuilder stats = new StringBuilder(); Node testRoot = session.getRootNode().addNode("testRoot"); session.save(); long startTime = System.currentTimeMillis(); int nodesCount = 10000; for (int i = 0; i < nodesCount; i++) { long addTime = System.currentTimeMillis(); String nodeName = "_" + i + "_node"; Node n = testRoot.addNode(nodeName); //log.info("add node " + nodeName + ", " + (System.currentTimeMillis() - addTime) + "ms, " // + (finishTime - startTime) + "ms"); //String stat = (System.currentTimeMillis() - addTime) + ";" + (finishTime - startTime); if ((i % 100) == 0) { stats.append(i); stats.append(";"); stats.append((System.currentTimeMillis() - addTime)); // stats.append(";"); // stats.append((System.currentTimeMillis() - startTime)); stats.append("\r\n"); } } // stats.append(nodesCount); // stats.append(";"); // stats.append((System.currentTimeMillis() - startTime)); // stats.append("\r\n"); log.info("Nodes added " + nodesCount + ", " + (System.currentTimeMillis() - startTime) + "ms"); startTime = System.currentTimeMillis(); log.info("Nodes will be saved, wait few minutes..."); testRoot.save(); log.info("Nodes saved " + nodesCount + ", " + (System.currentTimeMillis() - startTime) + "ms"); // save stats PrintWriter statFile = new PrintWriter(new File("stats.txt")); statFile.write(stats.toString()); statFile.close(); log.info("Test done"); } public void _testNtFileAdd() throws Exception { Node testRoot = session.getRootNode().addNode("testRoot"); session.save(); long startTime = System.currentTimeMillis(); int nodesCount = 250; for (int i = 0; i < nodesCount; i++) { long addTime = System.currentTimeMillis(); String nodeName = "_" + i + "_ntfile"; Node n = testRoot.addNode(nodeName, "nt:file"); Node nContent = n.addNode("jcr:content", "nt:unstructured"); nContent.setProperty("currenTime", Calendar.getInstance()); nContent.setProperty("info", "Info string"); Node resource = nContent.addNode("fileData", "nt:resource"); resource.setProperty("jcr:mimeType", "text/plain"); resource.setProperty("jcr:lastModified", Calendar.getInstance()); resource.setProperty("jcr:data", new ByteArrayInputStream("Some bin data;asdasdasdasdeqecvsdfvdf".getBytes())); log.info("add node " + nodeName + ", " + (System.currentTimeMillis() - addTime) + "ms, " + (System.currentTimeMillis() - startTime) + "ms"); } log.info("Nodes (nt:file) added " + nodesCount + ", " + (System.currentTimeMillis() - startTime) + "ms"); startTime = System.currentTimeMillis(); log.info("Nodes (nt:file) will be saved, wait few minutes..."); testRoot.save(); log.info("Nodes (nt:file) saved " + nodesCount + ", " + (System.currentTimeMillis() - startTime) + "ms"); } }