Esempio n. 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 void CannotAddDuplicatedCollectors()
        {
            var registry   = new CollectorRegistry();
            var collector  = new DummyCollector("testName", "metric");
            var collector1 = new DummyCollector("testName", "metric2");

            registry.Add(collector);
            Assert.Throws <ArgumentException>(() => registry.Add(collector1));
        }
        public void CannotAddWithDuplicatedMetricNames(string[] first, string[] second)
        {
            var registry   = new CollectorRegistry();
            var collector1 = new DummyCollector("testName1", first);
            var collector2 = new DummyCollector("testName2", second);

            registry.Add(collector1);
            Assert.Throws <ArgumentException>(() => registry.Add(collector2));
        }
Esempio n. 4
0
        public void CannotAddDuplicatedCollectors()
        {
            var registry  = new CollectorRegistry();
            var collector = Substitute.For <ICollector>();

            collector.MetricNames.Returns(new[] { "metric" });

            var collector1 = Substitute.For <ICollector>();

            collector1.MetricNames.Returns(new[] { "metric" });

            registry.Add("testName", collector);
            Assert.Throws <ArgumentException>(() => registry.Add("testName", collector1));
        }
Esempio n. 5
0
        public void CannotAddWithDuplicatedMetricNames(string[] first, string[] second)
        {
            var registry   = new CollectorRegistry();
            var collector1 = Substitute.For <ICollector>();

            collector1.MetricNames.Returns(first);

            var collector2 = Substitute.For <ICollector>();

            collector2.MetricNames.Returns(second);

            registry.Add("collector1", collector1);
            Assert.Throws <ArgumentException>(() => registry.Add("collector1", collector2));
        }
        public void MetricNameShouldBeValid(string metricName)
        {
            var registry  = new CollectorRegistry();
            var collector = new DummyCollector("testName", metricName);

            Assert.Throws <ArgumentException>(() => registry.Add(collector));
        }
        public void CanRemoveCollector()
        {
            var registry  = new CollectorRegistry();
            var collector = new DummyCollector("collector", "metric");

            registry.Add(collector);

            var collector1 = new DummyCollector("collector1", "metric1");

            registry.Add(collector1);

            var res = registry.Remove(collector1);

            Assert.True(res);
            Assert.False(registry.TryGet("collector1", out var _));
            Assert.True(registry.TryGet("collector", out var _));
        }
Esempio n. 8
0
        public void CanRemoveCollector()
        {
            var registry  = new CollectorRegistry();
            var collector = Substitute.For <ICollector>();

            collector.MetricNames.Returns(new[] { "metric" });
            registry.Add("collector", collector);

            var collector1 = Substitute.For <ICollector>();

            collector1.MetricNames.Returns(new[] { "metric1" });
            registry.Add("metric1", collector1);

            registry.Remove("metric1");

            Assert.True(registry.Enumerate().SequenceEqual(new[] { collector }));
        }
        public void CollectorShouldDefineMetricNames(string[] metrics, string name)
        {
            // parameter "name" is useless in the test, but it's needed to avoid CS0182 error
            var registry  = new CollectorRegistry();
            var collector = new DummyCollector(name, metrics);

            Assert.Throws <ArgumentNullException>(() => registry.Add(collector));
        }
Esempio n. 10
0
        public void CollectorShouldHaveName(string collectorName)
        {
            var registry  = new CollectorRegistry();
            var collector = Substitute.For <ICollector>();

            collector.MetricNames.Returns(new[] { "metric" });

            Assert.Throws <ArgumentNullException>(() => registry.Add(collectorName, collector));
        }
Esempio n. 11
0
        public void MetricNameShouldBeValid(string metricName)
        {
            var registry  = new CollectorRegistry();
            var collector = Substitute.For <ICollector>();

            collector.MetricNames.Returns(new[] { metricName });

            Assert.Throws <ArgumentException>(() => registry.Add("tst", collector));
        }
Esempio n. 12
0
        public void CollectorShouldDefineMetrics(string[] metrics, string name)
        {
            // parameter "name" is useless in the test, but it's needed to avoid CS0182 error
            var registry  = new CollectorRegistry();
            var collector = Substitute.For <ICollector>();

            collector.MetricNames.Returns(metrics);

            Assert.Throws <ArgumentNullException>(() => registry.Add(name, collector));
        }
        public void DoNotCallFactoryIfCollectorExists()
        {
            var registry          = new CollectorRegistry();
            var originalCollector = new DummyCollector("testName", "metric");
            var fn = Substitute.For <Func <CollectorConfiguration, ICollector> >();

            registry.Add(originalCollector);
            var result = registry.GetOrAdd(originalCollector.Configuration, fn);

            Assert.Equal(originalCollector, result);
            fn.DidNotReceiveWithAnyArgs();
        }
        public void ShouldNotThrowOnRemoveByNameNonRegisteredCollector(string keyToRemove)
        {
            var registry  = new CollectorRegistry();
            var collector = new DummyCollector("collector", "metric");

            registry.Add(collector);

            var res = registry.Remove(keyToRemove);

            Assert.Equal(null, res);
            Assert.True(registry.TryGet("collector", out var _));
        }
        public void CanRemoveCollector()
        {
            var registry  = new CollectorRegistry();
            var collector = Substitute.For <ICollector>();

            collector.MetricNames.Returns(new[] { "metric" });
            collector.Configuration.Name.Returns("collector");
            registry.Add(collector);

            var collector1 = Substitute.For <ICollector>();

            collector1.MetricNames.Returns(new[] { "metric1" });
            collector1.Configuration.Name.Returns("metric1");
            registry.Add(collector1);

            var res = registry.Remove(collector1);

            Assert.True(res);
            Assert.False(registry.TryGet("metric1", out var _));
            Assert.True(registry.TryGet("collector", out var _));
        }
Esempio n. 16
0
        public void DoNotCallFactoryIfCollectorExists()
        {
            var registry          = new CollectorRegistry();
            var originalCollector = Substitute.For <ICollector>();

            originalCollector.MetricNames.Returns(new[] { "metric" });
            var fn  = Substitute.For <Func <CollectorConfiguration, ICollector> >();
            var cfg = new CollectorConfiguration("testName");

            registry.Add("testName", originalCollector);
            var result = registry.GetOrAdd(cfg, fn);

            Assert.Equal(originalCollector, result);
            fn.DidNotReceiveWithAnyArgs();
        }
Esempio n. 17
0
        public void CanEnumerateCollectors(int count)
        {
            var registry   = new CollectorRegistry();
            var collectors = new List <ICollector>();

            for (var i = 0; i < count; i++)
            {
                var collector = Substitute.For <ICollector>();
                var name      = $"metric{i}";
                collector.MetricNames.Returns(new[] { name });

                registry.Add(name, collector);
                collectors.Add(collector);
            }

            Assert.True(registry.Enumerate().SequenceEqual(collectors));
        }