Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }