public void QueueSchedulerPushPollSynchronized() { QueueDuplicateRemovedScheduler scheduler = new QueueDuplicateRemovedScheduler(); ISpider spider = new DefaultSpider("test", new Site()); Parallel.For(0, 1000, new ParallelOptions() { MaxDegreeOfParallelism = 30 }, i => { scheduler.Push(new Request("http://www.a.com", 1, null)); scheduler.Push(new Request("http://www.a.com", 1, null)); scheduler.Push(new Request("http://www.a.com", 1, null)); scheduler.Push(new Request("http://www.b.com", 1, null)); scheduler.Push(new Request($"http://www.{i.ToString()}.com", 1, null)); }); Parallel.For(0, 1000, new ParallelOptions() { MaxDegreeOfParallelism = 30 }, i => { scheduler.Poll(); }); long left = scheduler.GetLeftRequestsCount(); long total = scheduler.GetTotalRequestsCount(); Assert.AreEqual(left, 2); Assert.AreEqual(total, 1002); }
public void QueueSchedulerPoll() { QueueDuplicateRemovedScheduler scheduler = new QueueDuplicateRemovedScheduler(); ISpider spider = new DefaultSpider("test", new Site()); scheduler.Push(new Request("http://www.a.com", 1, null)); scheduler.Push(new Request("http://www.a.com", 1, null)); scheduler.Push(new Request("http://www.a.com", 1, null)); scheduler.Push(new Request("http://www.b.com", 1, null)); var request = scheduler.Poll(); Assert.AreEqual(request.Url, "http://www.a.com"); long left = scheduler.GetLeftRequestsCount(); long total = scheduler.GetTotalRequestsCount(); Assert.AreEqual(left, 1); Assert.AreEqual(total, 2); }