Пример #1
0
        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);
        }