Пример #1
0
        /// <summary>
        /// Manager must invoke grabbers when there is demand for jobs
        /// </summary>
        //[Fact]
        public void TestWithGrabberWithDemand()
        {
            var sitemapService = new Mock <ISitemapService>();
            var adJobsService  = new Mock <IAdJobsService>();
            var manager        = new SitemapGrabberManager(
                sitemapService.Object, adJobsService.Object
                )
            {
                CycleDelay = TimeSpan.FromMilliseconds(1)
            };
            var grabber = new Mock <ISitemapGrabber>();

            grabber.Setup(g => g.GrabIndex()).Returns(() => Task.FromResult(new List <SitemapEntry>()));
            grabber.Setup(g => g.GetSourceType()).Returns(SourceType.Avito);
            manager.AddGrabber("test_grabber", grabber.Object, isEnabled: true);
            manager.RequestMoreJobs(new JobDemand {
                { SourceType.Avito, 1 }
            });
            var task = manager.Run(_tokenSource.Token);

            while (task.Status != TaskStatus.Running)
            {
                Thread.Sleep(10);
            }
            Thread.Sleep(1000);
            Assert.False(task.IsFaulted);
            grabber.Verify(g => g.GrabIndex());
            grabber.Verify(g => g.HasSitemapsToGrab(It.IsAny <List <SitemapEntry> >()));
            _tokenSource.Cancel();
        }
Пример #2
0
        /// <summary>
        /// Empty manager must not fail
        /// </summary>
        //[Fact]
        public void TestEmpty()
        {
            var sitemapService = new Mock <ISitemapService>();
            var adJobsService  = new Mock <IAdJobsService>();
            var manager        = new SitemapGrabberManager(
                sitemapService.Object, adJobsService.Object
                )
            {
                CycleDelay = TimeSpan.Zero
            };
            var task = manager.Run(_tokenSource.Token);

            while (task.Status != TaskStatus.Running)
            {
                Thread.Sleep(10);
            }
            Thread.Sleep(10);
            Assert.False(task.IsFaulted);
            _tokenSource.Cancel();
        }