public async Task Aggregator_AlternatesTimerAndBatch() { int publishCalls = 0; int totalSuccesses = 0; int batchSize = 100; ILoggerFactory factory = CreateMockLoggerFactory((props) => { publishCalls++; totalSuccesses += Convert.ToInt32(props[LogConstants.SuccessesKey]); }); var aggregator = new FunctionResultAggregator(batchSize, TimeSpan.FromSeconds(1), factory); // do this loop twice to ensure it continues working for (int i = 0; i < 2; i++) { // insert 225. Expect 2 calls to publish, then a flush for 25. await AddSuccessResults(aggregator, 225); await Task.Delay(1100); Assert.Equal(3 * (i + 1), publishCalls); } Assert.Equal(6, publishCalls); Assert.Equal(450, totalSuccesses); }
public async Task Aggregator_FlushesOnCancelation() { int batchSize = 100; int publishCalls = 0; ILoggerFactory factory = CreateMockLoggerFactory((props) => { publishCalls++; Assert.Equal(10, props[LogConstants.SuccessesKey]); }); var aggregator = new FunctionResultAggregator(batchSize, TimeSpan.FromSeconds(1), factory); await AddSuccessResults(aggregator, 10); }
public async Task Aggregator_DoesNotTrim_NonDefaultClassName() { int batchSize = 10; int publishCalls = 0; ILoggerFactory factory = CreateMockLoggerFactory((props) => { publishCalls++; Assert.Equal(10, props[LogConstants.SuccessesKey]); Assert.Equal("AnotherClass.SomeTest", props[LogConstants.NameKey]); }); var aggregator = new FunctionResultAggregator(batchSize, TimeSpan.FromSeconds(1), factory); await AddSuccessResults(aggregator, 10, "AnotherClass.SomeTest"); }
public async Task Aggregator_Trims_DefaultClassName() { int batchSize = 10; int publishCalls = 0; ILoggerFactory factory = CreateMockLoggerFactory((props) => { publishCalls++; Assert.Equal(10, props[LoggingKeys.Successes]); Assert.Equal("SomeTest", props[LoggingKeys.Name]); }); var aggregator = new FunctionResultAggregator(batchSize, TimeSpan.FromSeconds(1), factory); await AddSuccessResults(aggregator, 10, "Functions.SomeTest"); }
public async Task Aggregator_Flushes_WhenBatchIsFull(int batchSize) { int publishCalls = 0; ILoggerFactory factory = CreateMockLoggerFactory((props) => { publishCalls++; Assert.Equal(batchSize, props[LogConstants.SuccessesKey]); }); var aggregator = new FunctionResultAggregator(batchSize, TimeSpan.FromMinutes(1), factory); await AddSuccessResults(aggregator, batchSize * 5); // allow a flush await Task.Delay(100); Assert.Equal((batchSize * 5) / batchSize, publishCalls); }
public async Task Aggregator_Flushes_WhenTimerFires() { int batchSize = 1000; int numberToInsert = 10; int publishCalls = 0; ILoggerFactory factory = CreateMockLoggerFactory((props) => { publishCalls++; Assert.Equal(numberToInsert, props[LogConstants.SuccessesKey]); }); var aggregator = new FunctionResultAggregator(batchSize, TimeSpan.FromSeconds(1), factory); await AddSuccessResults(aggregator, numberToInsert); // allow the timer to fire await Task.Delay(1100); Assert.Equal(1, publishCalls); }