You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by sh...@apache.org on 2010/04/07 13:03:32 UTC

svn commit: r931502 - in /lucene/dev/trunk/lucene/contrib/benchmark: CHANGES.txt src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java src/test/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTaskTest.java

Author: shaie
Date: Wed Apr  7 11:03:32 2010
New Revision: 931502

URL: http://svn.apache.org/viewvc?rev=931502&view=rev
Log:
LUCENE-2377: Enable the use of NoMergePolicy and NoMergeScheduler by Benchmark

Modified:
    lucene/dev/trunk/lucene/contrib/benchmark/CHANGES.txt
    lucene/dev/trunk/lucene/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java
    lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTaskTest.java

Modified: lucene/dev/trunk/lucene/contrib/benchmark/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/benchmark/CHANGES.txt?rev=931502&r1=931501&r2=931502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/benchmark/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/contrib/benchmark/CHANGES.txt Wed Apr  7 11:03:32 2010
@@ -2,6 +2,10 @@ Lucene Benchmark Contrib Change Log
 
 The Benchmark contrib package contains code for benchmarking Lucene in a variety of ways.
 
+4/07/2010
+  LUCENE-2377: Enable the use of NoMergePolicy and NoMergeScheduler by 
+  CreateIndexTask. (Shai Erera)
+  
 3/28/2010
   LUCENE-2353: Fixed bug in Config where Windows absolute path property values 
   were incorrectly handled (Shai Erera)

Modified: lucene/dev/trunk/lucene/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java?rev=931502&r1=931501&r2=931502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java (original)
+++ lucene/dev/trunk/lucene/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java Wed Apr  7 11:03:32 2010
@@ -25,6 +25,8 @@ import org.apache.lucene.index.IndexWrit
 import org.apache.lucene.index.MergeScheduler;
 import org.apache.lucene.index.ConcurrentMergeScheduler;
 import org.apache.lucene.index.MergePolicy;
+import org.apache.lucene.index.NoMergePolicy;
+import org.apache.lucene.index.NoMergeScheduler;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.util.Version;
 
@@ -70,34 +72,42 @@ public class CreateIndexTask extends Per
 
     final String mergeScheduler = config.get("merge.scheduler",
                                              "org.apache.lucene.index.ConcurrentMergeScheduler");
-    try {
-      writer.setMergeScheduler(Class.forName(mergeScheduler).asSubclass(MergeScheduler.class).newInstance());
-    } catch (Exception e) {
-      throw new RuntimeException("unable to instantiate class '" + mergeScheduler + "' as merge scheduler", e);
-    }
-
-    if (mergeScheduler.equals("org.apache.lucene.index.ConcurrentMergeScheduler")) {
-      ConcurrentMergeScheduler cms = (ConcurrentMergeScheduler) writer.getMergeScheduler();
-      int v = config.get("concurrent.merge.scheduler.max.thread.count", -1);
-      if (v != -1) {
-        cms.setMaxThreadCount(v);
+    if (mergeScheduler.equals(NoMergeScheduler.class.getName())) {
+      writer.setMergeScheduler(NoMergeScheduler.INSTANCE);
+    } else {
+      try {
+        writer.setMergeScheduler(Class.forName(mergeScheduler).asSubclass(MergeScheduler.class).newInstance());
+      } catch (Exception e) {
+        throw new RuntimeException("unable to instantiate class '" + mergeScheduler + "' as merge scheduler", e);
       }
-      v = config.get("concurrent.merge.scheduler.max.merge.count", -1);
-      if (v != -1) {
-        cms.setMaxMergeCount(v);
+      
+      if (mergeScheduler.equals("org.apache.lucene.index.ConcurrentMergeScheduler")) {
+        ConcurrentMergeScheduler cms = (ConcurrentMergeScheduler) writer.getMergeScheduler();
+        int v = config.get("concurrent.merge.scheduler.max.thread.count", -1);
+        if (v != -1) {
+          cms.setMaxThreadCount(v);
+        }
+        v = config.get("concurrent.merge.scheduler.max.merge.count", -1);
+        if (v != -1) {
+          cms.setMaxMergeCount(v);
+        }
       }
     }
 
     final String mergePolicy = config.get("merge.policy",
                                           "org.apache.lucene.index.LogByteSizeMergePolicy");
-    try {
-      writer.setMergePolicy(Class.forName(mergePolicy).asSubclass(MergePolicy.class).newInstance());
-    } catch (Exception e) {
-      throw new RuntimeException("unable to instantiate class '" + mergePolicy + "' as merge policy", e);
+    boolean isCompound = config.get("compound", true);
+    if (mergePolicy.equals(NoMergePolicy.class.getName())) {
+      writer.setMergePolicy(isCompound ? NoMergePolicy.COMPOUND_FILES : NoMergePolicy.NO_COMPOUND_FILES);
+    } else {
+      try {
+        writer.setMergePolicy(Class.forName(mergePolicy).asSubclass(MergePolicy.class).newInstance());
+      } catch (Exception e) {
+        throw new RuntimeException("unable to instantiate class '" + mergePolicy + "' as merge policy", e);
+      }
+      writer.setUseCompoundFile(isCompound);
+      writer.setMergeFactor(config.get("merge.factor",OpenIndexTask.DEFAULT_MERGE_PFACTOR));
     }
-
-    writer.setUseCompoundFile(config.get("compound",true));
-    writer.setMergeFactor(config.get("merge.factor",OpenIndexTask.DEFAULT_MERGE_PFACTOR));
     writer.setMaxFieldLength(config.get("max.field.length",OpenIndexTask.DEFAULT_MAX_FIELD_LENGTH));
 
     final double ramBuffer = config.get("ram.flush.mb",OpenIndexTask.DEFAULT_RAM_FLUSH_MB);

Modified: lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTaskTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTaskTest.java?rev=931502&r1=931501&r2=931502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTaskTest.java (original)
+++ lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTaskTest.java Wed Apr  7 11:03:32 2010
@@ -25,6 +25,8 @@ import java.util.Properties;
 import org.apache.lucene.benchmark.BenchmarkTestCase;
 import org.apache.lucene.benchmark.byTask.PerfRunData;
 import org.apache.lucene.benchmark.byTask.utils.Config;
+import org.apache.lucene.index.NoMergePolicy;
+import org.apache.lucene.index.NoMergeScheduler;
 
 /** Tests the functionality of {@link CreateIndexTask}. */
 public class CreateIndexTaskTest extends BenchmarkTestCase {
@@ -33,7 +35,9 @@ public class CreateIndexTaskTest extends
     Properties props = new Properties();
     props.setProperty("print.props", "false"); // don't print anything
     props.setProperty("directory", "RAMDirectory");
-    props.setProperty("writer.info.stream", infoStreamValue);
+    if (infoStreamValue != null) {
+      props.setProperty("writer.info.stream", infoStreamValue);
+    }
     Config config = new Config(props);
     return new PerfRunData(config);
   }
@@ -77,4 +81,18 @@ public class CreateIndexTaskTest extends
     assertTrue(outFile.length() > 0);
   }
 
+  public void testNoMergePolicy() throws Exception {
+    PerfRunData runData = createPerfRunData(null);
+    runData.getConfig().set("merge.policy", NoMergePolicy.class.getName());
+    new CreateIndexTask(runData).doLogic();
+    new CloseIndexTask(runData).doLogic();
+  }
+  
+  public void testNoMergeScheduler() throws Exception {
+    PerfRunData runData = createPerfRunData(null);
+    runData.getConfig().set("merge.scheduler", NoMergeScheduler.class.getName());
+    new CreateIndexTask(runData).doLogic();
+    new CloseIndexTask(runData).doLogic();
+  }
+  
 }