public void when_metric_reporter_fails_continues_to_retry() { var loggerFactory = new LoggerFactory(); var metrics = new Mock <IMetrics>(); var factory = new ReportFactory(metrics.Object, loggerFactory); factory.AddProvider(new TestReportProvider(false, TimeSpan.FromMilliseconds(10))); var scheduler = new DefaultTaskScheduler(); var reporter = new Reporter(factory, metrics.Object, scheduler, loggerFactory); var token = new CancellationTokenSource(); token.CancelAfter(100); Action action = () => { reporter.RunReports(_fixture.Metrics, token.Token); }; action.ShouldNotThrow(); }
public async Task when_provider_added_the_associated_metric_reporter_is_created() { var loggerFactory = new LoggerFactory(); var factory = new ReportFactory(loggerFactory); var provider = new Mock <IReporterProvider>(); var scheduler = new Mock <IScheduler>(); var metricReporter = new Mock <IMetricReporter>(); metricReporter.Setup(r => r.GetType()).Returns(typeof(IMetricReporter)); provider.Setup(p => p.CreateMetricReporter(It.IsAny <string>(), It.IsAny <ILoggerFactory>())).Returns(metricReporter.Object); factory.AddProvider(provider.Object); var reporter = new Reporter(factory, scheduler.Object, loggerFactory); provider.Verify(p => p.CreateMetricReporter(It.IsAny <string>(), It.IsAny <ILoggerFactory>()), Times.Once); await reporter.RunReportsAsync(_fixture.Metrics, CancellationToken.None); }
public async Task schedules_reports_to_run_at_the_specified_interval() { var interval = TimeSpan.FromSeconds(60); var loggerFactory = new LoggerFactory(); var factory = new ReportFactory(loggerFactory); var provider = new Mock <IReporterProvider>(); var scheduler = new Mock <IScheduler>(); var metricReporter = new Mock <IMetricReporter>(); metricReporter.Setup(r => r.GetType()).Returns(typeof(IMetricReporter)); var settings = new Mock <IReporterSettings>(); settings.Setup(s => s.ReportInterval).Returns(interval); metricReporter.Setup(r => r.ReportInterval).Returns(interval); provider.Setup(p => p.CreateMetricReporter(It.IsAny <string>(), It.IsAny <ILoggerFactory>())).Returns(metricReporter.Object); provider.Setup(p => p.Settings).Returns(settings.Object); factory.AddProvider(provider.Object); var reporter = new Reporter(factory, scheduler.Object, loggerFactory); await reporter.RunReportsAsync(_fixture.Metrics, CancellationToken.None); scheduler.Verify(p => p.Interval(interval, It.IsAny <Action>(), It.IsAny <CancellationToken>()), Times.Once); }