public void IndexWriterUsage_GettingSafe() { var timer = new System.Timers.Timer(1000.0); timer.Elapsed += new System.Timers.ElapsedEventHandler(IndexWriterUsage_GettingSafe_TimerElapsed); timer.Start(); IndexWriterFrame safeFrame = null; try { var fastWriterUsage = IndexWriterUsageAccessor.Instance as FastIndexWriterUsage; Assert.IsNotNull(fastWriterUsage, "IndexWriterUsageAccessor.Instance is not FastIndexWriterUsage"); var indexWriter = LuceneManager._writer; var fastWriterUsageAcc = new IndexWriterUsageAccessor(fastWriterUsage); var counter = 50; while (fastWriterUsageAcc.RefCount > 0 && counter-- > 0) { System.Threading.Thread.Sleep(100); } var refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); _fastWriterFrames = new List <IndexWriterFrame>(); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); safeFrame = IndexWriterFrame.Get(true); refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); } finally { if (safeFrame != null) { safeFrame.Dispose(); } timer.Stop(); timer.Elapsed -= new System.Timers.ElapsedEventHandler(IndexWriterUsage_GettingSafe_TimerElapsed); timer.Dispose(); } }
void IndexWriterUsage_GettingSafe_TimerElapsed(object sender, System.Timers.ElapsedEventArgs e) { var usage = IndexWriterUsageAccessor.Instance; var usageAcc = new IndexWriterUsageAccessor(usage); Trace.WriteLine(String.Format("@#$Test> TimerElapsed before. Usage type: {0}, Fast frame count: {1}, RefCount: {2}, Waiting: {3}", usage.GetType().Name, _fastWriterFrames.Count, usageAcc.RefCount, usage.Waiting)); if (_fastWriterFrames.Count > 0) { var frame = _fastWriterFrames[0]; _fastWriterFrames.RemoveAt(0); frame.Dispose(); } Trace.WriteLine(String.Format("@#$Test> TimerElapsed after. Usage type: {0}, Fast frame count: {1}, RefCount: {2}, Waiting: {3}", usage.GetType().Name, _fastWriterFrames.Count, usageAcc.RefCount, usage.Waiting)); }
public void IndexWriterUsage_UseFast() { var fastWriterUsage = IndexWriterUsageAccessor.Instance as FastIndexWriterUsage; Assert.IsNotNull(fastWriterUsage, "IndexWriterUsageAccessor.Instance is not FastIndexWriterUsage"); var indexWriter = LuceneManager._writer; var fastWriterUsageAcc = new IndexWriterUsageAccessor(fastWriterUsage); var counter = 50; while (fastWriterUsageAcc.RefCount > 0 && counter-- > 0) { System.Threading.Thread.Sleep(100); } var refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); using (var wrf1 = IndexWriterFrame.Get(false)) { refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 1, String.Format("refCount is {0}, expected: 1", refCount)); Assert.ReferenceEquals(indexWriter == wrf1.IndexWriter, "IndexWriter has changed #1"); using (var wrf2 = IndexWriterFrame.Get(false)) { refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 2, String.Format("refCount is {0}, expected: 2", refCount)); Assert.ReferenceEquals(indexWriter == wrf1.IndexWriter, "IndexWriter has changed #2"); } refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 1, String.Format("refCount is {0}, expected: 1", refCount)); } refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); }
public void IndexWriterUsage_GettingSafe() { var timer = new System.Timers.Timer(1000.0); timer.Elapsed += new System.Timers.ElapsedEventHandler(IndexWriterUsage_GettingSafe_TimerElapsed); timer.Start(); IndexWriterFrame safeFrame = null; try { var fastWriterUsage = IndexWriterUsageAccessor.Instance as FastIndexWriterUsage; Assert.IsNotNull(fastWriterUsage, "IndexWriterUsageAccessor.Instance is not FastIndexWriterUsage"); var indexWriter = LuceneManager._writer; var fastWriterUsageAcc = new IndexWriterUsageAccessor(fastWriterUsage); var counter = 50; while (fastWriterUsageAcc.RefCount > 0 && counter-- > 0) System.Threading.Thread.Sleep(100); var refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); _fastWriterFrames = new List<IndexWriterFrame>(); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); _fastWriterFrames.Add(IndexWriterFrame.Get(false)); safeFrame = IndexWriterFrame.Get(true); refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); } finally { if (safeFrame != null) safeFrame.Dispose(); timer.Stop(); timer.Elapsed -= new System.Timers.ElapsedEventHandler(IndexWriterUsage_GettingSafe_TimerElapsed); timer.Dispose(); } }
public void IndexWriterUsage_UseFast() { var fastWriterUsage = IndexWriterUsageAccessor.Instance as FastIndexWriterUsage; Assert.IsNotNull(fastWriterUsage, "IndexWriterUsageAccessor.Instance is not FastIndexWriterUsage"); var indexWriter = LuceneManager._writer; var fastWriterUsageAcc = new IndexWriterUsageAccessor(fastWriterUsage); var counter = 50; while (fastWriterUsageAcc.RefCount > 0 && counter-- > 0) System.Threading.Thread.Sleep(100); var refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); using (var wrf1 = IndexWriterFrame.Get(false)) { refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 1, String.Format("refCount is {0}, expected: 1", refCount)); Assert.ReferenceEquals(indexWriter == wrf1.IndexWriter, "IndexWriter has changed #1"); using (var wrf2 = IndexWriterFrame.Get(false)) { refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 2, String.Format("refCount is {0}, expected: 2", refCount)); Assert.ReferenceEquals(indexWriter == wrf1.IndexWriter, "IndexWriter has changed #2"); } refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 1, String.Format("refCount is {0}, expected: 1", refCount)); } refCount = fastWriterUsageAcc.RefCount; Assert.IsTrue(refCount == 0, String.Format("refCount is {0}, expected: 0", refCount)); }