You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2016/02/04 08:26:11 UTC
lucene-solr git commit: LUCENE-7010: add MergePolicyWrapper
Repository: lucene-solr
Updated Branches:
refs/heads/master 62dfc815b -> 30455f728
LUCENE-7010: add MergePolicyWrapper
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/30455f72
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/30455f72
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/30455f72
Branch: refs/heads/master
Commit: 30455f728b304fb1b434df73b4f84d607e6941ce
Parents: 62dfc81
Author: Shai Erera <sh...@apache.org>
Authored: Wed Feb 3 14:49:03 2016 +0200
Committer: Shai Erera <sh...@apache.org>
Committed: Thu Feb 4 09:24:24 2016 +0200
----------------------------------------------------------------------
lucene/CHANGES.txt | 3 +
.../org/apache/lucene/index/MergePolicy.java | 6 +-
.../apache/lucene/index/MergePolicyWrapper.java | 86 ++++++++++++++++++++
.../org/apache/lucene/index/NoMergePolicy.java | 18 +++-
.../lucene/index/UpgradeIndexMergePolicy.java | 30 ++-----
.../index/TestDemoParallelLeafReader.java | 6 +-
.../lucene/index/TestMergePolicyWrapper.java | 37 +++++++++
.../apache/lucene/index/SortingMergePolicy.java | 17 +---
.../lucene/index/TestSortingMergePolicy.java | 17 ----
.../apache/lucene/index/ForceMergePolicy.java | 45 ++--------
.../solr/util/TestRandomForceMergePolicy.java | 36 --------
.../apache/solr/util/TestRandomMergePolicy.java | 74 -----------------
.../org/apache/solr/util/RandomMergePolicy.java | 51 ++----------
13 files changed, 168 insertions(+), 258 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 5b23146..df6723e 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -137,6 +137,9 @@ New Features
* SOLR-4619: Added removeAllAttributes() to AttributeSource, which removes
all previously added attributes.
+
+* LUCENE-7010: Added MergePolicyWrapper to allow easy wrapping of other policies.
+ (Shai Erera)
API Changes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java b/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
index dd0b245..10a9ece 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
@@ -468,7 +468,7 @@ public abstract class MergePolicy {
/** Returns current {@code noCFSRatio}.
*
* @see #setNoCFSRatio */
- public final double getNoCFSRatio() {
+ public double getNoCFSRatio() {
return noCFSRatio;
}
@@ -477,7 +477,7 @@ public abstract class MergePolicy {
* non-compound file even if compound file is enabled.
* Set to 1.0 to always use CFS regardless of merge
* size. */
- public final void setNoCFSRatio(double noCFSRatio) {
+ public void setNoCFSRatio(double noCFSRatio) {
if (noCFSRatio < 0.0 || noCFSRatio > 1.0) {
throw new IllegalArgumentException("noCFSRatio must be 0.0 to 1.0 inclusive; got " + noCFSRatio);
}
@@ -494,7 +494,7 @@ public abstract class MergePolicy {
* non-compound file even if compound file is enabled.
* Set this to Double.POSITIVE_INFINITY (default) and noCFSRatio to 1.0
* to always use CFS regardless of merge size. */
- public final void setMaxCFSSegmentSizeMB(double v) {
+ public void setMaxCFSSegmentSizeMB(double v) {
if (v < 0.0) {
throw new IllegalArgumentException("maxCFSSegmentSizeMB must be >=0 (got " + v + ")");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/core/src/java/org/apache/lucene/index/MergePolicyWrapper.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MergePolicyWrapper.java b/lucene/core/src/java/org/apache/lucene/index/MergePolicyWrapper.java
new file mode 100644
index 0000000..17ecfbe
--- /dev/null
+++ b/lucene/core/src/java/org/apache/lucene/index/MergePolicyWrapper.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.index;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * A wrapper for {@link MergePolicy} instances.
+ *
+ * @lucene.experimental
+ */
+public class MergePolicyWrapper extends MergePolicy {
+
+ protected final MergePolicy in;
+
+ /**
+ * Creates a new merge policy instance.
+ */
+ public MergePolicyWrapper(MergePolicy in) {
+ this.in = in;
+ }
+
+ @Override
+ public MergeSpecification findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, IndexWriter writer)
+ throws IOException {
+ return in.findMerges(mergeTrigger, segmentInfos, writer);
+ }
+
+ @Override
+ public MergeSpecification findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount,
+ Map<SegmentCommitInfo,Boolean> segmentsToMerge, IndexWriter writer) throws IOException {
+ return in.findForcedMerges(segmentInfos, maxSegmentCount, segmentsToMerge, writer);
+ }
+
+ @Override
+ public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, IndexWriter writer) throws IOException {
+ return in.findForcedDeletesMerges(segmentInfos, writer);
+ }
+
+ @Override
+ public boolean useCompoundFile(SegmentInfos infos, SegmentCommitInfo mergedInfo, IndexWriter writer)
+ throws IOException {
+ return in.useCompoundFile(infos, mergedInfo, writer);
+ }
+
+ @Override
+ protected long size(SegmentCommitInfo info, IndexWriter writer) throws IOException {
+ return in.size(info, writer);
+ }
+
+ @Override
+ public double getNoCFSRatio() {
+ return in.getNoCFSRatio();
+ }
+
+ @Override
+ public final void setNoCFSRatio(double noCFSRatio) {
+ in.setNoCFSRatio(noCFSRatio);
+ }
+
+ @Override
+ public final void setMaxCFSSegmentSizeMB(double v) {
+ in.setMaxCFSSegmentSizeMB(v);
+ }
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "(" + in + ")";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java b/lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java
index 8b5a853..cade135 100644
--- a/lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java
+++ b/lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java
@@ -20,7 +20,6 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.Map;
-
/**
* A {@link MergePolicy} which never returns merges to execute. Use it if you
* want to prevent segment merges.
@@ -53,7 +52,22 @@ public final class NoMergePolicy extends MergePolicy {
protected long size(SegmentCommitInfo info, IndexWriter writer) throws IOException {
return Long.MAX_VALUE;
}
-
+
+ @Override
+ public double getNoCFSRatio() {
+ return super.getNoCFSRatio();
+ }
+
+ @Override
+ public void setMaxCFSSegmentSizeMB(double v) {
+ super.setMaxCFSSegmentSizeMB(v);
+ }
+
+ @Override
+ public void setNoCFSRatio(double noCFSRatio) {
+ super.setNoCFSRatio(noCFSRatio);
+ }
+
@Override
public String toString() {
return "NoMergePolicy";
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java b/lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java
index 9374e64..ee11f51 100644
--- a/lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java
+++ b/lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java
@@ -48,15 +48,12 @@ import java.util.HashMap;
* @lucene.experimental
* @see IndexUpgrader
*/
-public class UpgradeIndexMergePolicy extends MergePolicy {
-
- /** Wrapped {@link MergePolicy}. */
- protected final MergePolicy base;
+public class UpgradeIndexMergePolicy extends MergePolicyWrapper {
/** Wrap the given {@link MergePolicy} and intercept forceMerge requests to
* only upgrade segments written with previous Lucene versions. */
- public UpgradeIndexMergePolicy(MergePolicy base) {
- this.base = base;
+ public UpgradeIndexMergePolicy(MergePolicy in) {
+ super(in);
}
/** Returns if the given segment should be upgraded. The default implementation
@@ -70,7 +67,7 @@ public class UpgradeIndexMergePolicy extends MergePolicy {
@Override
public MergeSpecification findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, IndexWriter writer) throws IOException {
- return base.findMerges(null, segmentInfos, writer);
+ return in.findMerges(null, segmentInfos, writer);
}
@Override
@@ -91,7 +88,7 @@ public class UpgradeIndexMergePolicy extends MergePolicy {
if (oldSegments.isEmpty())
return null;
- MergeSpecification spec = base.findForcedMerges(segmentInfos, maxSegmentCount, oldSegments, writer);
+ MergeSpecification spec = in.findForcedMerges(segmentInfos, maxSegmentCount, oldSegments, writer);
if (spec != null) {
// remove all segments that are in merge specification from oldSegments,
@@ -104,7 +101,7 @@ public class UpgradeIndexMergePolicy extends MergePolicy {
if (!oldSegments.isEmpty()) {
if (verbose(writer)) {
- message("findForcedMerges: " + base.getClass().getSimpleName() +
+ message("findForcedMerges: " + in.getClass().getSimpleName() +
" does not want to merge all old segments, merge remaining ones into new segment: " + oldSegments, writer);
}
final List<SegmentCommitInfo> newInfos = new ArrayList<>();
@@ -123,21 +120,6 @@ public class UpgradeIndexMergePolicy extends MergePolicy {
return spec;
}
- @Override
- public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, IndexWriter writer) throws IOException {
- return base.findForcedDeletesMerges(segmentInfos, writer);
- }
-
- @Override
- public boolean useCompoundFile(SegmentInfos segments, SegmentCommitInfo newSegment, IndexWriter writer) throws IOException {
- return base.useCompoundFile(segments, newSegment, writer);
- }
-
- @Override
- public String toString() {
- return "[" + getClass().getSimpleName() + "->" + base + "]";
- }
-
private boolean verbose(IndexWriter writer) {
return writer != null && writer.infoStream.isEnabled("UPGMP");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java b/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
index 0d25f28..ae41299 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDemoParallelLeafReader.java
@@ -505,7 +505,7 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
}
/** Just replaces the sub-readers with parallel readers, so reindexed fields are merged into new segments. */
- private class ReindexingMergePolicy extends MergePolicy {
+ private class ReindexingMergePolicy extends MergePolicyWrapper {
class ReindexingOneMerge extends OneMerge {
@@ -596,11 +596,9 @@ public class TestDemoParallelLeafReader extends LuceneTestCase {
return wrapped;
}
- final MergePolicy in;
-
/** Create a new {@code MergePolicy} that sorts documents with the given {@code sort}. */
public ReindexingMergePolicy(MergePolicy in) {
- this.in = in;
+ super(in);
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/core/src/test/org/apache/lucene/index/TestMergePolicyWrapper.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMergePolicyWrapper.java b/lucene/core/src/test/org/apache/lucene/index/TestMergePolicyWrapper.java
new file mode 100644
index 0000000..fa1b5d4
--- /dev/null
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMergePolicyWrapper.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.index;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+import org.apache.lucene.util.LuceneTestCase;
+
+public class TestMergePolicyWrapper extends LuceneTestCase {
+
+ public void testMethodsOverridden() throws Exception {
+ for (Method m : MergePolicy.class.getDeclaredMethods()) {
+ if (Modifier.isFinal(m.getModifiers())) continue;
+ try {
+ MergePolicyWrapper.class.getDeclaredMethod(m.getName(), m.getParameterTypes());
+ } catch (NoSuchMethodException e) {
+ fail("MergePolicyWrapper needs to override '" + m + "'");
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/misc/src/java/org/apache/lucene/index/SortingMergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/java/org/apache/lucene/index/SortingMergePolicy.java b/lucene/misc/src/java/org/apache/lucene/index/SortingMergePolicy.java
index bd8eb10..13797ef 100644
--- a/lucene/misc/src/java/org/apache/lucene/index/SortingMergePolicy.java
+++ b/lucene/misc/src/java/org/apache/lucene/index/SortingMergePolicy.java
@@ -23,7 +23,6 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
-import org.apache.lucene.analysis.Analyzer; // javadocs
import org.apache.lucene.index.LeafReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.MergePolicy;
@@ -55,7 +54,7 @@ import org.apache.lucene.util.packed.PackedLongValues;
* the order of documents in a segment depend on the number of times the segment
* has been merged.
* @lucene.experimental */
-public final class SortingMergePolicy extends MergePolicy {
+public final class SortingMergePolicy extends MergePolicyWrapper {
/**
* Put in the {@link SegmentInfo#getDiagnostics() diagnostics} to denote that
@@ -221,13 +220,12 @@ public final class SortingMergePolicy extends MergePolicy {
return sortingSpec;
}
- final MergePolicy in;
final Sorter sorter;
final Sort sort;
/** Create a new {@code MergePolicy} that sorts documents with the given {@code sort}. */
public SortingMergePolicy(MergePolicy in, Sort sort) {
- this.in = in;
+ super(in);
this.sorter = new Sorter(sort);
this.sort = sort;
}
@@ -257,17 +255,6 @@ public final class SortingMergePolicy extends MergePolicy {
}
@Override
- public boolean useCompoundFile(SegmentInfos segments,
- SegmentCommitInfo newSegment, IndexWriter writer) throws IOException {
- return in.useCompoundFile(segments, newSegment, writer);
- }
-
- @Override
- protected long size(SegmentCommitInfo info, IndexWriter writer) throws IOException {
- return in.size(info, writer);
- }
-
- @Override
public String toString() {
return "SortingMergePolicy(" + in + ", sorter=" + sorter + ")";
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/misc/src/test/org/apache/lucene/index/TestSortingMergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/misc/src/test/org/apache/lucene/index/TestSortingMergePolicy.java b/lucene/misc/src/test/org/apache/lucene/index/TestSortingMergePolicy.java
index bf319fd..9a76fad 100644
--- a/lucene/misc/src/test/org/apache/lucene/index/TestSortingMergePolicy.java
+++ b/lucene/misc/src/test/org/apache/lucene/index/TestSortingMergePolicy.java
@@ -78,12 +78,6 @@ public class TestSortingMergePolicy extends BaseMergePolicyTestCase {
return doc;
}
- @Override
- public void testForceMergeNotNeeded() throws IOException {
- // This is a no-op until we figure out why the (super class) test fails.
- // https://issues.apache.org/jira/browse/LUCENE-7008
- }
-
public MergePolicy mergePolicy() {
return newSortingMergePolicy(sort);
}
@@ -204,15 +198,4 @@ public class TestSortingMergePolicy extends BaseMergePolicyTestCase {
}
}
- public void testMethodsOverridden() throws Exception {
- for (Method m : MergePolicy.class.getDeclaredMethods()) {
- if (Modifier.isFinal(m.getModifiers())) continue;
- try {
- SortingMergePolicy.class.getDeclaredMethod(m.getName(), m.getParameterTypes());
- } catch (NoSuchMethodException e) {
- fail("SortingMergePolicy needs to override '"+m+"'");
- }
- }
- }
-
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java b/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
index 630f8eb..ba5b937 100755
--- a/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/ForceMergePolicy.java
@@ -28,52 +28,23 @@ import org.apache.lucene.index.SegmentInfos;
/**
* A {@link MergePolicy} that only returns forced merges.
- * <p><b>NOTE</b>: Use this policy if you wish to disallow background
- * merges but wish to run optimize/forceMerge segment merges.
+ * <p>
+ * <b>NOTE</b>: Use this policy if you wish to disallow background merges but wish to run optimize/forceMerge segment
+ * merges.
*
- * @lucene.experimental
+ * @lucene.experimental
*/
-public final class ForceMergePolicy extends MergePolicy {
-
- final MergePolicy in;
+public final class ForceMergePolicy extends MergePolicyWrapper {
/** Create a new {@code ForceMergePolicy} around the given {@code MergePolicy} */
public ForceMergePolicy(MergePolicy in) {
- this.in = in;
- }
-
- @Override
- public MergeSpecification findMerges(MergeTrigger mergeTrigger,
- SegmentInfos segmentInfos, IndexWriter writer) throws IOException {
- return null;
- }
-
- @Override
- public MergeSpecification findForcedMerges(SegmentInfos segmentInfos,
- int maxSegmentCount, Map<SegmentCommitInfo,Boolean> segmentsToMerge, IndexWriter writer)
- throws IOException {
- return in.findForcedMerges(segmentInfos, maxSegmentCount, segmentsToMerge, writer);
+ super(in);
}
@Override
- public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, IndexWriter writer)
+ public MergeSpecification findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, IndexWriter writer)
throws IOException {
- return in.findForcedDeletesMerges(segmentInfos, writer);
- }
-
- @Override
- public boolean useCompoundFile(SegmentInfos segments,
- SegmentCommitInfo newSegment, IndexWriter writer) throws IOException {
- return in.useCompoundFile(segments, newSegment, writer);
- }
-
- @Override
- protected long size(SegmentCommitInfo info, IndexWriter writer) throws IOException {
- return in.size(info, writer);
+ return null;
}
- @Override
- public String toString() {
- return "ForceMergePolicy(" + in + ")";
- }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/solr/core/src/test/org/apache/solr/util/TestRandomForceMergePolicy.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/TestRandomForceMergePolicy.java b/solr/core/src/test/org/apache/solr/util/TestRandomForceMergePolicy.java
deleted file mode 100755
index d818786..0000000
--- a/solr/core/src/test/org/apache/solr/util/TestRandomForceMergePolicy.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.apache.solr.util;
-
-import java.io.IOException;
-
-import org.apache.lucene.index.MergePolicy;
-import org.apache.lucene.index.SegmentInfos;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-public class TestRandomForceMergePolicy extends TestRandomMergePolicy {
-
- /**
- * Ensure it finds no merges
- */
- public void testFindMerges() throws IOException {
- MergePolicy mp = new RandomForceMergePolicy();
- assertNull(mp.findMerges(null, (SegmentInfos)null, null));
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/solr/core/src/test/org/apache/solr/util/TestRandomMergePolicy.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/TestRandomMergePolicy.java b/solr/core/src/test/org/apache/solr/util/TestRandomMergePolicy.java
deleted file mode 100644
index 0fb9940..0000000
--- a/solr/core/src/test/org/apache/solr/util/TestRandomMergePolicy.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.solr.util;
-
-import org.apache.lucene.index.MergePolicy;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.InvocationTargetException;
-
-/**
- * A "test the test" sanity check using reflection to ensure that
- * {@linke RandomMergePolicy} is working as expected
- */
-@SuppressSysoutChecks(bugUrl = "Logs to JUL")
-public class TestRandomMergePolicy extends LuceneTestCase {
- /**
- * Ensure every MP method is overridden by RMP
- * (future proof ourselves against new methods being added to MP)
- */
- public void testMethodOverride() {
- Class rmp = RandomMergePolicy.class;
- for (Method meth : rmp.getMethods()) {
- if (// ignore things like hashCode, equals, etc...
- meth.getDeclaringClass().equals(Object.class)
- // can't do anything about it regardless of what class declares it
- || Modifier.isFinal(meth.getModifiers())) {
- continue;
- }
- assertEquals("method not overridden by RandomMergePolicy: " +
- meth.toGenericString(),
- rmp, meth.getDeclaringClass());
- }
- }
-
- /**
- * Ensure any "getter" methods return the same value as
- * the wrapped MP
- * (future proof ourselves against new final getter/setter pairs being
- * added to MP w/o dealing with them in the RMP Constructor)
- */
- public void testGetters() throws IllegalAccessException, InvocationTargetException {
- final int iters = atLeast(20);
- for (int i = 0; i < iters; i++) {
- RandomMergePolicy rmp = new RandomMergePolicy();
- Class mp = MergePolicy.class;
- for (Method meth : mp.getDeclaredMethods()) {
- if (meth.getName().startsWith("get") &&
- (0 == meth.getParameterTypes().length)) {
-
- assertEquals("MergePolicy getter gave diff results for RandomMergePolicy and the policy it wrapped: " + meth.toGenericString(),
- meth.invoke(rmp), meth.invoke(rmp.inner));
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30455f72/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java b/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
index 7c376bf..17c53c0 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
@@ -23,6 +23,8 @@ import java.util.Map;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.MergePolicy;
+import org.apache.lucene.index.MergePolicy.MergeSpecification;
+import org.apache.lucene.index.MergePolicyWrapper;
import org.apache.lucene.index.MergeTrigger;
import org.apache.lucene.index.SegmentCommitInfo;
import org.apache.lucene.index.SegmentInfos;
@@ -36,60 +38,17 @@ import org.slf4j.LoggerFactory;
* Solr tests utilizing the Lucene randomized test framework can refer
* to this class in solrconfig.xml to get a fully randomized merge policy.
*/
-public class RandomMergePolicy extends MergePolicy {
+public class RandomMergePolicy extends MergePolicyWrapper {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- /**
- * Not private so tests can inspect it,
- */
- final MergePolicy inner;
-
public RandomMergePolicy() {
this(LuceneTestCase.newMergePolicy());
}
protected RandomMergePolicy(MergePolicy inner) {
- super(inner.getNoCFSRatio(),
- (long) (inner.getMaxCFSSegmentSizeMB() * 1024 * 1024));
- this.inner = inner;
- log.info("RandomMergePolicy wrapping {}: {}",
- inner.getClass(), inner);
- }
-
- @Override
- public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, IndexWriter writer)
- throws IOException {
-
- return inner.findForcedDeletesMerges(segmentInfos, writer);
- }
-
- @Override
- public MergeSpecification findForcedMerges(SegmentInfos segmentInfos,
- int maxSegmentCount,
- Map<SegmentCommitInfo,Boolean> segmentsToMerge,
- IndexWriter writer)
- throws IOException {
-
- return inner.findForcedMerges(segmentInfos, maxSegmentCount, segmentsToMerge, writer);
- }
-
- @Override
- public MergeSpecification findMerges(MergeTrigger mergeTrigger,
- SegmentInfos segmentInfos,
- IndexWriter writer)
- throws IOException {
-
- return inner.findMerges(mergeTrigger, segmentInfos, writer);
- }
-
- @Override
- public boolean useCompoundFile(SegmentInfos infos,
- SegmentCommitInfo mergedInfo,
- IndexWriter writer)
- throws IOException {
-
- return inner.useCompoundFile(infos, mergedInfo, writer);
+ super(inner);
+ log.info("RandomMergePolicy wrapping {}: {}", inner.getClass(), inner);
}
}