public virtual void TestForceMergeNotNeeded()
        {
            Directory      dir            = NewDirectory();
            AtomicBoolean  mayMerge       = new AtomicBoolean(true);
            MergeScheduler mergeScheduler = new SerialMergeSchedulerAnonymousInnerClassHelper(this, mayMerge);
            IndexWriter    writer         = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(mergeScheduler).SetMergePolicy(MergePolicy()));

            writer.Config.MergePolicy.NoCFSRatio = Random().NextBoolean() ? 0 : 1;
            int numSegments = TestUtil.NextInt(Random(), 2, 20);

            for (int i = 0; i < numSegments; ++i)
            {
                int numDocs = TestUtil.NextInt(Random(), 1, 5);
                for (int j = 0; j < numDocs; ++j)
                {
                    writer.AddDocument(new Document());
                }
                writer.GetReader().Dispose();
            }
            for (int i = 5; i >= 0; --i)
            {
                int segmentCount   = writer.SegmentCount;
                int maxNumSegments = i == 0 ? 1 : TestUtil.NextInt(Random(), 1, 10);
                mayMerge.Set(segmentCount > maxNumSegments);
                writer.ForceMerge(maxNumSegments);
            }
            writer.Dispose();
            dir.Dispose();
        }
 public virtual void TestForceMergeNotNeeded()
 {
     Directory dir = NewDirectory();
     AtomicBoolean mayMerge = new AtomicBoolean(true);
     MergeScheduler mergeScheduler = new SerialMergeSchedulerAnonymousInnerClassHelper(this, mayMerge);
     IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(mergeScheduler).SetMergePolicy(MergePolicy()));
     writer.Config.MergePolicy.NoCFSRatio = Random().NextBoolean() ? 0 : 1;
     int numSegments = TestUtil.NextInt(Random(), 2, 20);
     for (int i = 0; i < numSegments; ++i)
     {
         int numDocs = TestUtil.NextInt(Random(), 1, 5);
         for (int j = 0; j < numDocs; ++j)
         {
             writer.AddDocument(new Document());
         }
         writer.Reader.Dispose();
     }
     for (int i = 5; i >= 0; --i)
     {
         int segmentCount = writer.SegmentCount;
         int maxNumSegments = i == 0 ? 1 : TestUtil.NextInt(Random(), 1, 10);
         mayMerge.Set(segmentCount > maxNumSegments);
         writer.ForceMerge(maxNumSegments);
     }
     writer.Dispose();
     dir.Dispose();
 }