public void CancelTaskMultipleTimes() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Add(); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); using (FakeTaskWorker taskWorker = new FakeTaskWorker()) { taskWorker.PredefineMethodCall(w => w.StartTask(task, null), () => Thread.Sleep(TimeSpan.FromSeconds(1))); this.TaskWorkerFactory.PredefineResult(taskWorker, f => f.CreateTaskWorker(task)); for (int i = 0; i < 3; i++) { ThreadPool.QueueUserWorkItem(_ => { Thread.Sleep(TimeSpan.FromSeconds(0.3)); this.MessageBus.Tasks.NotifyTaskCancelRequest(taskInfo.TaskId, DateTime.UtcNow); }); } this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); Thread.Sleep(TimeSpan.FromSeconds(0.5)); taskWorker.AssertMethodCallOnceWithArguments(w => w.CancelTask()); } this.MessageBus.Tasks.Receiver.AssertMethodCallOnce(mb => mb.UnsubscribeFromAllChannels()); }
public void CancelTask() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Create(); this.Repository.TaskRuntimeInfo.Add(taskInfo); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); using (FakeTaskWorker taskWorker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(taskWorker, f => f.CreateTaskWorker(task)); taskWorker.PredefineMethodCall(w => w.StartTask(task, null), () => Thread.Sleep(TimeSpan.FromSeconds(1))); ThreadPool.QueueUserWorkItem(_ => this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId)); Thread.Sleep(TimeSpan.FromSeconds(0.5)); this.DateTimeProvider.UtcNow = DateTime.UtcNow; this.MessageBus.Tasks.NotifyTaskCancelRequest(taskInfo.TaskId, this.DateTimeProvider.UtcNow); Thread.Sleep(TimeSpan.FromSeconds(1.5)); taskWorker.AssertMethodCallOnce(w => w.CancelTask()); taskWorker.AssertMethodCallOnce(w => w.Dispose()); } this.MessageBus.Tasks.Receiver.AssertMethodCallOnce(mb => mb.UnsubscribeFromAllChannels()); }
public void Fail() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Add(); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); this.DateTimeProvider.UtcNow = DateTime.UtcNow; Exception error = new TypeNotFoundInRedisException("Dummy Error"); using (FakeTaskWorker worker = new FakeTaskWorker()) { worker.PredefineMethodCall(w => w.StartTask(task, null), () => { throw error; }); this.TaskWorkerFactory.PredefineResult(worker, f => f.CreateTaskWorker(task)); try { this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); } catch (TypeNotFoundInRedisException) { } worker.AssertMethodCallOnce(w => w.Dispose()); } this.MessageBus.Tasks.Receiver.AssertMethodCallOnce(mb => mb.UnsubscribeFromAllChannels()); this.Repository.TaskRuntimeInfo.AssertMethodCallOnceWithArguments(r => r.Fail(taskInfo.TaskId, this.DateTimeProvider.UtcNow, error)); }
public void ReportProgress() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Create(); this.Repository.TaskRuntimeInfo.Add(taskInfo); FakeTask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); double percent = DateTime.Now.Second; using (FakeTaskWorker worker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(worker, f => f.CreateTaskWorker(task)); this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); worker.RaiseReportProgress(percent); } this.MessageBus.Tasks.Receiver.AssertMethodCallOnceWithArguments(mb => mb.NotifyTaskProgress(taskInfo.TaskId, percent)); this.Repository.TaskRuntimeInfo.AssertMethodCallOnceWithArguments(r => r.Progress(taskInfo.TaskId, percent)); }
public void StartTaskWithTaskJobSettings() { this.Configuration.Get <FakeTask>().HasTaskJobSettings = true; ITaskJobSettings settings = new FakeTaskJobSettings(); this.Repository.TaskJobSettings.Set <FakeTask>(settings); ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Create(); FakeTask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); this.Repository.TaskRuntimeInfo.Add(taskInfo); using (FakeTaskWorker taskWorker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(taskWorker, f => f.CreateTaskWorker(task)); this.DateTimeProvider.UtcNow = DateTime.UtcNow; this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); this.TaskWorkerFactory.AssertMethodCallOnceWithArguments(f => f.CreateTaskWorker(task)); taskWorker.AssertMethodCallOnce(w => w.StartTask(task, settings)); } }
public void StartTaskRuntimeInfoNotFound() { Guid taskId = Guid.NewGuid(); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskId, task); using (FakeTaskWorker worker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(worker, f => f.CreateTaskWorker(task)); } this.TaskWorkerBootstrap.StartTask(taskId); }
public void StartTaskCanceled() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Add(); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); using (FakeTaskWorker worker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(worker, f => f.CreateTaskWorker(task)); this.Repository.TaskRuntimeInfo.RequestCancel(taskInfo.TaskId, DateTime.UtcNow); this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); } }
private void StartTaskCompleted(Action <Guid> completeTask) { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Create(); this.Repository.TaskRuntimeInfo.Add(taskInfo); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); using (FakeTaskWorker worker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(worker, f => f.CreateTaskWorker(task)); } completeTask(taskInfo.TaskId); this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); }
public void CancelAnotherTask() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Create(); this.Repository.TaskRuntimeInfo.Add(taskInfo); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); using (FakeTaskWorker taskWorker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(taskWorker, f => f.CreateTaskWorker(task)); this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); this.MessageBus.Tasks.NotifyTaskCancelRequest(Guid.NewGuid(), DateTime.UtcNow); Thread.Sleep(TimeSpan.FromSeconds(0.5)); taskWorker.AssertNoMethodCall(w => w.CancelTask()); } }
public void Complete() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Add(); ITask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); this.DateTimeProvider.UtcNow = DateTime.UtcNow; using (FakeTaskWorker taskWorker = new FakeTaskWorker()) { taskWorker.PredefineMethodCall(w => w.StartTask(task, null), () => { }); this.TaskWorkerFactory.PredefineResult(taskWorker, f => f.CreateTaskWorker(task)); this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); taskWorker.AssertMethodCallOnce(w => w.Dispose()); } this.MessageBus.Tasks.Receiver.AssertMethodCallOnce(mb => mb.UnsubscribeFromAllChannels()); }
public void StartTaskNoTaskJobSettings() { ITaskRuntimeInfo taskInfo = this.Repository.TaskRuntimeInfo.Create(); FakeTask task = new FakeTask(); this.Repository.Tasks.Add(taskInfo.TaskId, task); this.Repository.TaskRuntimeInfo.Add(taskInfo); this.DateTimeProvider.UtcNow = DateTime.UtcNow; using (FakeTaskWorker taskWorker = new FakeTaskWorker()) { this.TaskWorkerFactory.PredefineResult(taskWorker, f => f.CreateTaskWorker(task)); this.TaskWorkerBootstrap.StartTask(taskInfo.TaskId); this.TaskWorkerFactory.AssertMethodCallOnceWithArguments(f => f.CreateTaskWorker(task)); taskWorker.AssertMethodCallOnce(w => w.StartTask(task, null)); } }