示例#1
0
 public void basic_automatic()
 {
     test(
         ResolverType.Sequential,
         BasicTaskStep.Empty("Step"),
         new[] { 1f });
 }
示例#2
0
        public void step_start_and_end_is_reported()
        {
            // Arrange
            StepStartedEvent?startedEvent = null;
            StepEndedEvent?  endedEvent   = null;

            var events = new TaskExecutionEvents();

            events.StepStarted += x => startedEvent = x;
            events.StepEnded   += x => endedEvent = x;

            var task = new TaskDefinition(
                BasicTaskStep.Empty("Step"));

            // Act
            task.Execute(events: events);

            // Assert
            startedEvent.Should().NotBeNull();
            startedEvent.Value.Step.Should().BeSameAs(task.Steps[0]);

            endedEvent.Should().NotBeNull();
            endedEvent.Value.Step.Should().BeSameAs(task.Steps[0]);
            endedEvent.Value.Duration.Should().BePositive();
        }
示例#3
0
 public void basic(ResolverType resolverType)
 {
     test(
         resolverType,
         BasicTaskStep.Empty("Step"),
         new byte[] { 100 });
 }
示例#4
0
        public void reporter_creates_and_fills_execution_reports()
        {
            // Arrange
            var task = new TaskDefinition(
                BasicTaskStep.Empty("Basic"),
                new PipelineTaskStep <int>(
                    "Pipeline1",
                    new[] { 1 },
                    new List <PipelineBlock <int> >()),
                new PipelineTaskStep <int>(
                    "Pipeline2",
                    new[] { 1 },
                    new List <PipelineBlock <int> >()));

            var loggerEvents   = TaskExecutionLogger.CreateEvents();
            var reporterEvents = TaskExecutionReporter.CreateEvents();

            // Act
            task.Execute(events: loggerEvents.Concat(reporterEvents).ToArray());

            // Assert
            var reports = task.GetExecutionReports();

            reports.Should().NotBeNull().And.NotBeEmpty();
            reports.Should().Contain(x => x.Name == "charts.html");
            reports.Should().Contain(x => x.Name == "Pipeline1_charts.html");
            reports.Should().Contain(x => x.Name == "Pipeline2_charts.html");
            reports.Should().OnlyContain(x => x.Content.StartsWith("<html>"));
        }
示例#5
0
        public void test()
        {
            // Arrange
            var task = new TaskDefinition(
                BasicTaskStep.Empty("Step"));

            var executor = new TaskExecutorBuilder()
                           .RegisterStepExecution(typeof(BasicTaskStep), new ThrowingStepExecutorResolver())
                           .Build();

            // Act
            Action act = () => executor.Execute(task);

            // Assert
            act.Should().Throw <Exception>().Which.Should().BeSameAs(Error);
        }
示例#6
0
        public void events_can_be_registered_for_Executor_instance()
        {
            // Arrange
            var eventHandled = false;

            var events = new TaskExecutionEvents(
                taskStarted: _ => eventHandled = true);

            var task = new TaskDefinition(
                BasicTaskStep.Empty("Step"));

            // Act
            var executor = TaskExecutorFactory.Create(ResolverType.Sequential, events);

            executor.Execute(task);

            // Assert
            eventHandled.Should().BeTrue();
        }
示例#7
0
        public void logger_creates_and_fills_execution_log()
        {
            // Arrange
            var task = new TaskDefinition(
                BasicTaskStep.Empty("Step"));

            var events = TaskExecutionLogger.CreateEvents();

            // Act
            var startTs = DateTime.UtcNow;

            task.Execute(events: events);
            var endTs = DateTime.UtcNow;

            // Assert
            var log = task.GetExecutionLog();

            log.Should().NotBeNull();
            log.TaskDuration.StartTs.Should().BeOnOrAfter(startTs).And.BeOnOrBefore(endTs);
            log.DiagnosticsLog.Diagnostics.Should().NotBeEmpty();
        }
示例#8
0
        public void step_ignored___report_still_generated()
        {
            // Arrange
            var task = new TaskDefinition(
                BasicTaskStep.Empty("Basic"),
                new BasicTaskStep(
                    "Ignored",
                    () => { },
                    x => false));

            var loggerEvents   = TaskExecutionLogger.CreateEvents();
            var reporterEvents = TaskExecutionReporter.CreateEvents();

            // Act
            task.Execute(events: loggerEvents.Concat(reporterEvents).ToArray());

            // Assert
            var reports = task.GetExecutionReports();

            reports.Should().NotBeNull().And.NotBeEmpty();
        }
示例#9
0
        public void global_and_one_time_events_are_merged()
        {
            // Arrange
            var globalEventHandled = false;
            var globalEvents       = new TaskExecutionEvents(
                taskStarted: _ => globalEventHandled = true);

            var oneTimeEventHandled = false;
            var oneTimeEvents       = new TaskExecutionEvents(
                taskStarted: _ => oneTimeEventHandled = true);

            var task = new TaskDefinition(
                BasicTaskStep.Empty("Step"));

            // Act
            var executor = TaskExecutorFactory.Create(ResolverType.Sequential, globalEvents);

            executor.Execute(task, events: oneTimeEvents);

            // Assert
            globalEventHandled.Should().BeTrue();
            oneTimeEventHandled.Should().BeTrue();
        }
示例#10
0
        public void task_start_and_end_is_reported()
        {
            // Arrange
            TaskStartedEvent?startedEvent = null;
            TaskEndedEvent?  endedEvent   = null;

            var events = new TaskExecutionEvents(
                taskStarted: x => startedEvent = x,
                taskEnded: x => endedEvent     = x);

            var task = new TaskDefinition(
                BasicTaskStep.Empty("Step"));

            // Act
            task.Execute(events: events);

            // Assert
            startedEvent.Should().NotBeNull();
            startedEvent.Value.Task.Should().BeSameAs(task);

            endedEvent.Should().NotBeNull();
            endedEvent.Value.Task.Should().BeSameAs(task);
            endedEvent.Value.Duration.Should().BePositive();
        }