Esempio n. 1
0
        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);
        }
Esempio n. 2
0
    public void CurrentProcessMonitor_ShouldNotThrow_OnMultipleDisposeCalls()
    {
        var monitor = new CurrentProcessMonitor();

        monitor.Dispose();
        var dispose = () => monitor.Dispose();

        dispose.Should().NotThrow();
    }