private void RegisterProcessMonitor(SystemMetricsSettings settings, BuildContext context, IMetricContext metricContext) { var processMonitor = new CurrentProcessMonitor(); context.HostExtensions.AsMutable().Add(processMonitor); if (settings.EnableProcessMetricsLogging) { context.RegisterDisposable(processMonitor.LogPeriodically(context.Log, settings.ProcessMetricsLoggingPeriod)); } if (settings.EnableProcessMetricsReporting) { var collectorSettings = new CurrentProcessMetricsSettings { CpuCoresLimitProvider = () => context.ApplicationLimits.CpuUnits, MemoryBytesLimitProvider = () => context.ApplicationLimits.MemoryBytes }; var collector = new CurrentProcessMetricsCollector(collectorSettings); context.RegisterDisposable(collector.ReportMetrics(metricContext, settings.ProcessMetricsReportingPeriod)); context.RegisterDisposable(collector); } context.RegisterDisposable(processMonitor); }
public void CurrentProcessMonitor_ShouldNotThrow_OnMultipleDisposeCalls() { var monitor = new CurrentProcessMonitor(); monitor.Dispose(); var dispose = () => monitor.Dispose(); dispose.Should().NotThrow(); }