コード例 #1
0
 private static Task Behaviour(Context arg1, CancellationToken arg2)
 {
     throw new PostgresException
           {
               SqlState = ChaosPolicyShared.GetRandomString(RetryablePostGreErrors.Errors.ToList())
           };
 }
コード例 #2
0
 private static InjectBehaviourPolicy CreateRetryChaos(IPolicies policies)
 {
     return(MonkeyPolicy.InjectBehaviour((context) => throw new SqliteException(
                                             "Policy chaos testing",
                                             Convert.ToInt32(ChaosPolicyShared.GetRandomEnum <RetryableSqlErrors>())),
                                         (context) => ChaosPolicyShared.InjectionRate(context, RetryConstants.RetryCount, RetryAttempts),
                                         (context) => policies.EnableChaos));
 }
コード例 #3
0
 private static InjectOutcomePolicy CreateRetryChaos(IPolicies policies)
 {
     return(MonkeyPolicy.InjectException(with =>
                                         with.Fault(Behaviour())
                                         .InjectionRate((context, token) => ChaosPolicyShared.InjectionRate(context, RetryConstants.RetryCount, RetryAttempts))
                                         .Enabled(policies.EnableChaos)
                                         ));
 }
コード例 #4
0
 private static InjectBehaviourPolicy CreateRetryChaos(IPolicies policies)
 {
     return(MonkeyPolicy.InjectBehaviour(
                (context) => throw new PostgresException
     {
         SqlState = ChaosPolicyShared.GetRandomString(RetryablePostGreErrors.Errors.ToList())
     },
                (context) => ChaosPolicyShared.InjectionRate(context, RetryConstants.RetryCount, RetryAttempts),
                (context) => policies.EnableChaos));
 }
コード例 #5
0
        private static AsyncInjectOutcomePolicy CreateRetryChaosAsync(IPolicies policies)
        {
            var fault = new PostgresException(string.Empty, string.Empty, string.Empty,
                                              ChaosPolicyShared.GetRandomString(RetryablePostGreErrors.Errors.ToList()));

            return(MonkeyPolicy.InjectExceptionAsync(with =>
                                                     with.Fault(fault)
                                                     .InjectionRate((context, token) => ChaosPolicyShared.InjectionRateAsync(context, RetryConstants.RetryCount, RetryAttempts))
                                                     .Enabled(policies.EnableChaos)
                                                     ));
        }
コード例 #6
0
        private static InjectOutcomePolicy CreateRetryChaos(IPolicies policies)
        {
            var fault = new SQLiteException(
                (SQLiteErrorCode)ChaosPolicyShared.GetRandomEnum <RetryableSqlErrors>(),
                "Policy chaos testing");

            return(MonkeyPolicy.InjectException(with =>
                                                with.Fault(fault)
                                                .InjectionRate((context, token) => ChaosPolicyShared.InjectionRate(context, RetryConstants.RetryCount, RetryAttempts))
                                                .Enabled(policies.EnableChaos)
                                                ));
        }
コード例 #7
0
        private static void Behaviour(Context arg1)
        {
            SqlError sqlError = null;

#if NETFULL
            sqlError = CreateInstance <SqlError>(Convert.ToInt32(ChaosPolicyShared.GetRandomEnum <RetryableSqlErrors>()), null, null, null, null, null, null);
#else
            sqlError = CreateInstance <SqlError>(Convert.ToInt32(ChaosPolicyShared.GetRandomEnum <RetryableSqlErrors>()), null, null, null, null, null, null, null);
#endif
            var collection = CreateInstance <SqlErrorCollection>();
#if NETFULL
            var errors = collection.GetPrivateFieldValue <ArrayList>("errors");
            errors.Add(sqlError);
#else
            var errors = collection.GetPrivateFieldValue <List <object> > ("_errors");
            errors.Add(sqlError);
#endif
            var e = CreateInstance <SqlException>(string.Empty, collection, null, Guid.NewGuid());
            throw e;
        }
コード例 #8
0
 private static async Task <double> InjectionRate(Context arg, int retryAttempts, string keyName)
 {
     return(await ChaosPolicyShared.InjectionRateAsync(arg, retryAttempts, keyName));
 }
コード例 #9
0
 private static async Task <bool> Enabled(Context arg, IPolicies policy)
 {
     return(await ChaosPolicyShared.RunAsync(() => policy.EnableChaos));
 }
コード例 #10
0
 private static InjectBehaviourPolicy CreateRetryChaos(IPolicies policies)
 {
     return(MonkeyPolicy.InjectBehaviour(Behaviour,
                                         (context) => ChaosPolicyShared.InjectionRate(context, RetryConstants.RetryCount, RetryAttempts),
                                         (context) => policies.EnableChaos));
 }