예제 #1
0
        private void RenderAfterFinish(TaskManager tm, EventMonitor <TaskManager> tmMon,
                                       TaskGraphMonitor tgMon, string fileName)
        {
            Console.WriteLine("Rendering the task graph processing animation");
            TaskGraphRenderer.RenderTaskGraphAnimation(tgMon.Tasks, tgMon,
                                                       System.IO.Path.Combine(
                                                           Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
                                                           fileName + ".avi"),
                                                       maxWidth: 1024, format: TaskGraphRenderer.VideoFormat.AviMjpeg, fps: 3.333f);

            tgMon.AssertTaskEventsRespectDependencies();
        }
예제 #2
0
        private void GeneralTasksAfterFinish(TaskManager tm, EventMonitor <TaskManager> tmMon,
                                             TaskGraphMonitor tgMon)
        {
            var queueTags = tm.WorkingLines.Select(wl => wl.QueueTag).ToArray();

            AssertState(tm, isDisposed: false, isRunning: false);
            tmMon.History.AssertSender(tm);

            tmMon.FilterHistory(ByPropertyChanges <bool>(nameof(TaskManager.IsRunning)))
            .AssertPropertyValues(true, false);

            var labels = tgMon.Tasks.Select(t => t.Label).ToList();

            var beginLabels = tmMon.FilterHistory(ByEventName(nameof(TaskManager.TaskBegin)))
                              .Select(e => ((TestTask)((TaskEventArgs)e.EventArgs).Task).Label).ToList();
            var unstartedLabels = labels.Except(beginLabels).ToList();

            if (unstartedLabels.Count > 0)
            {
                Debug.WriteLine("Task without begin event: " + string.Join(", ", unstartedLabels));
                Assert.Fail("The following tasks did not fire a begin event: " + string.Join(", ", unstartedLabels));
            }

            var endLabels = tmMon.FilterHistory(ByEventName(nameof(TaskManager.TaskEnd)))
                            .Select(e => ((TestTask)((TaskEventArgs)e.EventArgs).Task).Label).ToList();
            var unfinishedLabels = labels.Except(endLabels).ToList();

            if (unfinishedLabels.Count > 0)
            {
                Debug.WriteLine("Task without end event: " + string.Join(", ", unfinishedLabels));
                Assert.Fail("The following tasks did not fire an end event: " + string.Join(", ", unfinishedLabels));
            }

            foreach (var taskMon in tgMon.TaskMonitors)
            {
                taskMon.History.AssertSender(taskMon.Target);
                taskMon.FilterHistory(ByPropertyChanges <TaskState>(nameof(ITask.State)))
                .AssertPropertyValues(
                    TaskState.InProgress,
                    TaskState.CleaningUp,
                    TaskState.Succeeded);
            }

            tgMon.AssertTaskEventsRespectDependencies();
        }