public void SerilogFormatterCannotBeReplaced()
        {
            var reporter = new SerilogMetricsReporter(new SerilogMetricsReporterOptions());

            Action set = () => reporter.Formatter = new MetricsTextOutputFormatter();

            set.Should().Throw <NotSupportedException>();
        }
        public void UsesFilterFromOptions()
        {
            var filter = Mock.Of <IFilterMetrics>();

            var options = new SerilogMetricsReporterOptions
            {
                Filter = filter
            };

            var reporter = new SerilogMetricsReporter(options);

            reporter.Filter.Should().BeSameAs(filter);
        }
        public void UsesFlushIntervalFromOptions()
        {
            var tenSeconds = TimeSpan.FromSeconds(10);

            var options = new SerilogMetricsReporterOptions
            {
                FlushInterval = tenSeconds
            };

            var reporter = new SerilogMetricsReporter(options);

            reporter.FlushInterval.Should().Be(tenSeconds);
        }
        /// <summary>
        ///     Add the <see cref="SerilogMetricsReporter" /> allowing metrics to be reported to Serilog.
        /// </summary>
        /// <param name="metricReporterProviderBuilder">
        ///     The <see cref="IMetricsReportingBuilder" /> used to configure metrics reporters.
        /// </param>
        /// <param name="setupAction">The Serilog reporting options to use.</param>
        /// <returns>
        ///     An <see cref="IMetricsBuilder" /> that can be used to further configure App Metrics.
        /// </returns>
        public static IMetricsBuilder ToSerilog(
            this IMetricsReportingBuilder metricReporterProviderBuilder,
            Action <SerilogMetricsReporterOptions> setupAction)
        {
            if (metricReporterProviderBuilder == null)
            {
                throw new ArgumentNullException(nameof(metricReporterProviderBuilder));
            }

            var options = new SerilogMetricsReporterOptions();

            setupAction?.Invoke(options);

            var reporter = new SerilogMetricsReporter(options);

            return(metricReporterProviderBuilder.Using(reporter));
        }
        public void SerilogFormatterUsedByDefault()
        {
            var reporter = new SerilogMetricsReporter(new SerilogMetricsReporterOptions());

            reporter.Formatter.Should().BeOfType <SerilogMetricsOutputFormatter>();
        }