示例#1
0
        public async Task CountCalls_ShutDownWithCancel()
        {
            var mockProvider = new Mock <IHostedServiceProvider>();

            mockProvider.SetupGet(o => o.Delay).Returns(1000); // call provider every second

            var fakeLogger = NUnitOutputLogger.Create <IHostedServiceProvider>();

            var subject = new HostedService <IHostedServiceProvider>(mockProvider.Object, fakeLogger);

            var tokenSource = new CancellationTokenSource();

            tokenSource.CancelAfter(4150);

            await Task.Run(() =>
            {
                subject.StartAsync(tokenSource.Token);
                tokenSource.Token.WaitHandle.WaitOne();
            });

            await Task.Delay(250);

            mockProvider.Verify(o => o.StartupAsync(), Times.Exactly(1));
            mockProvider.Verify(o => o.DoPeriodicWorkAsync(), Times.Exactly(5));
            mockProvider.Verify(o => o.StopAsync(It.IsAny <CancellationToken>()), Times.Never);
        }
示例#2
0
        private CandleMonitor ResetSubject(CandleMonitorFeeds feedData)
        {
            iCountCandleSourceEvents = new CandleSourceEventSummary();

            mockCoinbaseProClient = new Mock <ICoinbaseProClient>();

            fakeWorkflow = StartupWorkflow.ForCandleMonitorOnly();

            var mockCandleDataSource = new Mock <ICandleDataSource>();

            mockCandleDataSource.Setup(o => o.Load(DateTime.UtcNow)).ReturnsAsync(Mock.Of <TimeSeries>());
            mockCandleDataSource.SetupProperty(o => o.LastUpdatedUtc, DateTime.UtcNow.AddDays(-100));

            var mockCandleProvider = new Mock <ICandleProvider>();

            mockCandleProvider.Setup(o => o.Load(Mock.Of <MarketFeedSettings>()).LastUpdatedUtc).Returns(DateTime.UtcNow.AddDays(-100));
            mockCandleProvider.SetupGet(o => o.DataStores[It.IsAny <MarketFeedSettings>()]).Returns(mockCandleDataSource.Object);

            var mockCandleMonitorFeedProvider = new Mock <ICandleMonitorFeedProvider>();

            mockCandleMonitorFeedProvider.Setup(o => o.GetFeeds()).Returns(new List <CandleMonitorFeeds> {
                feedData
            });

            var mockCandleProducer = new Mock <ICandleProducer>();

            setupMockCandleProducer = mockCandleProducer.Setup(o => o.Send(It.IsAny <CandlesReceivedEventArgs>()));

            var fakeAppSettings = Options.Create(new AppSetting());
            var fakeLogger      = NUnitOutputLogger.Create <CandleMonitor>();

            var subject = new CandleMonitor(
                mockCoinbaseProClient.Object,
                fakeWorkflow,
                mockCandleProvider.Object,
                mockCandleMonitorFeedProvider.Object,
                mockCandleProducer.Object,
                fakeAppSettings,
                fakeLogger);

            return(subject);
        }
示例#3
0
        public async Task CountCalls_ShutDownGracefully()
        {
            var mockProvider = new Mock <IHostedServiceProvider>();

            mockProvider.SetupGet(o => o.Delay).Returns(1000); // call provider every second

            var fakeLogger = NUnitOutputLogger.Create <IHostedServiceProvider>();

            var subject = new HostedService <IHostedServiceProvider>(mockProvider.Object, fakeLogger);

            await subject.StartAsync(CancellationToken.None);

            await Task.Delay(2500);

            await subject.StopAsync(CancellationToken.None);

            mockProvider.Verify(o => o.StartupAsync(), Times.Exactly(1));
            mockProvider.Verify(o => o.DoPeriodicWorkAsync(), Times.Exactly(3));
            mockProvider.Verify(o => o.StopAsync(It.IsAny <CancellationToken>()), Times.Once);
        }