public void IsTaskReadyToExecute() { MultiAttemptTaskQueue q = new MultiAttemptTaskQueue(1,5,TimeSpan.FromSeconds(5)); TaskQueue.TaskItem item = new TaskQueue.TaskItem(o => true, null); item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now }; Assert.IsFalse(q.IsTaskReadyToExecute(item)); item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now - TimeSpan.FromSeconds(6) }; Assert.IsTrue(q.IsTaskReadyToExecute(item)); }
public void NeedWaitTask() { MultiAttemptTaskQueue q = new MultiAttemptTaskQueue(1, 5, TimeSpan.FromSeconds(5)); TaskQueue.TaskItem item = new TaskQueue.TaskItem(o => true, null); item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now }; Trace.WriteLine(q.NeedWaitTask(item).TotalMilliseconds); Assert.Greater(q.NeedWaitTask(item),TimeSpan.Zero); item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now - TimeSpan.FromSeconds(6) }; Trace.WriteLine(q.NeedWaitTask(item).TotalMilliseconds); Assert.Less(q.NeedWaitTask(item), TimeSpan.Zero); }
public void Work() { MultiAttemptTaskQueue q = new MultiAttemptTaskQueue(2, 5, TimeSpan.FromMilliseconds(100)); int i1 = 0; var execDates1 = new List<DateTime>(); q.EnqueueTask(o => { Thread.Sleep(20); execDates1.Add(DateTime.Now); Trace.WriteLine("1:" + DateTime.Now.ToString() + ":" + i1); i1++; return i1 == 5; }, null); int i2 = 0; var execDates2 = new List<DateTime>(); q.EnqueueTask(o => { Thread.Sleep(50); execDates2.Add(DateTime.Now); Trace.WriteLine("2:" + DateTime.Now.ToString() + ":" + i2); i2++; return i2 == 3; }, null); Thread.Sleep(600); Assert.AreEqual(5, execDates1.Count); Array.ForEach( new[] { 0, 1, 2, 3 }, index => Console.WriteLine(execDates1[index + 1] - execDates1[index])); Assert.AreEqual(3, execDates2.Count); Array.ForEach( new[] { 0, 1 }, index => Console.WriteLine(execDates2[index + 1] - execDates2[index])); }