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));
 }
        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)
                                                ));
        }
        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;
        }