Exemplo n.º 1
0
        public void CollectAllMetrics2X()
        {
            var noopLogger        = new NoopLogger();
            var mockPayloadSender = new MockPayloadSender();

            using (var collector = new MetricsCollector(noopLogger, mockPayloadSender, new TestAgentConfigurationReader(noopLogger)))
            {
                collector.CollectAllMetrics();
                collector.CollectAllMetrics();
            }
        }
Exemplo n.º 2
0
        public void CollectAllMetrics2X()
        {
            var noopLogger        = new NoopLogger();
            var mockPayloadSender = new MockPayloadSender();

            using (var collector = new MetricsCollector(noopLogger, mockPayloadSender, new MockConfigSnapshot(noopLogger)))
            {
                collector.CollectAllMetrics();
                collector.CollectAllMetrics();
            }
        }
Exemplo n.º 3
0
        public void CollectAllMetrics_ShouldNotDisableProvider_WhenAnyValueIsSamplesIsValid()
        {
            const int iterations = MetricsCollector.MaxTryWithoutSuccess * 2;

            // Arrange
            var logger            = new NoopLogger();
            var mockPayloadSender = new MockPayloadSender();

            using var metricsCollector = new MetricsCollector(logger, mockPayloadSender,
                                                              new ConfigStore(new MockConfigSnapshot(logger, "Information"), _logger));

            var metricsProviderMock = new Mock <IMetricsProvider>();

            metricsProviderMock.Setup(x => x.IsMetricAlreadyCaptured).Returns(true);

            metricsProviderMock.Setup(x => x.GetSamples())
            .Returns(() => new List <MetricSample> {
                new MetricSample("key1", double.NaN), new MetricSample("key2", 0.95)
            });
            metricsProviderMock.SetupProperty(x => x.ConsecutiveNumberOfFailedReads);

            metricsCollector.MetricsProviders.Clear();
            metricsCollector.MetricsProviders.Add(metricsProviderMock.Object);

            // Act
            foreach (var _ in Enumerable.Range(0, iterations))
            {
                metricsCollector.CollectAllMetrics();
            }

            // Assert
            mockPayloadSender.Metrics.Count.Should().Be(iterations);
            mockPayloadSender.Metrics.Should().OnlyContain(x => x.Samples.Count() == 1);
            metricsProviderMock.Verify(x => x.GetSamples(), Times.Exactly(iterations));
        }
Exemplo n.º 4
0
        public void CollectAllMetrics_ShouldDisableProvider_WhenSamplesAreInvalid(List <MetricSample> samples)
        {
            const int iterations = MetricsCollector.MaxTryWithoutSuccess * 2;

            // Arrange
            var logger            = new NoopLogger();
            var mockPayloadSender = new MockPayloadSender();

            using var metricsCollector = new MetricsCollector(logger, mockPayloadSender,
                                                              new ConfigStore(new MockConfigSnapshot(logger, "Information"), _logger));
            var metricsProviderMock = new Mock <IMetricsProvider>();

            metricsProviderMock.Setup(x => x.IsMetricAlreadyCaptured).Returns(true);

            metricsProviderMock
            .Setup(x => x.GetSamples())
            .Returns(() => samples);
            metricsProviderMock.SetupProperty(x => x.ConsecutiveNumberOfFailedReads);

            metricsCollector.MetricsProviders.Clear();
            metricsCollector.MetricsProviders.Add(metricsProviderMock.Object);

            // Act
            foreach (var _ in Enumerable.Range(0, iterations))
            {
                metricsCollector.CollectAllMetrics();
            }

            // Assert
            mockPayloadSender.Metrics.Should().BeEmpty();
            metricsProviderMock.Verify(x => x.GetSamples(), Times.Exactly(MetricsCollector.MaxTryWithoutSuccess));
        }
Exemplo n.º 5
0
        public void CollectAllMetrics()
        {
            var mockPayloadSender = new MockPayloadSender();

            using (var mc = new MetricsCollector(_logger, mockPayloadSender, new ConfigStore(new MockConfigSnapshot(_logger), _logger)))
                mc.CollectAllMetrics();

            mockPayloadSender.Metrics.Should().NotBeEmpty();
        }
        public void CollectAllMetrics()
        {
            var mockPayloadSender = new MockPayloadSender();
            var testLogger        = new TestLogger();
            var mc = new MetricsCollector(testLogger, mockPayloadSender, new TestAgentConfigurationReader(testLogger));

            mc.CollectAllMetrics();

            mockPayloadSender.Metrics.Should().NotBeEmpty();
        }
Exemplo n.º 7
0
        public void ProviderWithException()
        {
            var mockPayloadSender = new MockPayloadSender();
            var testLogger        = new TestLogger(LogLevel.Information);

            using (var mc = new MetricsCollector(testLogger, mockPayloadSender, new ConfigStore(new MockConfigSnapshot(disableMetrics: "*"), testLogger)))
            {
                mc.MetricsProviders.Clear();
                var providerWithException = new MetricsProviderWithException();
                mc.MetricsProviders.Add(providerWithException);

                for (var i = 0; i < MetricsCollector.MaxTryWithoutSuccess; i++)
                {
                    mc.CollectAllMetrics();
                }

                providerWithException.NumberOfGetValueCalls.Should().Be(MetricsCollector.MaxTryWithoutSuccess);

                testLogger.Lines.Count(line => line.Contains(MetricsProviderWithException.ExceptionMessage))
                .Should()
                .Be(MetricsCollector.MaxTryWithoutSuccess);

                testLogger.Lines.Select(l => l.Contains($"Failed reading {providerWithException.DbgName} 1 times")).Should().HaveCountGreaterThan(0);
                testLogger.Lines.Last(line => line.Contains("Failed reading"))
                .Should()
                .Contain(
                    $"Failed reading {providerWithException.DbgName} {MetricsCollector.MaxTryWithoutSuccess} consecutively - the agent won't try reading {providerWithException.DbgName} anymore");

                //make sure GetValue() in MetricsProviderWithException is not called anymore:
                for (var i = 0; i < 10; i++)
                {
                    mc.CollectAllMetrics();
                }

                var logLineBeforeStage2 = testLogger.Lines.Count;
                //no more logs, no more calls to GetValue():
                providerWithException.NumberOfGetValueCalls.Should().Be(MetricsCollector.MaxTryWithoutSuccess);
                testLogger.Lines.Count.Should().Be(logLineBeforeStage2);
            }
        }
        public void ProviderWithException()
        {
            var mockPayloadSender = new MockPayloadSender();
            var testLogger        = new TestLogger(LogLevel.Information);
            var mc = new MetricsCollector(testLogger, mockPayloadSender, new TestAgentConfigurationReader(testLogger, "Information"));

            mc.MetricsProviders.Clear();
            var providerWithException = new MetricsProviderWithException();

            mc.MetricsProviders.Add(providerWithException);

            for (var i = 0; i < MetricsCollector.MaxTryWithoutSuccess; i++)
            {
                mc.CollectAllMetrics();
            }

            providerWithException.NumberOfGetValueCalls.Should().Be(MetricsCollector.MaxTryWithoutSuccess);

            // *2 because exceptions are logged in a new line, + 2 because 1) printing the metricsinterval and 2) printing that the given metrics
            // wont be collected anymore:
            testLogger.Lines.Count.Should().Be(MetricsCollector.MaxTryWithoutSuccess * 2 + 2);

            testLogger.Lines[1].Should().Contain($"Failed reading {providerWithException.DbgName} 1 times");
            testLogger.Lines.Last()
            .Should()
            .Contain(
                $"Failed reading {providerWithException.DbgName} {MetricsCollector.MaxTryWithoutSuccess} consecutively - the agent won't try reading {providerWithException.DbgName} anymore");

            //make sure GetValue() in MetricsProviderWithException is not called anymore:
            for (var i = 0; i < 10; i++)
            {
                mc.CollectAllMetrics();
            }

            //no more logs, no more call to GetValue():
            providerWithException.NumberOfGetValueCalls.Should().Be(MetricsCollector.MaxTryWithoutSuccess);
            testLogger.Lines.Count.Should().Be(MetricsCollector.MaxTryWithoutSuccess * 2 + 2);
        }
Exemplo n.º 9
0
        public void DisableMetrics_DisableCpuMetrics()
        {
            var mockPayloadSender = new MockPayloadSender();

            Environment.SetEnvironmentVariable(EnvVarNames.DisableMetrics, "*cpu*");

            using var metricsProvider = new MetricsCollector(new NoopLogger(), mockPayloadSender, new EnvironmentConfigurationReader());
            metricsProvider.CollectAllMetrics();

            mockPayloadSender.Metrics.Should().NotBeEmpty();

            var firstMetrics = mockPayloadSender.Metrics.First();

            firstMetrics.Should().NotBeNull();

            firstMetrics.Samples.Should().NotContain(n => n.KeyValue.Key.Contains("cpu"));

            //These are collected on all platforms, with the given config they always should be there
            firstMetrics.Samples.Should()
            .Contain(n => n.KeyValue.Key.Equals("system.process.memory.size", StringComparison.InvariantCultureIgnoreCase));
            firstMetrics.Samples.Should()
            .Contain(n => n.KeyValue.Key.Equals("system.process.memory.rss.bytes", StringComparison.InvariantCultureIgnoreCase));
        }
Exemplo n.º 10
0
 public void CollectAllMetrics2X()
 {
     _metricsCollector.CollectAllMetrics();
     _metricsCollector.CollectAllMetrics();
 }