diff --git a/src/MassTransit.Tests/MassTransit.Tests.csproj b/src/MassTransit.Tests/MassTransit.Tests.csproj index c7cad9a06e..edb4b7ed37 100644 --- a/src/MassTransit.Tests/MassTransit.Tests.csproj +++ b/src/MassTransit.Tests/MassTransit.Tests.csproj @@ -131,6 +131,7 @@ + diff --git a/src/MassTransit.Tests/MessageRetryTracker_Specs.cs b/src/MassTransit.Tests/MessageRetryTracker_Specs.cs new file mode 100644 index 0000000000..99ffe2e589 --- /dev/null +++ b/src/MassTransit.Tests/MessageRetryTracker_Specs.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MassTransit.Transports; +using NUnit.Framework; + +namespace MassTransit.Tests +{ + [TestFixture] + public class MessageRetryTracker_Specs + { + [Test] + public void IsLimitExceeded_return_false_untill_specified_limit_reached() + { + const int retryLimit = 5; + + var tracker = new MessageRetryTracker(retryLimit); + const string id = "qelofjsw"; + + for (int i = 0; i < retryLimit; i++) + { + Assert.IsFalse(tracker.IsRetryLimitExceeded(id)); + tracker.IncrementRetryCount(id); + } + Assert.IsTrue(tracker.IsRetryLimitExceeded(id)); + } + } +} diff --git a/src/MassTransit/Transports/MessageRetryTracker.cs b/src/MassTransit/Transports/MessageRetryTracker.cs index afbb852f32..272dd7f5a9 100644 --- a/src/MassTransit/Transports/MessageRetryTracker.cs +++ b/src/MassTransit/Transports/MessageRetryTracker.cs @@ -29,7 +29,7 @@ public MessageRetryTracker(int retryLimit) public bool IsRetryLimitExceeded(string id) { int retryCount = 0; - if (_messages.ReadLock(x => x.TryGetValue(id, out retryCount))) + if (!_messages.ReadLock(x => x.TryGetValue(id, out retryCount))) return false; return retryCount >= _retryLimit;