You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2021/02/17 19:13:38 UTC

[lucenenet] branch master updated (3736ddc -> 6605cb9)

This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git.


    from 3736ddc  Lucene.Net.Highlighter.VectorHighlight.FieldPhraseList::GetHashCode(): Switched to using J2N's TripleShift method, as it is clear by the comment the reason for the problem was the cast to uint instead of ulong
     new b12d2e2  Deprecated Lucene.Net.Support.Index.TaskMergeScheduler. Fixes #354.
     new 668069e  BREAKING: Lucene.Net.TestFramework.Util.LuceneTestCase: Removed ConcurrentMergeSchedulerFactories class from the public API and its use from all tests (see #354)
     new 67a8ba6  Lucene.Net.Tests: Deleted TestTaskMergeScheduler class (see #354)
     new 6605cb9  Directory.Build.targets: Removed FEATURE_CONCURRENTMERGESCHEDULER (see #354)

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 Directory.Build.targets                            |   3 +-
 .../ByTask/Tasks/CreateIndexTask.cs                |  15 +-
 .../Util/LuceneTestCase.cs                         |  47 +-----
 .../Index/Test2BBinaryDocValues.cs                 |  10 +-
 .../Index/Test2BNumericDocValues.cs                |  13 +-
 src/Lucene.Net.Tests/Index/Test2BPositions.cs      |  13 +-
 src/Lucene.Net.Tests/Index/Test2BPostings.cs       |   6 +-
 src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs  |   6 +-
 .../Index/Test2BSortedDocValues.cs                 |  10 +-
 src/Lucene.Net.Tests/Index/Test2BTerms.cs          |   6 +-
 src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs  |   6 +-
 .../Index/TestConcurrentMergeScheduler.cs          |   6 +-
 src/Lucene.Net.Tests/Index/TestCrash.cs            |  41 ++---
 src/Lucene.Net.Tests/Index/TestIndexWriter.cs      |   5 +-
 .../Index/TestIndexWriterConfig.cs                 |  14 +-
 .../Index/TestIndexWriterDelete.cs                 |  16 +-
 .../Index/TestIndexWriterExceptions.cs             |  58 ++-----
 .../Index/TestIndexWriterForceMerge.cs             |   6 +-
 .../Index/TestIndexWriterMergePolicy.cs            |   6 +-
 .../Index/TestIndexWriterOnDiskFull.cs             |   6 +-
 .../Index/TestIndexWriterReader.cs                 |  10 +-
 .../Index/TestIndexWriterWithThreads.cs            |  96 +++++------
 src/Lucene.Net.Tests/Index/TestStressIndexing.cs   |   6 +-
 src/Lucene.Net.Tests/Index/TestTransactions.cs     |  25 ++-
 src/Lucene.Net.Tests/Search/TestSearcherManager.cs |  16 +-
 .../Support/Index/TestTaskMergeScheduler.cs        | 179 ---------------------
 src/Lucene.Net.Tests/TestMergeSchedulerExternal.cs |   6 +-
 src/Lucene.Net/Index/ConcurrentMergeScheduler.cs   |   6 +-
 src/Lucene.Net/Index/IndexWriterConfig.cs          |  14 +-
 src/Lucene.Net/Index/LiveIndexWriterConfig.cs      |   6 +-
 src/Lucene.Net/Support/Index/TaskMergeScheduler.cs |   1 +
 31 files changed, 172 insertions(+), 486 deletions(-)
 delete mode 100644 src/Lucene.Net.Tests/Support/Index/TestTaskMergeScheduler.cs


[lucenenet] 01/04: Deprecated Lucene.Net.Support.Index.TaskMergeScheduler. Fixes #354.

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit b12d2e25300421a545207116e4212cdab0bd9295
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Wed Feb 17 20:20:09 2021 +0700

    Deprecated Lucene.Net.Support.Index.TaskMergeScheduler. Fixes #354.
---
 src/Lucene.Net/Support/Index/TaskMergeScheduler.cs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/Lucene.Net/Support/Index/TaskMergeScheduler.cs b/src/Lucene.Net/Support/Index/TaskMergeScheduler.cs
index dc74342..5e19137 100644
--- a/src/Lucene.Net/Support/Index/TaskMergeScheduler.cs
+++ b/src/Lucene.Net/Support/Index/TaskMergeScheduler.cs
@@ -40,6 +40,7 @@ namespace Lucene.Net.Index
     ///  
     /// LUCENENET specific
     /// </summary>
+    [Obsolete("Use ConcurrentMergeScheduler instead. This class will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
     public class TaskMergeScheduler : MergeScheduler, IConcurrentMergeScheduler
     {
         public const string COMPONENT_NAME = "CMS";


[lucenenet] 03/04: Lucene.Net.Tests: Deleted TestTaskMergeScheduler class (see #354)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 67a8ba67c69fc59e36534bd52966c15fdaf70182
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Wed Feb 17 21:47:52 2021 +0700

    Lucene.Net.Tests: Deleted TestTaskMergeScheduler class (see #354)
---
 .../Support/Index/TestTaskMergeScheduler.cs        | 179 ---------------------
 1 file changed, 179 deletions(-)

diff --git a/src/Lucene.Net.Tests/Support/Index/TestTaskMergeScheduler.cs b/src/Lucene.Net.Tests/Support/Index/TestTaskMergeScheduler.cs
deleted file mode 100644
index 27d58d2..0000000
--- a/src/Lucene.Net.Tests/Support/Index/TestTaskMergeScheduler.cs
+++ /dev/null
@@ -1,179 +0,0 @@
-using Lucene.Net.Attributes;
-using Lucene.Net.Documents;
-using Lucene.Net.Index.Extensions;
-using Lucene.Net.Store;
-using Lucene.Net.Util;
-using NUnit.Framework;
-using System;
-using System.IO;
-using Console = Lucene.Net.Util.SystemConsole;
-
-namespace Lucene.Net.Index
-{
-    /*
-     * 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.
-     */
-
-    using Directory = Lucene.Net.Store.Directory;
-    using Document = Documents.Document;
-    using Field = Field;
-    using LuceneTestCase = Lucene.Net.Util.LuceneTestCase;
-    using MockAnalyzer = Lucene.Net.Analysis.MockAnalyzer;
-    using MockDirectoryWrapper = Lucene.Net.Store.MockDirectoryWrapper;
-    using RAMDirectory = Lucene.Net.Store.RAMDirectory;
-
-    /// <summary>
-    /// Holds tests cases to verify external APIs are accessible
-    /// while not being in Lucene.Net.Index package.
-    /// </summary>
-    public class TestTaskMergeScheduler : LuceneTestCase
-    {
-        internal volatile bool mergeCalled;
-        internal volatile bool excCalled;
-
-        private class MyMergeScheduler : TaskMergeScheduler
-        {
-            private readonly TestTaskMergeScheduler outerInstance;
-
-            public MyMergeScheduler(TestTaskMergeScheduler outerInstance)
-            {
-                this.outerInstance = outerInstance;
-            }
-
-            protected override void HandleMergeException(Exception t)
-            {
-                outerInstance.excCalled = true;
-            }
-
-            public override void Merge(IndexWriter writer, MergeTrigger trigger, bool newMergesFound)
-            {
-                outerInstance.mergeCalled = true;
-                base.Merge(writer, trigger, newMergesFound);
-            }
-        }
-
-        private class FailOnlyOnMerge : Failure
-        {
-            public override void Eval(MockDirectoryWrapper dir)
-            {
-                // LUCENENET specific: for these to work in release mode, we have added [MethodImpl(MethodImplOptions.NoInlining)]
-                // to each possible target of the StackTraceHelper. If these change, so must the attribute on the target methods.
-                if (StackTraceHelper.DoesStackTraceContainMethod("DoMerge"))
-                {
-                    throw new IOException("now failing during merge");
-                }
-            }
-        }
-
-        [Test]
-        [AwaitsFix(BugUrl = "https://github.com/apache/lucenenet/issues/269")] // LUCENENET TODO: this test occasionally fails
-        public void TestSubclassTaskMergeScheduler()
-        {
-            MockDirectoryWrapper dir = NewMockDirectory();
-            dir.FailOn(new FailOnlyOnMerge());
-
-            Document doc = new Document();
-            Field idField = NewStringField("id", "", Field.Store.YES);
-            doc.Add(idField);
-
-            IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(new MyMergeScheduler(this)).SetMaxBufferedDocs(2).SetRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetMergePolicy(NewLogMergePolicy()));
-            LogMergePolicy logMP = (LogMergePolicy)writer.Config.MergePolicy;
-            logMP.MergeFactor = 10;
-            for (int i = 0; i < 20; i++)
-            {
-                writer.AddDocument(doc);
-            }
-
-            ((MyMergeScheduler)writer.Config.MergeScheduler).Sync();
-            writer.Dispose();
-
-            assertTrue(mergeCalled);
-            dir.Dispose();
-        }
-
-        private class ReportingMergeScheduler : MergeScheduler
-        {
-            public override void Merge(IndexWriter writer, MergeTrigger trigger, bool newMergesFound)
-            {
-                MergePolicy.OneMerge merge = null;
-                while ((merge = writer.NextMerge()) != null)
-                {
-                    if (Verbose)
-                    {
-                        Console.WriteLine("executing merge " + merge.SegString(writer.Directory));
-                    }
-                    writer.Merge(merge);
-                }
-            }
-
-            protected override void Dispose(bool disposing)
-            {
-            }
-        }
-
-        [Test]
-        public void TestCustomMergeScheduler()
-        {
-            // we don't really need to execute anything, just to make sure the custom MS
-            // compiles. But ensure that it can be used as well, e.g., no other hidden
-            // dependencies or something. Therefore, don't use any random API !
-            Directory dir = new RAMDirectory();
-            IndexWriterConfig conf = new IndexWriterConfig(TEST_VERSION_CURRENT, null);
-            conf.SetMergeScheduler(new ReportingMergeScheduler());
-            IndexWriter writer = new IndexWriter(dir, conf);
-            writer.AddDocument(new Document());
-            writer.Commit(); // trigger flush
-            writer.AddDocument(new Document());
-            writer.Commit(); // trigger flush
-            writer.ForceMerge(1);
-            writer.Dispose();
-            dir.Dispose();
-        }
-
-        // LUCENENET-603
-        [Test, LuceneNetSpecific]
-        public void TestExceptionOnBackgroundThreadIsPropagatedToCallingThread()
-        {
-            using MockDirectoryWrapper dir = NewMockDirectory();
-            dir.FailOn(new FailOnlyOnMerge());
-
-            Document doc = new Document();
-            Field idField = NewStringField("id", "", Field.Store.YES);
-            doc.Add(idField);
-
-            var mergeScheduler = new TaskMergeScheduler();
-            using IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(mergeScheduler).SetMaxBufferedDocs(2).SetRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetMergePolicy(NewLogMergePolicy()));
-            LogMergePolicy logMP = (LogMergePolicy)writer.Config.MergePolicy;
-            logMP.MergeFactor = 10;
-            for (int i = 0; i < 20; i++)
-            {
-                writer.AddDocument(doc);
-            }
-
-            bool exceptionHit = false;
-            try
-            {
-                mergeScheduler.Sync();
-            }
-            catch (MergePolicy.MergeException)
-            {
-                exceptionHit = true;
-            }
-
-            assertTrue(exceptionHit);
-        }
-    }
-}
\ No newline at end of file


[lucenenet] 04/04: Directory.Build.targets: Removed FEATURE_CONCURRENTMERGESCHEDULER (see #354)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 6605cb9d8b536b7d695adcb1d84e78a417862f51
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Wed Feb 17 22:26:41 2021 +0700

    Directory.Build.targets: Removed FEATURE_CONCURRENTMERGESCHEDULER (see #354)
---
 Directory.Build.targets                               |  3 +--
 .../ByTask/Tasks/CreateIndexTask.cs                   | 15 +--------------
 src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs   | 19 +++----------------
 .../Index/TestConcurrentMergeScheduler.cs             |  6 ++----
 src/Lucene.Net.Tests/Index/TestIndexWriterConfig.cs   | 14 +-------------
 .../Index/TestIndexWriterExceptions.cs                |  7 +------
 src/Lucene.Net.Tests/Search/TestSearcherManager.cs    |  8 +-------
 src/Lucene.Net.Tests/TestMergeSchedulerExternal.cs    |  6 +-----
 src/Lucene.Net/Index/ConcurrentMergeScheduler.cs      |  6 ++----
 src/Lucene.Net/Index/IndexWriterConfig.cs             | 14 +-------------
 src/Lucene.Net/Index/LiveIndexWriterConfig.cs         |  6 +-----
 11 files changed, 15 insertions(+), 89 deletions(-)

diff --git a/Directory.Build.targets b/Directory.Build.targets
index d62cfbb..dc364c2 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -1,4 +1,4 @@
-<!--
+<!--
 
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
@@ -62,7 +62,6 @@
     <DefineConstants>$(DefineConstants);FEATURE_APPDOMAIN_ISFULLYTRUSTED</DefineConstants>
     <DefineConstants>$(DefineConstants);FEATURE_ASSEMBLY_GETCALLINGASSEMBLY</DefineConstants>
     <DefineConstants>$(DefineConstants);FEATURE_BITARRAY_COPYTO</DefineConstants>
-    <DefineConstants>$(DefineConstants);FEATURE_CONCURRENTMERGESCHEDULER</DefineConstants>
     <DefineConstants>$(DefineConstants);FEATURE_CULTUREINFO_GETCULTURES</DefineConstants>
     <DefineConstants>$(DefineConstants);FEATURE_DTD_PROCESSING</DefineConstants>
     <DefineConstants>$(DefineConstants);FEATURE_FILESTREAM_LOCK</DefineConstants>
diff --git a/src/Lucene.Net.Benchmark/ByTask/Tasks/CreateIndexTask.cs b/src/Lucene.Net.Benchmark/ByTask/Tasks/CreateIndexTask.cs
index 53a68a5..af63cfa 100644
--- a/src/Lucene.Net.Benchmark/ByTask/Tasks/CreateIndexTask.cs
+++ b/src/Lucene.Net.Benchmark/ByTask/Tasks/CreateIndexTask.cs
@@ -111,14 +111,7 @@ namespace Lucene.Net.Benchmarks.ByTask.Tasks
 
             string mergeScheduler = config.Get("merge.scheduler",
                                                      "Lucene.Net.Index.ConcurrentMergeScheduler, Lucene.Net");
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-            // LUCENENET specific - hack to get our TaskMergeScheduler
-            // when a ConcurrentMergeScheduler is requested.
-            if (mergeScheduler.Contains(".ConcurrentMergeScheduler,"))
-            {
-                mergeScheduler = "Lucene.Net.Index.TaskMergeScheduler, Lucene.Net";
-            }
-#endif
+
             Type mergeSchedulerType = Type.GetType(mergeScheduler);
             if (mergeSchedulerType == null)
             {
@@ -141,15 +134,9 @@ namespace Lucene.Net.Benchmarks.ByTask.Tasks
 
                 if (mergeScheduler.Equals("Lucene.Net.Index.ConcurrentMergeScheduler", StringComparison.Ordinal))
                 {
-#if FEATURE_CONCURRENTMERGESCHEDULER
                     ConcurrentMergeScheduler cms = (ConcurrentMergeScheduler)iwConf.MergeScheduler;
                     int maxThreadCount = config.Get("concurrent.merge.scheduler.max.thread.count", ConcurrentMergeScheduler.DEFAULT_MAX_THREAD_COUNT);
                     int maxMergeCount = config.Get("concurrent.merge.scheduler.max.merge.count", ConcurrentMergeScheduler.DEFAULT_MAX_MERGE_COUNT);
-#else
-                    TaskMergeScheduler cms = (TaskMergeScheduler)iwConf.MergeScheduler;
-                    int maxThreadCount = config.Get("concurrent.merge.scheduler.max.thread.count", 1);
-                    int maxMergeCount = config.Get("concurrent.merge.scheduler.max.merge.count", 2);
-#endif
                     cms.SetMaxMergesAndThreads(maxMergeCount, maxThreadCount);
                 }
             }
diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index 85679d3..70a99d2 100644
--- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -1563,22 +1563,9 @@ namespace Lucene.Net.Util
             {
                 int maxThreadCount = TestUtil.NextInt32(Random, 1, 4);
                 int maxMergeCount = TestUtil.NextInt32(Random, maxThreadCount, maxThreadCount + 4);
-                IConcurrentMergeScheduler mergeScheduler;
-
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-                mergeScheduler = new TaskMergeScheduler();
-#else
-                //if (Rarely(random))
-                //{
-                //    mergeScheduler = new TaskMergeScheduler();
-                //}
-                //else
-                {
-                    mergeScheduler = new ConcurrentMergeScheduler();
-                }
-#endif
-                mergeScheduler.SetMaxMergesAndThreads(maxMergeCount, maxThreadCount);
-                c.SetMergeScheduler(mergeScheduler);
+                IConcurrentMergeScheduler cms = new ConcurrentMergeScheduler();
+                cms.SetMaxMergesAndThreads(maxMergeCount, maxThreadCount);
+                c.SetMergeScheduler(cms);
             }
             if (random.NextBoolean())
             {
diff --git a/src/Lucene.Net.Tests/Index/TestConcurrentMergeScheduler.cs b/src/Lucene.Net.Tests/Index/TestConcurrentMergeScheduler.cs
index 3da3ece..a43aed1 100644
--- a/src/Lucene.Net.Tests/Index/TestConcurrentMergeScheduler.cs
+++ b/src/Lucene.Net.Tests/Index/TestConcurrentMergeScheduler.cs
@@ -1,5 +1,4 @@
-#if FEATURE_CONCURRENTMERGESCHEDULER
-using J2N.Threading.Atomic;
+using J2N.Threading.Atomic;
 using Lucene.Net.Attributes;
 using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
@@ -480,5 +479,4 @@ namespace Lucene.Net.Index
             assertTrue(exceptionHit);
         }
     }
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterConfig.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterConfig.cs
index 41e7f50..44652a4 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterConfig.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterConfig.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Util;
 using NUnit.Framework;
@@ -62,11 +62,7 @@ namespace Lucene.Net.Index
             Assert.AreEqual(typeof(MockAnalyzer), conf.Analyzer.GetType());
             Assert.IsNull(conf.IndexCommit);
             Assert.AreEqual(typeof(KeepOnlyLastCommitDeletionPolicy), conf.IndexDeletionPolicy.GetType());
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-            Assert.AreEqual(typeof(TaskMergeScheduler), conf.MergeScheduler.GetType());
-#else
             Assert.AreEqual(typeof(ConcurrentMergeScheduler), conf.MergeScheduler.GetType());
-#endif
             Assert.AreEqual(OpenMode.CREATE_OR_APPEND, conf.OpenMode);
             // we don't need to assert this, it should be unspecified
             Assert.IsTrue(IndexSearcher.DefaultSimilarity == conf.Similarity);
@@ -296,11 +292,7 @@ namespace Lucene.Net.Index
             Assert.IsTrue(mergeSched.GetType() == mergeSchedClone.GetType() && (mergeSched != mergeSchedClone || mergeSched.Clone() == mergeSchedClone.Clone()));
 
             conf.SetMergeScheduler(new SerialMergeScheduler());
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-            Assert.AreEqual(typeof(TaskMergeScheduler), clone.MergeScheduler.GetType());
-#else
             Assert.AreEqual(typeof(ConcurrentMergeScheduler), clone.MergeScheduler.GetType());
-#endif
         }
 
         [Test]
@@ -325,11 +317,7 @@ namespace Lucene.Net.Index
             }
 
             // Test MergeScheduler
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-            Assert.AreEqual(typeof(TaskMergeScheduler), conf.MergeScheduler.GetType());
-#else
             Assert.AreEqual(typeof(ConcurrentMergeScheduler), conf.MergeScheduler.GetType());
-#endif
             conf.SetMergeScheduler(new SerialMergeScheduler());
             Assert.AreEqual(typeof(SerialMergeScheduler), conf.MergeScheduler.GetType());
             try
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
index a597b86..41f6a11 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
@@ -2397,12 +2397,7 @@ namespace Lucene.Net.Index
             }
         }
 
-        private class ConcurrentMergeSchedulerAnonymousInnerClassHelper :
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-            TaskMergeScheduler
-#else
-            ConcurrentMergeScheduler
-#endif
+        private class ConcurrentMergeSchedulerAnonymousInnerClassHelper : ConcurrentMergeScheduler
         {
             protected override void HandleMergeException(Exception exc)
             {
diff --git a/src/Lucene.Net.Tests/Search/TestSearcherManager.cs b/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
index 7adc3aa..b559452 100644
--- a/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
+++ b/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
@@ -256,13 +256,7 @@ namespace Lucene.Net.Search
         {
             Directory dir = NewDirectory();
             // Test can deadlock if we use SMS:
-            IConcurrentMergeScheduler scheduler;
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-            scheduler = new TaskMergeScheduler();
-#else
-            scheduler = new ConcurrentMergeScheduler();
-#endif
-            IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(scheduler));
+            IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(new ConcurrentMergeScheduler()));
             writer.AddDocument(new Document());
             writer.Commit();
             CountdownEvent awaitEnterWarm = new CountdownEvent(1);
diff --git a/src/Lucene.Net.Tests/TestMergeSchedulerExternal.cs b/src/Lucene.Net.Tests/TestMergeSchedulerExternal.cs
index e33adcc..a440a06 100644
--- a/src/Lucene.Net.Tests/TestMergeSchedulerExternal.cs
+++ b/src/Lucene.Net.Tests/TestMergeSchedulerExternal.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
 using Lucene.Net.Util;
@@ -31,9 +31,7 @@ namespace Lucene.Net
     using MockAnalyzer = Lucene.Net.Analysis.MockAnalyzer;
     using Document = Documents.Document;
     using Field = Field;
-#if FEATURE_CONCURRENTMERGESCHEDULER
     using ConcurrentMergeScheduler = Lucene.Net.Index.ConcurrentMergeScheduler;
-#endif
     using IndexWriter = Lucene.Net.Index.IndexWriter;
     using IndexWriterConfig = Lucene.Net.Index.IndexWriterConfig;
     using LogMergePolicy = Lucene.Net.Index.LogMergePolicy;
@@ -52,7 +50,6 @@ namespace Lucene.Net
     /// </summary>
     public class TestMergeSchedulerExternal : LuceneTestCase
     {
-#if FEATURE_CONCURRENTMERGESCHEDULER
         internal volatile bool mergeCalled;
         internal volatile bool mergeThreadCreated;
         internal volatile bool excCalled;
@@ -139,7 +136,6 @@ namespace Lucene.Net
             Assert.IsTrue(excCalled);
             dir.Dispose();
         }
-#endif
 
         private class ReportingMergeScheduler : MergeScheduler
         {
diff --git a/src/Lucene.Net/Index/ConcurrentMergeScheduler.cs b/src/Lucene.Net/Index/ConcurrentMergeScheduler.cs
index 6a48765..d6ce849 100644
--- a/src/Lucene.Net/Index/ConcurrentMergeScheduler.cs
+++ b/src/Lucene.Net/Index/ConcurrentMergeScheduler.cs
@@ -1,5 +1,4 @@
-#if FEATURE_CONCURRENTMERGESCHEDULER
-using J2N.Threading;
+using J2N.Threading;
 using Lucene.Net.Diagnostics;
 using System;
 using System.Collections.Generic;
@@ -747,5 +746,4 @@ namespace Lucene.Net.Index
             return clone;
         }
     }
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Lucene.Net/Index/IndexWriterConfig.cs b/src/Lucene.Net/Index/IndexWriterConfig.cs
index a525a9b..ef33649 100644
--- a/src/Lucene.Net/Index/IndexWriterConfig.cs
+++ b/src/Lucene.Net/Index/IndexWriterConfig.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Util;
+using Lucene.Net.Util;
 using System;
 using System.IO;
 using System.Text;
@@ -272,17 +272,6 @@ namespace Lucene.Net.Index
             set => similarity = value ?? throw new ArgumentNullException(nameof(value), "Similarity must not be null");
         }
 
-
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-        /// <summary>
-        /// Expert: Gets or sets the merge scheduler used by this writer. The default is
-        /// <see cref="TaskMergeScheduler"/>.
-        /// <para/>
-        /// <b>NOTE:</b> the merge scheduler cannot be <c>null</c>.
-        ///
-        /// <para/>Only takes effect when <see cref="IndexWriter"/> is first created.
-        /// </summary>
-#else
         /// <summary>
         /// Expert: Gets or sets the merge scheduler used by this writer. The default is
         /// <see cref="ConcurrentMergeScheduler"/>.
@@ -291,7 +280,6 @@ namespace Lucene.Net.Index
         ///
         /// <para/>Only takes effect when <see cref="IndexWriter"/> is first created.
         /// </summary>
-#endif
         // LUCENENET NOTE: We cannot override a getter and add a setter, 
         // so must declare it new. See: http://stackoverflow.com/q/82437
         new public IMergeScheduler MergeScheduler
diff --git a/src/Lucene.Net/Index/LiveIndexWriterConfig.cs b/src/Lucene.Net/Index/LiveIndexWriterConfig.cs
index b564d45..a4f8c63 100644
--- a/src/Lucene.Net/Index/LiveIndexWriterConfig.cs
+++ b/src/Lucene.Net/Index/LiveIndexWriterConfig.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Util;
+using Lucene.Net.Util;
 using System;
 using System.Text;
 
@@ -153,11 +153,7 @@ namespace Lucene.Net.Index
             useCompoundFile = IndexWriterConfig.DEFAULT_USE_COMPOUND_FILE_SYSTEM;
             openMode = Index.OpenMode.CREATE_OR_APPEND;
             similarity = IndexSearcher.DefaultSimilarity;
-#if !FEATURE_CONCURRENTMERGESCHEDULER
-            mergeScheduler = new TaskMergeScheduler();
-#else
             mergeScheduler = new ConcurrentMergeScheduler();
-#endif
             writeLockTimeout = IndexWriterConfig.WRITE_LOCK_TIMEOUT;
             indexingChain = DocumentsWriterPerThread.DefaultIndexingChain;
             codec = Codec.Default;


[lucenenet] 02/04: BREAKING: Lucene.Net.TestFramework.Util.LuceneTestCase: Removed ConcurrentMergeSchedulerFactories class from the public API and its use from all tests (see #354)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 668069e039ed3e47d1fe691a4b7da842c50aac1b
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Wed Feb 17 21:40:38 2021 +0700

    BREAKING: Lucene.Net.TestFramework.Util.LuceneTestCase: Removed ConcurrentMergeSchedulerFactories class from the public API and its use from all tests (see #354)
---
 .../Util/LuceneTestCase.cs                         | 28 -------
 .../Index/Test2BBinaryDocValues.cs                 | 10 +--
 .../Index/Test2BNumericDocValues.cs                | 13 ++-
 src/Lucene.Net.Tests/Index/Test2BPositions.cs      | 13 ++-
 src/Lucene.Net.Tests/Index/Test2BPostings.cs       |  6 +-
 src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs  |  6 +-
 .../Index/Test2BSortedDocValues.cs                 | 10 +--
 src/Lucene.Net.Tests/Index/Test2BTerms.cs          |  6 +-
 src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs  |  6 +-
 src/Lucene.Net.Tests/Index/TestCrash.cs            | 41 ++++-----
 src/Lucene.Net.Tests/Index/TestIndexWriter.cs      |  5 +-
 .../Index/TestIndexWriterDelete.cs                 | 16 ++--
 .../Index/TestIndexWriterExceptions.cs             | 51 ++++--------
 .../Index/TestIndexWriterForceMerge.cs             |  6 +-
 .../Index/TestIndexWriterMergePolicy.cs            |  6 +-
 .../Index/TestIndexWriterOnDiskFull.cs             |  6 +-
 .../Index/TestIndexWriterReader.cs                 | 10 +--
 .../Index/TestIndexWriterWithThreads.cs            | 96 ++++++++++------------
 src/Lucene.Net.Tests/Index/TestStressIndexing.cs   |  6 +-
 src/Lucene.Net.Tests/Index/TestTransactions.cs     | 25 ++----
 src/Lucene.Net.Tests/Search/TestSearcherManager.cs |  8 +-
 21 files changed, 156 insertions(+), 218 deletions(-)

diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index 6a458a4..85679d3 100644
--- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -3549,34 +3549,6 @@ namespace Lucene.Net.Util
             }
         }
 
-        /// <summary>
-        /// Contains a list of the Func&lt;IConcurrentMergeSchedulers&gt; to be tested.
-        /// Delegate method allows them to be created on their target thread instead of the test thread
-        /// and also ensures a separate instance is created in each case (which can affect the result of the test).
-        /// <para/>
-        /// The <see cref="TaskMergeScheduler"/> is only rarely included.
-        /// <para/>
-        /// LUCENENET specific for injection into tests (i.e. using NUnit.Framework.ValueSourceAttribute)
-        /// </summary>
-        public static class ConcurrentMergeSchedulerFactories
-        {
-            public static IList<Func<IConcurrentMergeScheduler>> Values
-            {
-                get
-                {
-                    var schedulerFactories = new List<Func<IConcurrentMergeScheduler>>();
-#if FEATURE_CONCURRENTMERGESCHEDULER
-                    schedulerFactories.Add(() => new ConcurrentMergeScheduler());
-                    //if (Rarely())
-                    //    schedulerFactories.Add(() => new TaskMergeScheduler());
-#else
-                    schedulerFactories.Add(() => new TaskMergeScheduler());
-#endif
-                    return schedulerFactories;
-                }
-            }
-        }
-
         internal static void LogNativeFSFactoryDebugInfo()
         {
             // LUCENENET specific - log the current locking strategy used and HResult values
diff --git a/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs b/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs
index 9d2ef61..f400c47 100644
--- a/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
 using NUnit.Framework;
@@ -42,7 +42,7 @@ namespace Lucene.Net.Index
     {
         // indexes Integer.MAX_VALUE docs with a fixed binary field
         [Test]
-        public virtual void TestFixedBinary([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestFixedBinary()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BFixedBinary"));
             if (dir is MockDirectoryWrapper)
@@ -52,7 +52,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);
@@ -108,7 +108,7 @@ namespace Lucene.Net.Index
 
         // indexes Integer.MAX_VALUE docs with a variable binary field
         [Test]
-        public virtual void TestVariableBinary([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestVariableBinary()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BVariableBinary"));
             if (dir is MockDirectoryWrapper)
@@ -119,7 +119,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);
diff --git a/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs b/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs
index 252b31f..6458705 100644
--- a/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
 using NUnit.Framework;
@@ -40,7 +40,7 @@ namespace Lucene.Net.Index
     {
         // indexes Integer.MAX_VALUE docs with an increasing dv field
         [Test]
-        public virtual void TestNumerics([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestNumerics()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BNumerics"));
             if (dir is MockDirectoryWrapper)
@@ -48,8 +48,13 @@ namespace Lucene.Net.Index
                 ((MockDirectoryWrapper)dir).Throttling = Throttling.NEVER;
             }
 
-            IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-           .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(newScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(OpenMode.CREATE));
+            IndexWriter w = new IndexWriter(dir,
+                new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
+                .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+                .SetRAMBufferSizeMB(256.0)
+                .SetMergeScheduler(new ConcurrentMergeScheduler())
+                .SetMergePolicy(NewLogMergePolicy(false, 10))
+                .SetOpenMode(OpenMode.CREATE));
 
             Document doc = new Document();
             NumericDocValuesField dvField = new NumericDocValuesField("dv", 0);
diff --git a/src/Lucene.Net.Tests/Index/Test2BPositions.cs b/src/Lucene.Net.Tests/Index/Test2BPositions.cs
index f56a056..aeed283 100644
--- a/src/Lucene.Net.Tests/Index/Test2BPositions.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BPositions.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Analysis.TokenAttributes;
+using Lucene.Net.Analysis.TokenAttributes;
 using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
@@ -46,7 +46,7 @@ namespace Lucene.Net.Index
     {
         [Ignore("Very slow. Enable manually by removing Ignore.")]
         [Test]
-        public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void Test()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BPositions"));
             if (dir is MockDirectoryWrapper)
@@ -54,8 +54,13 @@ namespace Lucene.Net.Index
                 ((MockDirectoryWrapper)dir).Throttling = Throttling.NEVER;
             }
 
-            IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-           .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(newScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(OpenMode.CREATE));
+            IndexWriter w = new IndexWriter(dir,
+                new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
+                .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+                .SetRAMBufferSizeMB(256.0)
+                .SetMergeScheduler(new ConcurrentMergeScheduler())
+                .SetMergePolicy(NewLogMergePolicy(false, 10))
+                .SetOpenMode(OpenMode.CREATE));
 
             MergePolicy mp = w.Config.MergePolicy;
             if (mp is LogByteSizeMergePolicy)
diff --git a/src/Lucene.Net.Tests/Index/Test2BPostings.cs b/src/Lucene.Net.Tests/Index/Test2BPostings.cs
index 09a6fe5..19640a9 100644
--- a/src/Lucene.Net.Tests/Index/Test2BPostings.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BPostings.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Analysis.TokenAttributes;
+using Lucene.Net.Analysis.TokenAttributes;
 using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
@@ -46,7 +46,7 @@ namespace Lucene.Net.Index
         [Test]
         [Nightly]
         [Ignore("LUCENENET specific - takes too long to run on Azure DevOps")]
-        public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void Test()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BPostings"));
             if (dir is MockDirectoryWrapper)
@@ -57,7 +57,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
 
diff --git a/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs b/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs
index cdad4d6..ee3cd39 100644
--- a/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Analysis.TokenAttributes;
+using Lucene.Net.Analysis.TokenAttributes;
 using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
@@ -50,7 +50,7 @@ namespace Lucene.Net.Index
     {
         [Ignore("Very slow. Enable manually by removing Ignore.")]
         [Test]
-        public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void Test()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BPostingsBytes1"));
             if (dir is MockDirectoryWrapper)
@@ -61,7 +61,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);
diff --git a/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs b/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs
index 881a4f8..5af76e5 100644
--- a/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
 using NUnit.Framework;
@@ -40,7 +40,7 @@ namespace Lucene.Net.Index
     {
         // indexes Integer.MAX_VALUE docs with a fixed binary field
         [Test]
-        public virtual void TestFixedSorted([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestFixedSorted()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BFixedSorted"));
             if (dir is MockDirectoryWrapper)
@@ -51,7 +51,7 @@ namespace Lucene.Net.Index
             IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                                 .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                                 .SetRAMBufferSizeMB(256.0)
-                                .SetMergeScheduler(newScheduler())
+                                .SetMergeScheduler(new ConcurrentMergeScheduler())
                                 .SetMergePolicy(NewLogMergePolicy(false, 10))
                                 .SetOpenMode(OpenMode.CREATE));
 
@@ -102,7 +102,7 @@ namespace Lucene.Net.Index
 
         // indexes Integer.MAX_VALUE docs with a fixed binary field
         [Test]
-        public virtual void Test2BOrds([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void Test2BOrds()
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BOrds"));
             if (dir is MockDirectoryWrapper)
@@ -113,7 +113,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);
diff --git a/src/Lucene.Net.Tests/Index/Test2BTerms.cs b/src/Lucene.Net.Tests/Index/Test2BTerms.cs
index a60a541..3398ad2 100644
--- a/src/Lucene.Net.Tests/Index/Test2BTerms.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BTerms.cs
@@ -1,4 +1,4 @@
-using J2N.Collections.Generic.Extensions;
+using J2N.Collections.Generic.Extensions;
 using Lucene.Net.Analysis;
 using Lucene.Net.Analysis.TokenAttributes;
 using Lucene.Net.Documents;
@@ -164,7 +164,7 @@ namespace Lucene.Net.Index
 
         [Ignore("Very slow. Enable manually by removing Ignore.")]
         [Test]
-        public virtual void Test2BTerms_Mem([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void Test2BTerms_Mem()
         {
             if ("Lucene3x".Equals(Codec.Default.Name, StringComparison.Ordinal))
             {
@@ -190,7 +190,7 @@ namespace Lucene.Net.Index
                 IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                                            .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                                            .SetRAMBufferSizeMB(256.0)
-                                           .SetMergeScheduler(newScheduler())
+                                           .SetMergeScheduler(new ConcurrentMergeScheduler())
                                            .SetMergePolicy(NewLogMergePolicy(false, 10))
                                            .SetOpenMode(OpenMode.CREATE));
 
diff --git a/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs b/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs
index 1a89d4c..731fcd4 100644
--- a/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs
+++ b/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Randomized.Generators;
 using Lucene.Net.Store;
@@ -47,7 +47,7 @@ namespace Lucene.Net.Index
         [Test]
         [Nightly]
         [Timeout(1200000)]
-        public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void Test()
         {
             // LUCENENET specific - disable the test if not 64 bit
             AssumeTrue("This test consumes too much RAM be run on x86.", Constants.RUNTIME_IS_64BIT);
@@ -58,7 +58,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);
diff --git a/src/Lucene.Net.Tests/Index/TestCrash.cs b/src/Lucene.Net.Tests/Index/TestCrash.cs
index 37cd69e..e079493 100644
--- a/src/Lucene.Net.Tests/Index/TestCrash.cs
+++ b/src/Lucene.Net.Tests/Index/TestCrash.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using NUnit.Framework;
 using System;
@@ -35,19 +35,19 @@ namespace Lucene.Net.Index
     [TestFixture]
     public class TestCrash : LuceneTestCase
     {
-        private IndexWriter InitIndex(Func<IConcurrentMergeScheduler> newScheduler, Random random, bool initialCommit)
+        private IndexWriter InitIndex(Random random, bool initialCommit)
         {
-            return InitIndex(newScheduler, random, NewMockDirectory(random), initialCommit);
+            return InitIndex(random, NewMockDirectory(random), initialCommit);
         }
 
-        private IndexWriter InitIndex(Func<IConcurrentMergeScheduler> newScheduler, Random random, MockDirectoryWrapper dir, bool initialCommit)
+        private IndexWriter InitIndex(Random random, MockDirectoryWrapper dir, bool initialCommit)
         {
             dir.SetLockFactory(NoLockFactory.GetNoLockFactory());
 
             IndexWriter writer = new IndexWriter(dir,
                 NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random))
                 .SetMaxBufferedDocs(10)
-                .SetMergeScheduler(newScheduler()));
+                .SetMergeScheduler(new ConcurrentMergeScheduler()));
 
             IConcurrentMergeScheduler scheduler = writer.Config.MergeScheduler as IConcurrentMergeScheduler;
             if (scheduler != null)
@@ -82,13 +82,12 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestCrashWhileIndexing(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestCrashWhileIndexing()
         {
             // this test relies on being able to open a reader before any commit
             // happened, so we must create an initial commit just to allow that, but
             // before any documents were added.
-            IndexWriter writer = InitIndex(newScheduler, Random, true);
+            IndexWriter writer = InitIndex(Random, true);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             // We create leftover files because merging could be
@@ -116,15 +115,13 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestWriterAfterCrash(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler1,
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler2)
+        public virtual void TestWriterAfterCrash()
         {
             // this test relies on being able to open a reader before any commit
             // happened, so we must create an initial commit just to allow that, but
             // before any documents were added.
             Console.WriteLine("TEST: initIndex");
-            IndexWriter writer = InitIndex(newScheduler1, Random, true);
+            IndexWriter writer = InitIndex(Random, true);
             Console.WriteLine("TEST: done initIndex");
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
@@ -135,7 +132,7 @@ namespace Lucene.Net.Index
             dir.PreventDoubleWrite = false;
             Console.WriteLine("TEST: now crash");
             Crash(writer);
-            writer = InitIndex(newScheduler2, Random, dir, false);
+            writer = InitIndex(Random, dir, false);
             writer.Dispose();
 
             IndexReader reader = DirectoryReader.Open(dir);
@@ -157,11 +154,9 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestCrashAfterReopen(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler1,
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler2)
+        public virtual void TestCrashAfterReopen()
         {
-            IndexWriter writer = InitIndex(newScheduler1, Random, false);
+            IndexWriter writer = InitIndex(Random, false);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             // We create leftover files because merging could be
@@ -169,7 +164,7 @@ namespace Lucene.Net.Index
             dir.AssertNoUnreferencedFilesOnClose = false;
 
             writer.Dispose();
-            writer = InitIndex(newScheduler2, Random, dir, false);
+            writer = InitIndex(Random, dir, false);
             Assert.AreEqual(314, writer.MaxDoc);
             Crash(writer);
 
@@ -201,10 +196,9 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestCrashAfterClose(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestCrashAfterClose()
         {
-            IndexWriter writer = InitIndex(newScheduler, Random, false);
+            IndexWriter writer = InitIndex(Random, false);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             writer.Dispose();
@@ -224,10 +218,9 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestCrashAfterCloseNoWait(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestCrashAfterCloseNoWait()
         {
-            IndexWriter writer = InitIndex(newScheduler, Random, false);
+            IndexWriter writer = InitIndex(Random, false);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             writer.Dispose(false);
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriter.cs b/src/Lucene.Net.Tests/Index/TestIndexWriter.cs
index dc706d8..cd80f74 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriter.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriter.cs
@@ -242,14 +242,13 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestChangesAfterClose([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestChangesAfterClose()
         {
             Directory dir = NewDirectory();
 
             IndexWriter writer = null;
 
-            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(newScheduler());
-            writer = new IndexWriter(dir, config);
+            writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)));
             AddDoc(writer);
 
             // close
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs
index a17cd1f..8ab55c3 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs
@@ -1,4 +1,4 @@
-using J2N.Collections.Generic.Extensions;
+using J2N.Collections.Generic.Extensions;
 using J2N.Threading;
 using J2N.Threading.Atomic;
 using Lucene.Net.Analysis;
@@ -551,24 +551,22 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestDeletesOnDiskFull(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestDeletesOnDiskFull()
         {
-            DoTestOperationsOnDiskFull(newScheduler, false);
+            DoTestOperationsOnDiskFull(false);
         }
 
         [Test]
-        public virtual void TestUpdatesOnDiskFull(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestUpdatesOnDiskFull()
         {
-            DoTestOperationsOnDiskFull(newScheduler, true);
+            DoTestOperationsOnDiskFull(true);
         }
 
         /// <summary>
         /// Make sure if modifier tries to commit but hits disk full that modifier
         /// remains consistent and usable. Similar to TestIndexReader.testDiskFull().
         /// </summary>
-        private void DoTestOperationsOnDiskFull(Func<IConcurrentMergeScheduler> newScheduler, bool updates)
+        private void DoTestOperationsOnDiskFull(bool updates)
         {
             Term searchTerm = new Term("content", "aaa");
             int START_COUNT = 157;
@@ -613,7 +611,7 @@ namespace Lucene.Net.Index
                 var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random, MockTokenizer.WHITESPACE, false))
                                 .SetMaxBufferedDocs(1000)
                                 .SetMaxBufferedDeleteTerms(1000)
-                                .SetMergeScheduler(newScheduler());
+                                .SetMergeScheduler(new ConcurrentMergeScheduler());
 
                 IConcurrentMergeScheduler scheduler = config.MergeScheduler as IConcurrentMergeScheduler;
                 if (scheduler != null)
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
index 35b944d..a597b86 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
@@ -318,7 +318,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestRandomExceptions([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestRandomExceptions()
         {
             if (Verbose)
             {
@@ -329,19 +329,9 @@ namespace Lucene.Net.Index
             MockAnalyzer analyzer = new MockAnalyzer(Random);
             analyzer.EnableChecks = false; // disable workflow checking as we forcefully close() in exceptional cases.
 
-
-            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
-                            .SetRAMBufferSizeMB(0.1)
-                            .SetMergeScheduler(newScheduler());
-
-            var scheduler = config.MergeScheduler as IConcurrentMergeScheduler;
-            if (scheduler != null)
-            {
-                scheduler.SetSuppressExceptions();
-            }
-            
-
-            IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, config , new TestPoint1(this));
+            IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
+                .SetRAMBufferSizeMB(0.1).SetMergeScheduler(new ConcurrentMergeScheduler()) , new TestPoint1(this));
+            ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
             //writer.SetMaxBufferedDocs(10);
             if (Verbose)
             {
@@ -386,24 +376,15 @@ namespace Lucene.Net.Index
 
         [Test]
         [Slow]
-        public virtual void TestRandomExceptionsThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestRandomExceptionsThreads()
         {
             Directory dir = NewDirectory();
             MockAnalyzer analyzer = new MockAnalyzer(Random);
             analyzer.EnableChecks = false; // disable workflow checking as we forcefully close() in exceptional cases.
 
-            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
-                            .SetRAMBufferSizeMB(0.2)
-                            .SetMergeScheduler(newScheduler());
-
-            IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, config, new TestPoint1(this));
-
-            var scheduler = config.MergeScheduler as IConcurrentMergeScheduler;
-            if (scheduler != null)
-            {
-                scheduler.SetSuppressExceptions();
-            }
-
+            IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
+                .SetRAMBufferSizeMB(0.2).SetMergeScheduler(new ConcurrentMergeScheduler()), new TestPoint1(this));
+            ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
             //writer.SetMaxBufferedDocs(10);
             writer.Commit();
 
@@ -578,15 +559,15 @@ namespace Lucene.Net.Index
 
         // LUCENE-1210
         [Test]
-        public virtual void TestExceptionOnMergeInit([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestExceptionOnMergeInit()
         {
             // LUCENENET specific - disable the test if asserts are not enabled
             AssumeTrue("This test requires asserts to be enabled.", Debugging.AssertsEnabled);
 
             Directory dir = NewDirectory();
-            IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMaxBufferedDocs(2).SetMergePolicy(NewLogMergePolicy());
-
-            var cms = newScheduler();
+            IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
+                .SetMaxBufferedDocs(2).SetMergePolicy(NewLogMergePolicy());
+            var cms = new ConcurrentMergeScheduler();
             cms.SetSuppressExceptions();
             conf.SetMergeScheduler(cms);
             ((LogMergePolicy)conf.MergePolicy).MergeFactor = 2;
@@ -1064,7 +1045,7 @@ namespace Lucene.Net.Index
 
         // LUCENE-1044: test exception during sync
         [Test]
-        public virtual void TestExceptionDuringSync([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestExceptionDuringSync()
         {
             MockDirectoryWrapper dir = NewMockDirectory();
             FailOnlyInSync failure = new FailOnlyInSync();
@@ -1072,7 +1053,7 @@ namespace Lucene.Net.Index
 
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(2)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy(5));
 
             IndexWriter writer = new IndexWriter(dir, config);
@@ -1188,7 +1169,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestForceMergeExceptions([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestForceMergeExceptions()
         {
             Directory startDir = NewDirectory();
             IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMaxBufferedDocs(2).SetMergePolicy(NewLogMergePolicy());
@@ -1208,7 +1189,7 @@ namespace Lucene.Net.Index
                     Console.WriteLine("TEST: iter " + i);
                 }
                 MockDirectoryWrapper dir = new MockDirectoryWrapper(Random, new RAMDirectory(startDir, NewIOContext(Random)));
-                conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(newScheduler());
+                conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(new ConcurrentMergeScheduler());
                 var scheduler = conf.MergeScheduler as IConcurrentMergeScheduler;
                 if (scheduler != null)
                 {
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs
index f1640f6..d0c9c07 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using NUnit.Framework;
 using System;
@@ -86,7 +86,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestMaxNumSegments2([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestMaxNumSegments2()
         {
             Directory dir = NewDirectory();
 
@@ -99,7 +99,7 @@ namespace Lucene.Net.Index
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(2)
                             .SetMergePolicy(ldmp)
-                            .SetMergeScheduler(newScheduler());
+                            .SetMergeScheduler(new ConcurrentMergeScheduler());
             IndexWriter writer = new IndexWriter(dir, config);
 
             for (int iter = 0; iter < 10; iter++)
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs
index b25f422..c04b652 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Documents;
+using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using NUnit.Framework;
 using System;
@@ -179,7 +179,7 @@ namespace Lucene.Net.Index
 
         // Test the case where a merge results in no doc at all
         [Test]
-        public virtual void TestMergeDocCount0([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestMergeDocCount0()
         {
             Directory dir = NewDirectory();
 
@@ -205,7 +205,7 @@ namespace Lucene.Net.Index
                 .SetOpenMode(OpenMode.APPEND)
                 .SetMaxBufferedDocs(10)
                 .SetMergePolicy(ldmp)
-                .SetMergeScheduler(newScheduler());
+                .SetMergeScheduler(new ConcurrentMergeScheduler());
             writer = new IndexWriter(dir, config);
 
             // merge factor is changed, so check invariants after all adds
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs
index 5e89cff..cbe0089 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Codecs;
+using Lucene.Net.Codecs;
 using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
@@ -637,12 +637,12 @@ namespace Lucene.Net.Index
         // an IndexWriter (hit during DW.ThreadState.Init()) is
         // OK:
         [Test]
-        public virtual void TestImmediateDiskFull([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestImmediateDiskFull()
         {
             MockDirectoryWrapper dir = NewMockDirectory();
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(2)
-                            .SetMergeScheduler(newScheduler());
+                            .SetMergeScheduler(new ConcurrentMergeScheduler());
             IndexWriter writer = new IndexWriter(dir, config);
             dir.MaxSizeInBytes = Math.Max(1, dir.GetRecomputedActualSizeInBytes());
             Document doc = new Document();
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs
index 34faea0..cc4a9eb 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs
@@ -1,4 +1,4 @@
-using J2N.Threading;
+using J2N.Threading;
 using J2N.Threading.Atomic;
 using Lucene.Net.Attributes;
 using Lucene.Net.Documents;
@@ -749,7 +749,7 @@ namespace Lucene.Net.Index
 
         [Test]
         [Slow]
-        public virtual void TestMergeWarmer([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestMergeWarmer()
         {
             Directory dir1 = GetAssertNoDeletesDirectory(NewDirectory());
             // Enroll warmer
@@ -757,7 +757,7 @@ namespace Lucene.Net.Index
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
                             .SetMaxBufferedDocs(2)
                             .SetMergedSegmentWarmer(warmer)
-                            .SetMergeScheduler(newScheduler())
+                            .SetMergeScheduler(new ConcurrentMergeScheduler())
                             .SetMergePolicy(NewLogMergePolicy());
             IndexWriter writer = new IndexWriter(dir1, config);
 
@@ -792,10 +792,10 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestAfterCommit([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestAfterCommit()
         {
             Directory dir1 = GetAssertNoDeletesDirectory(NewDirectory());
-            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(newScheduler());
+            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(new ConcurrentMergeScheduler());
             IndexWriter writer = new IndexWriter(dir1, config);
             writer.Commit();
 
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
index 36c2d7f..342f2d9 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
@@ -1,4 +1,4 @@
-using J2N.Threading;
+using J2N.Threading;
 using J2N.Threading.Atomic;
 using Lucene.Net.Attributes;
 using Lucene.Net.Documents;
@@ -164,7 +164,7 @@ namespace Lucene.Net.Index
         // an IndexWriter (hit during DW.ThreadState.Init()), with
         // multiple threads, is OK:
         [Test]
-        public virtual void TestImmediateDiskFullWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestImmediateDiskFullWithThreads()
         {
             int NUM_THREADS = 3;
             int numIterations = TestNightly ? 10 : 3;
@@ -175,16 +175,14 @@ namespace Lucene.Net.Index
                     Console.WriteLine("\nTEST: iter=" + iter);
                 }
                 MockDirectoryWrapper dir = NewMockDirectory();
-                var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-                                .SetMaxBufferedDocs(2)
-                                .SetMergeScheduler(newScheduler())
-                                .SetMergePolicy(NewLogMergePolicy(4));
-                IndexWriter writer = new IndexWriter(dir, config);
-                var scheduler = config.mergeScheduler as IConcurrentMergeScheduler;
-                if (scheduler != null)
-                {
-                    scheduler.SetSuppressExceptions();
-                }
+                IndexWriter writer = new IndexWriter(
+                    dir,
+                    NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
+                        .SetMaxBufferedDocs(2)
+                        .SetMergeScheduler(new ConcurrentMergeScheduler())
+                        .SetMergePolicy(NewLogMergePolicy(4)));
+                ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
+
                 dir.MaxSizeInBytes = 4 * 1024 + 20 * iter;
 
                 IndexerThread[] threads = new IndexerThread[NUM_THREADS];
@@ -220,7 +218,7 @@ namespace Lucene.Net.Index
         // speaking, this isn't valid us of Lucene's APIs, but we
         // still want to be robust to this case:
         [Test]
-        public virtual void TestCloseWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestCloseWithThreads()
         {
             int NUM_THREADS = 3;
             int numIterations = TestNightly ? 7 : 3;
@@ -231,16 +229,13 @@ namespace Lucene.Net.Index
                     Console.WriteLine("\nTEST: iter=" + iter);
                 }
                 Directory dir = NewDirectory();
-                var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-                                .SetMaxBufferedDocs(10)
-                                .SetMergeScheduler(newScheduler())
-                                .SetMergePolicy(NewLogMergePolicy(4));
-                IndexWriter writer = new IndexWriter(dir, config);
-                var scheduler = config.mergeScheduler as IConcurrentMergeScheduler;
-                if (scheduler != null)
-                {
-                    scheduler.SetSuppressExceptions();
-                }
+                IndexWriter writer = new IndexWriter(
+                    dir,
+                    NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
+                        .SetMaxBufferedDocs(10)
+                        .SetMergeScheduler(new ConcurrentMergeScheduler())
+                        .SetMergePolicy(NewLogMergePolicy(4)));
+                ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
 
                 IndexerThread[] threads = new IndexerThread[NUM_THREADS];
 
@@ -314,7 +309,7 @@ namespace Lucene.Net.Index
 
         // Runs test, with multiple threads, using the specific
         // failure to trigger an IOException
-        public virtual void TestMultipleThreadsFailure(Func<IConcurrentMergeScheduler> newScheduler, Failure failure)
+        public virtual void TestMultipleThreadsFailure(Failure failure)
         {
             int NUM_THREADS = 3;
 
@@ -325,16 +320,13 @@ namespace Lucene.Net.Index
                     Console.WriteLine("TEST: iter=" + iter);
                 }
                 MockDirectoryWrapper dir = NewMockDirectory();
-                var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-                                .SetMaxBufferedDocs(2)
-                                .SetMergeScheduler(newScheduler())
-                                .SetMergePolicy(NewLogMergePolicy(4));
-                IndexWriter writer = new IndexWriter(dir, config);
-                var scheduler = config.mergeScheduler as IConcurrentMergeScheduler;
-                if (scheduler != null)
-                {
-                    scheduler.SetSuppressExceptions();
-                }
+                IndexWriter writer = new IndexWriter(
+                    dir,
+                    NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
+                        .SetMaxBufferedDocs(2)
+                        .SetMergeScheduler(new ConcurrentMergeScheduler())
+                        .SetMergePolicy(NewLogMergePolicy(4)));
+                ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
 
                 IndexerThread[] threads = new IndexerThread[NUM_THREADS];
 
@@ -396,11 +388,11 @@ namespace Lucene.Net.Index
 
         // Runs test, with one thread, using the specific failure
         // to trigger an IOException
-        public virtual void TestSingleThreadFailure(Func<IConcurrentMergeScheduler> newScheduler, Failure failure)
+        public virtual void TestSingleThreadFailure(Failure failure)
         {
             MockDirectoryWrapper dir = NewMockDirectory();
 
-            IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMaxBufferedDocs(2).SetMergeScheduler(newScheduler()));
+            IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMaxBufferedDocs(2).SetMergeScheduler(new ConcurrentMergeScheduler()));
             Document doc = new Document();
             FieldType customType = new FieldType(TextField.TYPE_STORED);
             customType.StoreTermVectors = true;
@@ -475,33 +467,33 @@ namespace Lucene.Net.Index
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), is OK:
         [Test]
-        public virtual void TestIOExceptionDuringAbort([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringAbort()
         {
-            TestSingleThreadFailure(newScheduler, new FailOnlyOnAbortOrFlush(false));
+            TestSingleThreadFailure(new FailOnlyOnAbortOrFlush(false));
         }
 
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), is OK:
         [Test]
-        public virtual void TestIOExceptionDuringAbortOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringAbortOnlyOnce()
         {
-            TestSingleThreadFailure(newScheduler, new FailOnlyOnAbortOrFlush(true));
+            TestSingleThreadFailure(new FailOnlyOnAbortOrFlush(true));
         }
 
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), with multiple threads, is OK:
         [Test]
-        public virtual void TestIOExceptionDuringAbortWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringAbortWithThreads()
         {
-            TestMultipleThreadsFailure(newScheduler, new FailOnlyOnAbortOrFlush(false));
+            TestMultipleThreadsFailure(new FailOnlyOnAbortOrFlush(false));
         }
 
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), with multiple threads, is OK:
         [Test]
-        public virtual void TestIOExceptionDuringAbortWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringAbortWithThreadsOnlyOnce()
         {
-            TestMultipleThreadsFailure(newScheduler, new FailOnlyOnAbortOrFlush(true));
+            TestMultipleThreadsFailure( new FailOnlyOnAbortOrFlush(true));
         }
 
         // Throws IOException during DocumentsWriter.writeSegment
@@ -536,30 +528,30 @@ namespace Lucene.Net.Index
 
         // LUCENE-1130: test IOException in writeSegment
         [Test]
-        public virtual void TestIOExceptionDuringWriteSegment([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringWriteSegment()
         {
-            TestSingleThreadFailure(newScheduler, new FailOnlyInWriteSegment(false));
+            TestSingleThreadFailure(new FailOnlyInWriteSegment(false));
         }
 
         // LUCENE-1130: test IOException in writeSegment
         [Test]
-        public virtual void TestIOExceptionDuringWriteSegmentOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringWriteSegmentOnlyOnce()
         {
-            TestSingleThreadFailure(newScheduler, new FailOnlyInWriteSegment(true));
+            TestSingleThreadFailure(new FailOnlyInWriteSegment(true));
         }
 
         // LUCENE-1130: test IOException in writeSegment, with threads
         [Test]
-        public virtual void TestIOExceptionDuringWriteSegmentWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringWriteSegmentWithThreads()
         {
-            TestMultipleThreadsFailure(newScheduler, new FailOnlyInWriteSegment(false));
+            TestMultipleThreadsFailure(new FailOnlyInWriteSegment(false));
         }
 
         // LUCENE-1130: test IOException in writeSegment, with threads
         [Test]
-        public virtual void TestIOExceptionDuringWriteSegmentWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestIOExceptionDuringWriteSegmentWithThreadsOnlyOnce()
         {
-            TestMultipleThreadsFailure(newScheduler, new FailOnlyInWriteSegment(true));
+            TestMultipleThreadsFailure(new FailOnlyInWriteSegment(true));
         }
 
         //  LUCENE-3365: Test adding two documents with the same field from two different IndexWriters
diff --git a/src/Lucene.Net.Tests/Index/TestStressIndexing.cs b/src/Lucene.Net.Tests/Index/TestStressIndexing.cs
index fb35c63..fb31695 100644
--- a/src/Lucene.Net.Tests/Index/TestStressIndexing.cs
+++ b/src/Lucene.Net.Tests/Index/TestStressIndexing.cs
@@ -1,4 +1,4 @@
-using J2N.Threading;
+using J2N.Threading;
 using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Search;
@@ -227,7 +227,7 @@ namespace Lucene.Net.Index
 
         [Test]
         [Slow]
-        public virtual void TestStressIndexAndSearching([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestStressIndexAndSearching()
         {
             Directory directory = NewDirectory();
             MockDirectoryWrapper wrapper = directory as MockDirectoryWrapper;
@@ -236,7 +236,7 @@ namespace Lucene.Net.Index
                 wrapper.AssertNoUnreferencedFilesOnClose = true;
             }
 
-            RunStressTest(directory, newScheduler());
+            RunStressTest(directory, new ConcurrentMergeScheduler());
             directory.Dispose();
         }
     }
diff --git a/src/Lucene.Net.Tests/Index/TestTransactions.cs b/src/Lucene.Net.Tests/Index/TestTransactions.cs
index de42270..cc93685 100644
--- a/src/Lucene.Net.Tests/Index/TestTransactions.cs
+++ b/src/Lucene.Net.Tests/Index/TestTransactions.cs
@@ -1,4 +1,4 @@
-using J2N.Threading;
+using J2N.Threading;
 using Lucene.Net.Documents;
 using Lucene.Net.Index.Extensions;
 using Lucene.Net.Store;
@@ -114,8 +114,6 @@ namespace Lucene.Net.Index
         private class IndexerThread : TimedThread
         {
             private readonly TestTransactions outerInstance;
-            private Func<IConcurrentMergeScheduler> newScheduler1;
-            private Func<IConcurrentMergeScheduler> newScheduler2;
             internal Directory dir1;
             internal Directory dir2;
             internal object @lock;
@@ -123,12 +121,9 @@ namespace Lucene.Net.Index
 
             public IndexerThread(TestTransactions outerInstance, object @lock, 
                 Directory dir1, Directory dir2,
-                Func<IConcurrentMergeScheduler> newScheduler1, Func<IConcurrentMergeScheduler> newScheduler2,
                 TimedThread[] threads)
                 : base(threads)
             {
-                this.newScheduler1 = newScheduler1;
-                this.newScheduler2 = newScheduler2;
                 this.outerInstance = outerInstance;
                 this.@lock = @lock;
                 this.dir1 = dir1;
@@ -142,9 +137,9 @@ namespace Lucene.Net.Index
                     outerInstance,
 #endif
                     TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-                                .SetMaxBufferedDocs(3)
-                                .SetMergeScheduler(newScheduler1())
-                                .SetMergePolicy(NewLogMergePolicy(2));
+                        .SetMaxBufferedDocs(3)
+                        .SetMergeScheduler(new ConcurrentMergeScheduler())
+                        .SetMergePolicy(NewLogMergePolicy(2));
                 IndexWriter writer1 = new IndexWriter(dir1, config);
                 ((IConcurrentMergeScheduler)writer1.Config.MergeScheduler).SetSuppressExceptions();
 
@@ -155,9 +150,9 @@ namespace Lucene.Net.Index
                     outerInstance,
 #endif
                     TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-                                .SetMaxBufferedDocs(2)
-                                .SetMergeScheduler(newScheduler2())
-                                .SetMergePolicy(NewLogMergePolicy(3));
+                        .SetMaxBufferedDocs(2)
+                        .SetMergeScheduler(new ConcurrentMergeScheduler())
+                        .SetMergePolicy(NewLogMergePolicy(3));
                 IndexWriter writer2 = new IndexWriter(dir2, config2);
                 ((IConcurrentMergeScheduler)writer2.Config.MergeScheduler).SetSuppressExceptions();
 
@@ -291,9 +286,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void TestTransactions_Mem(
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler1,
-            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler2)
+        public virtual void TestTransactions_Mem()
         {
             Console.WriteLine("start test");
             // we cant use non-ramdir on windows, because this test needs to double-write.
@@ -317,7 +310,7 @@ namespace Lucene.Net.Index
             TimedThread[] threads = new TimedThread[3];
             int numThread = 0;
 
-            IndexerThread indexerThread = new IndexerThread(this, this, dir1, dir2, newScheduler1, newScheduler2, threads);
+            IndexerThread indexerThread = new IndexerThread(this, this, dir1, dir2, threads);
 
             threads[numThread++] = indexerThread;
             indexerThread.Start();
diff --git a/src/Lucene.Net.Tests/Search/TestSearcherManager.cs b/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
index e95f944..7adc3aa 100644
--- a/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
+++ b/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
@@ -1,4 +1,4 @@
-using J2N.Threading;
+using J2N.Threading;
 using J2N.Threading.Atomic;
 using Lucene.Net.Index;
 using Lucene.Net.Index.Extensions;
@@ -429,11 +429,11 @@ namespace Lucene.Net.Search
         }
 
         [Test]
-        public virtual void TestReferenceDecrementIllegally([ValueSource(typeof(ConcurrentMergeSchedulerFactories), "Values")]Func<IConcurrentMergeScheduler> newScheduler)
+        public virtual void TestReferenceDecrementIllegally()
         {
             Directory dir = NewDirectory();
-            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random))
-                            .SetMergeScheduler(newScheduler());
+            var config = NewIndexWriterConfig(
+                TEST_VERSION_CURRENT, new MockAnalyzer(Random)).SetMergeScheduler(new ConcurrentMergeScheduler());
             IndexWriter writer = new IndexWriter(dir, config);
             SearcherManager sm = new SearcherManager(writer, false, new SearcherFactory());
             writer.AddDocument(new Document());