private void btnCrawl_Click(object sender, EventArgs e) { var w = Stopwatch.StartNew(); var status = m_Pile.Crawl(true); Text = "Crawl {0} in {1:n0} ms".Args(status, w.ElapsedMilliseconds); }
public void PileSmallObjects(int payloadSize, params int[] freeChunkSizes) { using (var pile = new DefaultPile() { SegmentSize = PileCacheTestCore.SEG_SIZE, AllocMode = AllocationMode.ReuseSpace }) { pile.FreeChunkSizes = freeChunkSizes; pile.Start(); var pps = new List <PilePointer>(); while (pile.SegmentCount < 2) { pps.Add(pile.Put(generatePayload(payloadSize))); } pile.Delete(pps.Last()); pps.RemoveAt(pps.Count - 1); Console.WriteLine("just removed the last added payload and segment should be 1 now, real segment count is {0}", pile.SegmentCount); var objectsInFirstSegment = pps.Count; Console.WriteLine("put {0:N0} objects in first segment, pile.ObjectCount {1:N0}", objectsInFirstSegment, pile.ObjectCount); var deletedObjectCount = 0; for (int i = 0; i < pps.Count; i += 2, deletedObjectCount++) { Assert.IsTrue(pile.Delete(pps[i])); } Console.WriteLine("deleted {0:N0} objects, pile.ObjectCount {1:N0}", deletedObjectCount, pile.ObjectCount); var crawlStatus = pile.Crawl(false); Console.WriteLine("crawl: {0}", crawlStatus); var pps1 = new List <PilePointer>(); var c = 0; while (pile.SegmentCount < 3) { pps1.Add(pile.Put(generatePayload(payloadSize))); if (c % 20000 == 0) { pile.Crawl(true); //we do crawl because otherwise the 25000 free index xlots get exhausted AND } c++; //this unit tests does not run long enough to cause Crawl within allocator (5+ seconds) } //so we induce Crawl by hand to rebiild indexes pile.Delete(pps1.Last()); pps1.RemoveAt(pps1.Count - 1); Console.WriteLine("again just removed the last added payload and segment should be 2 now, real segment count is {0}", pile.SegmentCount); var objectsInSecondSegment = pps1.Count; Console.WriteLine("put {0:N0} objects in second segment, pile.ObjectCount {1:N0}", objectsInSecondSegment, pile.ObjectCount); Assert.AreEqual(objectsInFirstSegment * 2, pile.ObjectCount, "Object count in pile with two full segments must be equal to double object count in full first segment!"); } }