Exemplo n.º 1
0
        public void ShouldListSavedRetriesInThePendingRetries()
        {
            RetryTemplate retryTemplate = new RetryTemplate(new LiteDatabase(Path.GetTempFileName()));

            string testOperationId = "test.operation";
            string testArgument    = "test argument";
            var    pendingRetry    = retryTemplate.SaveForRetry <string>(testOperationId, testArgument);
            var    pendingRetries  = retryTemplate.GetPendingRetries <string>(testOperationId);

            Assert.Contains <PendingRetry <string> >(pendingRetries, (x) =>
                                                     x.OperationId == testOperationId && x.Argument == testArgument);
        }
Exemplo n.º 2
0
        public void ShouldNotListSuccessfullyCompletedRetriesInThePendingRetries()
        {
            RetryTemplate retryTemplate = new RetryTemplate(new LiteDatabase(Path.GetTempFileName()));

            string testOperationId = "test.operation";
            string testArgument    = "test argument";
            var    pendingRetry    = retryTemplate.SaveForRetry <string>(testOperationId, testArgument);

            retryTemplate.DoExecute(pendingRetry, (argument) => (object)null, null, CancellationToken.None);

            var pendingRetries = retryTemplate.GetPendingRetries <string>(testOperationId);

            Assert.DoesNotContain <PendingRetry <string> >(pendingRetries, (x) =>
                                                           x.OperationId == testOperationId && x.Argument == testArgument);
        }
Exemplo n.º 3
0
        public void ShouldPersistThePendingRetriesAfterCreateNewInstancesOfTheRetryTemplate()
        {
            string testOperationId = "test.operation";
            string testArgument    = "test argument";
            string tempFileName    = Path.GetTempFileName();

            using (var database = new LiteDatabase(tempFileName))
            {
                RetryTemplate retryTemplate = new RetryTemplate(database);
                var           pendingRetry  = retryTemplate.SaveForRetry <string>(testOperationId, testArgument);
            }

            using (var database = new LiteDatabase(tempFileName))
            {
                RetryTemplate retryTemplate  = new RetryTemplate(database);
                var           pendingRetries = retryTemplate.GetPendingRetries <string>(testOperationId);
                Assert.Contains <PendingRetry <string> >(pendingRetries, (x) =>
                                                         x.OperationId == testOperationId && x.Argument == testArgument);
            }
        }
Exemplo n.º 4
0
        public void ShouldNotListRetriesWithExhaustedRetriesInThePendingRetries()
        {
            RetryTemplate retryTemplate = new RetryTemplate(new LiteDatabase(Path.GetTempFileName()));

            retryTemplate.RetryPolicy = new NeverRetryPolicy();

            string testOperationId = "test.operation";
            string testArgument    = "test argument";
            var    pendingRetry    = retryTemplate.SaveForRetry <string>(testOperationId, testArgument);

            try
            {
                retryTemplate.DoExecute <string, object>(pendingRetry, (argument) => throw new Exception(), null, CancellationToken.None);
            }
            catch (RetryExhaustedException) {}

            var pendingRetries = retryTemplate.GetPendingRetries <string>(testOperationId);

            Assert.DoesNotContain <PendingRetry <string> >(pendingRetries, (x) =>
                                                           x.OperationId == testOperationId && x.Argument == testArgument);
        }
Exemplo n.º 5
0
        public void ShouldListRetriesWithCancelledExcutionInThePendingRetries()
        {
            RetryTemplate retryTemplate = new RetryTemplate(new LiteDatabase(Path.GetTempFileName()));

            retryTemplate.RetryPolicy = new NeverRetryPolicy();

            string testOperationId = "test.operation";
            string testArgument    = "test argument";
            var    pendingRetry    = retryTemplate.SaveForRetry <string>(testOperationId, testArgument);

            try
            {
                retryTemplate.DoExecute <string, object>(pendingRetry, (argument) => (object)null,
                                                         null, new CancellationToken(true));
            }
            catch (RetryInterruptedException) {}

            var pendingRetries = retryTemplate.GetPendingRetries <string>(testOperationId);

            Assert.Contains <PendingRetry <string> >(pendingRetries, (x) =>
                                                     x.OperationId == testOperationId && x.Argument == testArgument);
        }