public MetricsFixture() { var healthFactoryLogger = _loggerFactory.CreateLogger <HealthCheckFactory>(); var clock = new TestClock(); var options = new AppMetricsOptions(); Func <string, IMetricContextRegistry> newContextRegistry = name => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry(_loggerFactory, options, clock, new EnvironmentInfoProvider(), newContextRegistry); var healthCheckFactory = new HealthCheckFactory(healthFactoryLogger); var metricBuilderFactory = new DefaultMetricsBuilderFactory(); var filter = new DefaultMetricsFilter(); var dataManager = new DefaultMetricValuesProvider(filter, registry); var healthStatusProvider = new DefaultHealthProvider(_loggerFactory.CreateLogger <DefaultHealthProvider>(), healthCheckFactory); var metricsManagerFactory = new DefaultMeasureMetricsProvider(registry, metricBuilderFactory, clock); var metricsManagerAdvancedFactory = new DefaultMetricsProvider(registry, metricBuilderFactory, clock); var metricsManager = new DefaultMetricsManager(registry, _loggerFactory.CreateLogger <DefaultMetricsManager>()); Metrics = new DefaultMetrics( clock, filter, metricsManagerFactory, metricBuilderFactory, metricsManagerAdvancedFactory, dataManager, metricsManager, healthStatusProvider); }
public HealthCheckRegistryTests() { _metircsSetup = healthCheckFactory => { var clock = new TestClock(); var options = new AppMetricsOptions(); Func <string, IMetricContextRegistry> newContextRegistry = name => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry( LoggerFactory, options, clock, new EnvironmentInfoProvider(), newContextRegistry); var metricBuilderFactory = new DefaultMetricsBuilderFactory(); var filter = new DefaultMetricsFilter(); var healthManager = new DefaultHealthProvider(LoggerFactory.CreateLogger <DefaultHealthProvider>(), healthCheckFactory); var dataManager = new DefaultMetricValuesProvider( filter, registry); var metricsManagerFactory = new DefaultMeasureMetricsProvider(registry, metricBuilderFactory, clock); var metricsManagerAdvancedFactory = new DefaultMetricsProvider(registry, metricBuilderFactory, clock); var metricsManager = new DefaultMetricsManager(registry, LoggerFactory.CreateLogger <DefaultMetricsManager>()); return(new DefaultMetrics( clock, filter, metricsManagerFactory, metricBuilderFactory, metricsManagerAdvancedFactory, dataManager, metricsManager, healthManager)); }; }
public void Clean_WithNoReportsRegistered_RemovesAllEvents() { ResetCleaner(); const string context = ""; var registry = new DefaultMetricsRegistry(); EventMetricsCleaner.ContextRegistries.Add(context, registry); var timer = new MockTimer(); EventMetricsCleaner.EnableTestTimer(timer); var metric = new EventMetric(); registry.Event(MetricName, () => { return(metric); }, MetricTags.None); metric.Record(); metric.Record(); metric.Record(); var registryCounts = GetRegistryEventDetailCounts(MetricNameType); registryCounts[context].Should().Be(3); timer.OnTimerCallback(); registryCounts = GetRegistryEventDetailCounts(MetricNameType); registryCounts[context].Should().Be(0); }
public void Clean_WithAllReportsFilteringOutEvents_RemovesAllEvents() { ResetCleaner(); const string context = ""; var registry = new DefaultMetricsRegistry(); EventMetricsCleaner.ContextRegistries.Add(context, registry); var timer = new MockTimer(); EventMetricsCleaner.EnableTestTimer(timer); var reportIndex1 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); var reportIndex2 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); var metric = new EventMetric(); registry.Event(MetricName, () => { return(metric); }, MetricTags.None); metric.Record(); metric.Record(); metric.Record(); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex1, new List <EventValueSource>()); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex2, new List <EventValueSource>()); GetReportsReportedEventDetailCount(reportIndex1, MetricNameType).Should().Be(0); GetReportsReportedEventDetailCount(reportIndex2, MetricNameType).Should().Be(0); var registryCounts = GetRegistryEventDetailCounts(MetricNameType); registryCounts[context].Should().Be(3); timer.OnTimerCallback(); registryCounts = GetRegistryEventDetailCounts(MetricNameType); registryCounts[context].Should().Be(0); }
public void Clean_IgnoresReportsThatHaveNotReportedAnyEvents() { ResetCleaner(); const string context = ""; var registry = new DefaultMetricsRegistry(); EventMetricsCleaner.ContextRegistries.Add(context, registry); var timer = new MockTimer(); EventMetricsCleaner.EnableTestTimer(timer); var reportIndex1 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); var reportIndex2 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); var metric = new EventMetric(); registry.Event(MetricName, () => { return(metric); }, MetricTags.None); metric.Record(); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex1, registry.DataProvider.Events); GetReportsReportedEventDetailCount(reportIndex1, metricNameTypeTags).Should().Be(1); GetReportsReportedEventDetailCount(reportIndex2, metricNameTypeTags).Should().Be(0); timer.OnTimerCallback(); var registryCounts = GetRegistryEventDetailCounts(MetricNameType); registryCounts[context].Should().Be(0); }
public MetricsReportingFixture() { var healthFactoryLogger = _loggerFactory.CreateLogger <HealthCheckFactory>(); var options = new AppMetricsOptions(); var clock = new TestClock(); IMetricContextRegistry NewContextRegistry(string name) => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry(_loggerFactory, options, clock, new EnvironmentInfoProvider(), NewContextRegistry); var healthCheckFactory = new HealthCheckFactory(healthFactoryLogger); var metricBuilderFactory = new DefaultMetricsBuilderFactory(); var filter = new DefaultMetricsFilter(); var healthManager = new DefaultHealthProvider(new Lazy <IMetrics>(() => Metrics), _loggerFactory.CreateLogger <DefaultHealthProvider>(), healthCheckFactory); var dataManager = new DefaultMetricValuesProvider( filter, registry); var metricsManagerFactory = new DefaultMeasureMetricsProvider(registry, metricBuilderFactory, clock); var metricsManagerAdvancedFactory = new DefaultMetricsProvider(registry, metricBuilderFactory, clock); var metricsManager = new DefaultMetricsManager(registry, _loggerFactory.CreateLogger <DefaultMetricsManager>()); Metrics = new DefaultMetrics( clock, filter, metricsManagerFactory, metricBuilderFactory, metricsManagerAdvancedFactory, dataManager, metricsManager, healthManager); RecordSomeMetrics(); }
public void Clean_WithMultipleRegistriesInSeparateContexts_RemovesEvents() { ResetCleaner(); const string ctx1 = "ctx1"; var registry1 = new DefaultMetricsRegistry(); EventMetricsCleaner.ContextRegistries.Add(ctx1, registry1); const string ctx2 = "ctx2"; var registry2 = new DefaultMetricsRegistry(); EventMetricsCleaner.ContextRegistries.Add(ctx2, registry2); var timer = new MockTimer(); EventMetricsCleaner.EnableTestTimer(timer); var reportIndex1 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); var metric1 = new EventMetric(); registry1.Event("test1", () => { return(metric1); }, MetricTags.None); metric1.Record(); metric1.Record(); metric1.Record(); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex1, registry1.DataProvider.Events); var reportIndex2 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); var metric2 = new EventMetric(); registry2.Event("test2", () => { return(metric2); }, MetricTags.None); metric2.Record(); metric2.Record(); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex2, registry2.DataProvider.Events); var registryCounts = GetRegistryEventDetailCounts("test1.event"); registryCounts[ctx1].Should().Be(3); registryCounts[ctx2].Should().Be(0); registryCounts = GetRegistryEventDetailCounts("test2.event"); registryCounts[ctx1].Should().Be(0); registryCounts[ctx2].Should().Be(2); timer.OnTimerCallback(); registryCounts = GetRegistryEventDetailCounts("test1.event"); registryCounts[ctx1].Should().Be(0); registryCounts[ctx2].Should().Be(0); registryCounts = GetRegistryEventDetailCounts("test2.event"); registryCounts[ctx1].Should().Be(0); registryCounts[ctx2].Should().Be(0); }
/// <inheritdoc /> public IMetricsRoot Build() { IMetricsRegistry registry = new NullMetricsRegistry(); if (_options == null) { _options = new MetricsOptions(); } if (_options.Enabled) { registry = new DefaultMetricsRegistry(_options.DefaultContextLabel, _clock, ContextRegistry); } if (_metricsOutputFormatters.Count == 0) { _metricsOutputFormatters.Add(new MetricsTextOutputFormatter()); } if (_envFormatters.Count == 0) { _envFormatters.Add(new EnvInfoTextOutputFormatter()); } var builderFactory = new DefaultMetricsBuilderFactory(_defaultSamplingReservoir); var measure = new DefaultMeasureMetricsProvider(registry, builderFactory, _clock); var provider = new DefaultMetricsProvider(registry, builderFactory, _clock); var snapshot = new DefaultMetricValuesProvider(_metricsFilter, registry); var manage = new DefaultMetricsManager(registry); var metrics = new DefaultMetrics(_clock, _metricsFilter, measure, builderFactory, provider, snapshot, manage); var defaultMetricsOutputFormatter = _defaultMetricsOutputFormatter ?? _metricsOutputFormatters.FirstOrDefault(); var defaultEnvOutputFormatter = _defauEnvOutputFormatter ?? _envFormatters.FirstOrDefault(); if (CanReport()) { _metricsReportRunner = new DefaultMetricsReportRunner(metrics, _reporters); } return(new MetricsRoot( metrics, _options, _metricsOutputFormatters, _envFormatters, defaultMetricsOutputFormatter, defaultEnvOutputFormatter, _environmentInfoProvider, _reporters, _metricsReportRunner)); IMetricContextRegistry ContextRegistry(string context) => new DefaultMetricContextRegistry(context, new GlobalMetricTags(_options.GlobalTags)); }
public void Update_RegistersEventAssociatedWithReport() { ResetCleaner(); var registry = new DefaultMetricsRegistry(); registry.Event(MetricName, () => { return(new EventMetric()); }, MetricTags.None); var reportIndex = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex, registry.DataProvider.Events); GetReportsEventCount(reportIndex).Should().Be(1); }
public MetricsFixture() { var metricsLogger = _loggerFactory.CreateLogger <DefaultAdvancedMetrics>(); var healthFactoryLogger = _loggerFactory.CreateLogger <HealthCheckFactory>(); var clock = new TestClock(); var options = new AppMetricsOptions { DefaultSamplingType = SamplingType.LongTerm }; Func <string, IMetricContextRegistry> newContextRegistry = name => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry(_loggerFactory, options, clock, new EnvironmentInfoProvider(), newContextRegistry); var healthCheckFactory = new HealthCheckFactory(healthFactoryLogger); var advancedContext = new DefaultAdvancedMetrics(metricsLogger, options, clock, new DefaultMetricsFilter(), registry, healthCheckFactory); Metrics = new DefaultMetrics(options, registry, advancedContext); }
public HealthCheckRegistryTests() { _metircsSetup = healthCheckFactory => { var metricsLogger = LoggerFactory.CreateLogger <DefaultAdvancedMetrics>(); var clock = new TestClock(); var options = new AppMetricsOptions(); Func <string, IMetricContextRegistry> newContextRegistry = name => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry(LoggerFactory, options, clock, new EnvironmentInfoProvider(LoggerFactory), newContextRegistry); var advancedContext = new DefaultAdvancedMetrics(metricsLogger, options, clock, new DefaultMetricsFilter(), registry, healthCheckFactory); return(new DefaultMetrics(options, registry, advancedContext)); }; }
public MetricCoreTestFixture() { var options = new MetricsOptions(); Clock = new TestClock(); Builder = new DefaultMetricsBuilderFactory(new DefaultSamplingReservoirProvider(() => new DefaultForwardDecayingReservoir())); IMetricContextRegistry ContextRegistrySetup(string context) => new DefaultMetricContextRegistry(context); var registry = new DefaultMetricsRegistry(options.DefaultContextLabel, Clock, ContextRegistrySetup); Registry = registry; Providers = new DefaultMetricsProvider(Registry, Builder, Clock); Snapshot = new DefaultMetricValuesProvider(new NullMetricsFilter(), Registry); Managers = new DefaultMeasureMetricsProvider(Registry, Builder, Clock); Context = options.DefaultContextLabel; }
public MetricCoreTestFixture() { var loggerFactory = new LoggerFactory(); var options = new AppMetricsOptions(); Clock = new TestClock(); Builder = new DefaultMetricsBuilderFactory(); Func <string, IMetricContextRegistry> contextRegistrySetup = context => new DefaultMetricContextRegistry(context); var registry = new DefaultMetricsRegistry(loggerFactory, options, Clock, new EnvironmentInfoProvider(), contextRegistrySetup); Registry = registry; Providers = new DefaultMetricsProvider(Registry, Builder, Clock); Snapshot = new DefaultMetricValuesProvider(new NoOpMetricsFilter(), Registry); Managers = new DefaultMeasureMetricsProvider(Registry, Builder, Clock); Context = options.DefaultContextLabel; }
public void RemoveEvent_RemovesEventFromAllReports() { ResetCleaner(); var registry = new DefaultMetricsRegistry(); registry.Event(MetricName, () => { return(new EventMetric()); }, MetricTags.None); var reportIndex1 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); var reportIndex2 = EventMetricsCleaner.RegisterReport(new TimeSpan(0, 0, 0, 60)); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex1, registry.DataProvider.Events); EventMetricsCleaner.UpdateTotalReportedEvents(reportIndex2, registry.DataProvider.Events); EventMetricsCleaner.RemoveEvent(metricNameTypeTags); GetReportsEventCount(reportIndex1).Should().Be(0); GetReportsEventCount(reportIndex2).Should().Be(0); }
public MetricsFixture() { Clock = new TestClock(); var options = new MetricsOptions(); IMetricContextRegistry NewContextRegistry(string name) => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry(options.DefaultContextLabel, Clock, NewContextRegistry); var metricBuilderFactory = new DefaultMetricsBuilderFactory(new DefaultSamplingReservoirProvider(() => new DefaultForwardDecayingReservoir())); var filter = new MetricsFilter(); var dataManager = new DefaultMetricValuesProvider(filter, registry); var metricsManagerFactory = new DefaultMeasureMetricsProvider(registry, metricBuilderFactory, Clock); var metricsManagerAdvancedFactory = new DefaultMetricsProvider(registry, metricBuilderFactory, Clock); var metricsManager = new DefaultMetricsManager(registry); Metrics = new DefaultMetrics( Clock, filter, metricsManagerFactory, metricBuilderFactory, metricsManagerAdvancedFactory, dataManager, metricsManager); }