Example #1
0
        public void The_innermost_operation_is_logged(FakeWorkflowLogger logger, IOperation innerOperation)
        {
            var sut = new OperationExecutionLoggingBehavior(logger).AttachTo(new FakeOperationBehavior().AttachTo(innerOperation));

            sut.Execute();

            Assert.Equal(innerOperation, logger.StartedOperations[0]);
            Assert.Equal(innerOperation, logger.FinishedOperations[0]);
        }
        public void Failed_operations_are_forwarded_to_every_supplied_loggers(FakeWorkflowLogger log1, FakeWorkflowLogger log2, IOperation operation, Exception error)
        {
            var sut = new LogMultiplexer(log1, log2);

            sut.OperationFailed(operation, error);

            Assert.Equal(1, log1.OperationFailures.Count);
            Assert.Same(error, log1.OperationFailures[operation][0]);
            Assert.Equal(1, log2.OperationFailures.Count);
            Assert.Same(error, log2.OperationFailures[operation][0]);
        }
        public void Started_operations_are_forwarded_to_every_supplied_loggers(FakeWorkflowLogger log1, FakeWorkflowLogger log2, IOperation operation)
        {
            var sut = new LogMultiplexer(log1, log2);

            sut.OperationStarted(operation);

            Assert.Equal(1, log1.StartedOperations.Count);
            Assert.Same(operation, log1.StartedOperations[0]);
            Assert.Equal(1, log2.StartedOperations.Count);
            Assert.Same(operation, log2.StartedOperations[0]);
        }
Example #4
0
        public void Executing_the_behavior_logs_the_start_and_end_of_the_operation(FakeWorkflowLogger logger, IOperation innerOperation)
        {
            var sut = new OperationExecutionLoggingBehavior(logger).AttachTo(innerOperation);

            sut.Execute();

            Assert.Equal(1, logger.StartedOperations.Count);
            Assert.Equal(innerOperation, logger.StartedOperations[0]);
            Assert.Equal(1, logger.FinishedOperations.Count);
            Assert.Equal(innerOperation, logger.FinishedOperations[0]);
        }
Example #5
0
        public void Executing_an_operation_logs_the_duration(FakeWorkflowLogger logger)
        {
            Time.Stop();
            var innerOperation = new FakeOperation {
                ExecuteAction = () => Time.Wait(TimeSpan.FromMilliseconds(10))
            };
            var sut = new OperationExecutionLoggingBehavior(logger).AttachTo(innerOperation);

            sut.Execute();

            Assert.Equal(TimeSpan.FromMilliseconds(10).TotalMilliseconds, logger.FinishedOperationDurations[0].TotalMilliseconds);
        }
Example #6
0
        public void The_innermost_operation_is_logged_as_the_source(FakeWorkflowLogger logger, Exception error)
        {
            var innerOperation = new FakeOperation {
                ThrowOnExecute = error
            };
            var behavior = new FakeOperationBehavior().AttachTo(innerOperation);
            var sut      = new OperationErrorLoggingBehavior(logger).AttachTo(behavior);

            ExecuteIgnoringErrors(sut.Execute);

            Assert.Equal(1, logger.OperationFailures[innerOperation].Count);
        }
Example #7
0
        public void Start_and_finish_are_logged_in_case_of_failure(FakeWorkflowLogger logger)
        {
            var innerOperation = new FakeOperation {
                ThrowOnExecute = new Exception()
            };
            var sut = new OperationExecutionLoggingBehavior(logger).AttachTo(innerOperation);

            ExecuteIgnoringErrors(sut.Execute);

            Assert.Equal(1, logger.StartedOperations.Count);
            Assert.Equal(1, logger.FinishedOperations.Count);
        }
Example #8
0
        public void Exceptions_thrown_during_the_execution_are_logged(FakeWorkflowLogger logger, Exception error)
        {
            var innerOperation = new FakeOperation {
                ThrowOnExecute = error
            };
            var sut = new OperationErrorLoggingBehavior(logger).AttachTo(innerOperation);

            ExecuteIgnoringErrors(sut.Execute);

            Assert.Equal(1, logger.OperationFailures.Count);
            Assert.Equal(1, logger.OperationFailures[innerOperation].Count);
            Assert.Equal(innerOperation.ThrowOnExecute, logger.OperationFailures[innerOperation][0]);
        }
        public void Finished_operations_are_forwarded_to_every_supplied_loggers(FakeWorkflowLogger log1, FakeWorkflowLogger log2, IOperation operation)
        {
            var sut = new LogMultiplexer(log1, log2);

            sut.OperationFinished(operation, TimeSpan.FromSeconds(1));

            Assert.Equal(1, log1.FinishedOperations.Count);
            Assert.Same(operation, log1.FinishedOperations[0]);
            Assert.Equal(TimeSpan.FromSeconds(1), log1.FinishedOperationDurations[0]);
            Assert.Equal(1, log2.FinishedOperations.Count);
            Assert.Same(operation, log2.FinishedOperations[0]);
            Assert.Equal(TimeSpan.FromSeconds(1), log2.FinishedOperationDurations[0]);
        }
Example #10
0
        public void Retried_operations_are_logged(Exception error, FakeWorkflowLogger log)
        {
            var sut = new RetryBehavior(2, TimeSpan.Zero).AttachTo(new FakeOperation {
                ThrowOnExecute = error, ErrorCount = 2
            });

            sut.Initialize(new FakeWorkflowConfiguration {
                Logger = log
            });

            sut.Execute();

            Assert.Equal(2, log.AppliedBehaviors.Count);
            Assert.Equal("Operation retried", log.AppliedBehaviors[0].Description);
        }
        public void Applied_behaviors_are_forwarded_to_every_supplied_loggers(FakeWorkflowLogger log1, FakeWorkflowLogger log2, IOperation operation, OperationBehavior behavior, string description)
        {
            var sut = new LogMultiplexer(log1, log2);

            sut.BehaviorWasApplied(operation, behavior, description);

            Assert.Equal(1, log1.AppliedBehaviors.Count);
            Assert.Same(behavior, log1.AppliedBehaviors[0].Behavior);
            Assert.Equal(description, log1.AppliedBehaviors[0].Description);
            Assert.Same(operation, log1.AppliedBehaviors[0].Operation);
            Assert.Equal(1, log2.AppliedBehaviors.Count);
            Assert.Same(behavior, log2.AppliedBehaviors[0].Behavior);
            Assert.Equal(description, log2.AppliedBehaviors[0].Description);
            Assert.Same(operation, log2.AppliedBehaviors[0].Operation);
        }
Example #12
0
        public void Contained_errors_are_logged(Exception error, FakeWorkflowLogger log)
        {
            var sut = new ContinueOnFailureBehavior().AttachTo(new FakeOperation {
                ThrowOnExecute = error
            });

            sut.Initialize(new FakeWorkflowConfiguration {
                Logger = log
            });

            sut.Execute();

            Assert.Equal(1, log.AppliedBehaviors.Count);
            Assert.Equal("Error swallowed", log.AppliedBehaviors[0].Description);
        }
        public void Skipped_operations_are_logged(FakeWorkflowLogger log)
        {
            var operation = new SkippableOperation {
                SkipExecution = true
            };
            var sut = new ConditionalExecutionBehavior().AttachTo(operation);

            sut.Initialize(new FakeWorkflowConfiguration {
                Logger = log
            });

            sut.Execute();

            Assert.Equal(1, log.AppliedBehaviors.Count);
            Assert.Equal("Operation was skipped", log.AppliedBehaviors[0].Description);
        }
        public void When_no_compensating_action_is_triggered_no_event_is_logged(FakeWorkflowLogger log)
        {
            var operation = new FakeOperation {
                ThrowOnExecute = new Exception()
            };
            var compensatingOperation = new FakeOperation();
            var sut = new CompensatingOperationBehavior(compensatingOperation, typeof(ArgumentException));

            sut.AttachTo(operation);
            sut.Initialize(new FakeWorkflowConfiguration {
                Logger = log
            });

            ExecuteIgnoringErrors(sut.Execute);

            Assert.Equal(0, log.AppliedBehaviors.Count);
        }
        public void Executing_a_compensating_operation_logs_an_event(FakeWorkflowLogger log)
        {
            var operation = new FakeOperation {
                ThrowOnExecute = new ArgumentException()
            };
            var compensatingOperation = new FakeOperation();
            var sut = new CompensatingOperationBehavior(compensatingOperation, typeof(Exception));

            sut.AttachTo(operation);
            sut.Initialize(new FakeWorkflowConfiguration {
                Logger = log
            });

            ExecuteIgnoringErrors(sut.Execute);

            Assert.Equal(1, log.AppliedBehaviors.Count);
            Assert.Equal("Executing compensating operation", log.AppliedBehaviors[0].Description);
        }
        public void Applied_behaviors_are_logged_with_the_innermost_operation(IOperation operation, FakeWorkflowLogger log)
        {
            var behavior = new FakeOperationBehavior().AttachTo(operation);
            var sut      = new TestBehavior();

            sut.AttachTo(behavior);
            sut.Initialize(new FakeWorkflowConfiguration {
                Logger = log
            });

            sut.ApplyBahviorLog(Description);

            Assert.Equal(operation, log.AppliedBehaviors[0].Operation);
        }
        public void When_initialized_with_a_logger_the_behavior_log_behavior_applications(IOperation operation, FakeWorkflowLogger log)
        {
            var sut = new TestBehavior();

            sut.AttachTo(operation);
            sut.Initialize(new FakeWorkflowConfiguration {
                Logger = log
            });

            sut.ApplyBahviorLog(Description);

            Assert.Equal(1, log.AppliedBehaviors.Count);
            Assert.Equal(sut, log.AppliedBehaviors[0].Behavior);
            Assert.Equal(operation, log.AppliedBehaviors[0].Operation);
            Assert.Equal(Description, log.AppliedBehaviors[0].Description);
        }