示例#1
0
        /// <inheritdoc/>
        protected override Task <TResult> ImplementationAsync <TResult>(
            Func <Context, CancellationToken, Task <TResult> > action,
            Context context,
            CancellationToken cancellationToken,
            bool continueOnCapturedContext)
        {
            return(AsyncMonkeyEngine.InjectBehaviourImplementationAsync(
                       action,
                       context,
                       cancellationToken,
                       async(ctx, ct) =>
            {
                var latency = await _latencyProvider(ctx, cancellationToken).ConfigureAwait(continueOnCapturedContext);

                // to prevent inject latency if token was signaled on latency configuration delegate.
                cancellationToken.ThrowIfCancellationRequested();
                await SystemClock.SleepAsync(
                    latency,
                    cancellationToken)
                .ConfigureAwait(continueOnCapturedContext);
            },
                       InjectionRate,
                       Enabled,
                       continueOnCapturedContext));
        }
 /// <inheritdoc/>
 protected override Task <TResult> ImplementationAsync <TResult>(Func <Context, CancellationToken, Task <TResult> > action, Context context, CancellationToken cancellationToken,
                                                                 bool continueOnCapturedContext)
 {
     return(AsyncMonkeyEngine.InjectExceptionImplementationAsync(
                action,
                context,
                cancellationToken,
                _faultProvider,
                InjectionRate,
                Enabled,
                continueOnCapturedContext));
 }
 /// <inheritdoc/>
 protected override Task <TResult> ImplementationAsync <TResult>(
     Func <Context, CancellationToken, Task <TResult> > action,
     Context context,
     CancellationToken cancellationToken,
     bool continueOnCapturedContext)
 {
     return(AsyncMonkeyEngine.InjectBehaviourImplementationAsync(
                action,
                context,
                cancellationToken,
                async(ctx, ct) => await SystemClock.SleepAsync(
                    await _latencyProvider(ctx, cancellationToken).ConfigureAwait(continueOnCapturedContext),
                    InjectLatencyPolicy.DefaultCancellationForInjectedLatency)
                .ConfigureAwait(continueOnCapturedContext),
                InjectionRate,
                Enabled,
                continueOnCapturedContext));
 }