public void Only_the_second_groups_should_apply() { var context = new MeowContext(); FailedMessage originalMessage = null; FailedMessage retriedMessage = null; Define(context) .WithEndpoint <MeowReceiver>(b => b.Given(bus => bus.SendLocal(new Meow()))) .Done(ctx => { if (String.IsNullOrWhiteSpace(ctx.UniqueMessageId)) { return(false); } if (!ctx.Retrying) { FailedMessage originalMessageTemp; if (TryGet($"/api/errors/{ctx.UniqueMessageId}", out originalMessageTemp)) { originalMessage = originalMessageTemp; ctx.Retrying = true; Post <object>($"/api/errors/{ctx.UniqueMessageId}/retry"); } } else { return(TryGet( $"/api/errors/{ctx.UniqueMessageId}", out retriedMessage, err => err.ProcessingAttempts.Count == 2 )); } return(false); }) .Run(TimeSpan.FromMinutes(3)); Assert.IsNotNull(originalMessage, "Original message was not received"); Assert.IsNotNull(retriedMessage, "Retried message was not received"); Assert.IsNotNull(originalMessage.FailureGroups, "The original message has no failure groups"); Assert.IsNotNull(retriedMessage.FailureGroups, "The retried message has no failure groups"); var originalExceptionAndStackTraceFailureGroupIds = originalMessage.FailureGroups.Where(x => x.Type == ExceptionTypeAndStackTraceFailureClassifier.Id).Select(x => x.Id).ToArray(); var retriedExceptionAndStackTraceFailureGroupIds = retriedMessage.FailureGroups.Where(x => x.Type == ExceptionTypeAndStackTraceFailureClassifier.Id).Select(x => x.Id).ToArray(); Assert.True(originalExceptionAndStackTraceFailureGroupIds.Any(), "The original message was not classified"); Assert.True(retriedExceptionAndStackTraceFailureGroupIds.Any(), "The retried message was not classified"); Assert.AreEqual(originalMessage.FailureGroups.Single(x => x.Type == MessageTypeFailureClassifier.Id).Id, retriedMessage.FailureGroups.Single(x => x.Type == MessageTypeFailureClassifier.Id).Id, $"{MessageTypeFailureClassifier.Id} FailureGroup Ids changed"); foreach (var failureId in originalExceptionAndStackTraceFailureGroupIds) { Console.WriteLine($"failureId: {failureId}"); Assert.False(retriedExceptionAndStackTraceFailureGroupIds.Contains(failureId), "Failure Group {0} is still set on retried message", failureId); } }
public BaseRepository(MeowContext db) { if (db == null) { throw new ArgumentNullException(nameof(db)); } _db = db; }
public EventRepository(MeowContext db, CacheManager cache) : base(db) { _cache = cache; }