Ejemplo n.º 1
0
        private static async Task IncreaseTemporaryFailureCount(SemaphoreSlim startSignal,
                                                                TooManyTemporaryFailuresStatistics <string> tooManyTemporaryFailuresStatistics)
        {
            await startSignal.WaitAsync();

            await tooManyTemporaryFailuresStatistics.RegisterMessageStatusAsync(ProcessedMessageStatus
                                                                                .TemporaryFailure);
        }
Ejemplo n.º 2
0
        private static TooManyTemporaryFailuresHealthCheck <string> CreateHealthCheck(
            TooManyTemporaryFailuresStatistics <string> temporaryFailuresStatistics)
        {
            var options = new TooManyTemporaryFailuresOptions();

            return(new TooManyTemporaryFailuresHealthCheck <string>(
                       Options.Create(options), temporaryFailuresStatistics));
        }
Ejemplo n.º 3
0
        public async void RegisterMessageStatusAsync_StatusNotHandledCorrectly_DoesNotSetLastHandledMessage(
            ProcessedMessageStatus status)
        {
            var tooManyTemporaryFailuresStatistics = new TooManyTemporaryFailuresStatistics <string>();
            var beforeRegister = DateTimeOffset.UtcNow;

            await tooManyTemporaryFailuresStatistics.RegisterMessageStatusAsync(status);

            Assert.NotInRange(tooManyTemporaryFailuresStatistics.LastHandledMessageAt, beforeRegister,
                              DateTimeOffset.UtcNow);
        }
Ejemplo n.º 4
0
        public async void RegisterMessageStatusAsync_StatusHandledCorrectly_ResetTemporaryFailureCount(
            ProcessedMessageStatus status)
        {
            var tooManyTemporaryFailuresStatistics = new TooManyTemporaryFailuresStatistics <string>
            {
                TemporaryFailureCountSinceLastHandledMessage = 100
            };

            await tooManyTemporaryFailuresStatistics.RegisterMessageStatusAsync(status);

            Assert.Equal((uint)0, tooManyTemporaryFailuresStatistics.TemporaryFailureCountSinceLastHandledMessage);
        }
Ejemplo n.º 5
0
        public async void RegisterMessageStatusAsync_StatusNotHandledCorrectly_IncreasesTemporaryFailureCount(
            uint count, ProcessedMessageStatus status)
        {
            var tooManyTemporaryFailuresStatistics = new TooManyTemporaryFailuresStatistics <string>();

            for (uint i = 0; i < count; i++)
            {
                await tooManyTemporaryFailuresStatistics.RegisterMessageStatusAsync(status);
            }

            Assert.Equal(count, tooManyTemporaryFailuresStatistics.TemporaryFailureCountSinceLastHandledMessage);
        }
Ejemplo n.º 6
0
        RegisterMessageStatusAsync_ManyStatusesNotHandledCorrectlyInParallel_CorrectTemporaryFailureCount()
        {
            var tooManyTemporaryFailuresStatistics = new TooManyTemporaryFailuresStatistics <string>();
            var notHandledCorrectlyTasks           = new List <Task>(100);
            var startSignal = new SemaphoreSlim(0, 100);

            for (var i = 0; i < 100; i++)
            {
                notHandledCorrectlyTasks.Add(IncreaseTemporaryFailureCount(startSignal,
                                                                           tooManyTemporaryFailuresStatistics));
            }
            startSignal.Release(100);

            await Task.WhenAll(notHandledCorrectlyTasks);

            Assert.Equal((uint)100, tooManyTemporaryFailuresStatistics.TemporaryFailureCountSinceLastHandledMessage);
        }
 public TooManyTemporaryFailuresDelegatingMessageHandler(
     TooManyTemporaryFailuresStatistics <TInput> statistics)
 {
     _statistics = statistics;
 }
 public TooManyTemporaryFailuresHealthCheck(IOptions <TooManyTemporaryFailuresOptions> options,
                                            TooManyTemporaryFailuresStatistics <TInput> statistics)
 {
     _statistics = statistics;
     _options    = options.Value;
 }