public async Task AddAndEnumInParallel(int initialMetricsCount, int additionalMetrics) { var writer = Substitute.For <IMetricsWriter>(); writer.FlushAsync().ReturnsForAnyArgs((c) => Task.Delay(0)); var registry = new CollectorRegistry(); for (var i = initialMetricsCount; i > 0; i--) { registry.Add(new DummyCollector($"{i}collector", $"metric{i}")); } var tasks = Enumerable.Range(0, additionalMetrics) .Select(async i => { await Task.Yield(); registry.Add(new DummyCollector($"{i}collector_add", $"metric_add{i}")); }).ToList(); tasks.Add(registry.CollectToAsync(writer)); await Task.WhenAll(tasks); writer.ClearReceivedCalls(); await registry.CollectToAsync(writer); await writer.Received(initialMetricsCount + additionalMetrics).FlushAsync(); }
public async Task CanCollectAll() { var registry = new CollectorRegistry(); var factory = new MetricFactory(registry); factory.CreateCounter("www", "help").Inc(99); factory.CreateCounter("ap", "text").Inc(5); factory.CreateCounter("counter", string.Empty).Inc(); var gauge = factory.CreateGauge("abc", "with help text", "group", "type"); gauge.Inc(); gauge.WithLabels("any", "2").Dec(5); string formattedText = null; using (var stream = new MemoryStream()) { using (var writer = new MetricsTextWriter(stream)) { await registry.CollectToAsync(writer); } stream.Seek(0, SeekOrigin.Begin); using (var streamReader = new StreamReader(stream)) { formattedText = streamReader.ReadToEnd(); } } Assert.Equal(ResourcesHelper.GetFileContent("CollectorRegistryTests_Collection.txt"), formattedText); }
public static async Task TestCollectionAsync(Action <MetricFactory> metricsSetup, string resourceName) { var registry = new CollectorRegistry(); var factory = new MetricFactory(registry); metricsSetup(factory); string formattedText; using (var stream = new MemoryStream()) { using (var writer = new MetricsTextWriter(stream)) { await registry.CollectToAsync(writer); await writer.CloseWriterAsync(); } stream.Seek(0, SeekOrigin.Begin); using (var streamReader = new StreamReader(stream)) { formattedText = streamReader.ReadToEnd(); } } Assert.Equal(GetFileContent(resourceName), formattedText); }