public void Cancel_JobsCancelledBeforeRunning_JobInCanceledStatus() { var job = new LambdaJob(() => { }); job.Cancel(); job.Start().Wait(); Assert.AreEqual(JobStatus.Cancelled, job.Status); }
public void Dispose_JobDoNotHandleCancellationToken_JobIsSuccessfullyCompleted() { var job = new LambdaJob(() => { Thread.Sleep(100); }); _jobManager.PushForExecution(job); Thread.Sleep(10); _jobManager.Dispose(); Assert.AreEqual(JobStatus.Success, job.Status); }
private static LambdaJob[] CreateJobs(int count, Action <int, CancellationToken> internalAction) { var jobs = new LambdaJob[count]; for (var i = 0; i < count; i++) { var index = i; jobs[i] = new LambdaJob(token => { internalAction(index, token); }); } return(jobs); }
private void WaitForCompletion() { var awaiter = new AutoResetEvent(false); var lastJob = new LambdaJob(() => { }); lastJob.StatusChanged += (_, args) => { if (args.Status.IsCompleted()) { awaiter.Set(); } }; _jobManager.PushForExecution(lastJob); awaiter.WaitOne(); }
public void Cancel_JobIgnoresCancellationToken_JobInSuccessStatus() { var job = new LambdaJob(() => { Thread.Sleep(100); }); job.StatusChanged += (sender, args) => { if (args.Status == JobStatus.InProgress) { job.Cancel(); } }; job.Start().Wait(); Assert.AreEqual(JobStatus.Success, job.Status); }
public void Dispose_OneJobRunningOthersPending_ActiveJobCompletedOthersCancelled() { var activeJob = new LambdaJob(() => { Thread.Sleep(100); }); var pendingJobs = CreateJobs(10, (_, __) => { }); _jobManager.PushForExecution(activeJob); foreach (var job in pendingJobs) { _jobManager.PushForExecution(job); } Thread.Sleep(10); _jobManager.Dispose(); Assert.AreEqual(JobStatus.Success, activeJob.Status); Assert.IsTrue(pendingJobs.All(job => job.Status == JobStatus.Cancelled)); }
private static LambdaJob <T>[] CreateJobs <T>(int count, Func <T> internalAction, Action onCompleted) { var jobs = new LambdaJob <T> [count]; for (var i = 0; i < count; i++) { var job = new LambdaJob <T>(internalAction); job.StatusChanged += (_, args) => { if (args.Status.IsCompleted()) { onCompleted(); } }; jobs[i] = job; } return(jobs); }
public void Cancel_JobHandlesCancellationToken_JobInCancelledStatus() { var job = new LambdaJob <int>(token => { token.ThrowIfCancellationRequested(); return(0); }); job.StatusChanged += (sender, args) => { if (args.Status == JobStatus.InProgress) { job.Cancel(); } }; job.Start().Wait(); Assert.AreEqual(JobStatus.Cancelled, job.Status); }