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); }
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); }
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); }