Lucene.Net.Index.ThreadedIndexingAndSearchingTestCase.ThreadAnonymousInnerClassHelper2.Run C# (CSharp) Method

Run() public method

public Run ( ) : void
return void
            public override void Run()
            {
                if (VERBOSE)
                {
                    Console.WriteLine(Thread.CurrentThread.Name + ": launch search thread");
                }
                while (DateTime.UtcNow < StopTime)
                {
                    try
                    {
                        IndexSearcher s = OuterInstance.CurrentSearcher;
                        try
                        {
                            // Verify 1) IW is correctly setting
                            // diagnostics, and 2) segment warming for
                            // merged segments is actually happening:
                            foreach (AtomicReaderContext sub in s.IndexReader.Leaves)
                            {
                                SegmentReader segReader = (SegmentReader)sub.Reader;
                                IDictionary<string, string> diagnostics = segReader.SegmentInfo.Info.Diagnostics;
                                Assert.IsNotNull(diagnostics);
                                string source = diagnostics["source"];
                                Assert.IsNotNull(source);
                                if (source.Equals("merge"))
                                {
                                    Assert.IsTrue(!OuterInstance.AssertMergedSegmentsWarmed || OuterInstance.Warmed.ContainsKey((SegmentCoreReaders)segReader.CoreCacheKey), "sub reader " + sub + " wasn't warmed: warmed=" + OuterInstance.Warmed + " diagnostics=" + diagnostics + " si=" + segReader.SegmentInfo);
                                }
                            }
                            if (s.IndexReader.NumDocs > 0)
                            {
                                OuterInstance.SmokeTestSearcher(s);
                                Fields fields = MultiFields.GetFields(s.IndexReader);
                                if (fields == null)
                                {
                                    continue;
                                }
                                Terms terms = fields.Terms("body");
                                if (terms == null)
                                {
                                    continue;
                                }
                                TermsEnum termsEnum = terms.Iterator(null);
                                int seenTermCount = 0;
                                int shift;
                                int trigger;
                                if (TotTermCount.Get() < 30)
                                {
                                    shift = 0;
                                    trigger = 1;
                                }
                                else
                                {
                                    trigger = TotTermCount.Get() / 30;
                                    shift = Random().Next(trigger);
                                }
                                while (DateTime.UtcNow < StopTime)
                                {
                                    BytesRef term = termsEnum.Next();
                                    if (term == null)
                                    {
                                        TotTermCount.Set(seenTermCount);
                                        break;
                                    }
                                    seenTermCount++;
                                    // search 30 terms
                                    if ((seenTermCount + shift) % trigger == 0)
                                    {
                                        //if (VERBOSE) {
                                        //System.out.println(Thread.currentThread().getName() + " now search body:" + term.Utf8ToString());
                                        //}
                                        TotHits.AddAndGet(OuterInstance.RunQuery(s, new TermQuery(new Term("body", term))));
                                    }
                                }
                                //if (VERBOSE) {
                                //System.out.println(Thread.currentThread().getName() + ": search done");
                                //}
                            }
                        }
                        finally
                        {
                            OuterInstance.ReleaseSearcher(s);
                        }
                    }
                    catch (Exception t)
                    {
                        Console.WriteLine(Thread.CurrentThread.Name + ": hit exc");
                        OuterInstance.Failed.Set(true);
                        Console.WriteLine(t.StackTrace);
                        throw new Exception(t.Message, t);
                    }
                }
            }
        }
ThreadedIndexingAndSearchingTestCase.ThreadAnonymousInnerClassHelper2