public void ShouldStoreErrorWithProperErrorStatusWhenOriginalDoesNotExist() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); rawMessage.Headers.Add(Headers.Retry, "test"); var fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Register(() => Store); fixture.Register <IHeaderParser>(() => new HeaderParser()); var service = fixture.Create <StoreMessagesThatAreRetriesService>(); //act var id = service.Store(rawMessage, new QueueSettings("test", new ApplicationConfiguration { ApplicationId = "test" })); //assert using (var session = Store.OpenSessionForDefaultTenant()) { var doc = session.Load <MessageDocument>(id); doc.Should().NotBeNull("Stored document should not be null"); doc.AdditionalErrorStatus.Should().Be(AdditionalErrorStatus.IsRetry, "AdditionalErrorStatus should be IsRetry"); doc.IsError.Should().BeTrue("IsError should be true"); doc.CanRetry.Should().BeFalse("Can retry should be true"); } }
public void ShouldNotStoreErrorRetryAsRootDocumentWhenOriginalDoesExist() { //arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Register(() => Store); fixture.Register <IHeaderParser>(() => new HeaderParser()); var service = fixture.Create <StoreMessagesThatAreRetriesService>(); var originalMessageStorageService = fixture.Create <StoreMessagesThatAreNotRetriesService>(); var queueSettings = new QueueSettings("test", new ApplicationConfiguration { ApplicationId = "test" }); var originalMessage = MessageTestHelpers.GetErrorMessage(); var originalId = originalMessageStorageService.Store(originalMessage, queueSettings); var rawMessage = MessageTestHelpers.GetErrorMessage(); rawMessage.Headers.Add(Headers.Retry, originalId.ToString()); //act var id = service.Store(rawMessage, queueSettings); //assert using (var session = Store.OpenSessionForDefaultTenant()) { var doc = session.Load <MessageDocument>(id); doc.Should().NotBeNull("Document should exist"); doc.Id.Should().Be(originalId, "the id of the original document should be returned"); } }
public void ShouldReturnAdditionalErrorStatusStringRetryPendingWhenItWorks() { //arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Register(() => Store); fixture.Register <ICreateRetryMessagesFromOriginal>(() => new CreateRetryMessageFromOriginalService()); var service = fixture.Create <RetryMessagesService>(); var rawMessage = MessageTestHelpers.GetErrorMessage(); var originalMessge = new MessageDocument(); new HeaderParser().AddHeaderInformation(rawMessage, originalMessge); using (var session = Store.OpenSessionForDefaultTenant()) { session.Store(originalMessge); session.SaveChanges(); } //act var result = service.Retry(new RetryMessageModel { RetryIds = new List <long> { originalMessge.Id } }); //assert using (var session = Store.OpenSessionForDefaultTenant()) { var message = session.Load <MessageDocument>(originalMessge.Id); AssertRetriedMessageHeadersExcludingRetryIdSameAsOriginal(message, originalMessge); } }
public void ShouldStoreErrorWithProperExpiration() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Register(() => Store); fixture.Register <IHeaderParser>(() => new HeaderParser()); var service = fixture.Create <StoreMessagesThatAreNotRetriesService>(); int auditExpirationHours = 1; int errorExpirationHours = 2; DateTime expiresAfter = DateTime.UtcNow.AddHours(errorExpirationHours).AddMinutes(-15); DateTime expiresBefore = DateTime.UtcNow.AddHours(errorExpirationHours).AddMinutes(15); //act var id = service.Store(rawMessage, new QueueSettings("test", new ApplicationConfiguration { ApplicationId = "test", DocumentExpirationInHours = auditExpirationHours, ErrorDocumentExpirationInHours = errorExpirationHours })); //assert using (var session = Store.OpenSessionForDefaultTenant()) { var doc = session.Load <MessageDocument>(id); var expires = DateTime.Parse(session.Advanced.GetMetadataFor(doc)["Raven-Expiration-Date"].ToString()); expires.Should().BeAfter(expiresAfter, $"Should expire after around {errorExpirationHours} hours"); expires.Should().BeBefore(expiresBefore, $"Should expire after around {errorExpirationHours} hours"); } }
public void ShouldHaveProperErrorStatusAfterStoringAnAuditRetry() { //arrange var fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Register(() => Store); fixture.Register <IHeaderParser>(() => new HeaderParser()); var service = fixture.Create <StoreMessagesThatAreRetriesService>(); var originalMessageStorageService = fixture.Create <StoreMessagesThatAreNotRetriesService>(); var queueSettings = new QueueSettings("test", new ApplicationConfiguration { ApplicationId = "test" }); var originalMessage = MessageTestHelpers.GetErrorMessage(); var originalId = originalMessageStorageService.Store(originalMessage, queueSettings); var rawMessage = MessageTestHelpers.GetAuditMessage(); rawMessage.Headers.Add(Headers.Retry, originalId.ToString()); //act var id = service.Store(rawMessage, queueSettings); //assert using (var session = Store.OpenSessionForDefaultTenant()) { var doc = session.Load <MessageDocument>(id); doc.Should().NotBeNull("Document should exist"); doc.AdditionalErrorStatus.Should().Be(AdditionalErrorStatus.Resolved, "additional error status should be resolved"); doc.IsError.Should().BeTrue("IsError should be true"); doc.CanRetry.Should().BeFalse("Can retry should be false"); } }
public void ReturnsProperRetryDestinationFromErrorWhenUserSuppliedIsWhitespace() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var destinationFinder = new DetermineRetryDestinationService(); //act var destination = destinationFinder.GetRetryDestination(rawMessage, "\t\t"); //assert destination.Should().Be("Autobahn.Configuration.Host"); }
public void HeaderParserHasNullSagaOnMessageNotInvolvingSaga() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.SagaInfo.Should().BeNull(); }
public void HeaderParserGetsProperProcessingTimeFromError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.ProcessingTime.Should().Be(TimeSpan.Zero); }
public void HeaderParserGetsProperTimeSentFromError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.TimeSent.Should().Be(DateTime.ParseExact("2014-12-31T16:54:57:747221Z", DateTimeFormat, CultureInfo.InvariantCulture).ToUniversalTime()); }
public void HeaderParserGetsProperContentTypeError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.ContentType.Should().Be(ApplicationJsonContentType); }
public void HeaderParserGetsProperAdditionalErrorStatusFromError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.AdditionalErrorStatus.Should().Be(AdditionalErrorStatus.Unresolved); }
public void HeaderParserGetsProperBusTechnologyFromError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.BusTechnology.Should().Be("NServiceBus"); }
public void ShouldSetTimeSentHeaderToTimeOfRetry() { //arrange var utcNow = DateTime.UtcNow.AddSeconds(-1); var rawMessage = MessageTestHelpers.GetErrorMessage(); var creator = new CreateRetryMessageFromOriginalService(); //act creator.PrepareMessageForRetry(rawMessage); //assert Helpers.ToUniversalDateTime(rawMessage.Headers[Headers.TimeSent]).Should().BeAfter(utcNow); }
public void CanGetProperRetryDestinationFromError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var destinationFinder = new DetermineRetryDestinationService(); //act var destination = destinationFinder.GetRetryDestination(rawMessage, null); //assert destination.Should().Be("Autobahn.Configuration.Host"); }
public void ShouldRemoveTimeoutHeaders() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var creator = new CreateRetryMessageFromOriginalService(); //act creator.PrepareMessageForRetry(rawMessage); //assert rawMessage.Headers.Where(x => x.Key.StartsWith("NServiceBus.Timeout")).Select(x => x.Key).Should().BeEmpty(); }
public void HeaderParserGetsProperIsErrorFromError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.IsError.Should().BeTrue(); }
public void ShouldCreateMessageStoreServiceForNonRetry() { //arrange var factory = new StoreMessagesFactory(); var rawMessage = MessageTestHelpers.GetErrorMessage(); //act var service = factory.MessageStorageServiceFor(rawMessage); //assert service.Should().BeOfType <StoreMessagesThatAreNotRetriesService>(); }
public void ShouldAddHeaderForTrackingTheRetry() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var retryHeaderService = new AddRetryTrackingHeadersService(); //act retryHeaderService.AddTrackingHeaders(rawMessage, 101); //assert rawMessage.Headers.Should() .Contain(new KeyValuePair <string, string>(Headers.Retry, "101")); }
public void HeaderParserGetsProperHeadersFromError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.Headers.ShouldBeEquivalentTo(new Dictionary <string, string> { { "NServiceBus.MessageId", "695742b4-58d0-4e3a-83a9-a4120116c48d" }, { "NServiceBus.CorrelationId", "695742b4-58d0-4e3a-83a9-a4120116c48d" }, { "NServiceBus.MessageIntent", "Send" }, { "NServiceBus.Version", "5.0.3" }, { "NServiceBus.TimeSent", "2014-12-31 16:54:57:747221 Z" }, { "NServiceBus.ContentType", "application/json" }, { "NServiceBus.EnclosedMessageTypes", "Autobahn.Configurations.Contracts.Commands.ValidateConfigurations, Autobahn.Configurations.Contracts, Version=1.1.12.0, Culture=neutral, PublicKeyToken=null" }, { "NServiceBus.ConversationId", "d95771ad-eb89-46b3-b8b3-a4120116c48d" }, { "NServiceBus.OriginatingMachine", "QA1-THD-WEB-1" }, { "NServiceBus.OriginatingEndpoint", "Autobahn.Configuration.WebAPI" }, { "NServiceBus.RabbitMQ.CallbackQueue", "Autobahn.Configuration.Host.QA1-APP-01" }, { "NServiceBus.ReplyToAddress", "Autobahn.Configuration.WebAPI" }, { "NServiceBus.ExceptionInfo.ExceptionType", "Raven.Abstractions.Exceptions.ConcurrencyException" }, { "NServiceBus.ExceptionInfo.Message", "PUT attempted on : ConfigurationResponseDocuments/afecc831-34d4-47ca-b43b-56eb90d4e3b6 while it is being locked by another transaction" }, { "NServiceBus.ExceptionInfo.Source", "Raven.Client.Lightweight" }, { "NServiceBus.ExceptionInfo.StackTrace", " at Raven.Client.Connection.ServerClient.DirectBatch(IEnumerable`1 commandDatas, OperationMetadata operationMetadata)\r\n at Raven.Client.Connection.ServerClient.<>c__DisplayClass97.<Batch>b__96(OperationMetadata u)\r\n at Raven.Client.Connection.ReplicationInformer.TryOperation[T](Func`2 operation, OperationMetadata operationMetadata, OperationMetadata primaryOperationMetadata, Boolean avoidThrowing, T& result, Boolean& wasTimeout)\r\n at Raven.Client.Connection.ReplicationInformer.ExecuteWithReplication[T](String method, String primaryUrl, OperationCredentials primaryCredentials, Int32 currentRequest, Int32 currentReadStripingBase, Func`2 operation)\r\n at Raven.Client.Connection.ServerClient.ExecuteWithReplication[T](String method, Func`2 operation)\r\n at Raven.Client.Connection.ServerClient.Batch(IEnumerable`1 commandDatas)\r\n at Raven.Client.Document.DocumentSession.SaveChanges()\r\n at Autobahn.Configurations.Tasks.Handlers.NServiceBus.ValidateConfigurationsHandler.Handle(ValidateConfigurations message) in z:\\BuildAgent\\Work\\fdf076c7251fe009\\app\\Autobahn.Configurations.Tasks\\Handlers\\NServiceBus\\ValidateConfigurationsHandler.cs:line 74\r\n at lambda_method(Closure , Object , Object )\r\n at NServiceBus.Unicast.MessageHandlerRegistry.Invoke(Object handler, Object message, Dictionary`2 dictionary) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\MessageHandlerRegistry.cs:line 126\r\n at NServiceBus.Unicast.MessageHandlerRegistry.InvokeHandle(Object handler, Object message) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\MessageHandlerRegistry.cs:line 84\r\n at NServiceBus.LoadHandlersBehavior.<Invoke>b__1(Object handlerInstance, Object message) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Behaviors\\LoadHandlersBehavior.cs:line 41\r\n at NServiceBus.InvokeHandlersBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Behaviors\\InvokeHandlersBehavior.cs:line 24\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.SetCurrentMessageBeingHandledBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Behaviors\\SetCurrentMessageBeingHandledBehavior.cs:line 17\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.LoadHandlersBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Behaviors\\LoadHandlersBehavior.cs:line 46\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.ApplyIncomingMessageMutatorsBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\MessageMutator\\ApplyIncomingMessageMutatorsBehavior.cs:line 23\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.ExecuteLogicalMessagesBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Messages\\ExecuteLogicalMessagesBehavior.cs:line 24\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.CallbackInvocationBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Behaviors\\CallbackInvocationBehavior.cs:line 23\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.DeserializeLogicalMessagesBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Messages\\DeserializeLogicalMessagesBehavior.cs:line 49\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.ApplyIncomingTransportMessageMutatorsBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\MessageMutator\\ApplyIncomingTransportMessageMutatorsBehavior.cs:line 20\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.SubscriptionReceiverBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Subscriptions\\MessageDrivenSubscriptions\\SubscriptionReceiverBehavior.cs:line 31\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.UnitOfWorkBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\UnitOfWork\\UnitOfWorkBehavior.cs:line 43\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.Transports.RabbitMQ.OpenPublishChannelBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\41ea81d808fdfd62\\src\\NServiceBus.RabbitMQ\\OpenPublishChannelBehavior.cs:line 19\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.ChildContainerBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Behaviors\\ChildContainerBehavior.cs:line 17\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.ProcessingStatisticsBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Monitoring\\ProcessingStatisticsBehavior.cs:line 23\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.AuditBehavior.Invoke(IncomingContext context, Action next) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Audit\\AuditBehavior.cs:line 20\r\n at NServiceBus.BehaviorChain`1.Invoke() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\BehaviorChain.cs:line 39\r\n at NServiceBus.Pipeline.PipelineExecutor.Execute[T](BehaviorChain`1 pipelineAction, T context) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\PipelineExecutor.cs:line 127\r\n at NServiceBus.Pipeline.PipelineExecutor.InvokePipeline[TContext](IEnumerable`1 behaviors, TContext context) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\PipelineExecutor.cs:line 74\r\n at NServiceBus.Pipeline.PipelineExecutor.InvokeReceivePhysicalMessagePipeline() in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Pipeline\\PipelineExecutor.cs:line 100\r\n at NServiceBus.Unicast.UnicastBus.TransportMessageReceived(Object sender, TransportMessageReceivedEventArgs e) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\UnicastBus.cs:line 826\r\n at NServiceBus.Unicast.Transport.TransportReceiver.OnTransportMessageReceived(TransportMessage msg) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Transport\\TransportReceiver.cs:line 410\r\n at NServiceBus.Unicast.Transport.TransportReceiver.ProcessMessage(TransportMessage message) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Transport\\TransportReceiver.cs:line 343\r\n at NServiceBus.Unicast.Transport.TransportReceiver.TryProcess(TransportMessage message) in c:\\BuildAgent\\work\\1b05a2fea6e4cd32\\src\\NServiceBus.Core\\Unicast\\Transport\\TransportReceiver.cs:line 227\r\n at NServiceBus.Transports.RabbitMQ.RabbitMqDequeueStrategy.ConsumeMessages(Object state) in c:\\BuildAgent\\work\\41ea81d808fdfd62\\src\\NServiceBus.RabbitMQ\\RabbitMqDequeueStrategy.cs:line 186" }, { "NServiceBus.FailedQ", "Autobahn.Configuration.Host@QA1-APP-01" }, { "NServiceBus.TimeOfFailure", "2014-12-31 16:56:02:891973 Z" }, { "NServiceBus.Retries.Timestamp", "2014-12-31 16:54:58:516940 Z" }, { "NServiceBus.Timeout.RouteExpiredTimeoutTo", "Autobahn.Configuration.Host@QA1-APP-02" }, { "NServiceBus.Timeout.Expire", "2014-12-31 16:56:01:204458 Z" }, { "WinIdName", "" }, { "$.diagnostics.hostid", "dd0264d6ebaaa79264f4875f0cd3cc9c" }, { "$.diagnostics.hostdisplayname", "QA1-APP-01" }, { "$.diagnostics.originating.hostid", "e2ee89227f61d89c49f32dec35116165" } }); }
public void ReturnsNullIfFailedQHeaderNotPresent() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); rawMessage.Headers.Remove("NServiceBus.FailedQ"); var destinationFinder = new DetermineRetryDestinationService(); //act var destination = destinationFinder.GetRetryDestination(rawMessage, null); //assert destination.Should().BeNull(); }
public void ReturnsWholeQueueWhenDelimiterNotPresent() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); rawMessage.Headers["NServiceBus.FailedQ"] = "simpleQueue"; var destinationFinder = new DetermineRetryDestinationService(); //act var destination = destinationFinder.GetRetryDestination(rawMessage, null); //assert destination.Should().Be("simpleQueue"); }
public void HeaderParserGetsProperAdditionalErrorStatusFromErrorThatIsRetry() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); doc.Headers.Add(Headers.Retry, "foo"); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.AdditionalErrorStatus.Should().Be(AdditionalErrorStatus.IsRetry); }
//test public void ReturnsUserSuppliedValueWhenNotNullOrWhitespace() { //arrange string userSupplied = "userQueue"; var rawMessage = MessageTestHelpers.GetErrorMessage(); rawMessage.Headers.Remove("NServiceBus.FailedQ"); var destinationFinder = new DetermineRetryDestinationService(); //act var destination = destinationFinder.GetRetryDestination(rawMessage, userSupplied); //assert destination.Should().Be(userSupplied); }
public void HeaderParserGetsProperNServiceBusMessageTypesError() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var headerParser = new HeaderParser(); var doc = new MessageDocument(); //act headerParser.AddHeaderInformation(rawMessage, doc); //assert doc.MessageTypes.ShouldBeEquivalentTo(new List <TypeName> { new TypeName("Autobahn.Configurations.Contracts.Commands.ValidateConfigurations, Autobahn.Configurations.Contracts, Version=1.1.12.0, Culture=neutral, PublicKeyToken=null") }); }
public void ShouldNotRemoveOtherHeaders() { //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var creator = new CreateRetryMessageFromOriginalService(); //act creator.PrepareMessageForRetry(rawMessage); //assert rawMessage.Headers.Select(x => x.Key).Should().BeEquivalentTo("NServiceBus.MessageId", "NServiceBus.CorrelationId", "NServiceBus.MessageIntent", "NServiceBus.Version", "NServiceBus.TimeSent", "NServiceBus.ContentType", "NServiceBus.EnclosedMessageTypes", "WinIdName", "NServiceBus.ConversationId", "NServiceBus.OriginatingMachine", "NServiceBus.OriginatingEndpoint", "NServiceBus.RabbitMQ.CallbackQueue", "NServiceBus.ReplyToAddress"); }
public void ShouldRemoveProcessingHeaders() { var processingHeaders = new List <string> { "NServiceBus.ProcessingStarted", "NServiceBus.ProcessingEnded", "NServiceBus.ProcessingEndpoint", "NServiceBus.ProcessingMachine" }; //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var creator = new CreateRetryMessageFromOriginalService(); //act creator.PrepareMessageForRetry(rawMessage); //assert rawMessage.Headers.Select(x => x.Key).Intersect(processingHeaders).Should().BeEmpty(); }
public void ShouldRemoveRetryHeaders() { var errorHeaders = new List <string> { "NServiceBus.FLRetries", "NServiceBus.FailedQ", "NServiceBus.TimeOfFailure" }; //arrange var rawMessage = MessageTestHelpers.GetErrorMessage(); var creator = new CreateRetryMessageFromOriginalService(); //act creator.PrepareMessageForRetry(rawMessage); //assert rawMessage.Headers.Select(x => x.Key).Intersect(errorHeaders).Should().BeEmpty(); rawMessage.Headers.Where(x => x.Key.StartsWith("NServiceBus.Retries")).Select(x => x.Key).Should().BeEmpty(); }