public void RaiseEventLogEventDropped_OnLogItems() { const int RequestsLimit = 2; const int EventsCount = 5; int discardedItemsCount = 0; int ExpectedDiscardedItemsCount = EventsCount - RequestsLimit; ConcurrentRequestQueue requestQueue = new ConcurrentRequestQueue(RequestsLimit, AsyncTargetWrapperOverflowAction.Discard); requestQueue.LogEventDropped += (o, e) => { discardedItemsCount++; }; for (int i = 0; i < EventsCount; i++) { requestQueue.Enqueue(new AsyncLogEventInfo()); } Assert.Equal(ExpectedDiscardedItemsCount, discardedItemsCount); }
public void RaiseEventLogEventQueueGrow_OnLogItems() { const int RequestsLimit = 2; const int EventsCount = 5; const int ExpectedCountOfGrovingTimes = EventsCount - RequestsLimit; int grovingItemsCount = 0; ConcurrentRequestQueue requestQueue = new ConcurrentRequestQueue(RequestsLimit, AsyncTargetWrapperOverflowAction.Grow); requestQueue.LogEventQueueGrow += (o, e) => { grovingItemsCount++; }; for (int i = 0; i < EventsCount; i++) { requestQueue.Enqueue(new AsyncLogEventInfo()); } Assert.Equal(ExpectedCountOfGrovingTimes, grovingItemsCount); }
public void DequeueBatch_WithNonEmptyList_ReturnsValidCount(AsyncTargetWrapperOverflowAction overflowAction) { // Stage ConcurrentRequestQueue requestQueue = new ConcurrentRequestQueue(2, overflowAction); requestQueue.Enqueue(new AsyncLogEventInfo()); requestQueue.Enqueue(new AsyncLogEventInfo()); Assert.Equal(2, requestQueue.Count); // Act var batch = new List <AsyncLogEventInfo>(); requestQueue.DequeueBatch(1, batch); // Dequeue into empty-list Assert.Equal(1, requestQueue.Count); requestQueue.DequeueBatch(1, batch); // Dequeue into non-empty-list // Assert Assert.Equal(0, requestQueue.Count); Assert.Equal(2, batch.Count); }