Пример #1
0
        public void CancelTaskNotifyTaskCanceled()
        {
            this.Configuration.PredefineResult(null, c => c.GetPollingQueueKey(typeof(FakeTask)));

            Guid taskId = this.TaskProcessorFacade.SubmitTask(new FakeTask());

            this.TaskProcessorFacade.MessageBus.Tasks.Receiver.SubscribeForChannels(MessageBusChannel.TaskCancelRequest);

            TaskEventEventArgs args = Helpers.WaitForEvent <TaskEventEventArgs>(
                TimeSpan.FromSeconds(1),
                handler => this.TaskProcessorFacade.MessageBus.Tasks.Receiver.TaskCancelRequested += handler,
                () => this.TaskProcessorFacade.CancelTask(taskId));

            Assert.AreEqual(taskId, args.TaskId);
        }
Пример #2
0
        public virtual void RaiseTaskFailed()
        {
            Guid taskId = Guid.NewGuid();

            DateTime timestamp = DateTime.UtcNow;

            this.Receiver.SubscribeForChannels(MessageBusChannel.TaskFailed);

            TaskEventEventArgs args = Helpers.WaitForEvent <TaskEventEventArgs>(
                this.Timeout,
                handler => this.Receiver.TaskFailed += handler,
                () => this.Sender.NotifyTaskFailed(taskId, timestamp, Guid.NewGuid(), false, "Hello Error"));

            Assert.AreEqual(taskId, args.TaskId);
            Assert.AreEqual(timestamp, args.TimestampUtc);
        }
Пример #3
0
        public void RaiseTaskCancelRequest()
        {
            Guid taskId = Guid.NewGuid();

            DateTime timestampUtc = DateTime.UtcNow;

            this.Receiver.SubscribeForChannels(MessageBusChannel.TaskCancelRequest);

            TaskEventEventArgs args = Helpers.WaitForEvent <TaskEventEventArgs>(
                this.Timeout,
                handler => this.Receiver.TaskCancelRequested += handler,
                () => this.Sender.NotifyTaskCancelRequest(taskId, timestampUtc));

            Assert.AreEqual(taskId, args.TaskId);
            Assert.AreEqual(timestampUtc, args.TimestampUtc);
        }
Пример #4
0
        public virtual void RaiseTaskCancelCompletedAfterUnsubscribeFromAllChannelsExcept()
        {
            Guid taskId = Guid.NewGuid();

            DateTime timestamp = DateTime.UtcNow;

            this.Receiver.SubscribeForChannels(MessageBusChannel.TaskCancelCompleted);
            this.Receiver.UnsubscribeFromAllChannelsExcept(MessageBusChannel.TaskCancelCompleted);

            TaskEventEventArgs args = Helpers.WaitForEvent <TaskEventEventArgs>(
                this.Timeout,
                handler => this.Receiver.TaskCancelCompleted += handler,
                () => this.Sender.NotifyTaskCancelCompleted(taskId, timestamp, Guid.NewGuid(), false));

            Assert.AreEqual(taskId, args.TaskId);
            Assert.AreEqual(timestamp, args.TimestampUtc);
        }
Пример #5
0
        private void OnTaskCancelCompleted(object sender, TaskEventEventArgs e)
        {
            TaskViewModel taskViewModel = this.taskProcessors
                                          .SelectMany(p => p.ActiveTasks)
                                          .Concat(this.pendingTasks)
                                          .FirstOrDefault(t => t.TaskId == e.TaskId);

            if (taskViewModel == null)
            {
                return;
            }

            App.Current.Dispatcher.InvokeAsync(() =>
            {
                taskViewModel.Status       = TaskStatus.Canceled.ToString();
                taskViewModel.CompletedUtc = e.TimestampUtc;
            });
        }
Пример #6
0
        private void OnTaskFailed(object sender, TaskEventEventArgs e)
        {
            TaskViewModel taskViewModel = this.taskProcessors
                                          .SelectMany(p => p.ActiveTasks)
                                          .Concat(this.pendingTasks)
                                          .FirstOrDefault(t => t.TaskId == e.TaskId);

            ITaskRuntimeInfo taskInfo = this.repository.TaskRuntimeInfo.GetById(e.TaskId);

            if ((taskInfo == null) || (taskViewModel == null))
            {
                return;
            }

            App.Current.Dispatcher.InvokeAsync(() =>
            {
                taskViewModel.Status       = TaskStatus.Failed.ToString();
                taskViewModel.CompletedUtc = e.TimestampUtc;
                taskViewModel.Error        = taskInfo.Error;
            });
        }