public void ShouldExecuteJobWhenFreeSlotIsFound() { //arrange var testJob1 = new TestJob {Id = 1, ExecutionTime = 1000}; var testJob2 = new TestJob {Id = 2, ExecutionTime = 1000}; var testJob3 = new TestJob {Id = 3, ExecutionTime = 1000}; var stopwatch = new Stopwatch(); stopwatch.Start(); //act _jobQueue.Add(testJob1); _jobQueue.Add(testJob2); _jobQueue.Add(testJob3); //assert WaitHandle.WaitAll(new[] {testJob1.Event, testJob2.Event}); Assert.That(testJob1.Finished, Is.True); Assert.That(testJob2.Finished, Is.True); Assert.That(stopwatch.ElapsedMilliseconds, Is.LessThan(2000)); testJob3.Event.WaitOne(); stopwatch.Stop(); Assert.That(testJob3.Finished, Is.True); Assert.That(stopwatch.ElapsedMilliseconds, Is.LessThan(3000)); }
public void ShouldHandleException() { //arrange var testJob1 = new ExceptionJob {Id = 1, ExecutionTime = 1000}; var testJob2 = new TestJob {Id = 2, ExecutionTime = 1000}; var testJob3 = new TestJob {Id = 3, ExecutionTime = 1000}; //act _jobQueue.Add(testJob1); _jobQueue.Add(testJob2); _jobQueue.Add(testJob3); WaitHandle.WaitAll(new[] {testJob2.Event, testJob3.Event}); //assert Assert.That(testJob1.Finished, Is.False); Assert.That(testJob2.Finished, Is.True); Assert.That(testJob3.Finished, Is.True); }
public void ShouldNotExecuteMoreThanGivenAmountOfJobsAtOnce() { //arrange var testJob1 = new TestJob {Id = 1, ExecutionTime = 1000}; var testJob2 = new TestJob {Id = 2, ExecutionTime = 1000}; var testJob3 = new TestJob {Id = 3, ExecutionTime = 1000}; //act _jobQueue.Add(testJob1); _jobQueue.Add(testJob2); _jobQueue.Add(testJob3); WaitHandle.WaitAll(new[] {testJob1.Event, testJob2.Event}); //assert Assert.That(testJob1.Finished, Is.True); Assert.That(testJob2.Finished, Is.True); Assert.That(testJob3.Finished, Is.False); }
public void ShouldRunTwoJobsInParallel() { //arrange var testJob1 = new TestJob {Id = 1, ExecutionTime = 1000}; var testJob2 = new TestJob {Id = 2, ExecutionTime = 1000}; var stopwatch = new Stopwatch(); stopwatch.Start(); //act _jobQueue.Add(testJob1); _jobQueue.Add(testJob2); WaitHandle.WaitAll(new[] {testJob1.Event, testJob2.Event}); //assert stopwatch.Stop(); Assert.That(testJob1.Finished, Is.True); Assert.That(testJob2.Finished, Is.True); Assert.That(stopwatch.ElapsedMilliseconds, Is.LessThan(2000)); }
public void ShouldNotScheduleSameJobTwice() { //arrange var testJob1 = new TestJob {Id = 1, ExecutionTime = 100}; var testJob2 = new TestJob {Id = 1, ExecutionTime = 100}; //act _jobQueue.Add(testJob1); _jobQueue.Add(testJob2); Thread.Sleep(200); //assert Assert.That(testJob1.Finished, Is.True); Assert.That(testJob2.Finished, Is.False); }