Poll() public method

Does work until no work is found, and then it polls for more work every 10 seconds. Could multi-thread this, but it's just as trivial to load multiple instances.
public Poll ( ) : void
return void
コード例 #1
0
ファイル: WorkerTests.cs プロジェクト: Ancestry/quality-bot
        public void WorkerSleepsIfNoJobsFound()
        {
            // Arrange
            var service   = Substitute.For<IService>();
            var db        = Substitute.For<IJobsDb>();
            db.GetNextJob().ReturnsForAnyArgs((Job)null);
            var worker    = new Worker(service, db) { PollRate = 1000 };
            worker.DoWork = false;

            // Act
            var sw = Stopwatch.StartNew();
            worker.Poll();
            sw.Stop();

            // Assert
            Assert.That(sw.ElapsedMilliseconds, Is.AtLeast(950));
        }
コード例 #2
0
ファイル: WorkerTests.cs プロジェクト: Ancestry/quality-bot
        public void WorkerSleepsUntilJobFound()
        {
            // Arrange
            var service = Substitute.For<IService>();
            var db = Substitute.For<IJobsDb>();
            var worker = new Worker(service, db) { PollRate = 500 };
            SubstituteExtensions.ReturnsForAnyArgs(
                service.CompareDynamic(Arg.Any<dynamic>(), Arg.Any<dynamic>(), Arg.Any<bool>()),
                new[] { new Comparison { Id = new ObjectId(Randomator.RandomFromSample(24, "0123456789ABCDEF")) } });

            // Third try will return a job
            var job = FakeJobs.PendingCompareJob;
            db.GetNextJob().ReturnsForAnyArgs(null, null, job);
            var counter = 0;

            // Stop work on the third call
            db.When(j => j.GetNextJob()).Do(x => { if (++counter == 4) worker.DoWork = false; });

            //  Act
            var sw = Stopwatch.StartNew();
            worker.Poll();
            sw.Stop();

            // Assert
            Assert.That(sw.ElapsedMilliseconds, Is.AtLeast(950));
            Assert.AreEqual("C", job.Status);
        }