Пример #1
0
        public void Should_create_new_context_for_each_call_to_execute()
        {
            string contextValue = null;

            ContextualPolicy policy = Policy
                                      .Handle <DivideByZeroException>()
                                      .RetryForeverAsync((_, context) => contextValue = context["key"].ToString());

            policy.RaiseExceptionAsync <DivideByZeroException>(
                new { key = "original_value" }.AsDictionary()
                );

            contextValue.Should().Be("original_value");

            policy.RaiseExceptionAsync <DivideByZeroException>(
                new { key = "new_value" }.AsDictionary()
                );

            contextValue.Should().Be("new_value");
        }
Пример #2
0
        public void Context_should_be_empty_if_execute_not_called_with_any_data()
        {
            Context capturedContext = null;

            ContextualPolicy policy = Policy
                                      .Handle <DivideByZeroException>()
                                      .RetryForeverAsync((_, context) => capturedContext = context);

            policy.RaiseExceptionAsync <DivideByZeroException>();

            capturedContext.Should()
            .BeEmpty();
        }
Пример #3
0
        public void Should_call_onretry_on_each_retry_with_the_passed_context()
        {
            IDictionary <string, object> contextData = null;

            ContextualPolicy policy = Policy
                                      .Handle <DivideByZeroException>()
                                      .RetryForeverAsync((_, context) => contextData = context);

            policy.RaiseExceptionAsync <DivideByZeroException>(
                new { key1 = "value1", key2 = "value2" }.AsDictionary()
                );

            contextData.Should()
            .ContainKeys("key1", "key2").And
            .ContainValues("value1", "value2");
        }
Пример #4
0
        public void Context_should_be_empty_if_execute_not_called_with_any_data()
        {
            Context capturedContext = null;

            ContextualPolicy policy = Policy
                                      .Handle <DivideByZeroException>()
                                      .WaitAndRetryAsync(new[]
            {
                1.Seconds(),
                2.Seconds(),
                3.Seconds()
            }, (_, __, context) => capturedContext = context);

            policy.RaiseExceptionAsync <DivideByZeroException>();

            capturedContext.Should()
            .BeEmpty();
        }
 public static Task RaiseExceptionAsync <TException>(this ContextualPolicy policy, IDictionary <string, object> contextData, Action <TException, int> configureException = null, CancellationToken cancellationToken = default(CancellationToken)) where TException : Exception, new()
 {
     return(policy.RaiseExceptionAsync(1, contextData, configureException, cancellationToken));
 }