From a88124ee5741294f8cad2237985ec8f3776a3dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 28 Nov 2013 14:02:58 +0100 Subject: [PATCH 001/146] Making sure that we clean up the context stack even when there are exceptions thrown from the pipeline --- .../Pipeline/PipelineFactory.cs | 49 +++++++++---------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs b/src/NServiceBus.Core/Pipeline/PipelineFactory.cs index 6de7a12bb64..a05181097b9 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineFactory.cs @@ -2,6 +2,7 @@ { using System; using System.Collections.Generic; + using System.Diagnostics; using Audit; using Contexts; using DataBus; @@ -27,7 +28,7 @@ public void InvokeReceivePhysicalMessagePipeline() { var context = contextStacker.Current as ReceivePhysicalMessageContext; - if(context == null) + if (context == null) { throw new InvalidOperationException("Can't invoke the receive pipeline when the current context is: " + contextStacker.Current.GetType().Name); } @@ -64,11 +65,8 @@ public void InvokeLogicalMessagePipeline(LogicalMessage message) var context = new ReceiveLogicalMessageContext(CurrentContext, message); - contextStacker.Push(context); - pipeline.Invoke(context); - - contextStacker.Pop(); + Execute(pipeline, context); } public HandlerInvocationContext InvokeHandlerPipeline(MessageHandler handler) @@ -80,11 +78,7 @@ public HandlerInvocationContext InvokeHandlerPipeline(MessageHandler handler) var context = new HandlerInvocationContext(CurrentContext, handler); - contextStacker.Push(context); - - pipeline.Invoke(context); - - contextStacker.Pop(); + Execute(pipeline, context); return context; } @@ -99,11 +93,7 @@ public SendLogicalMessagesContext InvokeSendPipeline(SendOptions sendOptions, IE var context = new SendLogicalMessagesContext(CurrentContext, sendOptions, messages); - contextStacker.Push(context); - - pipeline.Invoke(context); - - contextStacker.Pop(); + Execute(pipeline, context); return context; } @@ -115,17 +105,13 @@ public SendLogicalMessageContext InvokeSendPipeline(SendOptions sendOptions, Log pipeline.Add(); pipeline.Add(); pipeline.Add(); - + //todo: we'll make this optional as soon as we have a way to manipulate the pipeline pipeline.Add(); var context = new SendLogicalMessageContext(CurrentContext, sendOptions, message); - contextStacker.Push(context); - - pipeline.Invoke(context); - - contextStacker.Pop(); + Execute(pipeline,context); return context; } @@ -140,11 +126,7 @@ public void InvokeSendPipeline(SendOptions sendOptions, TransportMessage physica var context = new SendPhysicalMessageContext(CurrentContext, sendOptions, physicalMessage); - contextStacker.Push(context); - - pipeline.Invoke(context); - - contextStacker.Pop(); + Execute(pipeline, context); } public BehaviorContext CurrentContext @@ -169,6 +151,21 @@ public void Dispose() //Injected } + void Execute(BehaviorChain pipelineAction, T context) where T : BehaviorContext + { + try + { + contextStacker.Push(context); + + pipelineAction.Invoke(context); + } + finally + { + + contextStacker.Pop(); + } + } + BehaviorContextStacker contextStacker = new BehaviorContextStacker(); } From 153ac4dbd6b11dd43b7e55cb690ab6527df4bda9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 28 Nov 2013 16:22:12 +0100 Subject: [PATCH 002/146] Removed a invalid assert (we can't assume delivery order in tests) --- .../When_sending_messages_within_an_ambient_transaction.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Transactions/When_sending_messages_within_an_ambient_transaction.cs b/src/NServiceBus.AcceptanceTests/Transactions/When_sending_messages_within_an_ambient_transaction.cs index 0a27cd3e6aa..11e6a0fde53 100644 --- a/src/NServiceBus.AcceptanceTests/Transactions/When_sending_messages_within_an_ambient_transaction.cs +++ b/src/NServiceBus.AcceptanceTests/Transactions/When_sending_messages_within_an_ambient_transaction.cs @@ -34,7 +34,6 @@ public void Should_not_deliver_them_until_the_commit_phase() .Should(c => { Assert.AreEqual(1, c.SequenceNumberOfFirstMessage,"The transport should preserve the order in which the transactional messages are delivered to the queuing system"); - Assert.True(c.NonTransactionalHandlerCalledFirst,"The non transactional handler should be called first"); } ) .Run(); From e7bce6195c47d4356fc2a04be6cb3acca062a53f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Fri, 29 Nov 2013 10:09:15 +0100 Subject: [PATCH 003/146] Removing the perf tests from the acceptance test since we have separate projects for that anyway --- .../NServiceBus.AcceptanceTests.csproj | 4 - .../Performance/NServiceBusPerformanceTest.cs | 79 --------- .../Receive/Receive_performance.cs | 132 --------------- .../Request_response_performance.cs | 155 ------------------ .../Performance/Sagas/Saga_performance.cs | 127 -------------- 5 files changed, 497 deletions(-) delete mode 100644 src/NServiceBus.AcceptanceTests/Performance/NServiceBusPerformanceTest.cs delete mode 100644 src/NServiceBus.AcceptanceTests/Performance/Receive/Receive_performance.cs delete mode 100644 src/NServiceBus.AcceptanceTests/Performance/RequestResponse/Request_response_performance.cs delete mode 100644 src/NServiceBus.AcceptanceTests/Performance/Sagas/Saga_performance.cs diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index d7d743880cd..4b81d76c60f 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -123,10 +123,6 @@ - - - - diff --git a/src/NServiceBus.AcceptanceTests/Performance/NServiceBusPerformanceTest.cs b/src/NServiceBus.AcceptanceTests/Performance/NServiceBusPerformanceTest.cs deleted file mode 100644 index af1284e1407..00000000000 --- a/src/NServiceBus.AcceptanceTests/Performance/NServiceBusPerformanceTest.cs +++ /dev/null @@ -1,79 +0,0 @@ -namespace NServiceBus.AcceptanceTests.Performance -{ - using System; - using System.Diagnostics; - using System.IO; - using System.Linq; - using AcceptanceTesting; - using AcceptanceTesting.Support; - - public abstract class NServiceBusPerformanceTest : NServiceBusAcceptanceTest - { - protected static int NumberOfTestMessages - { - get - { - int nr; - - if (!int.TryParse(Environment.GetEnvironmentVariable("NServiceBus.MaxMessagesForPerformanceTests"), out nr)) - { - return 3000; - } - - return nr; - } - } - - protected static int MaxConcurrencyLevel - { - get - { - int nr; - - if (!int.TryParse(Environment.GetEnvironmentVariable("NServiceBus.MaxConcurrencyLevel"), out nr)) - { - return 15; - } - - return nr; - } - } - - protected static void DisplayTestResults(RunSummary summary) - { - var caller = - new StackTrace().GetFrames() - .First(f => typeof(NServiceBusPerformanceTest).IsAssignableFrom(f.GetMethod().DeclaringType.BaseType)); - - var testCategory = - caller.GetMethod() - .DeclaringType.Namespace.Replace(typeof(NServiceBusPerformanceTest).Namespace + ".", ""); - var testCase = caller.GetMethod().Name; - - var c = (PerformanceTestContext)summary.RunDescriptor.ScenarioContext; - - var messagesPerSecondsProcessed = c.NumberOfTestMessages/ - (c.LastMessageProcessedAt - c.FirstMessageProcessedAt).TotalSeconds; - - Console.Out.WriteLine("Results: {0} messages, {1} msg/s", c.NumberOfTestMessages, - messagesPerSecondsProcessed); - - using (var file = new StreamWriter(".\\PerformanceTestResults.txt", true)) - { - file.WriteLine(string.Join(";", summary.RunDescriptor.Key, testCategory, testCase, - c.NumberOfTestMessages, messagesPerSecondsProcessed)); - } - - Console.Out.WriteLine("##teamcity[buildStatisticValue key='{0}' value='{1:0}']", - summary.RunDescriptor.Key + "." + testCategory + "." + testCase, messagesPerSecondsProcessed); - } - } - - public class PerformanceTestContext : ScenarioContext - { - public DateTime FirstMessageProcessedAt { get; set; } - - public DateTime LastMessageProcessedAt { get; set; } - public int NumberOfTestMessages; - } -} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/Performance/Receive/Receive_performance.cs b/src/NServiceBus.AcceptanceTests/Performance/Receive/Receive_performance.cs deleted file mode 100644 index feb0096f984..00000000000 --- a/src/NServiceBus.AcceptanceTests/Performance/Receive/Receive_performance.cs +++ /dev/null @@ -1,132 +0,0 @@ -namespace NServiceBus.AcceptanceTests.Performance.Receive -{ - using System; - using System.Threading; - using System.Threading.Tasks; - using AcceptanceTesting; - using AcceptanceTesting.Support; - using Config; - using EndpointTemplates; - using NUnit.Framework; - using ScenarioDescriptors; - - public class Receive_performance : NServiceBusPerformanceTest - { - [Test] - public void With_dtc_enabled() - { - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(SendTestMessages) - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - [Test] - public void With_dtc_suppressed() - { - - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => - { - b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DisableDistributedTransactions())); - SendTestMessages(b); - }) - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - [Test] - public void With_no_transactions() - { - - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => - { - b.CustomConfig(c => Configure.Transactions.Disable()); - SendTestMessages(b); - }) - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - [Test] - public void With_ambient_tx_suppressed() - { - - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => - { - b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DoNotWrapHandlersExecutionInATransactionScope())); - SendTestMessages(b); - }) - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - - public class Context : PerformanceTestContext - { - - - public bool Complete { get; set; } - } - - public class ReceiveEndpoint : EndpointConfigurationBuilder - { - public ReceiveEndpoint() - { - EndpointSetup() - .WithConfig(c => c.MaximumConcurrencyLevel = MaxConcurrencyLevel); - } - - public class MyMessageHandler : IHandleMessages - { - public Context Context { get; set; } - - static int numberOfMessagesProcessed; - - - public void Handle(MyMessage messageThatIsEnlisted) - { - var current = Interlocked.Increment(ref numberOfMessagesProcessed); - - if (current == 1) - { - Context.FirstMessageProcessedAt = DateTime.UtcNow; - } - - if (current == Context.NumberOfTestMessages) - { - Context.LastMessageProcessedAt = DateTime.UtcNow; - Context.Complete = true; - } - - } - } - } - - [Serializable] - public class MyMessage : ICommand - { - } - - - - protected static void SendTestMessages(EndpointBehaviorBuilder b) - { - b.Given((bus, context) => Parallel.For(0, context.NumberOfTestMessages, (s, c) => bus.SendLocal(new MyMessage()))); - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/Performance/RequestResponse/Request_response_performance.cs b/src/NServiceBus.AcceptanceTests/Performance/RequestResponse/Request_response_performance.cs deleted file mode 100644 index d3c94d58639..00000000000 --- a/src/NServiceBus.AcceptanceTests/Performance/RequestResponse/Request_response_performance.cs +++ /dev/null @@ -1,155 +0,0 @@ -namespace NServiceBus.AcceptanceTests.Performance.RequestResponse -{ - using System; - using System.Threading; - using System.Threading.Tasks; - using AcceptanceTesting; - using Config; - using EndpointTemplates; - using AcceptanceTesting.Support; - using NUnit.Framework; - using ScenarioDescriptors; - - public class Request_response_performance : NServiceBusPerformanceTest - { - [Test] - public void With_dtc_enabled() - { - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => SendMessages(b)) - .WithEndpoint() - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - [Test] - public void With_dtc_supressed() - { - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => - { - b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DisableDistributedTransactions())); - SendMessages(b); - }) - .WithEndpoint(b => b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DisableDistributedTransactions()))) - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - [Test] - public void With_no_transactions() - { - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => - { - b.CustomConfig(c => Configure.Transactions.Disable()); - SendMessages(b); - }) - .WithEndpoint(b => b.CustomConfig(c => Configure.Transactions.Disable())) - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - [Test] - public void With_ambient_tx_suppressed() - { - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => - { - b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DoNotWrapHandlersExecutionInATransactionScope())); - SendMessages(b); - }) - .WithEndpoint(b => b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DoNotWrapHandlersExecutionInATransactionScope()))) - .Done(c => c.Complete) - .Repeat(r => r.For(Transports.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - private static EndpointBehaviorBuilder SendMessages(EndpointBehaviorBuilder b) - { - return b.Given((bus, context) => Parallel.For(0, context.NumberOfTestMessages, (s, c) => bus.Send(new MyMessage()))); - } - - public class Context : PerformanceTestContext - { - public bool Complete { get; set; } - } - - public class ClientEndpoint : EndpointConfigurationBuilder - { - public ClientEndpoint() - { - EndpointSetup() - .WithConfig(c => c.MaximumConcurrencyLevel = MaxConcurrencyLevel) - .AddMapping(typeof(ServerEndpoint)); - } - - public class MyMessageHandler : IHandleMessages - { - public Context Context { get; set; } - - static int numberOfMessagesProcessed; - - - public void Handle(MyResponse messageThatIsEnlisted) - { - var current = Interlocked.Increment(ref numberOfMessagesProcessed); - - if (current == 1) - { - Context.FirstMessageProcessedAt = DateTime.UtcNow; - } - - if (current == Context.NumberOfTestMessages) - { - Context.LastMessageProcessedAt = DateTime.UtcNow; - Context.Complete = true; - } - - } - } - } - - public class ServerEndpoint : EndpointConfigurationBuilder - { - public ServerEndpoint() - { - EndpointSetup() - .WithConfig(c => c.MaximumConcurrencyLevel = MaxConcurrencyLevel); - } - - public class MyMessageHandler : IHandleMessages - { - public Context Context { get; set; } - - public IBus Bus { get; set; } - - public void Handle(MyMessage message) - { - Bus.Reply(new MyResponse()); - } - } - } - - [Serializable] - public class MyMessage : ICommand - { - } - - [Serializable] - public class MyResponse : IMessage - { - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/Performance/Sagas/Saga_performance.cs b/src/NServiceBus.AcceptanceTests/Performance/Sagas/Saga_performance.cs deleted file mode 100644 index e41741615c8..00000000000 --- a/src/NServiceBus.AcceptanceTests/Performance/Sagas/Saga_performance.cs +++ /dev/null @@ -1,127 +0,0 @@ -namespace NServiceBus.AcceptanceTests.Performance.Sagas -{ - using System; - using System.Threading; - using System.Threading.Tasks; - using AcceptanceTesting; - using AcceptanceTesting.Support; - using Config; - using EndpointTemplates; - using NUnit.Framework; - using Saga; - using ScenarioDescriptors; - - public class Saga_performance : NServiceBusPerformanceTest - { - [Test, Ignore("Fails in build server! Not reliable")] - public void With_dtc_enabled() - { - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(SendTestMessages) - .Done(c => c.Complete) - .Repeat(r => r.For(SagaPersisters.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - [Test, Ignore("Fails in build server! Not reliable")] - public void With_dtc_supressed() - { - Scenario.Define(() => new Context { NumberOfTestMessages = NumberOfTestMessages }) - .WithEndpoint(b => - { - b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DisableDistributedTransactions())); - SendTestMessages(b); - }) - .Done(c => c.Complete) - .Repeat(r => r.For(SagaPersisters.Default)) - .Report(DisplayTestResults) - .MaxTestParallelism(1) - .Run(); - } - - public class Context : PerformanceTestContext - { - - public bool Complete { get; set; } - } - - public class SagaEndpoint : EndpointConfigurationBuilder - { - public SagaEndpoint() - { - EndpointSetup() - .WithConfig(c => c.MaximumConcurrencyLevel = MaxConcurrencyLevel); - } - - public class MySaga : Saga, IAmStartedByMessages - { - public Context Context { get; set; } - - static int numberOfMessagesProcessed; - - - public void Handle(MyMessage message) - { - Data.SomeId = message.SomeId; - - var current = Interlocked.Increment(ref numberOfMessagesProcessed); - - if (current == 1) - { - Context.FirstMessageProcessedAt = DateTime.UtcNow; - } - - if (current == Context.NumberOfTestMessages) - { - Context.LastMessageProcessedAt = DateTime.UtcNow; - Context.Complete = true; - } - - } - - public override void ConfigureHowToFindSaga() - { - ConfigureMapping(m => m.SomeId) - .ToSaga(s => s.SomeId); - - } - - - public class MySagaData : IContainSagaData - { - public virtual Guid Id { get; set; } - public virtual string Originator { get; set; } - public virtual string OriginalMessageId { get; set; } - - [Unique] - public virtual Guid SomeId { get; set; } - } - - } - - - } - - [Serializable] - public class MyMessage : ICommand - { - public Guid SomeId { get; set; } - } - - - - protected static void SendTestMessages(EndpointBehaviorBuilder b) - { - b.Given((bus, context) => Parallel.For(0, context.NumberOfTestMessages, (s, c) => bus.SendLocal(new MyMessage - { - SomeId = Guid.NewGuid() - }))); - } - } - - - - -} \ No newline at end of file From 8ab494aa943636dd23f21d7f0d248d5474c44d60 Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Fri, 29 Nov 2013 21:05:54 +1100 Subject: [PATCH 004/146] ncrunch cannot build licenseinstaller ncrunch fails because x86 debug/release configurations not defined in project file --- src/licenseinstaller/LicenseInstaller.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/licenseinstaller/LicenseInstaller.csproj b/src/licenseinstaller/LicenseInstaller.csproj index aeca750e582..f7594e69fbc 100644 --- a/src/licenseinstaller/LicenseInstaller.csproj +++ b/src/licenseinstaller/LicenseInstaller.csproj @@ -2,7 +2,7 @@ Debug - x86 + AnyCPU 8.0.30703 2.0 {857C5E77-1946-4C83-BC8D-EFF8E1611A0D} From 1e225cdf6411200b073b9431b3f07bba00419344 Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Mon, 2 Dec 2013 14:34:20 +1100 Subject: [PATCH 005/146] Check for royalty free license expiry Add grace period only if date less than DateTime.MaxValue --- src/NServiceBus.Core/Licensing/ExpiryChecker.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Licensing/ExpiryChecker.cs b/src/NServiceBus.Core/Licensing/ExpiryChecker.cs index 05c8146d045..3914a362a0f 100644 --- a/src/NServiceBus.Core/Licensing/ExpiryChecker.cs +++ b/src/NServiceBus.Core/Licensing/ExpiryChecker.cs @@ -6,7 +6,7 @@ static class ExpiryChecker { public static bool IsExpired(DateTime expiry) { - var oneDayGrace = expiry.AddDays(1); + var oneDayGrace = expiry >= DateTime.MaxValue.Date ? expiry : expiry.AddDays(1); return oneDayGrace < DateTime.UtcNow.Date; } } From 81ad112d3e79e9bfc0e388f4db5197bc746d8137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 4 Dec 2013 12:20:46 +0100 Subject: [PATCH 006/146] Moving the removal of saga headers for backwards copmatibility to its own behavior --- src/NServiceBus.Core.Tests/Unicast/Sending.cs | 33 ++++++++++++++++++- src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + .../Pipeline/PipelineFactory.cs | 1 + .../Sagas/RemoveIncomingHeadersBehavior.cs | 23 +++++++++++++ .../Sagas/SagaPersistenceBehavior.cs | 7 ---- .../Saga/IHandleReplyingToNullOriginator.cs | 2 +- 6 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs diff --git a/src/NServiceBus.Core.Tests/Unicast/Sending.cs b/src/NServiceBus.Core.Tests/Unicast/Sending.cs index 527bb8abffc..d33d1c610e3 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Sending.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Sending.cs @@ -3,8 +3,10 @@ using System; using System.Collections.Generic; using Contexts; + using Mono.CSharp; using NUnit.Framework; using Rhino.Mocks; + using Saga; [TestFixture] public class When_sending_a_message_with_databusProperty : using_the_unicastBus @@ -230,7 +232,7 @@ public void Should_specify_the_message_to_be_recoverable() [TestFixture] public class When_raising_an_in_memory_message : using_the_unicastBus { - [Test,Ignore("Not supported for now")] + [Test] public void Should_invoke_registered_message_handlers() { RegisterMessageType(); @@ -248,6 +250,35 @@ public void Should_invoke_registered_message_handlers() Assert.True(TestMessageHandler2.Called); } + [Test] + public void Should_invoke_registered_saga_handlers() + { + RegisterMessageType(); + + RegisterMessageHandlerType(); + + var messageToRaise = new TestMessage(); + Headers.SetMessageHeader(messageToRaise, "MyHeader", "MyHeaderValue"); + + + bus.InMemory.Raise(messageToRaise); + + } + + class TestSaga : Saga,IAmStartedByMessages + { + + public void Handle(TestMessage message) + { + + } + + + } + class MySagaData : ContainSagaData + { + + } public class TestMessageHandler1 : IHandleMessages { public static bool Called; diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 3e67e859266..1901bb0a680 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -149,6 +149,7 @@ + diff --git a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs b/src/NServiceBus.Core/Pipeline/PipelineFactory.cs index 2804f0bd951..dfedadce589 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineFactory.cs @@ -42,6 +42,7 @@ public void InvokeReceivePhysicalMessagePipeline() pipeline.Add(); pipeline.Add(); pipeline.Add(); + pipeline.Add(); pipeline.Add(); pipeline.Add(); pipeline.Add(); diff --git a/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs b/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs new file mode 100644 index 00000000000..32e47233f69 --- /dev/null +++ b/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs @@ -0,0 +1,23 @@ +namespace NServiceBus.Sagas +{ + using System; + using Pipeline; + using Pipeline.Contexts; + + [ObsoleteEx(RemoveInVersion="5.0")] + class RemoveIncomingHeadersBehavior : IBehavior + { + public void Invoke(ReceivePhysicalMessageContext context, Action next) + { + + // We need this for backwards compatibility because in v4.0.0 we still have this headers being sent as part of the message even if MessageIntent == MessageIntentEnum.Publish + if (context.PhysicalMessage.MessageIntent == MessageIntentEnum.Publish) + { + context.PhysicalMessage.Headers.Remove(Headers.SagaId); + context.PhysicalMessage.Headers.Remove(Headers.SagaType); + } + + next(); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs index 7bcf6a83d35..6aff309a4f3 100644 --- a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs +++ b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs @@ -31,13 +31,6 @@ public void Invoke(HandlerInvocationContext context, Action next) currentContext = context; physicalMessage = context.PhysicalMessage; - // We need this for backwards compatibility because in v4.0.0 we still have this headers being sent as part of the message even if MessageIntent == MessageIntentEnum.Publish - if (physicalMessage.MessageIntent == MessageIntentEnum.Publish) - { - physicalMessage.Headers.Remove(Headers.SagaId); - physicalMessage.Headers.Remove(Headers.SagaType); - } - var sagaInstanceState = new ActiveSagaInstance(saga); var loadedEntity = TryLoadSagaEntity(saga, context.LogicalMessage); diff --git a/src/NServiceBus/Saga/IHandleReplyingToNullOriginator.cs b/src/NServiceBus/Saga/IHandleReplyingToNullOriginator.cs index ebb3a78914b..c7b1e8149e6 100644 --- a/src/NServiceBus/Saga/IHandleReplyingToNullOriginator.cs +++ b/src/NServiceBus/Saga/IHandleReplyingToNullOriginator.cs @@ -3,7 +3,7 @@ namespace NServiceBus.Saga /// /// Double-dispatch class. /// - [ObsoleteEx(TreatAsErrorFromVersion = "4.4",RemoveInVersion = "5.0", Message ="This hook will no longer be provided")] + [ObsoleteEx(TreatAsErrorFromVersion = "5.0",RemoveInVersion = "5.0", Message ="This hook will no longer be provided")] public interface IHandleReplyingToNullOriginator { /// From 9fee72993bd57474a5782273e35ec378c4777bce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 4 Dec 2013 12:32:45 +0100 Subject: [PATCH 007/146] Saga persitence no longer assumes that there is a physical message present --- .../Contexts/HandlerInvocationContext.cs | 5 ----- .../Sagas/SagaPersistenceBehavior.cs | 20 +++++++++++-------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs index b0e4673234f..4a4ec52012c 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs @@ -20,10 +20,5 @@ public LogicalMessage LogicalMessage { get { return Get(); } } - - public TransportMessage PhysicalMessage - { - get { return Get(ReceivePhysicalMessageContext.IncomingPhysicalMessageKey); } - } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs index 6aff309a4f3..0b0a140d4ff 100644 --- a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs +++ b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs @@ -29,7 +29,6 @@ public void Invoke(HandlerInvocationContext context, Action next) } currentContext = context; - physicalMessage = context.PhysicalMessage; var sagaInstanceState = new ActiveSagaInstance(saga); @@ -98,7 +97,7 @@ public void Invoke(HandlerInvocationContext context, Action next) void InvokeSagaNotFoundHandlers() { - logger.WarnFormat("Could not find a saga for the message type {0} with id {1}. Going to invoke SagaNotFoundHandlers.", currentContext.LogicalMessage.MessageType.FullName, physicalMessage.Id); + logger.WarnFormat("Could not find a saga for the message type {0}. Going to invoke SagaNotFoundHandlers.", currentContext.LogicalMessage.MessageType.FullName); foreach (var handler in currentContext.Builder.BuildAll()) { @@ -154,7 +153,8 @@ IEnumerable GetFindersFor(Type messageType, Type sagaEntityType) { string sagaId; - physicalMessage.Headers.TryGetValue(Headers.SagaId, out sagaId); + + currentContext.LogicalMessage.Headers.TryGetValue(Headers.SagaId, out sagaId); if (sagaEntityType == null || string.IsNullOrEmpty(sagaId)) { @@ -186,18 +186,22 @@ IContainSagaData CreateNewSagaEntity(Type sagaType) sagaEntity.Id = CombGuid.Generate(); - if (physicalMessage.ReplyToAddress != null) + TransportMessage physicalMessage; + + if (currentContext.TryGet(ReceivePhysicalMessageContext.IncomingPhysicalMessageKey, out physicalMessage)) { - sagaEntity.Originator = physicalMessage.ReplyToAddress.ToString(); - } + sagaEntity.OriginalMessageId = physicalMessage.Id; - sagaEntity.OriginalMessageId = physicalMessage.Id; + if (physicalMessage.ReplyToAddress != null) + { + sagaEntity.Originator = physicalMessage.ReplyToAddress.ToString(); + } + } return sagaEntity; } HandlerInvocationContext currentContext; - TransportMessage physicalMessage; readonly ILog logger = LogManager.GetLogger(typeof(SagaPersistenceBehavior)); } From 9ff3a07c27fcb5e4d99d192875ebb4e825bf6f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 4 Dec 2013 13:07:34 +0100 Subject: [PATCH 008/146] Moved the saga test to where it belongs --- src/NServiceBus.Core.Tests/Unicast/Sagas.cs | 41 ++++++++++++++ src/NServiceBus.Core.Tests/Unicast/Sending.cs | 56 +++++-------------- 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/src/NServiceBus.Core.Tests/Unicast/Sagas.cs b/src/NServiceBus.Core.Tests/Unicast/Sagas.cs index 1d8aaea81bf..d38e7795cb4 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Sagas.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Sagas.cs @@ -425,5 +425,46 @@ class MessageSentFromSaga : IMessage{ } } + + [TestFixture] + public class When_using_in_memory_raise_from_non_message_handlers : with_sagas + { + [Test] + public void Should_start_the_saga() + { + RegisterMessageType(); + RegisterSaga(); + + bus.InMemory.Raise(new MessageToProcess()); + + var sagaData = (MySagaData)persister.CurrentSagaEntities.First().Value.SagaEntity; + + messageSender.AssertWasCalled(x => + x.Send(Arg.Matches(m => + m.Headers[Headers.OriginatingSagaId] == sagaData.Id.ToString() && //id of the current saga + //todo: should we really us the AssemblyQualifiedName here? (what if users move sagas btw assemblies + m.Headers[Headers.OriginatingSagaType] == typeof(MySaga).AssemblyQualifiedName + ), Arg
.Is.Anything)); + } + + + class MySaga : Saga, IAmStartedByMessages + { + public void Handle(MessageToProcess message) + { + Bus.Send(new MessageSentFromSaga()); + } + } + + class MySagaData : ContainSagaData + { + } + + class MessageToProcess : IMessage { } + + class MessageSentFromSaga : IMessage { } + + } + } diff --git a/src/NServiceBus.Core.Tests/Unicast/Sending.cs b/src/NServiceBus.Core.Tests/Unicast/Sending.cs index d33d1c610e3..375bec89f5b 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Sending.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Sending.cs @@ -82,8 +82,8 @@ public void The_content_type_should_be_set() RegisterMessageType(); bus.Send(new TestMessage()); - - messageSender.AssertWasCalled(x => x.Send(Arg.Matches(m => + + messageSender.AssertWasCalled(x => x.Send(Arg.Matches(m => m.Headers[Headers.ContentType] == "text/xml" && m.Headers["MyStaticHeader"] == "StaticHeaderValue"), Arg
.Is.Anything)); } @@ -121,7 +121,7 @@ public void Should_not_override_a_conversation_id_specified_by_the_user() RegisterMessageType(); - bus.Send(m=>m.SetHeader(Headers.ConversationId,"my order id")); + bus.Send(m => m.SetHeader(Headers.ConversationId, "my order id")); messageSender.AssertWasCalled(x => x.Send(Arg.Matches(m => m.Headers[Headers.ConversationId] == "my order id"), Arg
.Is.Anything)); } @@ -173,8 +173,8 @@ public void Should_throw_if_messages_contain_different_configured_addresses() var secondAddress = Address.Parse("second"); RegisterMessageType(firstAddress); RegisterMessageType(secondAddress); - - Assert.Throws(()=> bus.Send(new NonPersistentMessage(), new PersistentMessage())); + + Assert.Throws(() => bus.Send(new NonPersistentMessage(), new PersistentMessage())); } @@ -250,35 +250,7 @@ public void Should_invoke_registered_message_handlers() Assert.True(TestMessageHandler2.Called); } - [Test] - public void Should_invoke_registered_saga_handlers() - { - RegisterMessageType(); - - RegisterMessageHandlerType(); - - var messageToRaise = new TestMessage(); - Headers.SetMessageHeader(messageToRaise, "MyHeader", "MyHeaderValue"); - - - bus.InMemory.Raise(messageToRaise); - - } - - class TestSaga : Saga,IAmStartedByMessages - { - - public void Handle(TestMessage message) - { - - } - - - } - class MySagaData : ContainSagaData - { - - } + public class TestMessageHandler1 : IHandleMessages { public static bool Called; @@ -313,23 +285,23 @@ public void Should_invoke_registered_message_handlers() receivedMessage.Headers["HeaderOnPhysicalMessage"] = "SomeValue"; RegisterMessageType(); - + RegisterMessageHandlerType(); RegisterMessageHandlerType(); ReceiveMessage(receivedMessage); - + Assert.True(RaisedMessageHandler.Called); } - class StartMessage:IMessage + class StartMessage : IMessage { - + } class RaisedMessage { - + } class StartHandler : IHandleMessages @@ -351,7 +323,7 @@ class RaisedMessageHandler : IHandleMessages public void Handle(RaisedMessage message) { - Assert.AreEqual("MyHeaderValue",Headers.GetMessageHeader(message, "MyHeader")); + Assert.AreEqual("MyHeaderValue", Headers.GetMessageHeader(message, "MyHeader")); Assert.AreEqual("SomeValue", Headers.GetMessageHeader(message, "HeaderOnPhysicalMessage")); @@ -384,9 +356,9 @@ public void The_saga_id_header_should_point_to_the_saga_we_are_replying_to() AssertSendWithHeaders(headers => headers[Headers.SagaId] == sagaId.ToString() && headers[Headers.SagaType] == sagaType); } - void AssertSendWithHeaders(Func,bool> condition) + void AssertSendWithHeaders(Func, bool> condition) { - messageSender.AssertWasCalled(x =>x.Send(Arg.Matches(m =>condition(m.Headers)), Arg
.Is.Anything)); + messageSender.AssertWasCalled(x => x.Send(Arg.Matches(m => condition(m.Headers)), Arg
.Is.Anything)); } From 7fd55993b6447e2caefcfb97cabd4e0b699a9cc4 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 5 Dec 2013 20:44:24 +1100 Subject: [PATCH 009/146] change conventionBasedHandlers back to project to avoid strong naming issues --- lib/ConventionBasedHandlers.dll | Bin 4608 -> 0 bytes .../ConventionBasedHandler.cs | 15 +++++ .../ConventionBasedHandlers.csproj | 56 ++++++++++++++++++ .../NServiceBus.Core.Tests.csproj | 8 +-- src/NServiceBus.sln | 17 +++++- 5 files changed, 89 insertions(+), 7 deletions(-) delete mode 100644 lib/ConventionBasedHandlers.dll create mode 100644 src/ConventionBasedHandlers/ConventionBasedHandler.cs create mode 100644 src/ConventionBasedHandlers/ConventionBasedHandlers.csproj diff --git a/lib/ConventionBasedHandlers.dll b/lib/ConventionBasedHandlers.dll deleted file mode 100644 index 7a8889f44774d1b8cf1a900ee67303fcad0bec3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKYitzP6+W|=^@G~wk;IfxGR6+YZ9MYYD`Vq?__46w2tV*H4m2)!X7_qM$?VQ{ zX4a4NWr|D!B!~j4NEC&KDoRqMK0=y@+A1kh$`5FpNNxHeB8bqY6(x#jn>140@7~#6 zFJ8!x_6MreJ3HS!_ndprJ@=eD_nz(k{9c+vL`8U~r-@!f%}blWkB3Q!EADu?f=-s6 zt$I;ff3_+zqT6!HGUJw-kfUlcX*#mTWGkJN^`so=4a*5L#+35%vYL$QzO_W_r8$)P z#&~~rw)5nvnkUU8Dg(#sa^I>&E#qy&OEh259@lQp;P#6$2?SsJ3}IbuQ@ktx&D5DD zXQ4a>y}g`hBYKoOVs;rK`UH59l|)Nt%Ra6x6P4u2OVIAhYby>LchJ6A3V=+k6?W$r znP^C{Y%2<;u&oUQUnn;yue8B>#bSnujzTm9A=f3=jXG1>h&r-#wtj{C6@}a8p}BNk zCUT02xLNt7PbQkoXWW23@vWste%0Hi(4!x29e(mB+ve?QGN1B)z5Bif+xl|d(eOK$ zmw&Wn`}c1NDYeDl)Sf;5O6L!@|NVpCyzqyeV}E*cPwI`aGbLn|()ur4`D4q))^mTo z^z<*T7CXz=l#jjfk3~g(t7*%3+u!?bsPF6pTaWMm&Y9LjU7!45#n&#gUoRd?RUVic zU1BeQFCSj!S-BAPXQ?B6Ux!4Ju$KE~)UVVljrEPb7S5VW2CxRcs{Sg`UhXsOf$Feh z>B+dwd+eR-#<6;1m=1#GF0Br3302n^(|y!11H?|8Pr8rMdS{FzTH=pOis z)4!Ct^pbRfmZ0^fXzf`19Lbs0y@c9JRrDOyP_00pz!rh+0z(2f2;3}C6{rJi>5GD% z5V%d?PM|_h0R40XDAO|nO9d)4557@o5mieH-AYm7uX;TK+>x0nl>RhKPcUTwCSwWsTqvSi zaptVU(a*+A>!EfBUy+t}SZ)X#HeeQdQ@d@mgl0@cbjM&b9kc8Jv!j-t;#~`c@Y}E+ zPh0AZ#EF!eoG2XEXTkANr%=#orY0;sK5`vV#8P7{q2@0pYh!2HaMD(u@viT4jtM0l zW|^r>2yD1JF`(PJmcQO$T8|allW}RGV4ZHT0%2y_fUd@qrtRoan*vNr$K&cXQ@K2Z z3EPj^xsYU{2;)*vZsl7GhH!B|Gt_ZG*)t|(!q3M+r0It4J{P!DP)byKIi&U_SKcA+eI`t?=XXzKA(WqYR= zRQ)jca;vrZ*pHf9W&i#??_EegzkA=D^ogOq(aLSr`rStFBH!>5?Jq|ktJ%L}YGBoP z#l3%fe|2IiNPj*yx#sH5;tj3)f)XuJde%mAU&dXTAl}0-BZ(pvx8y_t-A)Rys|KDG_Enwld!2$7ROv5UP}DVQxpuKYd1)8|rdp zb2eA975gAy7~QI#bT0zN#2vz=(|1D0tSqol-wcP}^F)gaQav7WB5a4rnZBIjTsL>z z)CT#?B?uZjk_ISDTY+n-A5;jLb`RPi;5s+!rXLqw`IoE5)s@wGFIS9$Z#c67MN>ck zC_$@A7WC-2Zy9tZX_!nQuMwjnkgDL?kgMdNpNW=RzE{L^Jqb2B=%s@nzm6tD^r^?X z-N#QF_W=zd!;o_Q1DM^WsL+$TW}Y7CXW)-whA5~GN~0&wKumBMsE8Qr2<|vFA-CbB z9{(I>^bZIfcAot{jI7VSM4Rx>L=qlwMBgOVYrw}UCD0}@UlLX@tTXF}4oGcqV#xft zmtw+;mav4=JTLA-hAPo|^ok3O-0l=jh?T}^1iD<^*YbE~CgW*cT&s6>G-k)5S&V6iAGvoE*f9n? jCS$kqoiG!{+2i1*n^R=>KjV4vf9U3z@c&tFo(KL7#5pkg diff --git a/src/ConventionBasedHandlers/ConventionBasedHandler.cs b/src/ConventionBasedHandlers/ConventionBasedHandler.cs new file mode 100644 index 00000000000..4f4c60f27e9 --- /dev/null +++ b/src/ConventionBasedHandlers/ConventionBasedHandler.cs @@ -0,0 +1,15 @@ +using System; + +namespace ConventionBasedHandlers +{ + using ConventionBasedMessages; + using NServiceBus; + + public class ConventionBasedHandler : IHandleMessages + { + public void Handle(MyMessage message) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj new file mode 100644 index 00000000000..6b99d2a5a05 --- /dev/null +++ b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj @@ -0,0 +1,56 @@ + + + + + Debug + AnyCPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B} + Library + Properties + ConventionBasedHandlers + ConventionBasedHandlers + v4.0 + 512 + true + ..\NServiceBus.snk + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\lib\ConventionBasedMessages.dll + + + + + + + + + + + + + + + {73867D40-8CBB-48E9-BFFA-12BBDD48A341} + NServiceBus %28NServiceBus\NServiceBus%29 + + + + \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 8a03d34d9f4..8e13ebe02ad 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -44,10 +44,6 @@ ..\packages\RavenDB.Database\lib\net40\AWSSDK.dll - - False - ..\..\lib\ConventionBasedHandlers.dll - ..\packages\RavenDB.Database\lib\net40\Esent.Interop.dll @@ -308,6 +304,10 @@ + + {2311CBF3-5381-4151-B2D0-EE14A89F870B} + ConventionBasedHandlers + {dd48b2d0-e996-412d-9157-821ed8b17a9d} NServiceBus.Core diff --git a/src/NServiceBus.sln b/src/NServiceBus.sln index 74234f8a0c8..1529289a7f5 100644 --- a/src/NServiceBus.sln +++ b/src/NServiceBus.sln @@ -1,7 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 +# Visual Studio 2012 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NServiceBus", "NServiceBus\NServiceBus.csproj", "{73867D40-8CBB-48E9-BFFA-12BBDD48A341}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ObjectBuilder.CastleWindsor", "ObjectBuilder.CastleWindsor\ObjectBuilder.CastleWindsor.csproj", "{9A9A0BD5-AC37-4B90-B90F-FD1C1395FEBD}" @@ -62,6 +60,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NServiceBus.PerformanceTest EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NServiceBus.Distributor.MSMQ", "NServiceBus.Distributor.MSMQ\NServiceBus.Distributor.MSMQ.csproj", "{5A2F57E3-4D2B-439C-9481-1DE2DD101789}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConventionBasedHandlers", "ConventionBasedHandlers\ConventionBasedHandlers.csproj", "{2311CBF3-5381-4151-B2D0-EE14A89F870B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -316,6 +316,16 @@ Global {5A2F57E3-4D2B-439C-9481-1DE2DD101789}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {5A2F57E3-4D2B-439C-9481-1DE2DD101789}.Release|Mixed Platforms.Build.0 = Release|Any CPU {5A2F57E3-4D2B-439C-9481-1DE2DD101789}.Release|x86.ActiveCfg = Release|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|x86.ActiveCfg = Debug|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Any CPU.Build.0 = Release|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -328,6 +338,7 @@ Global {2C8F181B-9BAF-4858-968B-1C16F5DDCFA7} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} {389628F6-2FB4-4AFF-BACC-16726C44FFA4} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} {5A2F57E3-4D2B-439C-9481-1DE2DD101789} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} + {2311CBF3-5381-4151-B2D0-EE14A89F870B} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} {C05E5B87-EB74-4A3F-B4FC-AFDD28570850} = {A650DE92-3B6D-4228-A1A2-FB06E74C1BD2} {73EC4EBE-826D-4A0A-8837-51D3458FC2A8} = {A650DE92-3B6D-4228-A1A2-FB06E74C1BD2} {343B2E7A-E228-4B31-ABB5-F5437B2E7A4C} = {A650DE92-3B6D-4228-A1A2-FB06E74C1BD2} From 0d4016d60ce514a70cd994150e469854cc37482f Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 8 Dec 2013 13:13:30 +1100 Subject: [PATCH 010/146] make disposable non-readonly so we can set the to null in the cleanup without peverify complaining --- ripple.config | 2 +- src/NServiceBus.Core/CircuitBreakers/CircuitBreaker.cs | 2 +- .../RepeatedFailuresOverTimeCircuitBreaker.cs | 2 +- .../Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs | 4 ++-- src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs | 6 +++--- src/NServiceBus.Core/Transports/Msmq/MsmqUnitOfWork.cs | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ripple.config b/ripple.config index 862dc5b5133..e989b8266b6 100644 --- a/ripple.config +++ b/ripple.config @@ -19,7 +19,7 @@ - + diff --git a/src/NServiceBus.Core/CircuitBreakers/CircuitBreaker.cs b/src/NServiceBus.Core/CircuitBreakers/CircuitBreaker.cs index 1b0e7c2f03e..bd83114fb40 100644 --- a/src/NServiceBus.Core/CircuitBreakers/CircuitBreaker.cs +++ b/src/NServiceBus.Core/CircuitBreakers/CircuitBreaker.cs @@ -11,7 +11,7 @@ public class CircuitBreaker : IDisposable readonly int threshold; int firedTimes; // ReSharper disable once NotAccessedField.Local - readonly Timer timer; + Timer timer; int failureCount; /// diff --git a/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs b/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs index 5bfc523528a..864279e867a 100644 --- a/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs +++ b/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs @@ -73,7 +73,7 @@ void CircuitBreakerTriggered(object state) readonly TimeSpan delayAfterFailure; readonly string name; readonly TimeSpan timeToWaitBeforeTriggering; - readonly Timer timer; + Timer timer; readonly Action triggerAction; long failureCount; Exception lastException; diff --git a/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs b/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs index 53c43c6efd2..849f62edfe7 100644 --- a/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs +++ b/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs @@ -146,14 +146,14 @@ void TimeoutsManagerOnTimeoutPushed(object sender, TimeoutData timeoutData) static readonly ILog Logger = LogManager.GetLogger(typeof(TimeoutPersisterReceiver)); - readonly RepeatedFailuresOverTimeCircuitBreaker circuitBreaker = + RepeatedFailuresOverTimeCircuitBreaker circuitBreaker = new RepeatedFailuresOverTimeCircuitBreaker("TimeoutStorageConnectivity", TimeSpan.FromMinutes(2), ex => Configure.Instance.RaiseCriticalError( "Repeated failures when fetching timeouts from storage, endpoint will be terminated.", ex)); readonly object lockObject = new object(); - readonly ManualResetEvent resetEvent = new ManualResetEvent(true); + ManualResetEvent resetEvent = new ManualResetEvent(true); DateTime nextRetrieval = DateTime.UtcNow; volatile bool timeoutPushed; CancellationTokenSource tokenSource; diff --git a/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs b/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs index 665d099fe6b..c3761d59014 100644 --- a/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs +++ b/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs @@ -361,10 +361,10 @@ static string GetUserName() } static readonly ILog Logger = LogManager.GetLogger(typeof(MsmqDequeueStrategy)); - readonly CircuitBreaker circuitBreaker = new CircuitBreaker(100, TimeSpan.FromSeconds(30)); - readonly AutoResetEvent peekResetEvent = new AutoResetEvent(false); + CircuitBreaker circuitBreaker = new CircuitBreaker(100, TimeSpan.FromSeconds(30)); + AutoResetEvent peekResetEvent = new AutoResetEvent(false); readonly TimeSpan receiveTimeout = TimeSpan.FromSeconds(1); - readonly ManualResetEvent stopResetEvent = new ManualResetEvent(true); + ManualResetEvent stopResetEvent = new ManualResetEvent(true); Action endProcessMessage; int maximumConcurrencyLevel; MessageQueue queue; diff --git a/src/NServiceBus.Core/Transports/Msmq/MsmqUnitOfWork.cs b/src/NServiceBus.Core/Transports/Msmq/MsmqUnitOfWork.cs index 231f5b7eb76..cd1e4883147 100644 --- a/src/NServiceBus.Core/Transports/Msmq/MsmqUnitOfWork.cs +++ b/src/NServiceBus.Core/Transports/Msmq/MsmqUnitOfWork.cs @@ -31,6 +31,6 @@ public void ClearTransaction() currentTransaction.Value = null; } - readonly ThreadLocal currentTransaction = new ThreadLocal(); + ThreadLocal currentTransaction = new ThreadLocal(); } } \ No newline at end of file From 530734e94579e31a55e9cd0446bfa50ba06ff5e5 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 8 Dec 2013 13:20:06 +1100 Subject: [PATCH 011/146] missing save --- .../CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs b/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs index 864279e867a..5d3d53eed88 100644 --- a/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs +++ b/src/NServiceBus.Core/CircuitBreakers/RepeatedFailuresOverTimeCircuitBreaker.cs @@ -72,7 +72,7 @@ void CircuitBreakerTriggered(object state) readonly TimeSpan delayAfterFailure; readonly string name; - readonly TimeSpan timeToWaitBeforeTriggering; + TimeSpan timeToWaitBeforeTriggering; Timer timer; readonly Action triggerAction; long failureCount; From 7597815b0f495975204a44c3190ef23cc3427e16 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 11 Dec 2013 16:03:11 +1100 Subject: [PATCH 012/146] make pipeline configurable --- .../Unicast/Contexts/using_the_unicastbus.cs | 2 +- src/NServiceBus.Core/Audit/AuditBehavior.cs | 6 +- .../DataBus/DataBusReceiveBehavior.cs | 6 +- .../ApplyIncomingMessageMutatorsBehavior.cs | 6 +- ...ncomingTransportMessageMutatorsBehavior.cs | 6 +- .../MutateOutgoingMessageBehavior.cs | 6 +- .../MutateOutgoingPhysicalMessageBehavior.cs | 6 +- src/NServiceBus.Core/NServiceBus.Core.csproj | 3 + .../Pipeline/BehaviorChain.cs | 9 +- .../Pipeline/BehaviorContext.cs | 7 +- src/NServiceBus.Core/Pipeline/BehaviorList.cs | 74 ++++++++++ .../Contexts/HandlerInvocationContext.cs | 11 +- .../Contexts/ReceiveLogicalMessageContext.cs | 7 +- .../Contexts/ReceivePhysicalMessageContext.cs | 7 +- .../Contexts/SendLogicalMessageContext.cs | 7 +- .../Contexts/SendLogicalMessagesContext.cs | 7 +- .../Contexts/SendPhysicalMessageContext.cs | 7 +- src/NServiceBus.Core/Pipeline/IBehavior.cs | 5 +- .../Pipeline/PipelineFactory.cs | 137 ++++++++++++------ .../Pipeline/PipelineOverride.cs | 44 ++++++ .../Pipeline/PipelineOverrideConfigurer.cs | 10 ++ .../Sagas/ActiveSagaInstance.cs | 6 +- .../Sagas/RemoveIncomingHeadersBehavior.cs | 2 +- .../Sagas/SagaPersistenceBehavior.cs | 6 +- .../Sagas/SagaSendBehavior.cs | 6 +- .../Behaviors/CallbackInvocationBehavior.cs | 8 +- .../Behaviors/ChildContainerBehavior.cs | 5 +- .../CreatePhysicalMessageBehavior.cs | 5 +- .../DispatchMessageToTransportBehavior.cs | 5 +- .../Unicast/Behaviors/ForwardBehavior.cs | 5 +- .../Behaviors/ImpersonateSenderBehavior.cs | 6 +- .../Behaviors/InvokeHandlersBehavior.cs | 6 +- .../Unicast/Behaviors/LoadHandlersBehavior.cs | 6 +- .../Unicast/Behaviors/MessageHandler.cs | 6 +- .../MessageHandlingLoggingBehavior.cs | 10 +- .../Unicast/Behaviors/MultiMessageBehavior.cs | 3 +- .../Behaviors/MultiSendValidatorBehavior.cs | 5 +- .../Behaviors/RaiseMessageReceivedBehavior.cs | 5 +- .../Behaviors/SendValidatorBehavior.cs | 5 +- .../Behaviors/SerializeMessagesBehavior.cs | 5 +- .../SetCurrentMessageBeingHandledBehavior.cs | 5 +- .../ExecuteLogicalMessagesBehavior.cs | 6 +- .../ExtractLogicalMessagesBehavior.cs | 6 +- .../Unicast/Messages/LogicalMessage.cs | 6 +- .../Unicast/Messages/LogicalMessageFactory.cs | 6 +- src/NServiceBus.Core/Unicast/SendOptions.cs | 6 +- .../UnitOfWork/UnitOfWorkBehavior.cs | 6 +- 47 files changed, 427 insertions(+), 92 deletions(-) create mode 100644 src/NServiceBus.Core/Pipeline/BehaviorList.cs create mode 100644 src/NServiceBus.Core/Pipeline/PipelineOverride.cs create mode 100644 src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs diff --git a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs index 363923a35c2..a29531a4646 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs @@ -101,7 +101,7 @@ public void SetUp() SubscriptionStorage = subscriptionStorage }; - pipelineFactory = new PipelineFactory { RootBuilder = FuncBuilder }; + pipelineFactory = new PipelineFactory(FuncBuilder ); FuncBuilder.Register(() => MessageSerializer); FuncBuilder.Register(() => messageSender); diff --git a/src/NServiceBus.Core/Audit/AuditBehavior.cs b/src/NServiceBus.Core/Audit/AuditBehavior.cs index a86ed0c6d8f..758be299814 100644 --- a/src/NServiceBus.Core/Audit/AuditBehavior.cs +++ b/src/NServiceBus.Core/Audit/AuditBehavior.cs @@ -1,10 +1,14 @@ namespace NServiceBus.Audit { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; - class AuditBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class AuditBehavior : IBehavior { public MessageAuditer MessageAuditer { get; set; } diff --git a/src/NServiceBus.Core/DataBus/DataBusReceiveBehavior.cs b/src/NServiceBus.Core/DataBus/DataBusReceiveBehavior.cs index 366cd53b881..11a91d85d22 100644 --- a/src/NServiceBus.Core/DataBus/DataBusReceiveBehavior.cs +++ b/src/NServiceBus.Core/DataBus/DataBusReceiveBehavior.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; + using System.ComponentModel; using System.Linq; using System.Reflection; using System.Transactions; @@ -10,7 +11,10 @@ using Pipeline; using Pipeline.Contexts; - class DataBusReceiveBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class DataBusReceiveBehavior : IBehavior { public IDataBus DataBus { get; set; } diff --git a/src/NServiceBus.Core/MessageMutator/ApplyIncomingMessageMutatorsBehavior.cs b/src/NServiceBus.Core/MessageMutator/ApplyIncomingMessageMutatorsBehavior.cs index 3fcd3c2453b..9d485f49bd8 100644 --- a/src/NServiceBus.Core/MessageMutator/ApplyIncomingMessageMutatorsBehavior.cs +++ b/src/NServiceBus.Core/MessageMutator/ApplyIncomingMessageMutatorsBehavior.cs @@ -1,10 +1,14 @@ namespace NServiceBus.Pipeline.MessageMutator { using System; + using System.ComponentModel; using Contexts; using NServiceBus.MessageMutator; - class ApplyIncomingMessageMutatorsBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ApplyIncomingMessageMutatorsBehavior : IBehavior { public void Invoke(ReceiveLogicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/MessageMutator/ApplyIncomingTransportMessageMutatorsBehavior.cs b/src/NServiceBus.Core/MessageMutator/ApplyIncomingTransportMessageMutatorsBehavior.cs index d9e81d6a0b8..d52533b0125 100644 --- a/src/NServiceBus.Core/MessageMutator/ApplyIncomingTransportMessageMutatorsBehavior.cs +++ b/src/NServiceBus.Core/MessageMutator/ApplyIncomingTransportMessageMutatorsBehavior.cs @@ -1,10 +1,14 @@ namespace NServiceBus.MessageMutator { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; - class ApplyIncomingTransportMessageMutatorsBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ApplyIncomingTransportMessageMutatorsBehavior : IBehavior { public void Invoke(ReceivePhysicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/MessageMutator/MutateOutgoingMessageBehavior.cs b/src/NServiceBus.Core/MessageMutator/MutateOutgoingMessageBehavior.cs index 706f181e6f1..d4c0aecc59b 100644 --- a/src/NServiceBus.Core/MessageMutator/MutateOutgoingMessageBehavior.cs +++ b/src/NServiceBus.Core/MessageMutator/MutateOutgoingMessageBehavior.cs @@ -1,10 +1,14 @@ namespace NServiceBus.MessageMutator { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; - class MutateOutgoingMessageBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class MutateOutgoingMessageBehavior : IBehavior { public void Invoke(SendLogicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/MessageMutator/MutateOutgoingPhysicalMessageBehavior.cs b/src/NServiceBus.Core/MessageMutator/MutateOutgoingPhysicalMessageBehavior.cs index e043e27ac49..dbbb3bed321 100644 --- a/src/NServiceBus.Core/MessageMutator/MutateOutgoingPhysicalMessageBehavior.cs +++ b/src/NServiceBus.Core/MessageMutator/MutateOutgoingPhysicalMessageBehavior.cs @@ -1,11 +1,15 @@ namespace NServiceBus.MessageMutator { using System; + using System.ComponentModel; using System.Linq; using Pipeline; using Pipeline.Contexts; - class MutateOutgoingPhysicalMessageBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class MutateOutgoingPhysicalMessageBehavior : IBehavior { public void Invoke(SendPhysicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 6bd33d60e3b..38fcb1baebf 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -148,6 +148,9 @@ + + + diff --git a/src/NServiceBus.Core/Pipeline/BehaviorChain.cs b/src/NServiceBus.Core/Pipeline/BehaviorChain.cs index 1527ac76fcb..e5c3e323a12 100644 --- a/src/NServiceBus.Core/Pipeline/BehaviorChain.cs +++ b/src/NServiceBus.Core/Pipeline/BehaviorChain.cs @@ -5,10 +5,13 @@ class BehaviorChain where T : BehaviorContext { - public void Add() where TBehavior : IBehavior + public BehaviorChain(BehaviorList behaviorList) { - itemDescriptors.Enqueue(typeof(TBehavior)); - } + foreach (var behaviorType in behaviorList.InnerList) + { + itemDescriptors.Enqueue(behaviorType); + } + } public void Invoke(T context) { diff --git a/src/NServiceBus.Core/Pipeline/BehaviorContext.cs b/src/NServiceBus.Core/Pipeline/BehaviorContext.cs index f896eee19c6..1cc6e7d17d7 100644 --- a/src/NServiceBus.Core/Pipeline/BehaviorContext.cs +++ b/src/NServiceBus.Core/Pipeline/BehaviorContext.cs @@ -1,9 +1,14 @@ namespace NServiceBus.Pipeline { + using System; using System.Collections.Generic; + using System.ComponentModel; using ObjectBuilder; - abstract class BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public abstract class BehaviorContext { protected BehaviorContext(BehaviorContext parentContext) { diff --git a/src/NServiceBus.Core/Pipeline/BehaviorList.cs b/src/NServiceBus.Core/Pipeline/BehaviorList.cs new file mode 100644 index 00000000000..3c377b526d6 --- /dev/null +++ b/src/NServiceBus.Core/Pipeline/BehaviorList.cs @@ -0,0 +1,74 @@ +namespace NServiceBus.Pipeline +{ + using System; + using System.Collections.Generic; + using System.ComponentModel; + + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class BehaviorList where TContext : BehaviorContext + { + public List InnerList { get; set; } + + public BehaviorList() + { + InnerList = new List(); + } + + public void Add() where T : IBehavior + { + InnerList.Add(typeof(T)); + } + + public bool Remove() where T : IBehavior + { + return InnerList.Remove(typeof(T)); + } + + public bool Replace() + where TExisting : IBehavior + where TToReplace : IBehavior + { + var indexOf = InnerList.IndexOf(typeof(TExisting)); + if (indexOf > -1) + { + InnerList[indexOf] = typeof(TToReplace); + return true; + } + return false; + } + + public bool InsertAfter() + where TExisting : IBehavior + where TToAdd : IBehavior + { + for (var index = 0; index < InnerList.Count; index++) + { + var type = InnerList[index]; + if (type == typeof(TExisting)) + { + InnerList.Insert(index + 1, typeof(TToAdd)); + return true; + } + } + return false; + } + + public bool InsertBefore() + where TExisting : IBehavior + where TToAdd : IBehavior + { + for (var index = 0; index < InnerList.Count; index++) + { + var type = InnerList[index]; + if (type == typeof(TExisting)) + { + InnerList.Insert(index, typeof(TToAdd)); + return true; + } + } + return false; + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs index 4a4ec52012c..cd0915ea7e0 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs @@ -1,9 +1,14 @@ namespace NServiceBus.Pipeline.Contexts { + using System; + using System.ComponentModel; using Unicast.Behaviors; using Unicast.Messages; - class HandlerInvocationContext : BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class HandlerInvocationContext : BehaviorContext { public HandlerInvocationContext(BehaviorContext parentContext, MessageHandler messageHandler) : base(parentContext) @@ -20,5 +25,9 @@ public LogicalMessage LogicalMessage { get { return Get(); } } + public TransportMessage PhysicalMessage + { + get { return Get(ReceivePhysicalMessageContext.IncomingPhysicalMessageKey); } + } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Pipeline/Contexts/ReceiveLogicalMessageContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/ReceiveLogicalMessageContext.cs index 9c58b56495b..0295b4034f1 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/ReceiveLogicalMessageContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/ReceiveLogicalMessageContext.cs @@ -1,8 +1,13 @@ namespace NServiceBus.Pipeline.Contexts { + using System; + using System.ComponentModel; using Unicast.Messages; - class ReceiveLogicalMessageContext : BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ReceiveLogicalMessageContext : BehaviorContext { public ReceiveLogicalMessageContext(BehaviorContext parentContext, LogicalMessage message) : base(parentContext) diff --git a/src/NServiceBus.Core/Pipeline/Contexts/ReceivePhysicalMessageContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/ReceivePhysicalMessageContext.cs index 3f25890b76f..c47db6f4985 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/ReceivePhysicalMessageContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/ReceivePhysicalMessageContext.cs @@ -1,9 +1,14 @@ namespace NServiceBus.Pipeline.Contexts { + using System; using System.Collections.Generic; + using System.ComponentModel; using Unicast.Messages; - class ReceivePhysicalMessageContext : BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ReceivePhysicalMessageContext : BehaviorContext { public ReceivePhysicalMessageContext(BehaviorContext parentContext, TransportMessage transportMessage, bool messageHandlingDisabled) : base(parentContext) diff --git a/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessageContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessageContext.cs index d5b7caeb9ba..aa392f72312 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessageContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessageContext.cs @@ -1,9 +1,14 @@ namespace NServiceBus.Pipeline.Contexts { + using System; + using System.ComponentModel; using Unicast; using Unicast.Messages; - class SendLogicalMessageContext : BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SendLogicalMessageContext : BehaviorContext { public SendLogicalMessageContext(BehaviorContext parentContext, SendOptions sendOptions, LogicalMessage message) : base(parentContext) diff --git a/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessagesContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessagesContext.cs index da8e73bfdae..1b708198b32 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessagesContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/SendLogicalMessagesContext.cs @@ -1,10 +1,15 @@ namespace NServiceBus.Pipeline.Contexts { + using System; using System.Collections.Generic; + using System.ComponentModel; using Unicast; using Unicast.Messages; - class SendLogicalMessagesContext : BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SendLogicalMessagesContext : BehaviorContext { public SendLogicalMessagesContext(BehaviorContext parentContext, SendOptions sendOptions,IEnumerable messages) : base(parentContext) diff --git a/src/NServiceBus.Core/Pipeline/Contexts/SendPhysicalMessageContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/SendPhysicalMessageContext.cs index 75b95eaf2ea..789d3609f6d 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/SendPhysicalMessageContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/SendPhysicalMessageContext.cs @@ -1,10 +1,15 @@ namespace NServiceBus.Pipeline.Contexts { + using System; using System.Collections.Generic; + using System.ComponentModel; using Unicast; using Unicast.Messages; - class SendPhysicalMessageContext : BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SendPhysicalMessageContext : BehaviorContext { public SendPhysicalMessageContext(BehaviorContext parentContext, SendOptions sendOptions, TransportMessage message) : base(parentContext) diff --git a/src/NServiceBus.Core/Pipeline/IBehavior.cs b/src/NServiceBus.Core/Pipeline/IBehavior.cs index 5a823e2f30a..1a5245aff56 100644 --- a/src/NServiceBus.Core/Pipeline/IBehavior.cs +++ b/src/NServiceBus.Core/Pipeline/IBehavior.cs @@ -1,8 +1,11 @@ namespace NServiceBus.Pipeline { using System; + using System.ComponentModel; - interface IBehavior where T : BehaviorContext + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public interface IBehavior where T : BehaviorContext { void Invoke(T context, Action next); } diff --git a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs b/src/NServiceBus.Core/Pipeline/PipelineFactory.cs index dfedadce589..7767ddef542 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineFactory.cs @@ -2,6 +2,8 @@ { using System; using System.Collections.Generic; + using System.ComponentModel; + using System.Linq; using Audit; using Contexts; using DataBus; @@ -14,9 +16,19 @@ using Unicast.Messages; using UnitOfWork; - class PipelineFactory : IDisposable + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class PipelineFactory : IDisposable { - public IBuilder RootBuilder { get; set; } + IBuilder rootBuilder; + BehaviorContextStacker contextStacker = new BehaviorContextStacker(); + List pipelineOverrides; + + public PipelineFactory(IBuilder builder) + { + rootBuilder = builder; + pipelineOverrides = builder.BuildAll().ToList(); + } public void PreparePhysicalMessagePipelineContext(TransportMessage message, bool messageHandlingDisabled) { @@ -32,20 +44,28 @@ public void InvokeReceivePhysicalMessagePipeline() throw new InvalidOperationException("Can't invoke the receive pipeline when the current context is: " + contextStacker.Current.GetType().Name); } - var pipeline = new BehaviorChain(); - - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); + var behaviorList = new BehaviorList(); + + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + + foreach (var pipelineOverride in pipelineOverrides) + { + pipelineOverride.Override(behaviorList); + } + + var pipeline = new BehaviorChain(behaviorList); + pipeline.Invoke(context); } @@ -57,12 +77,19 @@ public void CompletePhysicalMessagePipelineContext() public void InvokeLogicalMessagePipeline(LogicalMessage message) { - var pipeline = new BehaviorChain(); - - pipeline.Add(); + var behaviorList = new BehaviorList(); + behaviorList.Add(); //todo: we'll make this optional as soon as we have a way to manipulate the pipeline - pipeline.Add(); - pipeline.Add(); + behaviorList.Add(); + behaviorList.Add(); + + foreach (var pipelineOverride in pipelineOverrides) + { + pipelineOverride.Override(behaviorList); + } + + var pipeline = new BehaviorChain(behaviorList); + var context = new ReceiveLogicalMessageContext(CurrentContext, message); @@ -72,11 +99,19 @@ public void InvokeLogicalMessagePipeline(LogicalMessage message) public HandlerInvocationContext InvokeHandlerPipeline(MessageHandler handler) { - var pipeline = new BehaviorChain(); + var behaviorList = new BehaviorList(); + + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + + foreach (var pipelineOverride in pipelineOverrides) + { + pipelineOverride.Override(behaviorList); + } + - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); + var pipeline = new BehaviorChain(behaviorList); var context = new HandlerInvocationContext(CurrentContext, handler); @@ -87,12 +122,18 @@ public HandlerInvocationContext InvokeHandlerPipeline(MessageHandler handler) public SendLogicalMessagesContext InvokeSendPipeline(SendOptions sendOptions, IEnumerable messages) { - var pipeline = new BehaviorChain(); + var behaviorList = new BehaviorList(); + + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); + foreach (var pipelineOverride in pipelineOverrides) + { + pipelineOverride.Override(behaviorList); + } + var pipeline = new BehaviorChain(behaviorList); var context = new SendLogicalMessagesContext(CurrentContext, sendOptions, messages); Execute(pipeline, context); @@ -102,14 +143,20 @@ public SendLogicalMessagesContext InvokeSendPipeline(SendOptions sendOptions, IE public SendLogicalMessageContext InvokeSendPipeline(SendOptions sendOptions, LogicalMessage message) { - var pipeline = new BehaviorChain(); - - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); + var behaviorList = new BehaviorList(); + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); //todo: we'll make this optional as soon as we have a way to manipulate the pipeline - pipeline.Add(); + behaviorList.Add(); + + foreach (var pipelineOverride in pipelineOverrides) + { + pipelineOverride.Override(behaviorList); + } + + var pipeline = new BehaviorChain(behaviorList); var context = new SendLogicalMessageContext(CurrentContext, sendOptions, message); @@ -120,11 +167,20 @@ public SendLogicalMessageContext InvokeSendPipeline(SendOptions sendOptions, Log public void InvokeSendPipeline(SendOptions sendOptions, TransportMessage physicalMessage) { - var pipeline = new BehaviorChain(); + var behaviorList = new BehaviorList(); + + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); + + + foreach (var pipelineOverride in pipelineOverrides) + { + pipelineOverride.Override(behaviorList); + } - pipeline.Add(); - pipeline.Add(); - pipeline.Add(); + + var pipeline = new BehaviorChain(behaviorList); var context = new SendPhysicalMessageContext(CurrentContext, sendOptions, physicalMessage); @@ -142,7 +198,7 @@ public BehaviorContext CurrentContext return current; } - contextStacker.Push(new RootContext(RootBuilder)); + contextStacker.Push(new RootContext(rootBuilder)); return contextStacker.Current; } @@ -173,6 +229,5 @@ void Execute(BehaviorChain pipelineAction, T context) where T : BehaviorCo } } - BehaviorContextStacker contextStacker = new BehaviorContextStacker(); } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Pipeline/PipelineOverride.cs b/src/NServiceBus.Core/Pipeline/PipelineOverride.cs new file mode 100644 index 00000000000..5f0609c5c67 --- /dev/null +++ b/src/NServiceBus.Core/Pipeline/PipelineOverride.cs @@ -0,0 +1,44 @@ +namespace NServiceBus.Pipeline +{ + using System; + using System.ComponentModel; + using Contexts; + + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public abstract class PipelineOverride : IPipelineOverride + { + public virtual void Override(BehaviorList behaviorList) + { + } + public virtual void Override(BehaviorList behaviorList) + { + } + public virtual void Override(BehaviorList behaviorList) + { + } + public virtual void Override(BehaviorList behaviorList) + { + } + public virtual void Override(BehaviorList behaviorList) + { + } + public virtual void Override(BehaviorList behaviorList) + { + } + } + + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public interface IPipelineOverride + { + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs b/src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs new file mode 100644 index 00000000000..31e55d9a75b --- /dev/null +++ b/src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs @@ -0,0 +1,10 @@ +namespace NServiceBus.Pipeline +{ + class PipelineOverrideConfigurer : INeedInitialization + { + public void Init() + { + Configure.Instance.ForAllTypes(s => Configure.Instance.Configurer.ConfigureComponent(s, DependencyLifecycle.SingleInstance)); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Sagas/ActiveSagaInstance.cs b/src/NServiceBus.Core/Sagas/ActiveSagaInstance.cs index a25672e9a64..f34252240e5 100644 --- a/src/NServiceBus.Core/Sagas/ActiveSagaInstance.cs +++ b/src/NServiceBus.Core/Sagas/ActiveSagaInstance.cs @@ -1,9 +1,13 @@ namespace NServiceBus.Sagas { using System; + using System.ComponentModel; using Saga; - class ActiveSagaInstance + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ActiveSagaInstance { public ActiveSagaInstance(ISaga saga) { diff --git a/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs b/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs index 32e47233f69..34c1de1039c 100644 --- a/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs +++ b/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs @@ -5,7 +5,7 @@ using Pipeline.Contexts; [ObsoleteEx(RemoveInVersion="5.0")] - class RemoveIncomingHeadersBehavior : IBehavior + public class RemoveIncomingHeadersBehavior : IBehavior { public void Invoke(ReceivePhysicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs index 0b0a140d4ff..f6ae8ccefb1 100644 --- a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs +++ b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs @@ -2,6 +2,7 @@ { using System; using System.Collections.Generic; + using System.ComponentModel; using System.Linq; using IdGeneration; using Logging; @@ -13,7 +14,10 @@ using Unicast; using Unicast.Messages; - class SagaPersistenceBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SagaPersistenceBehavior : IBehavior { public ISagaPersister SagaPersister { get; set; } diff --git a/src/NServiceBus.Core/Sagas/SagaSendBehavior.cs b/src/NServiceBus.Core/Sagas/SagaSendBehavior.cs index 66f157a6f27..8e62c78e2ca 100644 --- a/src/NServiceBus.Core/Sagas/SagaSendBehavior.cs +++ b/src/NServiceBus.Core/Sagas/SagaSendBehavior.cs @@ -1,10 +1,14 @@ namespace NServiceBus.Sagas { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; - class SagaSendBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SagaSendBehavior : IBehavior { public void Invoke(SendLogicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs index 8ec05d94b5a..50384b45129 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs @@ -1,15 +1,17 @@ namespace NServiceBus.Unicast.Behaviors { using System; - using System.Collections.Generic; + using System.ComponentModel; using System.Linq; - using Messages; using Pipeline; using Pipeline.Contexts; using Unicast; using Transport; - class CallbackInvocationBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class CallbackInvocationBehavior : IBehavior { public const string CallbackInvokedKey = "NServiceBus.CallbackInvocationBehavior.CallbackWasInvoked"; diff --git a/src/NServiceBus.Core/Unicast/Behaviors/ChildContainerBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/ChildContainerBehavior.cs index be10e3126d7..c56549a8351 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/ChildContainerBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/ChildContainerBehavior.cs @@ -1,10 +1,13 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; - class ChildContainerBehavior:IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ChildContainerBehavior : IBehavior { public void Invoke(ReceivePhysicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs index 23053260edb..c06e6d7c436 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs @@ -1,13 +1,16 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using System.Linq; using Pipeline; using Pipeline.Contexts; using Unicast; using Messages; - class CreatePhysicalMessageBehavior:IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class CreatePhysicalMessageBehavior : IBehavior { public MessageMetadataRegistry MessageMetadataRegistry { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs index 871e2b8f0a1..1bf2ef0a82f 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs @@ -1,6 +1,7 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using System.Configuration; using System.Linq; using Logging; @@ -9,7 +10,9 @@ using Transports; using Queuing; - class DispatchMessageToTransportBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class DispatchMessageToTransportBehavior : IBehavior { public ISendMessages MessageSender { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/ForwardBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/ForwardBehavior.cs index 7636745a1e3..f928dc7f958 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/ForwardBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/ForwardBehavior.cs @@ -1,12 +1,15 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; using Transports; using Unicast; - class ForwardBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ForwardBehavior : IBehavior { public ISendMessages MessageSender { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/ImpersonateSenderBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/ImpersonateSenderBehavior.cs index 71cf4a07f6a..45ad1cf8c15 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/ImpersonateSenderBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/ImpersonateSenderBehavior.cs @@ -1,12 +1,16 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using System.Threading; using Impersonation; using Pipeline; using Pipeline.Contexts; - class ImpersonateSenderBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ImpersonateSenderBehavior : IBehavior { public ExtractIncomingPrincipal ExtractIncomingPrincipal { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/InvokeHandlersBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/InvokeHandlersBehavior.cs index df934013f01..ccad3253278 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/InvokeHandlersBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/InvokeHandlersBehavior.cs @@ -2,6 +2,7 @@ { using System; using System.Collections.Generic; + using System.ComponentModel; using System.Linq; using System.Reflection; using Logging; @@ -12,7 +13,10 @@ using Unicast; using Transport; - class InvokeHandlersBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class InvokeHandlersBehavior : IBehavior { public IDictionary MessageDispatcherMappings { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/LoadHandlersBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/LoadHandlersBehavior.cs index ba2d7391f72..84bb85e725f 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/LoadHandlersBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/LoadHandlersBehavior.cs @@ -1,13 +1,17 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using System.Linq; using MessageInterfaces; using Pipeline; using Pipeline.Contexts; using Unicast; - class LoadHandlersBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class LoadHandlersBehavior : IBehavior { public IMessageHandlerRegistry HandlerRegistry { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/MessageHandler.cs b/src/NServiceBus.Core/Unicast/Behaviors/MessageHandler.cs index 42730d023e3..a5ae4e8434b 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/MessageHandler.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/MessageHandler.cs @@ -1,8 +1,12 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; - class MessageHandler + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class MessageHandler { public object Instance { get; set; } public Action Invocation { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/MessageHandlingLoggingBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/MessageHandlingLoggingBehavior.cs index 9c1b2c4ca51..63796d0c9c2 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/MessageHandlingLoggingBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/MessageHandlingLoggingBehavior.cs @@ -1,15 +1,15 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using System.Reflection; using Logging; using Pipeline; using Pipeline.Contexts; - - /// - /// Arguably not the most interesting behavior, but let's just handle logging like this too - /// - class MessageHandlingLoggingBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class MessageHandlingLoggingBehavior : IBehavior { static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs index 399b8742a41..14648db2080 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs @@ -4,9 +4,8 @@ using Pipeline; using Pipeline.Contexts; - [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "5.0")] - class MultiMessageBehavior:IBehavior + public class MultiMessageBehavior : IBehavior { public PipelineFactory PipelineFactory { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/MultiSendValidatorBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/MultiSendValidatorBehavior.cs index 0dc63b1a943..0720409adfe 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/MultiSendValidatorBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/MultiSendValidatorBehavior.cs @@ -1,11 +1,14 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using System.Linq; using Pipeline; using Pipeline.Contexts; - class MultiSendValidatorBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class MultiSendValidatorBehavior : IBehavior { public void Invoke(SendLogicalMessagesContext context, Action next) { diff --git a/src/NServiceBus.Core/Unicast/Behaviors/RaiseMessageReceivedBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/RaiseMessageReceivedBehavior.cs index 0ee4df3d841..f2e39f98ab9 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/RaiseMessageReceivedBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/RaiseMessageReceivedBehavior.cs @@ -1,11 +1,14 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; using Unicast; - class RaiseMessageReceivedBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class RaiseMessageReceivedBehavior : IBehavior { public UnicastBus UnicastBus { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/SendValidatorBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/SendValidatorBehavior.cs index 4d6357cdfda..0cb8a6f210a 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/SendValidatorBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/SendValidatorBehavior.cs @@ -1,11 +1,14 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; using Unicast; - class SendValidatorBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SendValidatorBehavior : IBehavior { public void Invoke(SendLogicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/Unicast/Behaviors/SerializeMessagesBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/SerializeMessagesBehavior.cs index b7eba67891c..d5167474e7a 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/SerializeMessagesBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/SerializeMessagesBehavior.cs @@ -2,6 +2,7 @@ { using System; using System.Collections.Generic; + using System.ComponentModel; using System.IO; using System.Linq; using Messages; @@ -9,7 +10,9 @@ using Pipeline.Contexts; using Serialization; - class SerializeMessagesBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SerializeMessagesBehavior : IBehavior { public IMessageSerializer MessageSerializer { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/SetCurrentMessageBeingHandledBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/SetCurrentMessageBeingHandledBehavior.cs index c7bf084f151..45539d6fd75 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/SetCurrentMessageBeingHandledBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/SetCurrentMessageBeingHandledBehavior.cs @@ -1,11 +1,14 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using Messages; using Pipeline; using Pipeline.Contexts; - class SetCurrentMessageBeingHandledBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SetCurrentMessageBeingHandledBehavior : IBehavior { public void Invoke(HandlerInvocationContext context, Action next) { diff --git a/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs b/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs index 89717fc734d..06a1f63eee7 100644 --- a/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs @@ -1,6 +1,7 @@ namespace NServiceBus.Unicast.Messages { using System; + using System.ComponentModel; using System.Linq; using System.Reflection; using Logging; @@ -8,7 +9,10 @@ using Pipeline.Contexts; using Transport; - class ExecuteLogicalMessagesBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ExecuteLogicalMessagesBehavior : IBehavior { public PipelineFactory PipelineFactory { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Messages/ExtractLogicalMessagesBehavior.cs b/src/NServiceBus.Core/Unicast/Messages/ExtractLogicalMessagesBehavior.cs index 81ac38bcc62..704a716d015 100644 --- a/src/NServiceBus.Core/Unicast/Messages/ExtractLogicalMessagesBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Messages/ExtractLogicalMessagesBehavior.cs @@ -2,6 +2,7 @@ { using System; using System.Collections.Generic; + using System.ComponentModel; using System.IO; using System.Linq; using System.Reflection; @@ -13,7 +14,10 @@ using Transport; using Unicast; - class ExtractLogicalMessagesBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class ExtractLogicalMessagesBehavior : IBehavior { public IMessageSerializer MessageSerializer { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Messages/LogicalMessage.cs b/src/NServiceBus.Core/Unicast/Messages/LogicalMessage.cs index 92354fae905..274033e424c 100644 --- a/src/NServiceBus.Core/Unicast/Messages/LogicalMessage.cs +++ b/src/NServiceBus.Core/Unicast/Messages/LogicalMessage.cs @@ -2,8 +2,12 @@ { using System; using System.Collections.Generic; + using System.ComponentModel; - class LogicalMessage + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class LogicalMessage { public LogicalMessage(MessageMetadata metadata, object message,Dictionary headers) { diff --git a/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs b/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs index df01d4e3208..d32a89897e4 100644 --- a/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs +++ b/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs @@ -2,11 +2,15 @@ namespace NServiceBus.Unicast.Messages { using System; using System.Collections.Generic; + using System.ComponentModel; using System.Linq; using MessageInterfaces; using Pipeline; - class LogicalMessageFactory + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class LogicalMessageFactory { public MessageMetadataRegistry MessageMetadataRegistry { get; set; } diff --git a/src/NServiceBus.Core/Unicast/SendOptions.cs b/src/NServiceBus.Core/Unicast/SendOptions.cs index f900fcabefa..b92f95c8694 100644 --- a/src/NServiceBus.Core/Unicast/SendOptions.cs +++ b/src/NServiceBus.Core/Unicast/SendOptions.cs @@ -1,8 +1,12 @@ namespace NServiceBus.Unicast { using System; + using System.ComponentModel; - class SendOptions + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class SendOptions { public SendOptions() { diff --git a/src/NServiceBus.Core/UnitOfWork/UnitOfWorkBehavior.cs b/src/NServiceBus.Core/UnitOfWork/UnitOfWorkBehavior.cs index 5c936523647..c39e52161b8 100644 --- a/src/NServiceBus.Core/UnitOfWork/UnitOfWorkBehavior.cs +++ b/src/NServiceBus.Core/UnitOfWork/UnitOfWorkBehavior.cs @@ -2,10 +2,14 @@ { using System; using System.Collections.Generic; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; - class UnitOfWorkBehavior : IBehavior + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class UnitOfWorkBehavior : IBehavior { public void Invoke(ReceivePhysicalMessageContext context, Action next) { From 09bf675bbcd3ac0a3e6c3fb48483e542fc6c5904 Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Sun, 15 Dec 2013 15:51:12 +1100 Subject: [PATCH 013/146] remove duplicate InMemoryDataBus --- .../DataBus/InMemoryDataBus.cs | 35 ---------- .../When_nservicebus_is_initalizing.cs | 1 + .../Gateway/InMemoryDataBus.cs | 68 ------------------- .../NServiceBus.Core.Tests.csproj | 2 - 4 files changed, 1 insertion(+), 105 deletions(-) delete mode 100644 src/NServiceBus.Core.Tests/DataBus/InMemoryDataBus.cs delete mode 100644 src/NServiceBus.Core.Tests/Gateway/InMemoryDataBus.cs diff --git a/src/NServiceBus.Core.Tests/DataBus/InMemoryDataBus.cs b/src/NServiceBus.Core.Tests/DataBus/InMemoryDataBus.cs deleted file mode 100644 index b4f15c26323..00000000000 --- a/src/NServiceBus.Core.Tests/DataBus/InMemoryDataBus.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace NServiceBus.Core.Tests.DataBus -{ - using System; - using System.Collections.Generic; - using System.IO; - using NServiceBus.DataBus; - - public class InMemoryDataBus : IDataBus - { - private readonly IDictionary storage = new Dictionary(); - - public Stream Get(string key) - { - lock (storage) - return new MemoryStream(storage[key]); - } - - public string Put(Stream stream, TimeSpan timeToBeReceived) - { - var key = Guid.NewGuid().ToString(); - - var data = new byte[stream.Length]; - stream.Read(data, 0, (int) stream.Length); - - lock (storage) - storage.Add(key, data); - return key; - } - - public void Start() - { - //no-op - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/DataBus/When_nservicebus_is_initalizing.cs b/src/NServiceBus.Core.Tests/DataBus/When_nservicebus_is_initalizing.cs index 74ffbf8e7bf..9471e98c37a 100644 --- a/src/NServiceBus.Core.Tests/DataBus/When_nservicebus_is_initalizing.cs +++ b/src/NServiceBus.Core.Tests/DataBus/When_nservicebus_is_initalizing.cs @@ -4,6 +4,7 @@ namespace NServiceBus.Core.Tests.DataBus using System.IO; using NServiceBus.DataBus; using NServiceBus.DataBus.Config; + using NServiceBus.DataBus.InMemory; using NUnit.Framework; [TestFixture] diff --git a/src/NServiceBus.Core.Tests/Gateway/InMemoryDataBus.cs b/src/NServiceBus.Core.Tests/Gateway/InMemoryDataBus.cs deleted file mode 100644 index 6a6c99b7c8a..00000000000 --- a/src/NServiceBus.Core.Tests/Gateway/InMemoryDataBus.cs +++ /dev/null @@ -1,68 +0,0 @@ -namespace NServiceBus.Gateway.Tests -{ - using System; - using System.Collections.Generic; - using System.IO; - using DataBus; - - /// - /// In memory implementation of . - /// - public class InMemoryDataBus : IDataBus - { - private readonly IDictionary storage = new Dictionary(); - - /// - /// Gets a data item from the bus. - /// - /// The key to look for. - /// The data . - public Stream Get(string key) - { - lock (storage) - return new MemoryStream(storage[key].Data); - } - - /// - /// Adds a data item to the bus and returns the assigned key. - /// - /// A create containing the data to be sent on the databus. - /// The time to be received specified on the message type. TimeSpan.MaxValue is the default. - public string Put(Stream stream, TimeSpan timeToBeReceived) - { - var key = Guid.NewGuid().ToString(); - - var data = new byte[stream.Length]; - stream.Read(data, 0, (int) stream.Length); - - lock (storage) - storage.Add(key, new Entry - { - Data = data, - ExpireAt = DateTime.Now + timeToBeReceived - }); - return key; - } - - /// - /// Called when the bus starts up to allow the data bus to active background tasks. - /// - public void Start() - { - //no-op - } - - //used for test purposes - public Entry Peek(string key) - { - lock (storage) - return storage[key]; - } - - public class Entry - { - public byte[] Data; - public DateTime ExpireAt; - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 8e13ebe02ad..240a87e3ba0 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -139,7 +139,6 @@ - @@ -169,7 +168,6 @@ - From da0e1284b43f430554de448a61fab40b3e93bc32 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 16 Dec 2013 09:22:16 +1100 Subject: [PATCH 014/146] make arguments support '--' Seem when we imported this class we got a buggy version. Should also support '--' as defined here https://github.com/mono/mono/blob/master/mcs/class/Mono.Options/Mono.Options/Options.cs#L1257 --- src/NServiceBus.Hosting.Windows/Options.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Hosting.Windows/Options.cs b/src/NServiceBus.Hosting.Windows/Options.cs index 77129395c3d..65418409a37 100644 --- a/src/NServiceBus.Hosting.Windows/Options.cs +++ b/src/NServiceBus.Hosting.Windows/Options.cs @@ -978,7 +978,7 @@ bool WriteOptionPrototype(TextWriter o, Option p, ref int written) i < names.Length; i = GetNextOptionIndex(names, i + 1)) { Write(o, ref written, ", "); - Write(o, ref written, names[i].Length == 1 ? "-" : "-"); + Write(o, ref written, names[i].Length == 1 ? "-" : "--"); Write(o, ref written, names[i]); } From 9f35a7845fcd8bfd4ce109ea7cf2440903df3410 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 16 Dec 2013 09:34:51 +1100 Subject: [PATCH 015/146] cleanups to fix R# inspections --- src/NServiceBus.Core.Tests/Unicast/Sending.cs | 2 -- src/NServiceBus.Core/Install.cs | 5 +++-- src/NServiceBus.Core/Persistence/Raven/RavenUserInstaller.cs | 2 ++ .../SecondLevelRetries/DefaultRetryPolicy.cs | 1 + .../Unicast/Behaviors/CallbackInvocationBehavior.cs | 2 -- .../Unicast/Publishing/StorageDrivenPublisher.cs | 2 +- src/NServiceBus.Core/Unicast/UnicastBus.cs | 1 - src/NServiceBus.Testing/StubBus.cs | 4 ++-- 8 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/NServiceBus.Core.Tests/Unicast/Sending.cs b/src/NServiceBus.Core.Tests/Unicast/Sending.cs index 375bec89f5b..69429ba680e 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Sending.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Sending.cs @@ -3,10 +3,8 @@ using System; using System.Collections.Generic; using Contexts; - using Mono.CSharp; using NUnit.Framework; using Rhino.Mocks; - using Saga; [TestFixture] public class When_sending_a_message_with_databusProperty : using_the_unicastBus diff --git a/src/NServiceBus.Core/Install.cs b/src/NServiceBus.Core/Install.cs index 893db303926..0684b96f5ed 100644 --- a/src/NServiceBus.Core/Install.cs +++ b/src/NServiceBus.Core/Install.cs @@ -80,7 +80,8 @@ public Installer(IIdentity identity) /// public static bool RunOtherInstallers { private get; set; } - private static bool installedOthersInstallers; + // ReSharper disable once StaticFieldInGenericType + static bool installedOthersInstallers; /// /// Invokes installers for the given environment @@ -96,7 +97,7 @@ public void Install() /// /// Invokes only 'Something' - other than infrastructure, installers for the given environment. /// - private void InstallOtherInstallers() + void InstallOtherInstallers() { if (installedOthersInstallers) return; diff --git a/src/NServiceBus.Core/Persistence/Raven/RavenUserInstaller.cs b/src/NServiceBus.Core/Persistence/Raven/RavenUserInstaller.cs index 19853da37e2..af4bb61f504 100644 --- a/src/NServiceBus.Core/Persistence/Raven/RavenUserInstaller.cs +++ b/src/NServiceBus.Core/Persistence/Raven/RavenUserInstaller.cs @@ -157,6 +157,7 @@ class WindowsAuthDocument public List RequiredUsers = new List(); } + // ReSharper disable NotAccessedField.Local class WindowsAuthData { public string Name; @@ -170,6 +171,7 @@ class DatabaseAccess public bool ReadOnly; public string TenantId; } + // ReSharper restore NotAccessedField.Local } } \ No newline at end of file diff --git a/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs b/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs index eb0fbb5a7c9..98a91d33509 100644 --- a/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs +++ b/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs @@ -41,6 +41,7 @@ static bool HasReachedMaxTime(TransportMessage message) return true; } } + // ReSharper disable once EmptyGeneralCatchClause catch (Exception) { } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs index 8ec05d94b5a..a3e1ee3aa39 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs @@ -1,9 +1,7 @@ namespace NServiceBus.Unicast.Behaviors { using System; - using System.Collections.Generic; using System.Linq; - using Messages; using Pipeline; using Pipeline.Contexts; using Unicast; diff --git a/src/NServiceBus.Core/Unicast/Publishing/StorageDrivenPublisher.cs b/src/NServiceBus.Core/Unicast/Publishing/StorageDrivenPublisher.cs index 99bddffb0af..0953a287771 100644 --- a/src/NServiceBus.Core/Unicast/Publishing/StorageDrivenPublisher.cs +++ b/src/NServiceBus.Core/Unicast/Publishing/StorageDrivenPublisher.cs @@ -32,7 +32,7 @@ public bool Publish(TransportMessage message, IEnumerable eventTypes) if (SubscriptionStorage == null) throw new InvalidOperationException("Cannot publish on this endpoint - no subscription storage has been configured. Add either 'MsmqSubscriptionStorage()' or 'DbSubscriptionStorage()' after 'NServiceBus.Configure.With()'."); - var subscribers = Enumerable.ToList
(SubscriptionStorage.GetSubscriberAddressesForMessage(eventTypes.Select(t => new MessageType(t)))); + var subscribers = SubscriptionStorage.GetSubscriberAddressesForMessage(eventTypes.Select(t => new MessageType(t))).ToList(); if (!subscribers.Any()) return false; diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index 0f076901f76..b289522ab81 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -18,7 +18,6 @@ namespace NServiceBus.Unicast using Routing; using Satellites; using Serialization; - using Settings; using Subscriptions; using Subscriptions.MessageDrivenSubscriptions.SubcriberSideFiltering; using Support; diff --git a/src/NServiceBus.Testing/StubBus.cs b/src/NServiceBus.Testing/StubBus.cs index 3075f4eed98..a94cd90dec5 100644 --- a/src/NServiceBus.Testing/StubBus.cs +++ b/src/NServiceBus.Testing/StubBus.cs @@ -31,11 +31,11 @@ public StubBus(IMessageCreator creator) public void Publish(T message) { - Publish(new []{message} ); + Publish(new []{message} ); } public void Publish() { - Publish(new T[0]); + Publish(new T[0]); } public void Publish(params T[] messages) From ed8d6f981fcff6e2315585b5f7abd380028012de Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 16 Dec 2013 09:38:27 +1100 Subject: [PATCH 016/146] remove dodgy catch from unicast bus tests --- .../Unicast/Contexts/using_the_unicastbus.cs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs index e616cc88d03..7eed5172247 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs @@ -45,7 +45,7 @@ public class using_a_configured_unicastBus protected FakeTransport Transport; protected XmlMessageSerializer MessageSerializer; protected FuncBuilder FuncBuilder; - protected Address MasterNodeAddress; + public static Address MasterNodeAddress; protected EstimatedTimeToSLABreachCalculator SLABreachCalculator = new EstimatedTimeToSLABreachCalculator(); protected MessageMetadataRegistry MessageMetadataRegistry; protected MessageDrivenSubscriptionManager subscriptionManager; @@ -57,6 +57,13 @@ public class using_a_configured_unicastBus PipelineFactory pipelineFactory; + static using_a_configured_unicastBus() + { + var localAddress = "endpointA"; + MasterNodeAddress = new Address(localAddress, "MasterNode"); + Address.InitializeLocalAddress(localAddress); + } + [SetUp] public void SetUp() { @@ -71,8 +78,6 @@ public void SetUp() Transport = new FakeTransport(); FuncBuilder = new FuncBuilder(); Configure.GetEndpointNameAction = () => "TestEndpoint"; - const string localAddress = "endpointA"; - MasterNodeAddress = new Address(localAddress, "MasterNode"); subscriptionPredicatesEvaluator = new SubscriptionPredicatesEvaluator(); router = new StaticMessageRouter(KnownMessageTypes()); handlerRegistry = new MessageHandlerRegistry(); @@ -81,13 +86,6 @@ public void SetUp() DefaultToNonPersistentMessages = false }; - try - { - Address.InitializeLocalAddress(localAddress); - } - catch // intentional - { - } MessageSerializer = new XmlMessageSerializer(MessageMapper); //ExtensionMethods.GetStaticOutgoingHeadersAction = () => MessageHeaderManager.staticHeaders; From 1850fa2c57b4b4ea0859b60e1f83b9f2a080818d Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 16 Dec 2013 09:43:32 +1100 Subject: [PATCH 017/146] fix some spelling errors --- src/NServiceBus.AcceptanceTesting/Scenario.cs | 4 ++-- .../Unicast/Contexts/using_the_unicastbus.cs | 4 ++-- src/NServiceBus.Core.Tests/Unicast/DeferedMessages.cs | 4 ++-- src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs | 6 +++--- .../Serializers/XML/XmlMessageSerializer.cs | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/NServiceBus.AcceptanceTesting/Scenario.cs b/src/NServiceBus.AcceptanceTesting/Scenario.cs index 482cb3c977c..6d95b61fd46 100644 --- a/src/NServiceBus.AcceptanceTesting/Scenario.cs +++ b/src/NServiceBus.AcceptanceTesting/Scenario.cs @@ -43,12 +43,12 @@ public IScenarioWithEndpointBehavior WithEndpoint() where T : Endpo return WithEndpoint(b => { }); } - public IScenarioWithEndpointBehavior WithEndpoint(Action> defineBehaviour) where T : EndpointConfigurationBuilder + public IScenarioWithEndpointBehavior WithEndpoint(Action> defineBehavior) where T : EndpointConfigurationBuilder { var builder = new EndpointBehaviorBuilder(typeof (T)); - defineBehaviour(builder); + defineBehavior(builder); behaviours.Add(builder.Build()); diff --git a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs index 7eed5172247..c907cde0f84 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs @@ -142,13 +142,13 @@ public void SetUp() SubscriptionStorage = subscriptionStorage }; - var deferer = new TimeoutManagerDeferrer + var deferrer = new TimeoutManagerDeferrer { MessageSender = messageSender, TimeoutManagerAddress = MasterNodeAddress.SubScope("Timeouts") }; - FuncBuilder.Register(() => deferer); + FuncBuilder.Register(() => deferrer); FuncBuilder.Register(() => messagePublisher); unicastBus = new UnicastBus diff --git a/src/NServiceBus.Core.Tests/Unicast/DeferedMessages.cs b/src/NServiceBus.Core.Tests/Unicast/DeferedMessages.cs index 47b10fda4d7..b08eea5651f 100644 --- a/src/NServiceBus.Core.Tests/Unicast/DeferedMessages.cs +++ b/src/NServiceBus.Core.Tests/Unicast/DeferedMessages.cs @@ -56,7 +56,7 @@ public void Should_set_the_expiry_header_to_a_absolute_utc_time() } [TestFixture] - public class When_shortcutting_defered_messages_that_already_has_expired : using_the_unicastBus + public class When_short_cutting_deferred_messages_that_already_has_expired : using_the_unicastBus { [Test] public void Should_use_utc_when_comparing() @@ -66,7 +66,7 @@ public void Should_use_utc_when_comparing() bus.Defer(time, new DeferredMessage()); - //no expiry header should be there since this message will be trated as a send local + //no expiry header should be there since this message will be treated as a send local VerifyThatMessageWasSentWithHeaders(h => !h.ContainsKey(TimeoutManagerHeaders.Expire)); } } diff --git a/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs b/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs index d61df13e2fb..8b63c52af51 100644 --- a/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs +++ b/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs @@ -19,14 +19,14 @@ public void SetupHeaderActions() if (message == ExtensionMethods.CurrentMessageBeingHandled) { - LogicalMessage messageBeeingReceived; + LogicalMessage messageBeingReceived; //first try to get the header from the current logical message - if (pipelineFactory.CurrentContext.TryGet(out messageBeeingReceived)) + if (pipelineFactory.CurrentContext.TryGet(out messageBeingReceived)) { string value; - messageBeeingReceived.Headers.TryGetValue(key, out value); + messageBeingReceived.Headers.TryGetValue(key, out value); return value; } diff --git a/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs b/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs index 0b358cf0195..599c925bc72 100644 --- a/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs +++ b/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs @@ -32,10 +32,10 @@ public class XmlMessageSerializer : IMessageSerializer public string Namespace { get { return nameSpace; } - set { nameSpace = TrimPotentialTralingForwardSlashes(value); } + set { nameSpace = TrimPotentialTrailingForwardSlashes(value); } } - string TrimPotentialTralingForwardSlashes(string value) + string TrimPotentialTrailingForwardSlashes(string value) { if (value == null) { From 171092bf3084143e512c82210f41f0e15a524fe9 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 16 Dec 2013 09:48:02 +1100 Subject: [PATCH 018/146] remove dodgy equalityextensions --- .../NServiceBus.Core.Tests.csproj | 1 - .../SagaPersister/EqualityExtensions.cs | 22 ------ .../RavenDB/SagaPersister/TestSaga.cs | 73 ++++--------------- ...a_entity_with_a_concrete_class_property.cs | 2 +- ...g_a_saga_entity_with_inherited_property.cs | 4 +- ...ing_a_saga_entity_with_related_entities.cs | 2 +- 6 files changed, 20 insertions(+), 84 deletions(-) delete mode 100644 src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/EqualityExtensions.cs diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 8cb090c5fd5..ad9f68bb71d 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -180,7 +180,6 @@ - diff --git a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/EqualityExtensions.cs b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/EqualityExtensions.cs deleted file mode 100644 index 2ef581dc377..00000000000 --- a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/EqualityExtensions.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace NServiceBus.Core.Tests.Persistence.RavenDB.SagaPersister -{ - using System; - - public static class EqualityExtensions - { - public static bool EqualTo(this T item, object obj, Func equals) - { - if (!(obj is T)) return false; - - var x = (T)obj; - - if (item != null && x == null) return false; - - if (item == null && x != null) return false; - - if (item == null && x == null) return true; - - return equals(item, x); - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/TestSaga.cs b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/TestSaga.cs index 85e6a923e19..da1514d2e8b 100644 --- a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/TestSaga.cs +++ b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/TestSaga.cs @@ -8,53 +8,25 @@ namespace NServiceBus.Core.Tests.Persistence.RavenDB.SagaPersister [JsonObject(IsReference = true)] public class TestSaga : IContainSagaData { - public virtual Guid Id { get; set; } - - public virtual string Originator { get; set; } - - public virtual string OriginalMessageId { get; set; } - - public virtual RelatedClass RelatedClass { get; set; } - - public virtual IList OrderLines { get; set; } - - public virtual StatusEnum Status { get; set; } - - public virtual DateTime DateTimeProperty { get; set; } - - public virtual TestComponent TestComponent { get; set; } - - public virtual PolymorphicPropertyBase PolymorphicRelatedProperty { get; set; } - - public override bool Equals(object obj) - { - return this.EqualTo(obj, (x, y) => x.Id == y.Id); - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } + public Guid Id { get; set; } + public string Originator { get; set; } + public string OriginalMessageId { get; set; } + public RelatedClass RelatedClass { get; set; } + public IList OrderLines { get; set; } + public StatusEnum Status { get; set; } + public DateTime DateTimeProperty { get; set; } + public TestComponent TestComponent { get; set; } + public PolymorphicPropertyBase PolymorphicRelatedProperty { get; set; } } public class PolymorphicProperty : PolymorphicPropertyBase { - public virtual int SomeInt { get; set; } - - public override bool Equals(object obj) - { - return this.EqualTo(obj, (x, y) => x.Id == y.Id && x.SomeInt == y.SomeInt); - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } + public int SomeInt { get; set; } } public class PolymorphicPropertyBase { - public virtual Guid Id { get; set; } + public Guid Id { get; set; } } public enum StatusEnum @@ -66,32 +38,17 @@ public class TestComponent { public string Property { get; set; } public string AnotherProperty { get; set; } - - public override bool Equals(object obj) - { - return this.EqualTo(obj, (x, y) => - x.Property == y.Property && - x.AnotherProperty == y.AnotherProperty); - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } } public class OrderLine { - public virtual Guid Id { get; set; } - - public virtual Guid ProductId { get; set; } - + public Guid Id { get; set; } + public Guid ProductId { get; set; } } public class RelatedClass { - public virtual Guid Id { get; set; } - - public virtual TestSaga ParentSaga { get; set; } + public Guid Id { get; set; } + public TestSaga ParentSaga { get; set; } } } \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_a_concrete_class_property.cs b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_a_concrete_class_property.cs index da0d5ee484d..c2e800f0d57 100644 --- a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_a_concrete_class_property.cs +++ b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_a_concrete_class_property.cs @@ -12,7 +12,7 @@ public override void SetupEntity(TestSaga saga) [Test] public void Public_setters_and_getters_of_concrete_classes_should_be_persisted() { - Assert.AreEqual(entity.TestComponent, savedEntity.TestComponent); + Assert.AreEqual(entity.TestComponent.Property, savedEntity.TestComponent.Property); } } } \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_inherited_property.cs b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_inherited_property.cs index 5da3ae90698..dbbf873a3b8 100644 --- a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_inherited_property.cs +++ b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_inherited_property.cs @@ -12,7 +12,9 @@ public override void SetupEntity(TestSaga saga) [Test] public void Inherited_property_classes_should_be_persisted() { - Assert.AreEqual(entity.PolymorphicRelatedProperty, savedEntity.PolymorphicRelatedProperty); + var polymorphicRelatedProperty = (PolymorphicProperty)savedEntity.PolymorphicRelatedProperty; + var polymorphicProperty = (PolymorphicProperty)entity.PolymorphicRelatedProperty; + Assert.AreEqual(polymorphicProperty.SomeInt, polymorphicRelatedProperty.SomeInt); } } } \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_related_entities.cs b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_related_entities.cs index 09afbb01ce9..1b870de464f 100644 --- a/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_related_entities.cs +++ b/src/NServiceBus.Core.Tests/Persistence/RavenDB/SagaPersister/When_persisting_a_saga_entity_with_related_entities.cs @@ -12,7 +12,7 @@ public override void SetupEntity(TestSaga saga) [Test] public void Related_entities_should_also_be_persisted() { - Assert.AreEqual(entity, savedEntity.RelatedClass.ParentSaga); + Assert.AreEqual(entity.Id, savedEntity.RelatedClass.ParentSaga.Id); } [Test] From 7a79254bc1daaa9cdfa39331f43c378d30eba3a4 Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Mon, 16 Dec 2013 12:47:31 +1100 Subject: [PATCH 019/146] Testing defer message invocations added expectations for Bus.Defer + unit tests --- .../InvocationTests.cs | 20 ++++ .../TestHandlerFixture.cs | 102 ++++++++++++++++++ src/NServiceBus.Testing/Handler.cs | 36 +++++++ src/NServiceBus.Testing/Invocations.cs | 8 ++ 4 files changed, 166 insertions(+) diff --git a/src/NServiceBus.Testing.Tests/InvocationTests.cs b/src/NServiceBus.Testing.Tests/InvocationTests.cs index dea582b18eb..42dfb709514 100644 --- a/src/NServiceBus.Testing.Tests/InvocationTests.cs +++ b/src/NServiceBus.Testing.Tests/InvocationTests.cs @@ -1,5 +1,6 @@ namespace NServiceBus.Testing.Tests { + using System; using NUnit.Framework; [TestFixture] @@ -159,6 +160,25 @@ public void NotSendToSitesBasicNegativeCheck() exp.Validate(i); } + + [Test] + public void DeferMessageBasicPositive() + { + var timespan = TimeSpan.FromMinutes(10); + var i = new DeferMessageInvocation { Messages = new object[] { new MessageA() }, Value = timespan }; + var exp = new ExpectedDeferMessageInvocation { Check = (m, v) => v == timespan }; + + exp.Validate(i); + } + + [Test] + public void DeferMessageBasicNegative() + { + var i = new DeferMessageInvocation { Messages = new object[] { new MessageA() }, Value = TimeSpan.FromMinutes(10) }; + var exp = new ExpectedNotDeferMessageInvocation { Check = (m, v) => false }; + + exp.Validate(i); + } } public class MessageA diff --git a/src/NServiceBus.Testing.Tests/TestHandlerFixture.cs b/src/NServiceBus.Testing.Tests/TestHandlerFixture.cs index 55090600ffa..5ead74d7b62 100644 --- a/src/NServiceBus.Testing.Tests/TestHandlerFixture.cs +++ b/src/NServiceBus.Testing.Tests/TestHandlerFixture.cs @@ -54,6 +54,86 @@ public void ShouldAssertSendToSitesWasNotCalled() .OnMessage(); } + [Test] + public void ShouldAssertDeferWasCalledWithTimeSpan() + { + var timespan = TimeSpan.FromMinutes(10); + Test.Handler() + .WithExternalDependencies(h => h.Defer = timespan) + .ExpectDefer((m, t) => t == timespan) + .OnMessage(); + } + + [Test] + public void ShouldAssertDeferWasCalledWithDateTime() + { + var datetime = DateTime.Now; + Test.Handler() + .WithExternalDependencies(h => h.Defer = datetime) + .ExpectDefer((m, t) => t == datetime) + .OnMessage(); + } + + [Test] + [ExpectedException] + public void ShouldFailAssertingDeferWasCalledWithTimeSpan() + { + var timespan = TimeSpan.FromMinutes(10); + Test.Handler() + .ExpectDefer((m, t) => t == timespan) + .OnMessage(); + } + + [Test] + [ExpectedException] + public void ShouldFailAssertingDeferWasCalledWithDateTime() + { + var datetime = DateTime.Now; + Test.Handler() + .ExpectDefer((m, t) => t == datetime) + .OnMessage(); + } + + [Test] + public void ShouldAssertDeferWasNotCalledWithTimeSpan() + { + var timespan = TimeSpan.FromMinutes(10); + Test.Handler() + .ExpectNotDefer((m, t) => t == timespan) + .OnMessage(); + } + + [Test] + public void ShouldAssertDeferWasNotCalledWithDateTime() + { + var datetime = DateTime.Now; + Test.Handler() + .ExpectNotDefer((m, t) => t == datetime) + .OnMessage(); + } + + [Test] + [ExpectedException] + public void ShouldFailAssertingDeferWasNotCalledWithTimeSpan() + { + var timespan = TimeSpan.FromMinutes(10); + Test.Handler() + .WithExternalDependencies(h => h.Defer = timespan) + .ExpectNotDefer((m, t) => t == timespan) + .OnMessage(); + } + + [Test] + [ExpectedException] + public void ShouldFailAssertingDeferWasNotCalledWithDateTime() + { + var datetime = DateTime.Now; + Test.Handler() + .WithExternalDependencies(h => h.Defer = datetime) + .ExpectNotDefer((m, t) => t == datetime) + .OnMessage(); + } + [Test] [ExpectedException] public void ShouldFailAssertingHandleCurrentMessageLaterWasCalled() @@ -350,6 +430,28 @@ public class Incoming : IMessage { } + public class DeferingTimeSpanHandler : IHandleMessages + { + public IBus Bus { get; set; } + public TimeSpan Defer { get; set; } + + public void Handle(TestMessage message) + { + Bus.Defer(Defer, message); + } + } + + public class DeferingDateTimeHandler : IHandleMessages + { + public IBus Bus { get; set; } + public DateTime Defer { get; set; } + + public void Handle(TestMessage message) + { + Bus.Defer(Defer, message); + } + } + public class PublishingManyHandler : IHandleMessages { public void Handle(Incoming message) diff --git a/src/NServiceBus.Testing/Handler.cs b/src/NServiceBus.Testing/Handler.cs index bb0602d07d2..f7b77b0c17a 100644 --- a/src/NServiceBus.Testing/Handler.cs +++ b/src/NServiceBus.Testing/Handler.cs @@ -192,6 +192,42 @@ public Handler ExpectNotSendToSites(Func + /// Check that the handler defers a message of the given type + ///
+ public Handler ExpectDefer(Func check) + { + expectedInvocations.Add(new ExpectedDeferMessageInvocation { Check = check }); + return this; + } + + /// + /// Check that the handler defers a message of the given type + /// + public Handler ExpectDefer(Func check) + { + expectedInvocations.Add(new ExpectedDeferMessageInvocation { Check = check }); + return this; + } + + /// + /// Check that the handler doesn't defer a message of the given type + /// + public Handler ExpectNotDefer(Func check) + { + expectedInvocations.Add(new ExpectedNotDeferMessageInvocation { Check = check }); + return this; + } + + /// + /// Check that the handler doesn't defer a message of the given type + /// + public Handler ExpectNotDefer(Func check) + { + expectedInvocations.Add(new ExpectedNotDeferMessageInvocation { Check = check }); + return this; + } + /// /// Activates the test that has been set up passing in the given message. /// diff --git a/src/NServiceBus.Testing/Invocations.cs b/src/NServiceBus.Testing/Invocations.cs index d3f7f7a879d..78ead619ab5 100644 --- a/src/NServiceBus.Testing/Invocations.cs +++ b/src/NServiceBus.Testing/Invocations.cs @@ -185,6 +185,14 @@ public ExpectedNotReplyInvocation() } } + public class ExpectedNotDeferMessageInvocation : ExpectedDeferMessageInvocation + { + public ExpectedNotDeferMessageInvocation() + { + Negate = true; + } + } + public class ExpectedReplyToOriginatorInvocation : ExpectedInvocation> { public Func Check { get; set; } From 72faf31efaa2ede6757c921182a6f2b0c20b3b63 Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Mon, 16 Dec 2013 12:54:56 +1100 Subject: [PATCH 020/146] Testing defer saga invocations added invocations for expecting no timeouts --- src/NServiceBus.Testing/Saga.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/NServiceBus.Testing/Saga.cs b/src/NServiceBus.Testing/Saga.cs index c68ec6b20f0..ddced823fe8 100644 --- a/src/NServiceBus.Testing/Saga.cs +++ b/src/NServiceBus.Testing/Saga.cs @@ -333,6 +333,15 @@ public Saga ExpectTimeoutToBeSetIn(Func c return this; } + /// + /// Verifies that the saga is not setting the specified timeout + /// + public Saga ExpectNoTimeoutToBeSetIn(Func check = null) + { + expectedInvocations.Add(new ExpectedNotDeferMessageInvocation { Check = check }); + return this; + } + /// /// Verifies that the saga is setting the specified timeout /// @@ -350,6 +359,15 @@ public Saga ExpectTimeoutToBeSetAt(Func c return this; } + /// + /// Verifies that the saga is not setting the specified timeout + /// + public Saga ExpectNoTimeoutToBeSetAt(Func check = null) + { + expectedInvocations.Add(new ExpectedNotDeferMessageInvocation { Check = check }); + return this; + } + /// /// Verifies that the saga is setting the specified timeout /// From bb449eb6092c150a941eb30924220497af3c03b8 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 17 Dec 2013 10:43:03 +1100 Subject: [PATCH 021/146] split pipeline creation from pipeline execution --- .../Unicast/Contexts/using_the_unicastbus.cs | 8 +- .../MessageHeaders/HeaderBootstrapper.cs | 4 +- src/NServiceBus.Core/NServiceBus.Core.csproj | 3 +- .../Pipeline/BehaviorChain.cs | 4 +- ...{PipelineFactory.cs => PipelineBuilder.cs} | 160 ++++-------------- .../Pipeline/PipelineExecutor.cs | 147 ++++++++++++++++ .../CreatePhysicalMessageBehavior.cs | 4 +- .../Unicast/Behaviors/LoadHandlersBehavior.cs | 2 +- .../Unicast/Behaviors/MultiMessageBehavior.cs | 4 +- .../Unicast/Config/ConfigUnicastBus.cs | 3 +- .../ExecuteLogicalMessagesBehavior.cs | 4 +- .../Unicast/Messages/LogicalMessageFactory.cs | 4 +- src/NServiceBus.Core/Unicast/UnicastBus.cs | 4 +- 13 files changed, 207 insertions(+), 144 deletions(-) rename src/NServiceBus.Core/Pipeline/{PipelineFactory.cs => PipelineBuilder.cs} (52%) create mode 100644 src/NServiceBus.Core/Pipeline/PipelineExecutor.cs diff --git a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs index a29531a4646..e7da9ebe70f 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs @@ -54,7 +54,7 @@ public class using_a_configured_unicastBus protected MessageHandlerRegistry handlerRegistry; - PipelineFactory pipelineFactory; + PipelineExecutor pipelineFactory; [SetUp] public void SetUp() @@ -101,7 +101,8 @@ public void SetUp() SubscriptionStorage = subscriptionStorage }; - pipelineFactory = new PipelineFactory(FuncBuilder ); + var pipelineBuilder = new PipelineBuilder(FuncBuilder); + pipelineFactory = new PipelineExecutor(FuncBuilder , pipelineBuilder); FuncBuilder.Register(() => MessageSerializer); FuncBuilder.Register(() => messageSender); @@ -133,7 +134,8 @@ public void SetUp() }); FuncBuilder.Register(() => new CreatePhysicalMessageBehavior()); - FuncBuilder.Register(() => pipelineFactory); + FuncBuilder.Register(() => pipelineBuilder); + FuncBuilder.Register(() => pipelineFactory); var messagePublisher = new StorageDrivenPublisher { diff --git a/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs b/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs index d61df13e2fb..ffd1cb1518c 100644 --- a/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs +++ b/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs @@ -15,7 +15,7 @@ public void SetupHeaderActions() { ExtensionMethods.GetHeaderAction = (message, key) => { - var pipelineFactory = Builder.Build(); + var pipelineFactory = Builder.Build(); if (message == ExtensionMethods.CurrentMessageBeingHandled) { @@ -67,7 +67,7 @@ public void SetupHeaderActions() ExtensionMethods.SetHeaderAction = (message, key, value) => { - var pipelineFactory = Builder.Build(); + var pipelineFactory = Builder.Build(); //are we in the process of sending a logical message var outgoingLogicalMessageContext = pipelineFactory.CurrentContext as SendLogicalMessageContext; diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 38fcb1baebf..75e8f4f3a34 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -149,6 +149,7 @@ + @@ -174,7 +175,7 @@ - + diff --git a/src/NServiceBus.Core/Pipeline/BehaviorChain.cs b/src/NServiceBus.Core/Pipeline/BehaviorChain.cs index e5c3e323a12..dd3c1542791 100644 --- a/src/NServiceBus.Core/Pipeline/BehaviorChain.cs +++ b/src/NServiceBus.Core/Pipeline/BehaviorChain.cs @@ -5,9 +5,9 @@ class BehaviorChain where T : BehaviorContext { - public BehaviorChain(BehaviorList behaviorList) + public BehaviorChain(IEnumerable behaviorList) { - foreach (var behaviorType in behaviorList.InnerList) + foreach (var behaviorType in behaviorList) { itemDescriptors.Enqueue(behaviorType); } diff --git a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs b/src/NServiceBus.Core/Pipeline/PipelineBuilder.cs similarity index 52% rename from src/NServiceBus.Core/Pipeline/PipelineFactory.cs rename to src/NServiceBus.Core/Pipeline/PipelineBuilder.cs index 7767ddef542..2e39da2d26e 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineFactory.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineBuilder.cs @@ -11,39 +11,51 @@ using NServiceBus.MessageMutator; using ObjectBuilder; using Sagas; - using Unicast; using Unicast.Behaviors; using Unicast.Messages; using UnitOfWork; [Obsolete("This is a prototype API. May change in minor version releases.")] [EditorBrowsable(EditorBrowsableState.Never)] - public class PipelineFactory : IDisposable + public class PipelineBuilder { - IBuilder rootBuilder; - BehaviorContextStacker contextStacker = new BehaviorContextStacker(); List pipelineOverrides; - - public PipelineFactory(IBuilder builder) + public List sendPhysicalMessageBehaviorList { get; private set; } + public List receivePhysicalMessageBehaviorList { get; private set; } + public List receiveLogicalMessageBehaviorList { get; private set; } + public List handlerInvocationBehaviorList { get; private set; } + public List sendLogicalMessagesBehaviorList { get; private set; } + public List sendLogicalMessageBehaviorList { get; private set; } + + public PipelineBuilder(IBuilder builder) { - rootBuilder = builder; pipelineOverrides = builder.BuildAll().ToList(); + CreateSendPhysicalMessageList(); + CreateReceivePhysicalMessageList(); + CreateReceiveLogicalMessageList(); + CreateHandlerInvocationList(); + CreateSendLogicalMessagesList(); + CreateSendLogicalMessageList(); } - public void PreparePhysicalMessagePipelineContext(TransportMessage message, bool messageHandlingDisabled) + void CreateSendPhysicalMessageList() { - contextStacker.Push(new ReceivePhysicalMessageContext(CurrentContext, message, messageHandlingDisabled)); - } + var behaviorList = new BehaviorList(); - public void InvokeReceivePhysicalMessagePipeline() - { - var context = contextStacker.Current as ReceivePhysicalMessageContext; + behaviorList.Add(); + behaviorList.Add(); + behaviorList.Add(); - if (context == null) + foreach (var pipelineOverride in pipelineOverrides) { - throw new InvalidOperationException("Can't invoke the receive pipeline when the current context is: " + contextStacker.Current.GetType().Name); + pipelineOverride.Override(behaviorList); } + sendPhysicalMessageBehaviorList = behaviorList.InnerList; + } + + void CreateReceivePhysicalMessageList() + { var behaviorList = new BehaviorList(); behaviorList.Add(); @@ -63,19 +75,10 @@ public void InvokeReceivePhysicalMessagePipeline() { pipelineOverride.Override(behaviorList); } - - var pipeline = new BehaviorChain(behaviorList); - - - pipeline.Invoke(context); + receivePhysicalMessageBehaviorList = behaviorList.InnerList; } - public void CompletePhysicalMessagePipelineContext() - { - contextStacker.Pop(); - } - - public void InvokeLogicalMessagePipeline(LogicalMessage message) + void CreateReceiveLogicalMessageList() { var behaviorList = new BehaviorList(); behaviorList.Add(); @@ -87,17 +90,10 @@ public void InvokeLogicalMessagePipeline(LogicalMessage message) { pipelineOverride.Override(behaviorList); } - - var pipeline = new BehaviorChain(behaviorList); - - - var context = new ReceiveLogicalMessageContext(CurrentContext, message); - - - Execute(pipeline, context); + receiveLogicalMessageBehaviorList = behaviorList.InnerList; } - public HandlerInvocationContext InvokeHandlerPipeline(MessageHandler handler) + void CreateHandlerInvocationList() { var behaviorList = new BehaviorList(); @@ -109,18 +105,10 @@ public HandlerInvocationContext InvokeHandlerPipeline(MessageHandler handler) { pipelineOverride.Override(behaviorList); } - - - var pipeline = new BehaviorChain(behaviorList); - - var context = new HandlerInvocationContext(CurrentContext, handler); - - Execute(pipeline, context); - - return context; + handlerInvocationBehaviorList = behaviorList.InnerList; } - public SendLogicalMessagesContext InvokeSendPipeline(SendOptions sendOptions, IEnumerable messages) + void CreateSendLogicalMessagesList() { var behaviorList = new BehaviorList(); @@ -132,16 +120,10 @@ public SendLogicalMessagesContext InvokeSendPipeline(SendOptions sendOptions, IE { pipelineOverride.Override(behaviorList); } - - var pipeline = new BehaviorChain(behaviorList); - var context = new SendLogicalMessagesContext(CurrentContext, sendOptions, messages); - - Execute(pipeline, context); - - return context; + sendLogicalMessagesBehaviorList = behaviorList.InnerList; } - public SendLogicalMessageContext InvokeSendPipeline(SendOptions sendOptions, LogicalMessage message) + void CreateSendLogicalMessageList() { var behaviorList = new BehaviorList(); @@ -155,79 +137,9 @@ public SendLogicalMessageContext InvokeSendPipeline(SendOptions sendOptions, Log { pipelineOverride.Override(behaviorList); } - - var pipeline = new BehaviorChain(behaviorList); - - var context = new SendLogicalMessageContext(CurrentContext, sendOptions, message); - - Execute(pipeline,context); - - return context; + sendLogicalMessageBehaviorList = behaviorList.InnerList; } - public void InvokeSendPipeline(SendOptions sendOptions, TransportMessage physicalMessage) - { - var behaviorList = new BehaviorList(); - - behaviorList.Add(); - behaviorList.Add(); - behaviorList.Add(); - - - foreach (var pipelineOverride in pipelineOverrides) - { - pipelineOverride.Override(behaviorList); - } - - - var pipeline = new BehaviorChain(behaviorList); - - var context = new SendPhysicalMessageContext(CurrentContext, sendOptions, physicalMessage); - - Execute(pipeline, context); - } - - public BehaviorContext CurrentContext - { - get - { - var current = contextStacker.Current; - - if (current != null) - { - return current; - } - - contextStacker.Push(new RootContext(rootBuilder)); - - return contextStacker.Current; - } - } - - public void Dispose() - { - //Injected - } - - public void DisposeManaged() - { - contextStacker.Dispose(); - } - - void Execute(BehaviorChain pipelineAction, T context) where T : BehaviorContext - { - try - { - contextStacker.Push(context); - - pipelineAction.Invoke(context); - } - finally - { - - contextStacker.Pop(); - } - } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Pipeline/PipelineExecutor.cs b/src/NServiceBus.Core/Pipeline/PipelineExecutor.cs new file mode 100644 index 00000000000..74906e0ca71 --- /dev/null +++ b/src/NServiceBus.Core/Pipeline/PipelineExecutor.cs @@ -0,0 +1,147 @@ +namespace NServiceBus.Pipeline +{ + using System; + using System.Collections.Generic; + using System.ComponentModel; + using Contexts; + using ObjectBuilder; + using Unicast; + using Unicast.Behaviors; + using Unicast.Messages; + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class PipelineExecutor : IDisposable + { + IBuilder rootBuilder; + PipelineBuilder pipelineBuilder; + BehaviorContextStacker contextStacker = new BehaviorContextStacker(); + + public PipelineExecutor(IBuilder builder, PipelineBuilder pipelineBuilder) + { + rootBuilder = builder; + this.pipelineBuilder = pipelineBuilder; + } + + public void PreparePhysicalMessagePipelineContext(TransportMessage message, bool messageHandlingDisabled) + { + contextStacker.Push(new ReceivePhysicalMessageContext(CurrentContext, message, messageHandlingDisabled)); + } + + public void InvokeReceivePhysicalMessagePipeline() + { + var context = contextStacker.Current as ReceivePhysicalMessageContext; + + if (context == null) + { + throw new InvalidOperationException("Can't invoke the receive pipeline when the current context is: " + contextStacker.Current.GetType().Name); + } + + + var pipeline = new BehaviorChain(pipelineBuilder.receivePhysicalMessageBehaviorList); + + + pipeline.Invoke(context); + } + + public void CompletePhysicalMessagePipelineContext() + { + contextStacker.Pop(); + } + + public void InvokeLogicalMessagePipeline(LogicalMessage message) + { + var pipeline = new BehaviorChain(pipelineBuilder.receiveLogicalMessageBehaviorList); + + + var context = new ReceiveLogicalMessageContext(CurrentContext, message); + + + Execute(pipeline, context); + } + + public HandlerInvocationContext InvokeHandlerPipeline(MessageHandler handler) + { + var pipeline = new BehaviorChain(pipelineBuilder.handlerInvocationBehaviorList); + + var context = new HandlerInvocationContext(CurrentContext, handler); + + Execute(pipeline, context); + + return context; + } + + public SendLogicalMessagesContext InvokeSendPipeline(SendOptions sendOptions, IEnumerable messages) + { + var pipeline = new BehaviorChain(pipelineBuilder.sendLogicalMessagesBehaviorList); + var context = new SendLogicalMessagesContext(CurrentContext, sendOptions, messages); + + Execute(pipeline, context); + + return context; + } + + public SendLogicalMessageContext InvokeSendPipeline(SendOptions sendOptions, LogicalMessage message) + { + var pipeline = new BehaviorChain(pipelineBuilder.sendLogicalMessageBehaviorList); + + var context = new SendLogicalMessageContext(CurrentContext, sendOptions, message); + + Execute(pipeline,context); + + return context; + } + + public void InvokeSendPipeline(SendOptions sendOptions, TransportMessage physicalMessage) + { + var pipeline = new BehaviorChain(pipelineBuilder.sendPhysicalMessageBehaviorList); + + var context = new SendPhysicalMessageContext(CurrentContext, sendOptions, physicalMessage); + + Execute(pipeline, context); + } + + public BehaviorContext CurrentContext + { + get + { + var current = contextStacker.Current; + + if (current != null) + { + return current; + } + + contextStacker.Push(new RootContext(rootBuilder)); + + return contextStacker.Current; + } + } + + public void Dispose() + { + //Injected + } + + public void DisposeManaged() + { + contextStacker.Dispose(); + } + + void Execute(BehaviorChain pipelineAction, T context) where T : BehaviorContext + { + try + { + contextStacker.Push(context); + + pipelineAction.Invoke(context); + } + finally + { + + contextStacker.Pop(); + } + } + + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs index c06e6d7c436..79a5b1e4bef 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/CreatePhysicalMessageBehavior.cs @@ -16,7 +16,7 @@ public class CreatePhysicalMessageBehavior : IBehavior public IMessageMapper MessageMapper { get; set; } - public PipelineFactory PipelineFactory { get; set; } + public PipelineExecutor PipelineFactory { get; set; } public void Invoke(ReceiveLogicalMessageContext context, Action next) { diff --git a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs index 14648db2080..dc28754231d 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs @@ -7,13 +7,13 @@ [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "5.0")] public class MultiMessageBehavior : IBehavior { - public PipelineFactory PipelineFactory { get; set; } + public PipelineExecutor PipelineExecutor { get; set; } public void Invoke(SendLogicalMessagesContext context, Action next) { foreach (var logicalMessage in context.LogicalMessages) { - PipelineFactory.InvokeSendPipeline(context.SendOptions,logicalMessage); + PipelineExecutor.InvokeSendPipeline(context.SendOptions,logicalMessage); } next(); } diff --git a/src/NServiceBus.Core/Unicast/Config/ConfigUnicastBus.cs b/src/NServiceBus.Core/Unicast/Config/ConfigUnicastBus.cs index 12ef4560b9d..cb2f3c90eab 100644 --- a/src/NServiceBus.Core/Unicast/Config/ConfigUnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/Config/ConfigUnicastBus.cs @@ -31,7 +31,8 @@ public void Configure(Configure config) ConfigureSubscriptionAuthorization(); RegisterMessageModules(); - Configurer.ConfigureComponent(DependencyLifecycle.SingleInstance); + Configurer.ConfigureComponent(DependencyLifecycle.SingleInstance); + Configurer.ConfigureComponent(DependencyLifecycle.SingleInstance); ConfigureBehaviors(); } diff --git a/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs b/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs index 06a1f63eee7..bd8c003ef52 100644 --- a/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Messages/ExecuteLogicalMessagesBehavior.cs @@ -14,7 +14,7 @@ [EditorBrowsable(EditorBrowsableState.Never)] public class ExecuteLogicalMessagesBehavior : IBehavior { - public PipelineFactory PipelineFactory { get; set; } + public PipelineExecutor PipelineExecutor { get; set; } public void Invoke(ReceivePhysicalMessageContext context, Action next) { @@ -27,7 +27,7 @@ public void Invoke(ReceivePhysicalMessageContext context, Action next) var logicalMessages = context.LogicalMessages; foreach (var message in logicalMessages) { - PipelineFactory.InvokeLogicalMessagePipeline(message); + PipelineExecutor.InvokeLogicalMessagePipeline(message); } diff --git a/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs b/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs index d32a89897e4..01f62e1b3b1 100644 --- a/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs +++ b/src/NServiceBus.Core/Unicast/Messages/LogicalMessageFactory.cs @@ -16,7 +16,7 @@ public class LogicalMessageFactory public IMessageMapper MessageMapper { get; set; } - public PipelineFactory PipelineFactory { get; set; } + public PipelineExecutor PipelineExecutor { get; set; } public List Create(T message) { @@ -63,7 +63,7 @@ Dictionary GetMessageHeaders(object message) { Dictionary> outgoingHeaders; - if (!PipelineFactory.CurrentContext.TryGet("NServiceBus.OutgoingHeaders", out outgoingHeaders)) + if (!PipelineExecutor.CurrentContext.TryGet("NServiceBus.OutgoingHeaders", out outgoingHeaders)) { return new Dictionary(); } diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index bf584b6acc5..b375047d3ec 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -1138,11 +1138,11 @@ TransportMessage MessageBeingProcessed //we need to not inject since at least Autofac doesn't seem to inject internal properties - PipelineFactory PipelineFactory + PipelineExecutor PipelineFactory { get { - return Builder.Build(); + return Builder.Build(); } } From de179afbe198217efe4b9b1a9aad3accf78f6e0f Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 17 Dec 2013 12:06:51 +1100 Subject: [PATCH 022/146] root context should also be public --- src/NServiceBus.Core/Pipeline/Contexts/RootContext.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Pipeline/Contexts/RootContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/RootContext.cs index 270418879c9..d8267b9ca67 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/RootContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/RootContext.cs @@ -1,8 +1,13 @@ namespace NServiceBus.Pipeline.Contexts { + using System; + using System.ComponentModel; using ObjectBuilder; - class RootContext : BehaviorContext + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class RootContext : BehaviorContext { public RootContext(IBuilder builder) : base(null) { From 791768306dfb6a721598f8a6b66f9064a91c282e Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 17 Dec 2013 12:09:24 +1100 Subject: [PATCH 023/146] split pipeline override --- src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + .../Pipeline/IPipelineOverride.cs | 18 ++++++++++++++++++ .../Pipeline/PipelineOverride.cs | 13 ------------- 3 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 src/NServiceBus.Core/Pipeline/IPipelineOverride.cs diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 3624151529e..7b0522acb62 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -149,6 +149,7 @@ + diff --git a/src/NServiceBus.Core/Pipeline/IPipelineOverride.cs b/src/NServiceBus.Core/Pipeline/IPipelineOverride.cs new file mode 100644 index 00000000000..b62feb8309f --- /dev/null +++ b/src/NServiceBus.Core/Pipeline/IPipelineOverride.cs @@ -0,0 +1,18 @@ +namespace NServiceBus.Pipeline +{ + using System; + using System.ComponentModel; + using Contexts; + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public interface IPipelineOverride + { + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + void Override(BehaviorList behaviorList); + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Pipeline/PipelineOverride.cs b/src/NServiceBus.Core/Pipeline/PipelineOverride.cs index 5f0609c5c67..874f2ffa765 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineOverride.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineOverride.cs @@ -28,17 +28,4 @@ public virtual void Override(BehaviorList behaviorLi { } } - - - [Obsolete("This is a prototype API. May change in minor version releases.")] - [EditorBrowsable(EditorBrowsableState.Never)] - public interface IPipelineOverride - { - void Override(BehaviorList behaviorList); - void Override(BehaviorList behaviorList); - void Override(BehaviorList behaviorList); - void Override(BehaviorList behaviorList); - void Override(BehaviorList behaviorList); - void Override(BehaviorList behaviorList); - } } \ No newline at end of file From 2aa68a80b9e771d176500f897b6db2ab726592a4 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 17 Dec 2013 12:45:41 +1100 Subject: [PATCH 024/146] no need for pipelineoverrides to be single instance --- src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs b/src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs index 31e55d9a75b..6cadcd8c2a4 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineOverrideConfigurer.cs @@ -4,7 +4,7 @@ class PipelineOverrideConfigurer : INeedInitialization { public void Init() { - Configure.Instance.ForAllTypes(s => Configure.Instance.Configurer.ConfigureComponent(s, DependencyLifecycle.SingleInstance)); + Configure.Instance.ForAllTypes(s => Configure.Instance.Configurer.ConfigureComponent(s, DependencyLifecycle.InstancePerCall)); } } } \ No newline at end of file From 9ed9b1078580f688ac8c106a1976ca22e1e14052 Mon Sep 17 00:00:00 2001 From: indualagarsamy Date: Tue, 17 Dec 2013 12:59:02 -0800 Subject: [PATCH 025/146] Changed the logger format to debug instead of info as this is relevant for debugging only, as we log appropriate warnings. --- .../Unicast/Messages/MessageMetadataRegistry.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Unicast/Messages/MessageMetadataRegistry.cs b/src/NServiceBus.Core/Unicast/Messages/MessageMetadataRegistry.cs index 12c907ed992..1cba42cca85 100644 --- a/src/NServiceBus.Core/Unicast/Messages/MessageMetadataRegistry.cs +++ b/src/NServiceBus.Core/Unicast/Messages/MessageMetadataRegistry.cs @@ -43,7 +43,7 @@ public IEnumerable GetMessageTypes(TransportMessage message) if (messageType == null) { - Logger.InfoFormat("Message type: '{0}' could not be determined by a 'Type.GetType', scanning known messages for a match.MessageId: {1}", messageTypeString, message.Id); + Logger.DebugFormat("Message type: '{0}' could not be determined by a 'Type.GetType', scanning known messages for a match.MessageId: {1}", messageTypeString, message.Id); var messageMetadata = messages.Values.FirstOrDefault(m => m.MessageType.FullName == messageTypeString); if (messageMetadata == null) From cb8faba209d7416d640ad5d418262cb3469cfadd Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 18 Dec 2013 13:51:30 +1100 Subject: [PATCH 026/146] add some logging to the behavors --- src/NServiceBus.Core/Pipeline/BehaviorChain.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Pipeline/BehaviorChain.cs b/src/NServiceBus.Core/Pipeline/BehaviorChain.cs index dd3c1542791..57055ae7924 100644 --- a/src/NServiceBus.Core/Pipeline/BehaviorChain.cs +++ b/src/NServiceBus.Core/Pipeline/BehaviorChain.cs @@ -2,9 +2,15 @@ { using System; using System.Collections.Generic; + using Logging; class BehaviorChain where T : BehaviorContext { + // ReSharper disable once StaticFieldInGenericType + // The number of T's is small and they willa all log to the same point due to the typeof(BehaviorChain<>) + static ILog Log = LogManager.GetLogger(typeof(BehaviorChain<>)); + Queue itemDescriptors = new Queue(); + public BehaviorChain(IEnumerable behaviorList) { foreach (var behaviorType in behaviorList) @@ -26,12 +32,12 @@ void InvokeNext(T context) } var behaviorType = itemDescriptors.Dequeue(); + Log.Debug(behaviorType.Name); var instance = (IBehavior)context.Builder.Build(behaviorType); instance.Invoke(context, () => InvokeNext(context)); } - Queue itemDescriptors = new Queue(); } } \ No newline at end of file From 68e1243dd1e5dbfa9996472feb4ba11ddf8b71f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Tue, 17 Dec 2013 09:29:59 +0100 Subject: [PATCH 027/146] Fixes misleading log statement --- src/NServiceBus.Core/Unicast/Transport/TransportReceiver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Unicast/Transport/TransportReceiver.cs b/src/NServiceBus.Core/Unicast/Transport/TransportReceiver.cs index eba672c84d2..a554437049e 100644 --- a/src/NServiceBus.Core/Unicast/Transport/TransportReceiver.cs +++ b/src/NServiceBus.Core/Unicast/Transport/TransportReceiver.cs @@ -368,7 +368,7 @@ void ProcessMessage(TransportMessage message) exceptionFromMessageHandling.GetBaseException() as SerializationException; if (serializationException != null) { - Logger.Error("Failed to serialize message with ID: " + message.Id, serializationException); + Logger.Error("Failed to deserialize message with ID: " + message.Id, serializationException); message.RevertToOriginalBodyIfNeeded(); From 4b8dba5f6976540243e29971f617d2ba42285b83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 18 Dec 2013 10:35:00 +0100 Subject: [PATCH 028/146] Adding a demo on how to use behaviors to get control over what gets audited --- .../When_using_a_custom_audit_behavior.cs | 129 ++++++++++++++++++ .../NServiceBus.AcceptanceTests.csproj | 1 + 2 files changed, 130 insertions(+) create mode 100644 src/NServiceBus.AcceptanceTests/Audit/When_using_a_custom_audit_behavior.cs diff --git a/src/NServiceBus.AcceptanceTests/Audit/When_using_a_custom_audit_behavior.cs b/src/NServiceBus.AcceptanceTests/Audit/When_using_a_custom_audit_behavior.cs new file mode 100644 index 00000000000..30dd7fec793 --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/Audit/When_using_a_custom_audit_behavior.cs @@ -0,0 +1,129 @@ + +namespace NServiceBus.AcceptanceTests.Audit +{ + using System; + using EndpointTemplates; + using AcceptanceTesting; + using NServiceBus.Audit; + using NUnit.Framework; + using Pipeline; + using Pipeline.Contexts; + + public class When_using_a_custom_audit_behavior : NServiceBusAcceptanceTest + { + [Test] + public void Excluded_types_should_not_be_audited() + { + var context = new Context(); + Scenario.Define(context) + .WithEndpoint(b => b.Given(bus => bus.SendLocal(new MessageToBeAudited()))) + .WithEndpoint() + .Done(c => c.IsMessageHandlingComplete) + .Run(); + + Assert.IsFalse(context.MessageAudited); + } + + public class Context : ScenarioContext + { + public bool IsMessageHandlingComplete { get; set; } + public bool MessageAudited { get; set; } + } + + public class UserEndpoint : EndpointConfigurationBuilder + { + + public UserEndpoint() + { + EndpointSetup() + .AuditTo(); + + } + + + + class MessageToBeAuditedHandler : IHandleMessages + { + public Context MyContext { get; set; } + + public void Handle(MessageToBeAudited message) + { + MyContext.IsMessageHandlingComplete = true; + } + } + +#pragma warning disable 618 + class MyCustomAuditBehavior : PipelineOverride, IBehavior,IBehavior + { + public MessageAuditer MessageAuditer { get; set; } + + public void Invoke(ReceivePhysicalMessageContext context, Action next) + { + var auditResult = new AuditFilterResult(); + context.Set(auditResult); + next(); + + //note: andy rule operating on the raw TransportMessage can be applied here if needed. + // Access to the message is through: context.PhysicalMessage + if (auditResult.DoNotAuditMessage) + { + return; + } + MessageAuditer.ForwardMessageToAuditQueue(context.PhysicalMessage); + } + + public void Invoke(ReceiveLogicalMessageContext context, Action next) + { + if (context.LogicalMessage.MessageType == typeof(MessageToBeAudited)) + { + context.Get().DoNotAuditMessage = true; + } + } + + class AuditFilterResult + { + public bool DoNotAuditMessage { get; set; } + } + + public override void Override(BehaviorList behaviorList) + { + behaviorList.Replace(); + } + + public override void Override(BehaviorList behaviorList) + { + behaviorList.Add(); + } + } + +#pragma warning restore 618 + } + + + + public class AuditSpy : EndpointConfigurationBuilder + { + + public AuditSpy() + { + EndpointSetup(); + } + + class AuditMessageHandler : IHandleMessages + { + public Context MyContext { get; set; } + + public void Handle(MessageToBeAudited message) + { + MyContext.MessageAudited = true; + } + } + } + + [Serializable] + public class MessageToBeAudited : IMessage + { + } + } + +} diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 3042123508e..d80fed254f5 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -99,6 +99,7 @@
+ From bc4f415f61199cf40c9f7797d4d7ecb9b98df00e Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 19 Dec 2013 10:01:46 +1100 Subject: [PATCH 029/146] add some behavior list tests --- ...us_message_mutator_to_incoming_messages.cs | 2 +- ...abus_message_mutator_to_null_properties.cs | 2 +- ...us_message_mutator_to_outgoing_messages.cs | 2 +- .../NServiceBus.Core.Tests.csproj | 1 + .../Pipeline/BehaviorListTests.cs | 142 ++++++++++++++++++ src/NServiceBus.Core/Pipeline/BehaviorList.cs | 18 +-- 6 files changed, 155 insertions(+), 12 deletions(-) create mode 100644 src/NServiceBus.Core.Tests/Pipeline/BehaviorListTests.cs diff --git a/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_incoming_messages.cs b/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_incoming_messages.cs index 9a9ecad91f7..94c60ea0bba 100644 --- a/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_incoming_messages.cs +++ b/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_incoming_messages.cs @@ -4,8 +4,8 @@ namespace NServiceBus.Core.Tests.DataBus using System.Collections.Generic; using System.IO; using System.Runtime.Serialization.Formatters.Binary; + using NServiceBus.Pipeline.Contexts; using NUnit.Framework; - using Pipeline.Contexts; using Rhino.Mocks; using Unicast.Messages; diff --git a/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_null_properties.cs b/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_null_properties.cs index fba928c2d0c..f9400877e53 100644 --- a/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_null_properties.cs +++ b/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_null_properties.cs @@ -4,8 +4,8 @@ namespace NServiceBus.Core.Tests.DataBus using System.Collections.Generic; using System.IO; using System.Runtime.Serialization.Formatters.Binary; + using NServiceBus.Pipeline.Contexts; using NUnit.Framework; - using Pipeline.Contexts; using Unicast; using Unicast.Messages; diff --git a/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_outgoing_messages.cs b/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_outgoing_messages.cs index 231e8691755..41c5be8c230 100644 --- a/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_outgoing_messages.cs +++ b/src/NServiceBus.Core.Tests/DataBus/When_applying_the_databus_message_mutator_to_outgoing_messages.cs @@ -3,8 +3,8 @@ namespace NServiceBus.Core.Tests.DataBus using System; using System.Collections.Generic; using System.IO; + using NServiceBus.Pipeline.Contexts; using NUnit.Framework; - using Pipeline.Contexts; using Rhino.Mocks; using Unicast; using Unicast.Messages; diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index ad9f68bb71d..6cbd5d9d7d4 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -212,6 +212,7 @@ + diff --git a/src/NServiceBus.Core.Tests/Pipeline/BehaviorListTests.cs b/src/NServiceBus.Core.Tests/Pipeline/BehaviorListTests.cs new file mode 100644 index 00000000000..3d9235baee1 --- /dev/null +++ b/src/NServiceBus.Core.Tests/Pipeline/BehaviorListTests.cs @@ -0,0 +1,142 @@ +namespace NServiceBus.Core.Tests.Pipeline +{ + using System; + using System.Collections.Generic; + using System.Linq; + using NServiceBus.Pipeline; + using NUnit.Framework; + + [TestFixture] + public class BehaviorListTests + { + [Test] + public void Replace() + { + var behaviorList = new BehaviorList + { + InnerList = new List + { + typeof(Behavior1) + } + }; + behaviorList.Replace(); + Assert.AreEqual(1, behaviorList.InnerList.Count); + Assert.AreEqual(typeof(Behavior2), behaviorList.InnerList.First()); + } + + [Test] + public void Add() + { + var behaviorList = new BehaviorList + { + InnerList = new List + { + typeof(Behavior1) + } + }; + behaviorList.Add(); + Assert.AreEqual(2, behaviorList.InnerList.Count); + Assert.AreEqual(typeof(Behavior2), behaviorList.InnerList[1]); + } + + [Test] + public void InsertAfter() + { + var behaviorList = new BehaviorList + { + InnerList = new List + { + typeof(Behavior1), + typeof(Behavior2), + } + }; + behaviorList.InsertAfter(); + Assert.AreEqual(3, behaviorList.InnerList.Count); + Assert.AreEqual(typeof(Behavior3), behaviorList.InnerList[1]); + } + + [Test] + public void When_InsertAfter_and_target_does_not_exists_should_throw() + { + var behaviorList = new BehaviorList(); + var exception = Assert.Throws(behaviorList.InsertAfter); + Assert.AreEqual("Could not InsertAfter since 'Behavior1' does not exist.", exception.Message); + } + + [Test] + public void Remove() + { + var behaviorList = new BehaviorList + { + InnerList = new List + { + typeof(Behavior1), + typeof(Behavior2), + } + }; + Assert.IsTrue(behaviorList.Remove()); + Assert.AreEqual(1, behaviorList.InnerList.Count); + Assert.AreEqual(typeof(Behavior1), behaviorList.InnerList[0]); + } + + [Test] + public void When_replacing_and_target_does_not_exists_should_throw() + { + var behaviorList = new BehaviorList(); + var exception = Assert.Throws(behaviorList.Replace); + Assert.AreEqual("Could not replace since 'Behavior1' does not exist.", exception.Message); + } + + [Test] + public void InsertBefore() + { + var behaviorList = new BehaviorList + { + InnerList = new List + { + typeof(Behavior1), + typeof(Behavior2), + } + }; + behaviorList.InsertBefore(); + Assert.AreEqual(3, behaviorList.InnerList.Count); + Assert.AreEqual(typeof(Behavior3), behaviorList.InnerList[1]); + } + + [Test] + public void When_InsertBefore_and_target_does_not_exists_should_throw() + { + var behaviorList = new BehaviorList(); + var exception = Assert.Throws(behaviorList.InsertBefore); + Assert.AreEqual("Could not InsertBefore since 'Behavior1' does not exist.", exception.Message); + } + + class Behavior1 : IBehavior + { + public void Invoke(FakeContext context, Action next) + { + } + } + + class Behavior2 : IBehavior + { + public void Invoke(FakeContext context, Action next) + { + } + } + + class Behavior3 : IBehavior + { + public void Invoke(FakeContext context, Action next) + { + } + } + + class FakeContext : BehaviorContext + { + public FakeContext(BehaviorContext parentContext) : base(parentContext) + { + } + } + } +} diff --git a/src/NServiceBus.Core/Pipeline/BehaviorList.cs b/src/NServiceBus.Core/Pipeline/BehaviorList.cs index 3c377b526d6..1ed2f3409c8 100644 --- a/src/NServiceBus.Core/Pipeline/BehaviorList.cs +++ b/src/NServiceBus.Core/Pipeline/BehaviorList.cs @@ -26,7 +26,7 @@ public bool Remove() where T : IBehavior return InnerList.Remove(typeof(T)); } - public bool Replace() + public void Replace() where TExisting : IBehavior where TToReplace : IBehavior { @@ -34,12 +34,12 @@ public bool Replace() if (indexOf > -1) { InnerList[indexOf] = typeof(TToReplace); - return true; + return; } - return false; + throw new Exception(string.Format("Could not replace since '{0}' does not exist.", typeof(TExisting).Name)); } - public bool InsertAfter() + public void InsertAfter() where TExisting : IBehavior where TToAdd : IBehavior { @@ -49,13 +49,13 @@ public bool InsertAfter() if (type == typeof(TExisting)) { InnerList.Insert(index + 1, typeof(TToAdd)); - return true; + return; } } - return false; + throw new Exception(string.Format("Could not InsertAfter since '{0}' does not exist.", typeof(TExisting).Name)); } - public bool InsertBefore() + public void InsertBefore() where TExisting : IBehavior where TToAdd : IBehavior { @@ -65,10 +65,10 @@ public bool InsertBefore() if (type == typeof(TExisting)) { InnerList.Insert(index, typeof(TToAdd)); - return true; + return; } } - return false; + throw new Exception(string.Format("Could not InsertBefore since '{0}' does not exist.", typeof(TExisting).Name)); } } } \ No newline at end of file From cf221d48eb444556a0ca6cef21e3f18e598de200 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 19 Dec 2013 10:52:11 +0100 Subject: [PATCH 030/146] Changed deserialization behavior to be less strict --- .../Internal/MessageSerializationBinder.cs | 25 ++++++++++++++++--- .../Json/JsonMessageSerializerBase.cs | 1 + 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.Core/Serializers/Json/Internal/MessageSerializationBinder.cs b/src/NServiceBus.Core/Serializers/Json/Internal/MessageSerializationBinder.cs index fce77c51afc..3b5774408bb 100644 --- a/src/NServiceBus.Core/Serializers/Json/Internal/MessageSerializationBinder.cs +++ b/src/NServiceBus.Core/Serializers/Json/Internal/MessageSerializationBinder.cs @@ -1,16 +1,20 @@ namespace NServiceBus.Serializers.Json.Internal { using System; + using System.Collections.Generic; + using System.Linq; using System.Runtime.Serialization; using MessageInterfaces; public class MessageSerializationBinder : SerializationBinder { private readonly IMessageMapper _messageMapper; + private readonly IList messageTypes; - public MessageSerializationBinder(IMessageMapper messageMapper) + public MessageSerializationBinder(IMessageMapper messageMapper, IList messageTypes = null) { _messageMapper = messageMapper; + this.messageTypes = messageTypes; } public override void BindToName(Type serializedType, out string assemblyName, out string typeName) @@ -23,9 +27,22 @@ public override void BindToName(Type serializedType, out string assemblyName, ou public override Type BindToType(string assemblyName, string typeName) { - throw new NotImplementedException(); - //string resolvedTypeName = typeName + ", " + assemblyName; - //return Type.GetType(resolvedTypeName, true); + Type resolved = null; + if (messageTypes != null) // usually the requested message types are provided, so this should be fast + { + resolved = messageTypes.FirstOrDefault(t => t.Name.Contains(typeName)); + } + if (resolved == null) // if the type has been used before it should be resolvable like this + { + resolved = Type.GetType(typeName); + } + if (resolved == null) // if the type has not been used before, we need to find it brute force + { + resolved = AppDomain.CurrentDomain.GetAssemblies() + .Select(a => a.GetType(typeName)) + .FirstOrDefault(t => t != null); + } + return resolved; } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Serializers/Json/JsonMessageSerializerBase.cs b/src/NServiceBus.Core/Serializers/Json/JsonMessageSerializerBase.cs index 222a9b5fb89..ace298e0865 100644 --- a/src/NServiceBus.Core/Serializers/Json/JsonMessageSerializerBase.cs +++ b/src/NServiceBus.Core/Serializers/Json/JsonMessageSerializerBase.cs @@ -80,6 +80,7 @@ public object[] Deserialize(Stream stream, IList messageTypes = null) var jsonSerializer = JsonSerializer.Create(settings); jsonSerializer.ContractResolver = new MessageContractResolver(messageMapper); + jsonSerializer.Binder = new MessageSerializationBinder(messageMapper, messageTypes); var reader = CreateJsonReader(stream); reader.Read(); From 8b9d17b3bc9867761b29616eebc2c33f8c2d1995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Fri, 20 Dec 2013 15:34:41 +0100 Subject: [PATCH 031/146] Added a demo on how skip serialization now can be done using a pipeline override --- .../NServiceBus.AcceptanceTests.csproj | 1 + .../PipelineExtention/SkipSerialization.cs | 80 +++++++++++++++++++ ...an_event_with_the_subscriber_scaled_out.cs | 2 +- .../Sagas/When_using_containSagaData.cs | 2 +- 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index d80fed254f5..0a736158bfb 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -127,6 +127,7 @@ + diff --git a/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs b/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs new file mode 100644 index 00000000000..01ef49678cd --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs @@ -0,0 +1,80 @@ +namespace NServiceBus.AcceptanceTests.Sagas +{ + using System; + using EndpointTemplates; + using AcceptanceTesting; + using NUnit.Framework; + using Pipeline; + using Pipeline.Contexts; + using Unicast.Messages; + + // Repro for #SB-191 + public class SkipSerialization : NServiceBusAcceptanceTest + { + [Test] + public void Should_handle_timeouts_properly() + { + Scenario.Define() + .WithEndpoint( + b => b.Given(bus => bus.SendLocal(new SomeMessage()))) + .Done(c => c.GotTheRawMessage) + .Run(); + } + + public class Context : ScenarioContext + { + public bool GotTheRawMessage { get; set; } + } + + public class NonSerializingEndpoint : EndpointConfigurationBuilder + { + public NonSerializingEndpoint() + { + EndpointSetup(); + } + + +#pragma warning disable 618 + //first we override the default deserialization behavior + class MyOverride : PipelineOverride + { + public override void Override(BehaviorList behaviorList) + { + behaviorList.Replace(); + } + } + + //and then we handle the physical message our self + class MyRawMessageHandler:IBehavior + { + public Context Context { get; set; } + + public void Invoke(ReceivePhysicalMessageContext context, Action next) + { + var transportMessage = context.PhysicalMessage; + + Assert.True(transportMessage.Headers[Headers.EnclosedMessageTypes].Contains(typeof(SomeMessage).Name)); + + Context.GotTheRawMessage = true; + } + } +#pragma warning restore 618 + + class ThisHandlerWontGetInvoked:IHandleMessages + { + public void Handle(SomeMessage message) + { + Assert.Fail(); + } + } + } + + [Serializable] + public class SomeMessage : ICommand + { + + } + } + + +} diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs index 78c55651540..5578469b696 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs @@ -49,7 +49,7 @@ public void Should_only_publish_one_event() context.NumberOfSubcriptionsReceived++; })) .Done(c => c.SubcribersOfTheEvent != null) - .Repeat(r => r.For(Transports.SqlServer) + .Repeat(r => r.For(Transports.Default) .For(SubscriptionStorages.Msmq)) .Should(c => { diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_using_containSagaData.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_using_containSagaData.cs index 50e794d1001..13c836fbcf3 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_using_containSagaData.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_using_containSagaData.cs @@ -17,7 +17,7 @@ public void Should_handle_timeouts_properly() .WithEndpoint( b => b.Given(bus => bus.SendLocal(new StartSaga {DataId = Guid.NewGuid()}))) .Done(c => c.DidAllSagaInstancesReceiveTimeouts) - .Repeat(r => r.For(Transports.SqlServer)) + .Repeat(r => r.For(Transports.Default)) .Should(c => { Assert.True(c.DidAllSagaInstancesReceiveTimeouts); From 95abdc427ce9b160ef0e3d849cffc367ae9f4066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Fri, 20 Dec 2013 15:40:00 +0100 Subject: [PATCH 032/146] Better description --- .../PipelineExtention/SkipSerialization.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs b/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs index 01ef49678cd..48382a51f26 100644 --- a/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs +++ b/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs @@ -8,7 +8,8 @@ using Pipeline.Contexts; using Unicast.Messages; - // Repro for #SB-191 + //This is a demo on how the pipeline overrides can be used to create endpoints that doesn't deserialize incoming messages and there by + // allows the user to handle the raw transport message public class SkipSerialization : NServiceBusAcceptanceTest { [Test] From e5c0cf08ee780a5fe6df29dc42f2e0e33862ddf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Fri, 20 Dec 2013 16:27:54 +0100 Subject: [PATCH 033/146] Muting test not suitable for msmq --- .../When_publishing_an_event_with_the_subscriber_scaled_out.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs index 5578469b696..f9aa47c381b 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs @@ -49,7 +49,7 @@ public void Should_only_publish_one_event() context.NumberOfSubcriptionsReceived++; })) .Done(c => c.SubcribersOfTheEvent != null) - .Repeat(r => r.For(Transports.Default) + .Repeat(r => r.For(Transports.Msmq) .For(SubscriptionStorages.Msmq)) .Should(c => { From 88d7839424ced88949445ff777757be05578de27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Fri, 20 Dec 2013 22:02:39 +0100 Subject: [PATCH 034/146] Fixed a few typos --- .../NServiceBus.AcceptanceTests.csproj | 4 +- .../FilteringWhatGetsAudited.cs} | 63 +++++++++++-------- .../SkipDeserialization.cs} | 18 +++--- 3 files changed, 47 insertions(+), 38 deletions(-) rename src/NServiceBus.AcceptanceTests/{Audit/When_using_a_custom_audit_behavior.cs => PipelineExtension/FilteringWhatGetsAudited.cs} (64%) rename src/NServiceBus.AcceptanceTests/{PipelineExtention/SkipSerialization.cs => PipelineExtension/SkipDeserialization.cs} (87%) diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 0a736158bfb..43ca2c17aff 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -99,7 +99,7 @@ - + @@ -127,7 +127,7 @@ - + diff --git a/src/NServiceBus.AcceptanceTests/Audit/When_using_a_custom_audit_behavior.cs b/src/NServiceBus.AcceptanceTests/PipelineExtension/FilteringWhatGetsAudited.cs similarity index 64% rename from src/NServiceBus.AcceptanceTests/Audit/When_using_a_custom_audit_behavior.cs rename to src/NServiceBus.AcceptanceTests/PipelineExtension/FilteringWhatGetsAudited.cs index 30dd7fec793..6e92ab1a45b 100644 --- a/src/NServiceBus.AcceptanceTests/Audit/When_using_a_custom_audit_behavior.cs +++ b/src/NServiceBus.AcceptanceTests/PipelineExtension/FilteringWhatGetsAudited.cs @@ -9,30 +9,28 @@ namespace NServiceBus.AcceptanceTests.Audit using Pipeline; using Pipeline.Contexts; - public class When_using_a_custom_audit_behavior : NServiceBusAcceptanceTest + /// + /// This is a demo on how pipeline overrides can be used to control which messages that gets audited by NServiceBus + /// + public class FilteringWhatGetsAudited : NServiceBusAcceptanceTest { [Test] - public void Excluded_types_should_not_be_audited() + public void RunDemo() { var context = new Context(); Scenario.Define(context) - .WithEndpoint(b => b.Given(bus => bus.SendLocal(new MessageToBeAudited()))) - .WithEndpoint() - .Done(c => c.IsMessageHandlingComplete) - .Run(); + .WithEndpoint(b => b.Given(bus => bus.SendLocal(new MessageToBeAudited()))) + .WithEndpoint() + .Done(c => c.IsMessageHandlingComplete) + .Run(); Assert.IsFalse(context.MessageAudited); } - public class Context : ScenarioContext - { - public bool IsMessageHandlingComplete { get; set; } - public bool MessageAudited { get; set; } - } public class UserEndpoint : EndpointConfigurationBuilder { - + public UserEndpoint() { EndpointSetup() @@ -40,8 +38,6 @@ public UserEndpoint() } - - class MessageToBeAuditedHandler : IHandleMessages { public Context MyContext { get; set; } @@ -53,7 +49,8 @@ public void Handle(MessageToBeAudited message) } #pragma warning disable 618 - class MyCustomAuditBehavior : PipelineOverride, IBehavior,IBehavior + class MyFilteringAuditBehavior : IBehavior, + IBehavior { public MessageAuditer MessageAuditer { get; set; } @@ -63,8 +60,8 @@ public void Invoke(ReceivePhysicalMessageContext context, Action next) context.Set(auditResult); next(); - //note: andy rule operating on the raw TransportMessage can be applied here if needed. - // Access to the message is through: context.PhysicalMessage + //note: and rule operating on the raw TransportMessage can be applied here if needed. + // Access to the message is through: context.PhysicalMessage. Eg: context.PhysicalMessage.Headers.ContainsKey("NServiceBus.ControlMessage") if (auditResult.DoNotAuditMessage) { return; @@ -74,6 +71,7 @@ public void Invoke(ReceivePhysicalMessageContext context, Action next) public void Invoke(ReceiveLogicalMessageContext context, Action next) { + //filter out messages of type MessageToBeAudited if (context.LogicalMessage.MessageType == typeof(MessageToBeAudited)) { context.Get().DoNotAuditMessage = true; @@ -85,22 +83,27 @@ class AuditFilterResult public bool DoNotAuditMessage { get; set; } } - public override void Override(BehaviorList behaviorList) - { - behaviorList.Replace(); - } - public override void Override(BehaviorList behaviorList) + //here we inject our behavior + class AuditFilteringOverride : PipelineOverride { - behaviorList.Add(); + public override void Override(BehaviorList behaviorList) + { + //we replace the default audit behavior with out own + behaviorList.Replace(); + } + + public override void Override(BehaviorList behaviorList) + { + //and also hook into to logical receive pipeline to make filtering on message types easier + behaviorList.Add(); + } } - } #pragma warning restore 618 + } } - - public class AuditSpy : EndpointConfigurationBuilder { @@ -120,10 +123,16 @@ public void Handle(MessageToBeAudited message) } } + public class Context : ScenarioContext + { + public bool IsMessageHandlingComplete { get; set; } + public bool MessageAudited { get; set; } + } + + [Serializable] public class MessageToBeAudited : IMessage { } } - } diff --git a/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs b/src/NServiceBus.AcceptanceTests/PipelineExtension/SkipDeserialization.cs similarity index 87% rename from src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs rename to src/NServiceBus.AcceptanceTests/PipelineExtension/SkipDeserialization.cs index 48382a51f26..6d58dd50805 100644 --- a/src/NServiceBus.AcceptanceTests/PipelineExtention/SkipSerialization.cs +++ b/src/NServiceBus.AcceptanceTests/PipelineExtension/SkipDeserialization.cs @@ -9,11 +9,11 @@ using Unicast.Messages; //This is a demo on how the pipeline overrides can be used to create endpoints that doesn't deserialize incoming messages and there by - // allows the user to handle the raw transport message - public class SkipSerialization : NServiceBusAcceptanceTest + // allows the user to handle the raw transport message. This replaces the old feature on the UnicastBus where SkipDeserialization could be set to tru + public class SkipDeserialization : NServiceBusAcceptanceTest { [Test] - public void Should_handle_timeouts_properly() + public void RunDemo() { Scenario.Define() .WithEndpoint( @@ -22,11 +22,6 @@ public void Should_handle_timeouts_properly() .Run(); } - public class Context : ScenarioContext - { - public bool GotTheRawMessage { get; set; } - } - public class NonSerializingEndpoint : EndpointConfigurationBuilder { public NonSerializingEndpoint() @@ -36,7 +31,7 @@ public NonSerializingEndpoint() #pragma warning disable 618 - //first we override the default deserialization behavior + //first we override the default "extraction" behavior class MyOverride : PipelineOverride { public override void Override(BehaviorList behaviorList) @@ -70,6 +65,11 @@ public void Handle(SomeMessage message) } } + public class Context : ScenarioContext + { + public bool GotTheRawMessage { get; set; } + } + [Serializable] public class SomeMessage : ICommand { From 1a2f37db6e5ffd8f3e264bb78ff3b6f5492678fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Sat, 21 Dec 2013 20:24:42 +0100 Subject: [PATCH 035/146] Adjusting namespace --- .../PipelineExtension/FilteringWhatGetsAudited.cs | 4 ++-- .../PipelineExtension/SkipDeserialization.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/PipelineExtension/FilteringWhatGetsAudited.cs b/src/NServiceBus.AcceptanceTests/PipelineExtension/FilteringWhatGetsAudited.cs index 6e92ab1a45b..bc69c067e6f 100644 --- a/src/NServiceBus.AcceptanceTests/PipelineExtension/FilteringWhatGetsAudited.cs +++ b/src/NServiceBus.AcceptanceTests/PipelineExtension/FilteringWhatGetsAudited.cs @@ -1,9 +1,9 @@  -namespace NServiceBus.AcceptanceTests.Audit +namespace NServiceBus.AcceptanceTests.PipelineExtension { using System; - using EndpointTemplates; using AcceptanceTesting; + using EndpointTemplates; using NServiceBus.Audit; using NUnit.Framework; using Pipeline; diff --git a/src/NServiceBus.AcceptanceTests/PipelineExtension/SkipDeserialization.cs b/src/NServiceBus.AcceptanceTests/PipelineExtension/SkipDeserialization.cs index 6d58dd50805..cc88227d11e 100644 --- a/src/NServiceBus.AcceptanceTests/PipelineExtension/SkipDeserialization.cs +++ b/src/NServiceBus.AcceptanceTests/PipelineExtension/SkipDeserialization.cs @@ -1,8 +1,8 @@ -namespace NServiceBus.AcceptanceTests.Sagas +namespace NServiceBus.AcceptanceTests.PipelineExtension { using System; - using EndpointTemplates; using AcceptanceTesting; + using EndpointTemplates; using NUnit.Framework; using Pipeline; using Pipeline.Contexts; From 2cfcf08ddd305fb3bfd502f3fb1d26cb41e00599 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Fri, 27 Dec 2013 15:28:55 +0100 Subject: [PATCH 036/146] Closes #1873, Make acceptance test base class partial so that transports can add teardown logic --- src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs b/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs index 1288d83d0fa..5823b0699d1 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs +++ b/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs @@ -6,8 +6,9 @@ namespace NServiceBus.AcceptanceTests /// /// Base class for all the NSB test that sets up our conventions /// - [TestFixture] - public abstract class NServiceBusAcceptanceTest + [TestFixture] +// ReSharper disable once PartialTypeWithSinglePart + public abstract partial class NServiceBusAcceptanceTest { [SetUp] public void SetUp() From ef7fb0464076b5e066268494420a9cc04d392b24 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 30 Dec 2013 16:21:30 +1100 Subject: [PATCH 037/146] AssemblyQualifiedName is already quoted no need to add more quotes --- src/NServiceBus.Core/Satellites/SatelliteLauncher.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.Core/Satellites/SatelliteLauncher.cs b/src/NServiceBus.Core/Satellites/SatelliteLauncher.cs index 43479c966cc..6be83b01fbd 100644 --- a/src/NServiceBus.Core/Satellites/SatelliteLauncher.cs +++ b/src/NServiceBus.Core/Satellites/SatelliteLauncher.cs @@ -35,7 +35,7 @@ public void Start() { var satellite = satellitesList[index]; - Logger.DebugFormat("Starting {1}/{2} '{0}' satellite", satellite.GetType().AssemblyQualifiedName, + Logger.DebugFormat("Starting {1}/{2} {0} satellite", satellite.GetType().AssemblyQualifiedName, index + 1, satellitesList.Count); var satelliteContext = new SatelliteContext @@ -60,7 +60,7 @@ public void Start() satelliteContexts[index] = satelliteContext; - Logger.InfoFormat("Started {1}/{2} '{0}' satellite", satellite.GetType().AssemblyQualifiedName, + Logger.InfoFormat("Started {1}/{2} {0} satellite", satellite.GetType().AssemblyQualifiedName, index + 1, satellitesList.Count); }); @@ -72,7 +72,7 @@ public void Stop() { Parallel.ForEach(satellites, (context, state, index) => { - Logger.DebugFormat("Stopping {1}/{2} '{0}' satellite", context.Instance.GetType().AssemblyQualifiedName, + Logger.DebugFormat("Stopping {1}/{2} {0} satellite", context.Instance.GetType().AssemblyQualifiedName, index + 1, satellites.Count); if (context.Transport != null) @@ -82,7 +82,7 @@ public void Stop() context.Instance.Stop(); - Logger.InfoFormat("Stopped {1}/{2} '{0}' satellite", context.Instance.GetType().AssemblyQualifiedName, + Logger.InfoFormat("Stopped {1}/{2} {0} satellite", context.Instance.GetType().AssemblyQualifiedName, index + 1, satellites.Count); }); } From 988bae953edaf3b632b9932c08624a68d1300ebd Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Fri, 3 Jan 2014 09:10:54 +0100 Subject: [PATCH 038/146] updated AllTransports to reflect actual definitions instead of manual removals --- .../ScenarioDescriptors/AllTransports.cs | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs b/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs index 5eaa1753423..9a0a8c3b7d1 100644 --- a/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs +++ b/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs @@ -6,6 +6,7 @@ using System.Reflection; using AcceptanceTesting.Support; using Hosting.Helpers; + using NServiceBus.Transports; public class AllTransports : ScenarioDescriptor { @@ -37,8 +38,11 @@ static IEnumerable ActiveTransports public class AllDtcTransports : AllTransports { public AllDtcTransports() - { - Remove(Transports.RabbitMQ); + { + // TODO: introduce a SupportsDtc property on the transport definition + AllTransportsFilter.Run(t => t.GetType().Name.Contains("RabbitMQ"), Remove); + AllTransportsFilter.Run(t => t.GetType().Name.Contains("AzureServiceBus"), Remove); + AllTransportsFilter.Run(t => t.GetType().Name.Contains("AzureStorageQueue"), Remove); } } @@ -46,7 +50,7 @@ public class AllBrokerTransports : AllTransports { public AllBrokerTransports() { - Remove(Transports.Msmq); + AllTransportsFilter.Run(t => !t.HasNativePubSubSupport, Remove); } } @@ -54,8 +58,7 @@ public class AllTransportsWithCentralizedPubSubSupport : AllTransports { public AllTransportsWithCentralizedPubSubSupport() { - Remove(Transports.Msmq); - Remove(Transports.SqlServer); + AllTransportsFilter.Run(t => !t.HasSupportForCentralizedPubSub, Remove); } } @@ -63,8 +66,7 @@ public class AllTransportsWithMessageDrivenPubSub : AllTransports { public AllTransportsWithMessageDrivenPubSub() { - Remove(Transports.ActiveMQ); - Remove(Transports.RabbitMQ); + AllTransportsFilter.Run(t => t.HasNativePubSubSupport, Remove); } } @@ -105,4 +107,24 @@ static IEnumerable AvailableAssemblies static List assemblies; } + + public static class AllTransportsFilter + { + public static void Run(Func condition, Func remove) + { + foreach (var rundescriptor in Transports.AllAvailable) + { + var transportAssemblyQualifiedName = rundescriptor.Settings["Transport"]; + var type = Type.GetType(transportAssemblyQualifiedName); + if (type != null) + { + var transport = Activator.CreateInstance(type) as TransportDefinition; + if (condition(transport)) + { + remove(rundescriptor); + } + } + } + } + } } \ No newline at end of file From fbbc7866173b7eca1909d4dceebfff3c7a2e97a1 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Fri, 3 Jan 2014 15:55:46 +0100 Subject: [PATCH 039/146] Ignoring test because it depends on msmq and should move, see #1878 --- .../Distributor/When_using_master.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs b/src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs index a8b0bec71eb..a2543de331f 100644 --- a/src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs +++ b/src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs @@ -9,7 +9,7 @@ public class When_using_master : NServiceBusAcceptanceTest { - [Test] + [Test, Ignore("https://github.com/Particular/NServiceBus/issues/1878")] public void Master_and_workers_should_receive_messages() { var context = new Context(); From d1ab2728427d09e08b89c5fb037eda2dca0d0573 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Fri, 3 Jan 2014 15:58:45 +0100 Subject: [PATCH 040/146] Fixes #1879 --- .../Gateway/When_sending_a_message_via_the_gateway.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Gateway/When_sending_a_message_via_the_gateway.cs b/src/NServiceBus.AcceptanceTests/Gateway/When_sending_a_message_via_the_gateway.cs index 4e29a79b246..0d5302f69a7 100644 --- a/src/NServiceBus.AcceptanceTests/Gateway/When_sending_a_message_via_the_gateway.cs +++ b/src/NServiceBus.AcceptanceTests/Gateway/When_sending_a_message_via_the_gateway.cs @@ -81,7 +81,11 @@ public class Headquarters : EndpointConfigurationBuilder { public Headquarters() { - EndpointSetup(c => c.RunGateway().UseInMemoryGatewayPersister()) + EndpointSetup(c => + { + c.RunGateway().UseInMemoryGatewayPersister(); + Configure.Serialization.Xml(); + }) .IncludeType() .AllowExceptions() .WithConfig(c => From c9f8fc060e5a11258ba7f44397c5379fe01339d8 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Fri, 3 Jan 2014 16:00:30 +0100 Subject: [PATCH 041/146] Fixes #1880 --- .../PubSub/When_publishing_an_event.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs index 16810b500a6..e6d1a956689 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs @@ -34,7 +34,7 @@ public void Issue_1851() })) .Done(c => c.Subscriber3GotTheEvent) - .Repeat(r => r.For(Transports.Msmq)) + .Repeat(r => r.For(Transports.Default)) .Should(c => Assert.True(c.Subscriber3GotTheEvent)) .Run(); } From 4403930e5e258a628af60dc919b188f8b1406bb4 Mon Sep 17 00:00:00 2001 From: indualagarsamy Date: Sat, 4 Jan 2014 07:47:00 -0800 Subject: [PATCH 042/146] Fixed the typos in the license messages displayed to the user. --- src/NServiceBus.Core/Licensing/LicenseExpiredForm.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/NServiceBus.Core/Licensing/LicenseExpiredForm.cs b/src/NServiceBus.Core/Licensing/LicenseExpiredForm.cs index 5ba945b9a5c..6fa567d147e 100644 --- a/src/NServiceBus.Core/Licensing/LicenseExpiredForm.cs +++ b/src/NServiceBus.Core/Licensing/LicenseExpiredForm.cs @@ -41,18 +41,18 @@ void browseButton_Click(object sender, EventArgs e) string downgradeReason; if (LicenseDowngrader.ShouldLicenseDowngrade(license, out downgradeReason)) { - var message = string.Format("The license you provided has expired.\r\nReason:{0}\r\nClick 'Purchase' to obtain a new license. Or try a different file.\r\nThis massage has been appended to your log.", downgradeReason); + var message = string.Format("The license you provided has expired.\r\nReason:{0}\r\nClick 'Purchase' to obtain a new license. Or try a different file.\r\nThis message has been appended to your log.", downgradeReason); Logger.Warn(message); MessageBox.Show(this, message, "License expired", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } - MessageBox.Show(this, "The new license has bee been verified. It will now be stored in the Registry for future use.", "License applied", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show(this, "The new license has been verified. It will now be stored in the Registry for future use.", "License applied", MessageBoxButtons.OK, MessageBoxIcon.Information); ResultingLicenseText = licenseText; Close(); } catch (Exception exception) { - var message = string.Format("An error occurred parsing the license.\r\nMessage: {0}\r\nThe exception details have appended to your log.", exception.Message); + var message = string.Format("An error occurred when parsing the license.\r\nMessage: {0}\r\nThe exception details have been appended to your log.", exception.Message); Logger.Warn("Error parsing license", exception); MessageBox.Show(this, message, "Error parsing license", MessageBoxButtons.OK, MessageBoxIcon.Error); } From 1e185251eb836bde67819cf2296d9434f8c46a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Sun, 5 Jan 2014 18:33:49 +0100 Subject: [PATCH 043/146] Including file version when logging found features --- src/NServiceBus.Core/Features/Feature.cs | 15 +++++++++++++++ .../Features/Support/FeatureInitializer.cs | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/NServiceBus.Core/Features/Feature.cs b/src/NServiceBus.Core/Features/Feature.cs index 39eddc05bd6..c64ac0faf29 100644 --- a/src/NServiceBus.Core/Features/Feature.cs +++ b/src/NServiceBus.Core/Features/Feature.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using Settings; + using Utils; /// /// Used to control the various features supported by the framework. @@ -154,6 +155,20 @@ public static IEnumerable ByCategory(FeatureCategory category) return result; } + public string Version + { + get + { + return FileVersionRetriever.GetFileVersion(GetType()); + } + } + + public override string ToString() + { + + return string.Format("{0} [{1}]",Name, Version); + } + protected bool Equals(Feature other) { return string.Equals(name, other.name); diff --git a/src/NServiceBus.Core/Features/Support/FeatureInitializer.cs b/src/NServiceBus.Core/Features/Support/FeatureInitializer.cs index 3ed58e5209d..acdfa822a91 100644 --- a/src/NServiceBus.Core/Features/Support/FeatureInitializer.cs +++ b/src/NServiceBus.Core/Features/Support/FeatureInitializer.cs @@ -47,20 +47,20 @@ static void InitializeFeatures() if (feature.Category != FeatureCategory.None) { - statusText.AppendLine(string.Format("{0} - Controlled by category {1}", feature.Name, + statusText.AppendLine(string.Format("{0} - Controlled by category {1}", feature, feature.Category.Name)); return; } if (!Feature.IsEnabled(t)) { - statusText.AppendLine(string.Format("{0} - Disabled", feature.Name)); + statusText.AppendLine(string.Format("{0} - Disabled", feature)); return; } feature.Initialize(); - statusText.AppendLine(string.Format("{0} - Enabled", feature.Name)); + statusText.AppendLine(string.Format("{0} - Enabled", feature)); }); Logger.InfoFormat("Features: \n{0}", statusText); From 9b15be24bbbb218236124370017a7bac9115195b Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 7 Jan 2014 08:20:12 +0100 Subject: [PATCH 044/146] When_publishing_an_event.Should_be_delivered_to_allsubscribers applies to every transport, not only msmq --- .../PubSub/When_publishing_an_event.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs index e6d1a956689..7095906bf24 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs @@ -69,7 +69,7 @@ public void Should_be_delivered_to_allsubscribers() context.Subscriber2Subscribed = true; })) .Done(c => c.Subscriber1GotTheEvent && c.Subscriber2GotTheEvent) - .Repeat(r => r.For(Transports.Msmq)) + .Repeat(r => r.For(Transports.Default)) .Should(c => { Assert.True(c.Subscriber1GotTheEvent); From 40e3634cdf2352bc7fbb0cbd8df90363e11a6ec4 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 7 Jan 2014 08:30:30 +0100 Subject: [PATCH 045/146] Introduced HasSupportForDistributedTransactions --- .../ScenarioDescriptors/AllTransports.cs | 6 +++--- src/NServiceBus.Core/Transports/TransportDefinition.cs | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs b/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs index 9a0a8c3b7d1..afe4d395b32 100644 --- a/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs +++ b/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs @@ -39,10 +39,10 @@ public class AllDtcTransports : AllTransports { public AllDtcTransports() { - // TODO: introduce a SupportsDtc property on the transport definition + AllTransportsFilter.Run(t => !t.HasSupportForDistributedTransactions, Remove); + + // todo set HasSupportForDistributedTransactions to false on Rabbit MQ AllTransportsFilter.Run(t => t.GetType().Name.Contains("RabbitMQ"), Remove); - AllTransportsFilter.Run(t => t.GetType().Name.Contains("AzureServiceBus"), Remove); - AllTransportsFilter.Run(t => t.GetType().Name.Contains("AzureStorageQueue"), Remove); } } diff --git a/src/NServiceBus.Core/Transports/TransportDefinition.cs b/src/NServiceBus.Core/Transports/TransportDefinition.cs index 4cccaec79d4..bef3a6ccb9f 100644 --- a/src/NServiceBus.Core/Transports/TransportDefinition.cs +++ b/src/NServiceBus.Core/Transports/TransportDefinition.cs @@ -14,5 +14,10 @@ public abstract class TransportDefinition /// Indicates that the transport has a central store for subscriptions /// public bool HasSupportForCentralizedPubSub { get; protected set; } + + /// + /// Indicates that the transport has support for distributed transactions + /// + public bool HasSupportForDistributedTransactions { get; protected set; } } } \ No newline at end of file From fee07dceca490a3ecf31cc64fe25d087705b69ed Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 7 Jan 2014 08:34:07 +0100 Subject: [PATCH 046/146] The case represented by test When_sending_a_message_from_a_non_transactional_endpoint_with_a_ambient_transaction_enabled doesn't make any sense for non dtc transports --- ...transactional_endpoint_with_a_ambient_transaction_enabled.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Transactions/When_sending_a_message_from_a_non_transactional_endpoint_with_a_ambient_transaction_enabled.cs b/src/NServiceBus.AcceptanceTests/Transactions/When_sending_a_message_from_a_non_transactional_endpoint_with_a_ambient_transaction_enabled.cs index 7068ed85d6b..1b7ad97cfd8 100644 --- a/src/NServiceBus.AcceptanceTests/Transactions/When_sending_a_message_from_a_non_transactional_endpoint_with_a_ambient_transaction_enabled.cs +++ b/src/NServiceBus.AcceptanceTests/Transactions/When_sending_a_message_from_a_non_transactional_endpoint_with_a_ambient_transaction_enabled.cs @@ -16,7 +16,7 @@ public void Should_not_roll_the_message_back_to_the_queue_in_case_of_failure() Scenario.Define() .WithEndpoint(b => b.Given(bus => bus.SendLocal(new MyMessage()))) .Done(c => c.TestComplete) - .Repeat(r => r.For(Transports.Default)) //broken for active mq + .Repeat(r => r.For()) .Should(c => { Assert.False(c.MessageEnlistedInTheAmbientTxReceived, "The enlisted bus.Send should not commit"); From 6c35e8d483d55a8d05f3042258913c406957154b Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 7 Jan 2014 08:41:21 +0100 Subject: [PATCH 047/146] lack of HasSupportForDistributedTransactions is to be assumed with support --- .../ScenarioDescriptors/AllTransports.cs | 3 ++- src/NServiceBus.Core/Transports/TransportDefinition.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs b/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs index afe4d395b32..9ea9b012b05 100644 --- a/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs +++ b/src/NServiceBus.AcceptanceTests/ScenarioDescriptors/AllTransports.cs @@ -39,7 +39,8 @@ public class AllDtcTransports : AllTransports { public AllDtcTransports() { - AllTransportsFilter.Run(t => !t.HasSupportForDistributedTransactions, Remove); + AllTransportsFilter.Run(t => t.HasSupportForDistributedTransactions.HasValue + && !t.HasSupportForDistributedTransactions.Value, Remove); // todo set HasSupportForDistributedTransactions to false on Rabbit MQ AllTransportsFilter.Run(t => t.GetType().Name.Contains("RabbitMQ"), Remove); diff --git a/src/NServiceBus.Core/Transports/TransportDefinition.cs b/src/NServiceBus.Core/Transports/TransportDefinition.cs index bef3a6ccb9f..16a8a9b718e 100644 --- a/src/NServiceBus.Core/Transports/TransportDefinition.cs +++ b/src/NServiceBus.Core/Transports/TransportDefinition.cs @@ -18,6 +18,6 @@ public abstract class TransportDefinition /// /// Indicates that the transport has support for distributed transactions /// - public bool HasSupportForDistributedTransactions { get; protected set; } + public bool? HasSupportForDistributedTransactions { get; protected set; } } } \ No newline at end of file From 77c1b837b2b08898268fddda0ef235e4aa7f8961 Mon Sep 17 00:00:00 2001 From: John Simons Date: Tue, 7 Jan 2014 19:52:13 +1100 Subject: [PATCH 048/146] Fixes #4321 --- packaging/nuget/tools/init.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/nuget/tools/init.ps1 b/packaging/nuget/tools/init.ps1 index 6d68f066915..51c53f6bae0 100644 --- a/packaging/nuget/tools/init.ps1 +++ b/packaging/nuget/tools/init.ps1 @@ -18,7 +18,7 @@ Write-Host "" $nserviceBusKeyPath = "HKCU:SOFTWARE\NServiceBus" $machinePreparedKey = "MachinePrepared" $machinePrepared = $false -$versionParts = $package.Version.Split('.') +$versionParts = $package.Version.ToString().Split('.') $nservicebusVersion = $versionParts[0] if($versionParts.Length -gt 1) { From 5f07b62a9d7a2b3c5c61cc35c172b6495f38775f Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 7 Jan 2014 20:11:16 +1100 Subject: [PATCH 049/146] it is 2014 now --- packaging/nuget/nservicebus.acceptancetesting.nuspec | 2 +- packaging/nuget/nservicebus.acceptancetests.nuspec | 2 +- packaging/nuget/nservicebus.autofac.nuspec | 2 +- packaging/nuget/nservicebus.castlewindsor.nuspec | 2 +- packaging/nuget/nservicebus.distributor.msmq.nuspec | 2 +- packaging/nuget/nservicebus.host.nuspec | 2 +- packaging/nuget/nservicebus.host32.nuspec | 2 +- packaging/nuget/nservicebus.interfaces.nuspec | 2 +- packaging/nuget/nservicebus.ninject.nuspec | 2 +- packaging/nuget/nservicebus.nuspec | 2 +- packaging/nuget/nservicebus.spring.nuspec | 2 +- packaging/nuget/nservicebus.structuremap.nuspec | 2 +- packaging/nuget/nservicebus.testing.nuspec | 2 +- packaging/nuget/nservicebus.tools.nuspec | 2 +- packaging/nuget/nservicebus.unity.nuspec | 2 +- src/NServiceBus.AcceptanceTesting/Properties/AssemblyInfo.cs | 2 +- src/NServiceBus.Core/Properties/AssemblyInfo.cs | 2 +- src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs | 2 +- src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs | 2 +- .../Properties/AssemblyInfo.cs | 2 +- .../Properties/AssemblyInfo.cs | 2 +- src/NServiceBus.Testing/Properties/AssemblyInfo.cs | 2 +- src/NServiceBus/Properties/AssemblyInfo.cs | 2 +- src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs | 2 +- src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs | 2 +- src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs | 2 +- src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs | 2 +- src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs | 2 +- src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs | 2 +- src/ReturnToSourceQueue/Properties/AssemblyInfo.cs | 2 +- src/licenseinstaller/Properties/AssemblyInfo.cs | 2 +- 31 files changed, 31 insertions(+), 31 deletions(-) diff --git a/packaging/nuget/nservicebus.acceptancetesting.nuspec b/packaging/nuget/nservicebus.acceptancetesting.nuspec index 636b08986e3..083e1a355ed 100644 --- a/packaging/nuget/nservicebus.acceptancetesting.nuspec +++ b/packaging/nuget/nservicebus.acceptancetesting.nuspec @@ -12,7 +12,7 @@ true Acceptance tests for nservicebus core functionality - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.acceptancetests.nuspec b/packaging/nuget/nservicebus.acceptancetests.nuspec index 4bdfbf4f48e..27b145c74ef 100644 --- a/packaging/nuget/nservicebus.acceptancetests.nuspec +++ b/packaging/nuget/nservicebus.acceptancetests.nuspec @@ -12,7 +12,7 @@ true Acceptance tests for nservicebus core functionality - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.autofac.nuspec b/packaging/nuget/nservicebus.autofac.nuspec index 0539356eedf..80cd1490a2d 100644 --- a/packaging/nuget/nservicebus.autofac.nuspec +++ b/packaging/nuget/nservicebus.autofac.nuspec @@ -12,7 +12,7 @@ true The Autofac Container for the nservicebus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.castlewindsor.nuspec b/packaging/nuget/nservicebus.castlewindsor.nuspec index 74c61578f9f..2b6d4314c88 100644 --- a/packaging/nuget/nservicebus.castlewindsor.nuspec +++ b/packaging/nuget/nservicebus.castlewindsor.nuspec @@ -12,7 +12,7 @@ true The CastleWindsor Container for the nservicebus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.distributor.msmq.nuspec b/packaging/nuget/nservicebus.distributor.msmq.nuspec index 8d37d1ca1a4..fe379bf0940 100644 --- a/packaging/nuget/nservicebus.distributor.msmq.nuspec +++ b/packaging/nuget/nservicebus.distributor.msmq.nuspec @@ -12,7 +12,7 @@ true Distributor for MSMQ for the nservicebus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.host.nuspec b/packaging/nuget/nservicebus.host.nuspec index de3e535e033..008c4ef4046 100644 --- a/packaging/nuget/nservicebus.host.nuspec +++ b/packaging/nuget/nservicebus.host.nuspec @@ -12,7 +12,7 @@ true The hosting template for the nservicebus, The most popular open-source service bus for .net - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.host32.nuspec b/packaging/nuget/nservicebus.host32.nuspec index 82720bdf71a..fd9ddab8299 100644 --- a/packaging/nuget/nservicebus.host32.nuspec +++ b/packaging/nuget/nservicebus.host32.nuspec @@ -12,7 +12,7 @@ true The hosting template for the nservicebus, The most popular open-source service bus for .net - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.interfaces.nuspec b/packaging/nuget/nservicebus.interfaces.nuspec index c3ad194c006..002ae67aa34 100644 --- a/packaging/nuget/nservicebus.interfaces.nuspec +++ b/packaging/nuget/nservicebus.interfaces.nuspec @@ -12,7 +12,7 @@ true The Interfaces for NServiceBus Implementation - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.ninject.nuspec b/packaging/nuget/nservicebus.ninject.nuspec index 0c29c5dc09e..f6edc9355c5 100644 --- a/packaging/nuget/nservicebus.ninject.nuspec +++ b/packaging/nuget/nservicebus.ninject.nuspec @@ -12,7 +12,7 @@ true The Ninject Container for the nservicebus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.nuspec b/packaging/nuget/nservicebus.nuspec index 60fd33884e8..c4c31b1e519 100644 --- a/packaging/nuget/nservicebus.nuspec +++ b/packaging/nuget/nservicebus.nuspec @@ -12,7 +12,7 @@ true The most popular open-source service bus for .net - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.spring.nuspec b/packaging/nuget/nservicebus.spring.nuspec index c305461e59b..bc4a53b1ebd 100644 --- a/packaging/nuget/nservicebus.spring.nuspec +++ b/packaging/nuget/nservicebus.spring.nuspec @@ -12,7 +12,7 @@ true The Spring Container for the nservicebus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.structuremap.nuspec b/packaging/nuget/nservicebus.structuremap.nuspec index 099ed3b7f50..06b0f08454b 100644 --- a/packaging/nuget/nservicebus.structuremap.nuspec +++ b/packaging/nuget/nservicebus.structuremap.nuspec @@ -12,7 +12,7 @@ true The StructureMap Container for the nservicebus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.testing.nuspec b/packaging/nuget/nservicebus.testing.nuspec index 60b2f968ed3..eb81c822c9f 100644 --- a/packaging/nuget/nservicebus.testing.nuspec +++ b/packaging/nuget/nservicebus.testing.nuspec @@ -12,7 +12,7 @@ true The testing for the nservicebus, The most popular open-source service bus for .net - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.tools.nuspec b/packaging/nuget/nservicebus.tools.nuspec index 6947e49d142..517ec8169a0 100644 --- a/packaging/nuget/nservicebus.tools.nuspec +++ b/packaging/nuget/nservicebus.tools.nuspec @@ -12,7 +12,7 @@ true Return to source queue and licensing tools for uses with NServiceBus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/packaging/nuget/nservicebus.unity.nuspec b/packaging/nuget/nservicebus.unity.nuspec index cc1688af0ff..fcc019036e7 100644 --- a/packaging/nuget/nservicebus.unity.nuspec +++ b/packaging/nuget/nservicebus.unity.nuspec @@ -12,7 +12,7 @@ true The Unity Container for the nservicebus - Copyright 2010-2013 NServiceBus. All rights reserved + Copyright 2010-2014 NServiceBus. All rights reserved nservicebus servicebus msmq cqrs publish subscribe diff --git a/src/NServiceBus.AcceptanceTesting/Properties/AssemblyInfo.cs b/src/NServiceBus.AcceptanceTesting/Properties/AssemblyInfo.cs index 2e0ade7493d..26a9f8f1187 100644 --- a/src/NServiceBus.AcceptanceTesting/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.AcceptanceTesting/Properties/AssemblyInfo.cs @@ -2,4 +2,4 @@ [assembly: AssemblyTitle("NServiceBus.AcceptanceTesting")] [assembly: AssemblyProduct("NServiceBus.AcceptanceTesting")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] diff --git a/src/NServiceBus.Core/Properties/AssemblyInfo.cs b/src/NServiceBus.Core/Properties/AssemblyInfo.cs index 8cd9d2dca5e..1461d652d7a 100644 --- a/src/NServiceBus.Core/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Core/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus.Core")] [assembly: AssemblyDescription("")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus.Core")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs b/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs index f707b212840..d2206bd0739 100644 --- a/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Distributor for MSMQ")] [assembly: AssemblyDescription("Implementation of NServiceBus Distributor for MSMQ")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs b/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs index 3b0cefa9ff0..d98786c4fdd 100644 --- a/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("Generic Host Process for NServiceBus")] [assembly: AssemblyDescription("Functionality for generically hosting nServiceBus processes.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs b/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs index 4cc60b663f4..0870774ac41 100644 --- a/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus.SagaPersisters.InMemory.Tests")] [assembly: AssemblyDescription("")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs b/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs index ecbbae78181..fe519a37a21 100644 --- a/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus XSD Generator")] [assembly: AssemblyDescription("XSD file generator for interface-based message schemas.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/NServiceBus.Testing/Properties/AssemblyInfo.cs b/src/NServiceBus.Testing/Properties/AssemblyInfo.cs index c1e41295d3e..fa3b513fd6e 100644 --- a/src/NServiceBus.Testing/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Testing/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Testing")] [assembly: AssemblyDescription("Unit Testing facilities for NServiceBus Sagas.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/NServiceBus/Properties/AssemblyInfo.cs b/src/NServiceBus/Properties/AssemblyInfo.cs index a63b2c5207b..17128f5ef2b 100644 --- a/src/NServiceBus/Properties/AssemblyInfo.cs +++ b/src/NServiceBus/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Core")] [assembly: AssemblyDescription("Enterprise application framework for publish/subscribe and long-running business processes.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs index 251ee801887..44e696506b0 100644 --- a/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Container Autofac Implementation")] [assembly: AssemblyDescription("Implementation of container functionality on top of Autofac.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs b/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs index d1e56c334a3..c9c7c4b4656 100644 --- a/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Object Builder Castle Implementation")] [assembly: AssemblyDescription("Implementation of object building functionality on top of Castle Windsor.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs index 35d026a049b..2e390727ebf 100644 --- a/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Object Builder Ninject Implementation")] [assembly: AssemblyDescription("Implementation of object building functionality on top of the Ninject Framework.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs index 6d1607b9b9d..804d1a69443 100644 --- a/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs @@ -3,7 +3,7 @@ [assembly: AssemblyTitle("NServiceBus Object Builder Spring Implementation")] [assembly: AssemblyDescription("Implementation of object building functionality on top of the Spring Framework.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs b/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs index 92edd1f7896..ad3ecf8372e 100644 --- a/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Container StructureMap Implementation")] [assembly: AssemblyDescription("Implementation of container functionality on top of StructureMap.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs index afa4d744c2b..336f504755f 100644 --- a/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus Container Unity Implementation")] [assembly: AssemblyDescription("Implementation of container functionality on top of Unity.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs b/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs index 8573a3a43bf..686f7ad0f62 100644 --- a/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs +++ b/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("ReturnToSourceQueue")] [assembly: AssemblyDescription("")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] diff --git a/src/licenseinstaller/Properties/AssemblyInfo.cs b/src/licenseinstaller/Properties/AssemblyInfo.cs index 02add3aca1d..1635b057d23 100644 --- a/src/licenseinstaller/Properties/AssemblyInfo.cs +++ b/src/licenseinstaller/Properties/AssemblyInfo.cs @@ -4,7 +4,7 @@ [assembly: AssemblyTitle("NServiceBus License Installer")] [assembly: AssemblyDescription("Utility to install license file.")] -[assembly: AssemblyCopyright("Copyright 2010-2013 NServiceBus. All rights reserved")] +[assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("LicenseInstaller")] [assembly: AssemblyCompany("NServiceBus Ltd.")] [assembly: AssemblyConfiguration("release")] From ab61c6c171fe0533b93669e8a7daef1475e53288 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 7 Jan 2014 20:51:54 +1100 Subject: [PATCH 050/146] AssemblyConfiguration("release") is redundant http://stackoverflow.com/questions/13483542/should-i-set-assemblyconfigurationattribute --- src/NServiceBus.Core/Properties/AssemblyInfo.cs | 1 - src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs | 1 - src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs | 1 - .../Properties/AssemblyInfo.cs | 1 - .../Properties/AssemblyInfo.cs | 1 - src/NServiceBus.Testing/Properties/AssemblyInfo.cs | 1 - src/NServiceBus/Properties/AssemblyInfo.cs | 1 - src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs | 1 - src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs | 1 - src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs | 1 - src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs | 1 - src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs | 1 - src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs | 1 - src/ReturnToSourceQueue/Properties/AssemblyInfo.cs | 1 - src/licenseinstaller/Properties/AssemblyInfo.cs | 1 - 15 files changed, 15 deletions(-) diff --git a/src/NServiceBus.Core/Properties/AssemblyInfo.cs b/src/NServiceBus.Core/Properties/AssemblyInfo.cs index 1461d652d7a..608d7a90cbc 100644 --- a/src/NServiceBus.Core/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Core/Properties/AssemblyInfo.cs @@ -7,6 +7,5 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus.Core")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] \ No newline at end of file diff --git a/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs b/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs index d2206bd0739..4100edc8c29 100644 --- a/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Distributor.MSMQ/Properties/AssemblyInfo.cs @@ -7,6 +7,5 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] \ No newline at end of file diff --git a/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs b/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs index d98786c4fdd..ce659333656 100644 --- a/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Hosting.Windows/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs b/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs index 0870774ac41..35d1c8d8f96 100644 --- a/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.SagaPersisters.InMemory.Tests/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs b/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs index fe519a37a21..09f318cf9bb 100644 --- a/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Serializers.XML.XsdGenerator/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/NServiceBus.Testing/Properties/AssemblyInfo.cs b/src/NServiceBus.Testing/Properties/AssemblyInfo.cs index fa3b513fd6e..282479d5135 100644 --- a/src/NServiceBus.Testing/Properties/AssemblyInfo.cs +++ b/src/NServiceBus.Testing/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/NServiceBus/Properties/AssemblyInfo.cs b/src/NServiceBus/Properties/AssemblyInfo.cs index 17128f5ef2b..3b9a7782417 100644 --- a/src/NServiceBus/Properties/AssemblyInfo.cs +++ b/src/NServiceBus/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs index 44e696506b0..37778311fd2 100644 --- a/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Autofac/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs b/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs index c9c7c4b4656..d85e8ed8d1d 100644 --- a/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.CastleWindsor/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs index 2e390727ebf..ef0bd373e70 100644 --- a/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Ninject/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs index 804d1a69443..80360e8039e 100644 --- a/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Spring/Properties/AssemblyInfo.cs @@ -6,6 +6,5 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] diff --git a/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs b/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs index ad3ecf8372e..c71030ded1f 100644 --- a/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.StructureMap/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs b/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs index 336f504755f..d65e37e4b4e 100644 --- a/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs +++ b/src/ObjectBuilder.Unity/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs b/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs index 686f7ad0f62..3805ef3510b 100644 --- a/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs +++ b/src/ReturnToSourceQueue/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("NServiceBus")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] diff --git a/src/licenseinstaller/Properties/AssemblyInfo.cs b/src/licenseinstaller/Properties/AssemblyInfo.cs index 1635b057d23..a8fad9dc583 100644 --- a/src/licenseinstaller/Properties/AssemblyInfo.cs +++ b/src/licenseinstaller/Properties/AssemblyInfo.cs @@ -7,7 +7,6 @@ [assembly: AssemblyCopyright("Copyright 2010-2014 NServiceBus. All rights reserved")] [assembly: AssemblyProduct("LicenseInstaller")] [assembly: AssemblyCompany("NServiceBus Ltd.")] -[assembly: AssemblyConfiguration("release")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] From b87d88b7a15825d248dc8b89371081c0503cb19b Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 7 Jan 2014 10:49:14 +0100 Subject: [PATCH 051/146] flr acceptence tests should not count messages from previous test runs --- .../When_doing_flr_with_default_settings.cs | 20 ++++++++++++------- .../Retries/When_messages_fails_flr.cs | 9 +++++++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs b/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs index 88da51aa771..e9c33857123 100644 --- a/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs +++ b/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs @@ -13,8 +13,8 @@ public class When_doing_flr_with_default_settings : NServiceBusAcceptanceTest [Test] public void Should_do_5_retries_by_default_with_dtc_on() { - Scenario.Define() - .WithEndpoint(b => b.Given(bus => bus.SendLocal(new MessageToBeRetried()))) + Scenario.Define(() => new Context { Id = Guid.NewGuid() }) + .WithEndpoint(b => b.Given((bus, context) => bus.SendLocal(new MessageToBeRetried{ Id = context.Id }))) .Done(c => c.HandedOverToSlr || c.NumberOfTimesInvoked > 5) .Repeat(r => r.For()) .Should(c => Assert.AreEqual(5, c.NumberOfTimesInvoked, "The FLR should by default retry 5 times")) @@ -25,11 +25,11 @@ public void Should_do_5_retries_by_default_with_dtc_on() [Test] public void Should_do_5_retries_by_default_with_native_transactions() { - Scenario.Define() + Scenario.Define(() => new Context { Id = Guid.NewGuid() }) .WithEndpoint(b => { b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DisableDistributedTransactions())); - b.Given(bus => bus.SendLocal(new MessageToBeRetried())); + b.Given((bus, context) => bus.SendLocal(new MessageToBeRetried { Id = context.Id })); }) .Done(c => c.HandedOverToSlr || c.NumberOfTimesInvoked > 5) .Repeat(r => r.For(Transports.Default)) @@ -41,14 +41,14 @@ public void Should_do_5_retries_by_default_with_native_transactions() [Test] public void Should_not_do_any_retries_if_transactions_are_off() { - Scenario.Define() + Scenario.Define(() => new Context { Id = Guid.NewGuid() }) .WithEndpoint(b => { b.CustomConfig(c => Configure.Transactions.Disable()); b.Given((bus, context) => { - bus.SendLocal(new MessageToBeRetried()); - bus.SendLocal(new MessageToBeRetried { SecondMessage = true }); + bus.SendLocal(new MessageToBeRetried { Id = context.Id }); + bus.SendLocal(new MessageToBeRetried { Id = context.Id, SecondMessage = true }); }); }) .Done(c => c.SecondMessageReceived || c.NumberOfTimesInvoked > 1) @@ -60,6 +60,8 @@ public void Should_not_do_any_retries_if_transactions_are_off() public class Context : ScenarioContext { + public Guid Id { get; set; } + public int NumberOfTimesInvoked { get; set; } public bool HandedOverToSlr { get; set; } @@ -103,6 +105,8 @@ class MessageToBeRetriedHandler : IHandleMessages public void Handle(MessageToBeRetried message) { + if (message.Id != Context.Id) return; // messages from previous test runs must be ignored + if (message.SecondMessage) { Context.SecondMessageReceived = true; @@ -119,6 +123,8 @@ public void Handle(MessageToBeRetried message) [Serializable] public class MessageToBeRetried : IMessage { + public Guid Id { get; set; } + public bool SecondMessage { get; set; } } } diff --git a/src/NServiceBus.AcceptanceTests/Retries/When_messages_fails_flr.cs b/src/NServiceBus.AcceptanceTests/Retries/When_messages_fails_flr.cs index 9d47f6e5b92..587df1e1ff0 100644 --- a/src/NServiceBus.AcceptanceTests/Retries/When_messages_fails_flr.cs +++ b/src/NServiceBus.AcceptanceTests/Retries/When_messages_fails_flr.cs @@ -14,8 +14,8 @@ public class When_messages_fails_flr : NServiceBusAcceptanceTest [Test] public void Should_be_moved_to_slr() { - Scenario.Define() - .WithEndpoint(b => b.Given(bus => bus.SendLocal(new MessageToBeRetried()))) + Scenario.Define(() => new Context { Id = Guid.NewGuid() }) + .WithEndpoint(b => b.Given((bus, context) => bus.SendLocal(new MessageToBeRetried { Id = context.Id }))) .Done(c => c.NumberOfTimesInvoked >= 2) .Repeat(r => r.For(Transports.Default)) .Should(context => @@ -28,6 +28,8 @@ public void Should_be_moved_to_slr() public class Context : ScenarioContext { + public Guid Id { get; set; } + public int NumberOfTimesInvoked { get; set; } public DateTime TimeOfFirstAttempt { get; set; } @@ -62,6 +64,8 @@ class MessageToBeRetriedHandler:IHandleMessages public void Handle(MessageToBeRetried message) { + if (message.Id != Context.Id) return; // ignore messages from previous test runs + Context.NumberOfTimesInvoked++; if (Context.NumberOfTimesInvoked == 1) @@ -82,6 +86,7 @@ public void Handle(MessageToBeRetried message) [Serializable] public class MessageToBeRetried : IMessage { + public Guid Id { get; set; } } } From 21d1f2349b8fd31ba05c9fa9709afdb793dee92f Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 7 Jan 2014 21:04:06 +1100 Subject: [PATCH 052/146] add comment for generic catch fixes #1847 --- .../SecondLevelRetries/DefaultRetryPolicy.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs b/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs index 98a91d33509..f0a9ef48244 100644 --- a/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs +++ b/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs @@ -13,7 +13,9 @@ public static class DefaultRetryPolicy static TimeSpan Validate(TransportMessage message) { if (HasReachedMaxTime(message)) + { return TimeSpan.MinValue; + } var numberOfRetries = TransportMessageHelpers.GetNumberOfRetries(message); @@ -42,6 +44,9 @@ static bool HasReachedMaxTime(TransportMessage message) } } // ReSharper disable once EmptyGeneralCatchClause + // this code won't usually throw but in case a user has decided to hack a message/headers and for some bizarre reason + // they changed the date and that parse fails, we want to make sure that doesn't prevent the message from being + // forwarded to the error queue. catch (Exception) { } From ba6e21989cc097e2709b9db976dde6270a488a4e Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 7 Jan 2014 21:24:59 +1100 Subject: [PATCH 053/146] make DefaultRetryPolicy obsolete [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "4.0", Replacement = "Headers.Gsavi so we can make it internal in v5 fixes #1886 --- src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs b/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs index f0a9ef48244..bdb55b4a360 100644 --- a/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs +++ b/src/NServiceBus.Core/SecondLevelRetries/DefaultRetryPolicy.cs @@ -3,6 +3,8 @@ namespace NServiceBus.SecondLevelRetries using System; using Helpers; + + [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "5.0", Message = "Should not be public")] public static class DefaultRetryPolicy { public static int NumberOfRetries = 3; From 17cb2e7b297117f23125b8a8a31cdbc98514ac5e Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 7 Jan 2014 22:04:11 +1100 Subject: [PATCH 054/146] redundant code in license installer --- src/licenseinstaller/Program.cs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/licenseinstaller/Program.cs b/src/licenseinstaller/Program.cs index a3cc9f3748c..ae0998b3e8d 100644 --- a/src/licenseinstaller/Program.cs +++ b/src/licenseinstaller/Program.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; using System.IO; - using System.Reflection; using Microsoft.Win32; using NDesk.Options; @@ -67,9 +66,7 @@ static bool TryToWriteToRegistry(string selectedLicenseText, RegistryView view) if (registryKey == null) { Console.Out.WriteLine("License file not installed."); - { - return false; - } + return false; } registryKey.SetValue("License", selectedLicenseText, RegistryValueKind.String); } @@ -152,11 +149,5 @@ static string ReadAllTextWithoutLocking(string path) } } - static Version GetNServiceBusVersion() - { - var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; - - return new Version(assemblyVersion.Major, assemblyVersion.Minor); - } } } From f59155fb0ada550b69076298a1705dbb737b05fc Mon Sep 17 00:00:00 2001 From: John Simons Date: Tue, 7 Jan 2014 21:23:50 +1100 Subject: [PATCH 055/146] Ensuring we can stop and start the bus again, fixes #1885 --- src/NServiceBus.Core/Unicast/UnicastBus.cs | 41 ++++++++++------------ 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index e1cf9e0115e..93913e56ce0 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -57,11 +57,6 @@ public virtual ITransport Transport set { transport = value; - - transport.StartedMessageProcessing += TransportStartedMessageProcessing; - transport.TransportMessageReceived += TransportMessageReceived; - transport.FinishedMessageProcessing += TransportFinishedMessageProcessing; - transport.FailedMessageProcessing += TransportFailedMessageProcessing; } get { return transport; } } @@ -756,14 +751,16 @@ public IBus Start(Action startupAction) LicenseManager.PromptUserForLicenseIfTrialHasExpired(); if (started) + { return this; + } lock (startLocker) { if (started) + { return this; - - starting = true; + } Address.PreventChanges(); @@ -774,9 +771,12 @@ public IBus Start(Action startupAction) AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); - if (!DoNotStartTransport) { + transport.StartedMessageProcessing += TransportStartedMessageProcessing; + transport.TransportMessageReceived += TransportMessageReceived; + transport.FinishedMessageProcessing += TransportFinishedMessageProcessing; + transport.FailedMessageProcessing += TransportFailedMessageProcessing; transport.Start(InputAddress); } @@ -816,7 +816,9 @@ public IBus Start(Action startupAction) private void ExecuteIWantToRunAtStartupStopMethods() { if (thingsToRunAtStartup == null) + { return; + } //Ensure Start has been called on all thingsToRunAtStartup Log.DebugFormat("Ensuring IWantToRunAtStartup.Start has been called."); @@ -955,11 +957,14 @@ void InnerShutdown() Log.Info("Initiating shutdown."); - transport.Stop(); - transport.StartedMessageProcessing -= TransportStartedMessageProcessing; - transport.TransportMessageReceived -= TransportMessageReceived; - transport.FinishedMessageProcessing -= TransportFinishedMessageProcessing; - transport.FailedMessageProcessing -= TransportFailedMessageProcessing; + if (!DoNotStartTransport) + { + transport.Stop(); + transport.StartedMessageProcessing -= TransportStartedMessageProcessing; + transport.TransportMessageReceived -= TransportMessageReceived; + transport.FinishedMessageProcessing -= TransportFinishedMessageProcessing; + transport.FailedMessageProcessing -= TransportFailedMessageProcessing; + } ExecuteIWantToRunAtStartupStopMethods(); @@ -1096,15 +1101,6 @@ List
GetAddressForMessageType(Type messageType) return destination; } - /// - /// Throws an exception if the bus hasn't begun the startup process. - /// - protected void AssertBusIsStarted() - { - if (starting == false) - throw new InvalidOperationException("The bus is not started yet, call Bus.Start() before attempting to use the bus."); - } - Address inputAddress; @@ -1137,7 +1133,6 @@ TransportMessage MessageBeingProcessed } volatile bool started; - volatile bool starting; object startLocker = new object(); static ILog Log = LogManager.GetLogger(typeof(UnicastBus)); From 954995d090eeaeb1f6acd8853ed75bb482dbd76f Mon Sep 17 00:00:00 2001 From: John Simons Date: Tue, 7 Jan 2014 21:57:39 +1100 Subject: [PATCH 056/146] Ensuring installers are run for self hosting in debug mode. --- .../Config}/WindowsInstallerRunner.cs | 21 ++++++++++++------- src/NServiceBus.Core/Install.cs | 6 +++++- src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + .../NServiceBus.Hosting.Windows.csproj | 5 ++--- .../Handlers/IntegrationProfileHandler.cs | 1 + .../Profiles/Handlers/LiteProfileHandler.cs | 1 + .../WindowsHost.cs | 2 +- 7 files changed, 24 insertions(+), 13 deletions(-) rename src/{NServiceBus.Hosting.Windows/Profiles/Handlers => NServiceBus.Core/Config}/WindowsInstallerRunner.cs (73%) diff --git a/src/NServiceBus.Hosting.Windows/Profiles/Handlers/WindowsInstallerRunner.cs b/src/NServiceBus.Core/Config/WindowsInstallerRunner.cs similarity index 73% rename from src/NServiceBus.Hosting.Windows/Profiles/Handlers/WindowsInstallerRunner.cs rename to src/NServiceBus.Core/Config/WindowsInstallerRunner.cs index 8dab2ed6fc8..53583905519 100644 --- a/src/NServiceBus.Hosting.Windows/Profiles/Handlers/WindowsInstallerRunner.cs +++ b/src/NServiceBus.Core/Config/WindowsInstallerRunner.cs @@ -1,33 +1,38 @@ -namespace NServiceBus.Hosting.Windows.Profiles.Handlers +namespace NServiceBus.Config { using System.Diagnostics; - using Config; /// /// Responsible for running the installers if necessary /// public class WindowsInstallerRunner : IWantToRunWhenConfigurationIsComplete { + static WindowsInstallerRunner() + { + RunInstallers = Debugger.IsAttached; + } + /// /// True if installers should be invoked /// public static bool RunInstallers { get; set; } - internal static string RunAs { get; set; } + public static string RunAs { get; set; } /// /// Runs the installers if necessary. /// public void Run() { - if (Debugger.IsAttached) - RunInstallers = true; - - if (!RunInstallers) + if (!RunInstallers) + { return; - + } + if (RunInstallers) + { Installer.RunOtherInstallers = true; + } Configure.Instance.ForInstallationOn(RunAs).Install(); } diff --git a/src/NServiceBus.Core/Install.cs b/src/NServiceBus.Core/Install.cs index 0684b96f5ed..db99bba0d78 100644 --- a/src/NServiceBus.Core/Install.cs +++ b/src/NServiceBus.Core/Install.cs @@ -90,8 +90,10 @@ public void Install() { Configure.Instance.Initialize(); - if(RunOtherInstallers) + if (RunOtherInstallers) + { InstallOtherInstallers(); + } } /// @@ -100,7 +102,9 @@ public void Install() void InstallOtherInstallers() { if (installedOthersInstallers) + { return; + } Configure.Instance.Builder.BuildAll().ToList() .ForEach(i=>i.Install(identity.Name)); diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 7b0522acb62..4d54f526d09 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -99,6 +99,7 @@ + diff --git a/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj b/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj index 306de92a5c4..56bb7c5cce8 100644 --- a/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj +++ b/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj @@ -112,7 +112,6 @@ - @@ -167,10 +166,10 @@ - + - + diff --git a/src/NServiceBus.Hosting.Windows/Profiles/Handlers/IntegrationProfileHandler.cs b/src/NServiceBus.Hosting.Windows/Profiles/Handlers/IntegrationProfileHandler.cs index c82f3800481..32f9fca403b 100644 --- a/src/NServiceBus.Hosting.Windows/Profiles/Handlers/IntegrationProfileHandler.cs +++ b/src/NServiceBus.Hosting.Windows/Profiles/Handlers/IntegrationProfileHandler.cs @@ -1,5 +1,6 @@ namespace NServiceBus.Hosting.Windows.Profiles.Handlers { + using Config; using Faults; using Hosting.Profiles; diff --git a/src/NServiceBus.Hosting.Windows/Profiles/Handlers/LiteProfileHandler.cs b/src/NServiceBus.Hosting.Windows/Profiles/Handlers/LiteProfileHandler.cs index d5e49bc7bff..43cfebaebe1 100644 --- a/src/NServiceBus.Hosting.Windows/Profiles/Handlers/LiteProfileHandler.cs +++ b/src/NServiceBus.Hosting.Windows/Profiles/Handlers/LiteProfileHandler.cs @@ -1,5 +1,6 @@ namespace NServiceBus.Hosting.Windows.Profiles.Handlers { + using Config; using Faults; using Hosting.Profiles; using Persistence.InMemory; diff --git a/src/NServiceBus.Hosting.Windows/WindowsHost.cs b/src/NServiceBus.Hosting.Windows/WindowsHost.cs index 0093d243bb3..2a42239e876 100644 --- a/src/NServiceBus.Hosting.Windows/WindowsHost.cs +++ b/src/NServiceBus.Hosting.Windows/WindowsHost.cs @@ -4,7 +4,7 @@ namespace NServiceBus.Hosting.Windows using System.Collections.Generic; using System.Diagnostics; using System.Threading; - using Profiles.Handlers; + using Config; /// /// A windows implementation of the NServiceBus hosting solution From deb1828f2229f2ee9910bcaff96340b7af4f90cc Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 7 Jan 2014 13:41:48 +0100 Subject: [PATCH 057/146] fixed race condition in When_two_sagas_subscribe_to_the_same_event --- ...n_two_sagas_subscribe_to_the_same_event.cs | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_two_sagas_subscribe_to_the_same_event.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_two_sagas_subscribe_to_the_same_event.cs index 0a601f42ce0..ea19ed4ef8b 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_two_sagas_subscribe_to_the_same_event.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_two_sagas_subscribe_to_the_same_event.cs @@ -5,6 +5,7 @@ namespace NServiceBus.AcceptanceTests.Sagas using EndpointTemplates; using AcceptanceTesting; using NUnit.Framework; + using PubSub; using Saga; using ScenarioDescriptors; @@ -15,7 +16,19 @@ public class When_two_sagas_subscribe_to_the_same_event : NServiceBusAcceptanceT public void Should_invoke_all_handlers_on_all_sagas() { Scenario.Define() - .WithEndpoint(b => b.Given(bus => bus.SendLocal(new StartSaga2 { DataId = Guid.NewGuid() }))) + .WithEndpoint(b => + b.Given((bus, context) => Subscriptions.OnEndpointSubscribed(s => + { + if (s.SubscriberReturnAddress.Queue.Contains("Saga1")) + { + context.Subscribed = true; + } + })) + .When(c => true, bus => bus.SendLocal(new StartSaga2 + { + DataId = Guid.NewGuid() + })) + ) .WithEndpoint() .Done(c => c.DidSaga1EventHandlerGetInvoked && c.DidSaga2EventHandlerGetInvoked) .Repeat(r => r.For(Transports.Default)) @@ -28,6 +41,7 @@ public void Should_invoke_all_handlers_on_all_sagas() public class Context : ScenarioContext { + public bool Subscribed { get; set; } public bool DidSaga1EventHandlerGetInvoked { get; set; } public bool DidSaga2EventHandlerGetInvoked { get; set; } } @@ -69,7 +83,7 @@ public void Handle(GroupPendingEvent message) Data.DataId = message.DataId; Console.Out.WriteLine("Saga1 received GroupPendingEvent for DataId: {0}", message.DataId); Context.DidSaga1EventHandlerGetInvoked = true; - Bus.SendLocal(new CompleteSaga1Start { DataId = message.DataId }); + Bus.SendLocal(new CompleteSaga1Now { DataId = message.DataId }); } public void Handle(CompleteSaga1Now message) @@ -142,11 +156,6 @@ public class StartSaga2 : ICommand public Guid DataId { get; set; } } - public class CompleteSaga1Start : ICommand - { - public Guid DataId { get; set; } - } - public class CompleteSaga1Now : ICommand { public Guid DataId { get; set; } From effb840601971ef4df26508e881449af46d0b019 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 7 Jan 2014 23:53:55 +1100 Subject: [PATCH 058/146] better logging of license details fixes #1869 --- .../Licensing/LicenseDeserializer.cs | 4 ++-- .../Licensing/LicenseManager.cs | 22 ++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/NServiceBus.Core/Licensing/LicenseDeserializer.cs b/src/NServiceBus.Core/Licensing/LicenseDeserializer.cs index a95288ed05c..747020d7417 100644 --- a/src/NServiceBus.Core/Licensing/LicenseDeserializer.cs +++ b/src/NServiceBus.Core/Licensing/LicenseDeserializer.cs @@ -67,8 +67,8 @@ public static License Deserialize(string licenseText) return license; } - const int MaxWorkerNodes = int.MaxValue; - const int MaxThroughputPerSecond = 0; + internal const int MaxWorkerNodes = int.MaxValue; + internal const int MaxThroughputPerSecond = 0; const int MinNumberOfWorkerNodes = 2; const int MinMessagePerSecondThroughput = 1; } diff --git a/src/NServiceBus.Core/Licensing/LicenseManager.cs b/src/NServiceBus.Core/Licensing/LicenseManager.cs index 31f478cd5c5..afa7b1f6574 100644 --- a/src/NServiceBus.Core/Licensing/LicenseManager.cs +++ b/src/NServiceBus.Core/Licensing/LicenseManager.cs @@ -42,10 +42,26 @@ static void WriteLicenseInfo() Logger.InfoFormat("Expires on {0}", License.ExpirationDate); if (License.UpgradeProtectionExpiration != null) { - Logger.InfoFormat("UpgradeProtectionExpiration {0}", License.UpgradeProtectionExpiration); + Logger.InfoFormat("UpgradeProtectionExpiration: {0}", License.UpgradeProtectionExpiration); + } + + if (License.MaxThroughputPerSecond == LicenseDeserializer.MaxThroughputPerSecond) + { + Logger.Info("MaxThroughputPerSecond: unlimited"); + } + else + { + Logger.InfoFormat("MaxThroughputPerSecond: {0}", License.MaxThroughputPerSecond); + } + + if (License.AllowedNumberOfWorkerNodes == LicenseDeserializer.MaxWorkerNodes) + { + Logger.Info("AllowedNumberOfWorkerNodes: unlimited"); + } + else + { + Logger.InfoFormat("AllowedNumberOfWorkerNodes: {0}", License.AllowedNumberOfWorkerNodes); } - Logger.InfoFormat("MaxThroughputPerSecond {0}", License.MaxThroughputPerSecond); - Logger.InfoFormat("AllowedNumberOfWorkerNodes {0}", License.AllowedNumberOfWorkerNodes); } static void ConfigureNServiceBusToRunInTrialMode() From 9dd8cdc9db086bd0cf14211c4b64205ef03228c3 Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 8 Jan 2014 00:03:04 +1100 Subject: [PATCH 059/146] Raise critical error if IWantToRunWhenBusStartsAndStops.Start/Stop throw an exception, closes #1872 --- src/NServiceBus.Core/Unicast/UnicastBus.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index 93913e56ce0..5df7968e327 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -799,14 +799,12 @@ public IBus Start(Action startupAction) try { - Log.DebugFormat("Starting {0}.", name); toRun.Start(); Log.DebugFormat("Started {0}.", name); } catch (Exception ex) { - Log.ErrorFormat("{0} could not be started.", ex, name); - //don't rethrow so that thread doesn't die before log message is shown. + Configure.Instance.RaiseCriticalError(String.Format("{0} could not be started.", name), ex); } }, TaskCreationOptions.LongRunning)).ToArray(); @@ -835,14 +833,12 @@ private void ExecuteIWantToRunAtStartupStopMethods() { try { - Log.DebugFormat("Stopping {0}.", name); toRun.Stop(); Log.DebugFormat("Stopped {0}.", name); } catch (Exception ex) { - Log.ErrorFormat("{0} could not be stopped.", ex, name); - // no need to rethrow, closing the process anyway + Configure.Instance.RaiseCriticalError(String.Format("{0} could not be stopped.", name), ex); } }, TaskCreationOptions.LongRunning); From 014c87f1203e2592a0270d0da4b327be69b07649 Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 8 Jan 2014 00:27:24 +1100 Subject: [PATCH 060/146] Remove hard coded 20 sec limit on IWantToRunWhenBusStartsAndStops.Stop(), closes #1478 --- src/NServiceBus.Core/Unicast/UnicastBus.cs | 56 ++++++++-------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index 5df7968e327..ed57fc565d4 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -811,7 +811,7 @@ public IBus Start(Action startupAction) return this; } - private void ExecuteIWantToRunAtStartupStopMethods() + void ExecuteIWantToRunAtStartupStopMethods() { if (thingsToRunAtStartup == null) { @@ -826,49 +826,33 @@ private void ExecuteIWantToRunAtStartupStopMethods() var mapTaskToThingsToRunAtStartup = new ConcurrentDictionary(); var tasks = thingsToRunAtStartup.Select(toRun => - { - var name = toRun.GetType().AssemblyQualifiedName; + { + var name = toRun.GetType().AssemblyQualifiedName; - var task = new Task(() => - { - try - { - toRun.Stop(); - Log.DebugFormat("Stopped {0}.", name); - } - catch (Exception ex) - { - Configure.Instance.RaiseCriticalError(String.Format("{0} could not be stopped.", name), ex); - } - }, TaskCreationOptions.LongRunning); + var task = new Task(() => + { + try + { + toRun.Stop(); + Log.DebugFormat("Stopped {0}.", name); + } + catch (Exception ex) + { + Configure.Instance.RaiseCriticalError(String.Format("{0} could not be stopped.", name), ex); + } + }, TaskCreationOptions.LongRunning); - mapTaskToThingsToRunAtStartup.TryAdd(task.Id, name); + mapTaskToThingsToRunAtStartup.TryAdd(task.Id, name); - task.Start(); + task.Start(); - return task; + return task; - }).ToArray(); + }).ToArray(); - // Wait for a period here otherwise the process may be killed too early! - var timeout = TimeSpan.FromSeconds(20); - if (Task.WaitAll(tasks, timeout)) - { - return; - } - - Log.WarnFormat("Not all IWantToRunWhenBusStartsAndStops.Stop methods were successfully called within {0}secs", timeout.Seconds); - - var sb = new StringBuilder(); - foreach (var task in tasks.Where(task => !task.IsCompleted)) - { - sb.AppendLine(mapTaskToThingsToRunAtStartup[task.Id]); - } - - Log.WarnFormat("List of tasks that did not finish within {0}secs:\n{1}", timeout.Seconds, sb.ToString()); + Task.WaitAll(tasks); } - /// /// Allow disabling the unicast bus. /// From 91da0f2776ce593f29bbb1e366b2e603879d037f Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 7 Jan 2014 14:35:30 +0100 Subject: [PATCH 061/146] Queue peek lock settings with 30s intervals cannot complete 5 times in 90 seconds, extending test duration --- .../Retries/When_doing_flr_with_default_settings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs b/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs index e9c33857123..888a062e83e 100644 --- a/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs +++ b/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs @@ -34,7 +34,7 @@ public void Should_do_5_retries_by_default_with_native_transactions() .Done(c => c.HandedOverToSlr || c.NumberOfTimesInvoked > 5) .Repeat(r => r.For(Transports.Default)) .Should(c => Assert.AreEqual(5, c.NumberOfTimesInvoked, "The FLR should by default retry 5 times")) - .Run(); + .Run(TimeSpan.FromMinutes(5)); } From 2ea890886f7b2ff7103eb24d066256d49c840679 Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 8 Jan 2014 21:56:24 +1100 Subject: [PATCH 062/146] Ensuring we always wrap InMemory.Raise in a child container --- ...en_bus_start_raises_an_inmemory_message.cs | 68 +++++++++++++++++++ .../NServiceBus.AcceptanceTests.csproj | 1 + src/NServiceBus.Core/Unicast/UnicastBus.cs | 15 +++- 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 src/NServiceBus.AcceptanceTests/BusStartStop/When_bus_start_raises_an_inmemory_message.cs diff --git a/src/NServiceBus.AcceptanceTests/BusStartStop/When_bus_start_raises_an_inmemory_message.cs b/src/NServiceBus.AcceptanceTests/BusStartStop/When_bus_start_raises_an_inmemory_message.cs new file mode 100644 index 00000000000..2a54bba8871 --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/BusStartStop/When_bus_start_raises_an_inmemory_message.cs @@ -0,0 +1,68 @@ +namespace NServiceBus.AcceptanceTests.BusStartStop +{ + using System; + using EndpointTemplates; + using AcceptanceTesting; + using NUnit.Framework; + using ScenarioDescriptors; + + public class When_bus_start_raises_an_inmemory_message : NServiceBusAcceptanceTest + { + [Test] + public void Should_not_throw() + { + var context = new Context(); + + Scenario.Define(context) + .WithEndpoint() + .Done(c => c.GotMessage) + .Repeat(r => r.For()) + .Run(); + } + + public class Context : ScenarioContext + { + public bool GotMessage; + } + + public class Endpoint : EndpointConfigurationBuilder + { + public Endpoint() + { + EndpointSetup(); + } + + class MessageHandler : IHandleMessages + { + public Context Context { get; set; } + + public void Handle(Message message) + { + Context.GotMessage = true; + } + } + } + + public class Foo : IWantToRunWhenBusStartsAndStops + { + public IBus Bus { get; set; } + + public void Start() + { + Bus.InMemory.Raise(new Message()); + } + + public void Stop() + { + } + } + + [Serializable] + public class Message : IMessage + { + } + + } + + +} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 43ca2c17aff..aa6b051e042 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -99,6 +99,7 @@ + diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index ed57fc565d4..f4aa3451783 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -5,7 +5,6 @@ namespace NServiceBus.Unicast using System.Collections.Generic; using System.Linq; using System.Security.Principal; - using System.Text; using System.Threading.Tasks; using Audit; using Licensing; @@ -975,6 +974,7 @@ public void Raise(Action messageConstructor) { Raise(CreateInstance(messageConstructor)); } + public void Raise(T @event) { var messageType = typeof(T); @@ -983,7 +983,18 @@ public void Raise(T @event) var logicalMessage = LogicalMessageFactory.Create(messageType, @event); - PipelineFactory.InvokeLogicalMessagePipeline(logicalMessage); + if (PipelineFactory.CurrentContext is RootContext) + { + using (var childBuilder = Builder.CreateChildBuilder()) + { + PipelineFactory.CurrentContext.Set(childBuilder); + PipelineFactory.InvokeLogicalMessagePipeline(logicalMessage); + } + } + else + { + PipelineFactory.InvokeLogicalMessagePipeline(logicalMessage); + } } [ObsoleteEx(RemoveInVersion = "5.0", Message = "In 5.0.0 we'll require inmemory messages to be picked up by the conventions")] From 722facdb5c1a9db27002273be0904da765b1e812 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 8 Jan 2014 18:38:34 +0200 Subject: [PATCH 063/146] better gateway header handling ref #1826 --- .../IdempotentChannelReceiverTests.cs | 104 ++++++++++++++++++ .../NServiceBus.Core.Tests.csproj | 2 + .../StringStreamExtensions.cs | 23 ++++ .../Channels/DataReceivedOnChannelArgs.cs | 13 +++ .../Gateway/Channels/IChannelReceiver.cs | 9 -- .../Receiving/IdempotentChannelReceiver.cs | 65 +++++++---- .../Gateway/Sending/CallInfo.cs | 10 -- .../Gateway/Sending/CallType.cs | 12 ++ src/NServiceBus.Core/NServiceBus.Core.csproj | 2 + 9 files changed, 198 insertions(+), 42 deletions(-) create mode 100644 src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs create mode 100644 src/NServiceBus.Core.Tests/StringStreamExtensions.cs create mode 100644 src/NServiceBus.Core/Gateway/Channels/DataReceivedOnChannelArgs.cs create mode 100644 src/NServiceBus.Core/Gateway/Sending/CallType.cs diff --git a/src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs b/src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs new file mode 100644 index 00000000000..cf18f10db9e --- /dev/null +++ b/src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs @@ -0,0 +1,104 @@ +namespace NServiceBus.Core.Tests +{ + using System.Collections.Generic; + using Gateway.Channels; + using Gateway.Channels.Http; + using Gateway.HeaderManagement; + using Gateway.Receiving; + using Gateway.Utils; + using NUnit.Framework; + + [TestFixture] + public class IdempotentChannelReceiverTests + { + [Test] + public void Missing_MD5_throws_ChannelException() + { + var data = new DataReceivedOnChannelArgs + { + Headers = new Dictionary() + }; + Assert.Throws(() => IdempotentChannelReceiver.VerifyData(data)); + } + + [Test] + public void Empty_MD5_throws_ChannelException() + { + var data = new DataReceivedOnChannelArgs + { + Headers = new Dictionary + { + {HttpHeaders.ContentMd5Key, ""}, + } + }; + Assert.Throws(() => IdempotentChannelReceiver.VerifyData(data)); + } + + [Test] + public void Valid_Md5_can_be_verified() + { + var data = new DataReceivedOnChannelArgs + { + Headers = new Dictionary + { + {HttpHeaders.ContentMd5Key, Hasher.Hash("myData".ConvertToStream())}, + }, + Data = "myData".ConvertToStream() + }; + IdempotentChannelReceiver.VerifyData(data); + } + + [Test] + public void Invalid_hash_throws_ChannelException() + { + var data = new DataReceivedOnChannelArgs + { + Headers = new Dictionary + { + {HttpHeaders.ContentMd5Key, "invalidHash"}, + }, + Data = "myData".ConvertToStream() + }; + Assert.Throws(() => IdempotentChannelReceiver.VerifyData(data)); + } + + [Test] + public void Missing_CallTypeHeader_throws_ChannelException() + { + Assert.Throws(() => IdempotentChannelReceiver.ReadCallType(new Dictionary())); + } + + [Test] + public void EmptyString_CallTypeHeader_throws_ChannelException() + { + Assert.Throws(() => IdempotentChannelReceiver.ReadCallType(new Dictionary + { + {GatewayHeaders.CallTypeHeader, ""}, + })); + } + + [Test] + public void Invalid_CallTypeHeader_throws_ChannelException() + { + Assert.Throws(() => IdempotentChannelReceiver.ReadCallType(new Dictionary + { + {GatewayHeaders.CallTypeHeader, "badValue"}, + })); + } + + [Test] + public void EmptyString_ClientId_throws_ChannelException() + { + Assert.Throws(() => IdempotentChannelReceiver.ReadClientId(new Dictionary + { + {GatewayHeaders.ClientIdHeader, ""}, + })); + } + + [Test] + public void Missing_ClientId_throws_ChannelException() + { + Assert.Throws(() => IdempotentChannelReceiver.ReadClientId(new Dictionary())); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 6cbd5d9d7d4..45f9eddd114 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -128,7 +128,9 @@ + + diff --git a/src/NServiceBus.Core.Tests/StringStreamExtensions.cs b/src/NServiceBus.Core.Tests/StringStreamExtensions.cs new file mode 100644 index 00000000000..d78b10268ed --- /dev/null +++ b/src/NServiceBus.Core.Tests/StringStreamExtensions.cs @@ -0,0 +1,23 @@ +namespace NServiceBus.Core.Tests +{ + using System.IO; + + public static class StringStreamExtensions + { + public static Stream ConvertToStream(this string s) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(s); + writer.Flush(); + stream.Position = 0; + return stream; + } + public static string ConvertToString(this Stream stream) + { + stream.Position = 0; + var sr = new StreamReader(stream); + return sr.ReadToEnd(); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Gateway/Channels/DataReceivedOnChannelArgs.cs b/src/NServiceBus.Core/Gateway/Channels/DataReceivedOnChannelArgs.cs new file mode 100644 index 00000000000..63968d1d34f --- /dev/null +++ b/src/NServiceBus.Core/Gateway/Channels/DataReceivedOnChannelArgs.cs @@ -0,0 +1,13 @@ +namespace NServiceBus.Gateway.Channels +{ + using System; + using System.Collections.Generic; + using System.IO; + + public class DataReceivedOnChannelArgs : EventArgs + { + public IDictionary Headers { get; set; } + + public Stream Data { get; set; } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Gateway/Channels/IChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Channels/IChannelReceiver.cs index af909ec1b97..7441c817be6 100644 --- a/src/NServiceBus.Core/Gateway/Channels/IChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Channels/IChannelReceiver.cs @@ -1,8 +1,6 @@ namespace NServiceBus.Gateway.Channels { using System; - using System.Collections.Generic; - using System.IO; public interface IChannelReceiver : IDisposable { @@ -10,11 +8,4 @@ public interface IChannelReceiver : IDisposable void Start(string address, int numberOfWorkerThreads); } - - public class DataReceivedOnChannelArgs : EventArgs - { - public IDictionary Headers { get; set; } - - public Stream Data { get; set; } - } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs index 192cb750c2a..81980257f51 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs @@ -89,27 +89,31 @@ static TransactionScope DefaultTransactionScope() }); } - CallInfo GetCallInfo(DataReceivedOnChannelArgs receivedData) + internal static CallInfo GetCallInfo(DataReceivedOnChannelArgs receivedData) { - var headers = receivedData.Headers; + + var callType = ReadCallType(receivedData.Headers); - var callType = headers[GatewayHeaders.CallTypeHeader]; - if (!Enum.IsDefined(typeof(CallType), callType)) - { - throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); - } + var clientId = ReadClientId(receivedData.Headers); - var type = (CallType) Enum.Parse(typeof(CallType), callType); + VerifyData(receivedData); - var clientId = headers[GatewayHeaders.ClientIdHeader]; - if (clientId == null) + return new CallInfo { - throw new ChannelException(400, "Required header '" + GatewayHeaders.ClientIdHeader + "' missing."); - } + ClientId = clientId, + Type = callType, + Headers = receivedData.Headers, + Data = receivedData.Data, + AutoAck = receivedData.Headers.ContainsKey(GatewayHeaders.AutoAck) + }; + } - var md5 = headers[HttpHeaders.ContentMd5Key]; + internal static void VerifyData(DataReceivedOnChannelArgs receivedData) + { + string md5; + receivedData.Headers.TryGetValue(HttpHeaders.ContentMd5Key, out md5); - if (md5 == null) + if (string.IsNullOrWhiteSpace(md5)) { throw new ChannelException(400, "Required header '" + HttpHeaders.ContentMd5Key + "' missing."); } @@ -118,19 +122,34 @@ CallInfo GetCallInfo(DataReceivedOnChannelArgs receivedData) if (receivedData.Data.Length > 0 && hash != md5) { - throw new ChannelException(412, - "MD5 hash received does not match hash calculated on server. Consider resubmitting."); + throw new ChannelException(412, "MD5 hash received does not match hash calculated on server. Consider resubmitting."); } + } + internal static string ReadClientId(IDictionary headers) + { + string clientIdString; + headers.TryGetValue(GatewayHeaders.ClientIdHeader, out clientIdString); + if (string.IsNullOrWhiteSpace(clientIdString)) + { + throw new ChannelException(400, "Required header '" + GatewayHeaders.ClientIdHeader + "' missing."); + } + return clientIdString; + } - return new CallInfo + internal static CallType ReadCallType(IDictionary headers) + { + string callTypeString; + CallType callType; + if (!headers.TryGetValue(GatewayHeaders.CallTypeHeader, out callTypeString)) { - ClientId = clientId, - Type = type, - Headers = headers, - Data = receivedData.Data, - AutoAck = headers.ContainsKey(GatewayHeaders.AutoAck) - }; + throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); + } + if (!Enum.TryParse(callTypeString, out callType)) + { + throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); + } + return callType; } void HandleSubmit(CallInfo callInfo) diff --git a/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs b/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs index 62194a61ad4..8eaf5fea8f3 100644 --- a/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs +++ b/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs @@ -13,14 +13,4 @@ public class CallInfo [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] public bool AutoAck { get; set; } } - - public enum CallType - { - [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] Submit, - [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] Ack, - [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] DatabusProperty, - - SingleCallSubmit, - SingleCallDatabusProperty - } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Gateway/Sending/CallType.cs b/src/NServiceBus.Core/Gateway/Sending/CallType.cs new file mode 100644 index 00000000000..ff8274c50ad --- /dev/null +++ b/src/NServiceBus.Core/Gateway/Sending/CallType.cs @@ -0,0 +1,12 @@ +namespace NServiceBus.Gateway.Sending +{ + public enum CallType + { + [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] Submit, + [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] Ack, + [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] DatabusProperty, + + SingleCallSubmit, + SingleCallDatabusProperty + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 4d54f526d09..3b6ccf9dfc3 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -116,7 +116,9 @@ + + From 582d6051a5e4faa61db058f466cdcccb1dba7427 Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 9 Jan 2014 16:16:24 +1100 Subject: [PATCH 064/146] Ensuring we unsubscrbe from TimeoutManager.TimeoutPushed on TimeoutPersisterReceiver.Stop, fixes #1889 --- .../Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs b/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs index 849f62edfe7..7e419886704 100644 --- a/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs +++ b/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutPersisterReceiver.cs @@ -34,6 +34,7 @@ public void Start() public void Stop() { + TimeoutManager.TimeoutPushed -= TimeoutsManagerOnTimeoutPushed; tokenSource.Cancel(); resetEvent.WaitOne(); } From 44a9a37332ada210ad81225b70a9cf86ef9697bc Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 9 Jan 2014 07:28:16 +0200 Subject: [PATCH 065/146] clean up gateway headers --- .../ChannelReceiverHeaderReaderTests.cs | 67 +++++++++++ .../Gateway/Receiving/HasherTests.cs | 23 ++++ .../IdempotentChannelReceiverTests.cs | 104 ------------------ .../NServiceBus.Core.Tests.csproj | 3 +- .../HeaderManagement/DataBusHeaderManager.cs | 10 +- .../Receiving/ChannelReceiverHeaderReader.cs | 90 +++++++++++++++ .../Receiving/IdempotentChannelReceiver.cs | 83 ++------------ .../Receiving/SingleCallChannelReceiver.cs | 74 +++---------- .../Gateway/Sending/CallInfo.cs | 4 + src/NServiceBus.Core/Gateway/Utils/Hasher.cs | 10 ++ src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + src/NServiceBus.sln.DotSettings | 2 + 12 files changed, 223 insertions(+), 248 deletions(-) create mode 100644 src/NServiceBus.Core.Tests/Gateway/Receiving/ChannelReceiverHeaderReaderTests.cs create mode 100644 src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs delete mode 100644 src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs create mode 100644 src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs diff --git a/src/NServiceBus.Core.Tests/Gateway/Receiving/ChannelReceiverHeaderReaderTests.cs b/src/NServiceBus.Core.Tests/Gateway/Receiving/ChannelReceiverHeaderReaderTests.cs new file mode 100644 index 00000000000..5d1ec164f44 --- /dev/null +++ b/src/NServiceBus.Core.Tests/Gateway/Receiving/ChannelReceiverHeaderReaderTests.cs @@ -0,0 +1,67 @@ +namespace NServiceBus.Core.Tests +{ + using System.Collections.Generic; + using Gateway.Channels.Http; + using Gateway.HeaderManagement; + using Gateway.Receiving; + using NUnit.Framework; + + [TestFixture] + public class ChannelReceiverHeaderReaderTests + { + + [Test] + public void Missing_CallTypeHeader_throws_ChannelException() + { + Assert.Throws(() => ChannelReceiverHeaderReader.ReadCallType(new Dictionary())); + } + + [Test] + public void EmptyString_CallTypeHeader_throws_ChannelException() + { + Assert.Throws(() => ChannelReceiverHeaderReader.ReadCallType(new Dictionary + { + {GatewayHeaders.CallTypeHeader, ""}, + })); + } + + [Test] + public void Invalid_CallTypeHeader_throws_ChannelException() + { + Assert.Throws(() => ChannelReceiverHeaderReader.ReadCallType(new Dictionary + { + {GatewayHeaders.CallTypeHeader, "badValue"}, + })); + } + + [Test] + public void EmptyString_ClientId_throws_ChannelException() + { + Assert.Throws(() => ChannelReceiverHeaderReader.ReadClientId(new Dictionary + { + {GatewayHeaders.ClientIdHeader, ""}, + })); + } + + [Test] + public void Missing_ClientId_throws_ChannelException() + { + Assert.Throws(() => ChannelReceiverHeaderReader.ReadClientId(new Dictionary())); + } + + [Test] + public void Missing_MD5_throws_ChannelException() + { + Assert.Throws(() => ChannelReceiverHeaderReader.ReadMd5(new Dictionary())); + } + + [Test] + public void Empty_MD5_throws_ChannelException() + { + Assert.Throws(() => ChannelReceiverHeaderReader.ReadMd5( new Dictionary + { + {HttpHeaders.ContentMd5Key, ""}, + })); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs b/src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs new file mode 100644 index 00000000000..1ab1b3ed27e --- /dev/null +++ b/src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs @@ -0,0 +1,23 @@ +namespace NServiceBus.Core.Tests +{ + using Gateway.Utils; + using NUnit.Framework; + + [TestFixture] + public class HasherTests + { + + [Test] + public void Valid_Md5_can_be_verified() + { + Hasher.Verify("myData".ConvertToStream(), Hasher.Hash("myData".ConvertToStream())); + } + + [Test] + public void Invalid_hash_throws_ChannelException() + { + Hasher.Verify("myData".ConvertToStream(), "invalidHash"); + } + + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs b/src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs deleted file mode 100644 index cf18f10db9e..00000000000 --- a/src/NServiceBus.Core.Tests/Gateway/Receiving/IdempotentChannelReceiverTests.cs +++ /dev/null @@ -1,104 +0,0 @@ -namespace NServiceBus.Core.Tests -{ - using System.Collections.Generic; - using Gateway.Channels; - using Gateway.Channels.Http; - using Gateway.HeaderManagement; - using Gateway.Receiving; - using Gateway.Utils; - using NUnit.Framework; - - [TestFixture] - public class IdempotentChannelReceiverTests - { - [Test] - public void Missing_MD5_throws_ChannelException() - { - var data = new DataReceivedOnChannelArgs - { - Headers = new Dictionary() - }; - Assert.Throws(() => IdempotentChannelReceiver.VerifyData(data)); - } - - [Test] - public void Empty_MD5_throws_ChannelException() - { - var data = new DataReceivedOnChannelArgs - { - Headers = new Dictionary - { - {HttpHeaders.ContentMd5Key, ""}, - } - }; - Assert.Throws(() => IdempotentChannelReceiver.VerifyData(data)); - } - - [Test] - public void Valid_Md5_can_be_verified() - { - var data = new DataReceivedOnChannelArgs - { - Headers = new Dictionary - { - {HttpHeaders.ContentMd5Key, Hasher.Hash("myData".ConvertToStream())}, - }, - Data = "myData".ConvertToStream() - }; - IdempotentChannelReceiver.VerifyData(data); - } - - [Test] - public void Invalid_hash_throws_ChannelException() - { - var data = new DataReceivedOnChannelArgs - { - Headers = new Dictionary - { - {HttpHeaders.ContentMd5Key, "invalidHash"}, - }, - Data = "myData".ConvertToStream() - }; - Assert.Throws(() => IdempotentChannelReceiver.VerifyData(data)); - } - - [Test] - public void Missing_CallTypeHeader_throws_ChannelException() - { - Assert.Throws(() => IdempotentChannelReceiver.ReadCallType(new Dictionary())); - } - - [Test] - public void EmptyString_CallTypeHeader_throws_ChannelException() - { - Assert.Throws(() => IdempotentChannelReceiver.ReadCallType(new Dictionary - { - {GatewayHeaders.CallTypeHeader, ""}, - })); - } - - [Test] - public void Invalid_CallTypeHeader_throws_ChannelException() - { - Assert.Throws(() => IdempotentChannelReceiver.ReadCallType(new Dictionary - { - {GatewayHeaders.CallTypeHeader, "badValue"}, - })); - } - - [Test] - public void EmptyString_ClientId_throws_ChannelException() - { - Assert.Throws(() => IdempotentChannelReceiver.ReadClientId(new Dictionary - { - {GatewayHeaders.ClientIdHeader, ""}, - })); - } - - [Test] - public void Missing_ClientId_throws_ChannelException() - { - Assert.Throws(() => IdempotentChannelReceiver.ReadClientId(new Dictionary())); - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 45f9eddd114..c514fa070ab 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -128,9 +128,10 @@ + - + diff --git a/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs b/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs index 338865989b7..5d307096744 100644 --- a/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs +++ b/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs @@ -34,18 +34,16 @@ public IDictionary Reassemble(string clientId, IDictionary collection; if (!headers.TryGetValue(clientId, out collection)) { - throw new ChannelException(412, - string.Format("Expected {0} databus properties. None were received. Please resubmit.", - expectedDatabusProperties.Count)); + var message = string.Format("Expected {0} databus properties. None were received. Please resubmit.",expectedDatabusProperties.Count); + throw new ChannelException(412,message); } foreach (var propertyHeader in expectedDatabusProperties) { if (!collection.ContainsKey(propertyHeader.Key)) { - throw new ChannelException(412, - string.Format("Databus property {0} was never received. Please resubmit.", - propertyHeader.Key)); + var message = string.Format("Databus property {0} was never received. Please resubmit.",propertyHeader.Key); + throw new ChannelException(412,message); } input[propertyHeader.Key] = collection[propertyHeader.Key]; } diff --git a/src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs b/src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs new file mode 100644 index 00000000000..755c7e9de6c --- /dev/null +++ b/src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs @@ -0,0 +1,90 @@ +namespace NServiceBus.Gateway.Receiving +{ + using System; + using System.Collections.Generic; + using Channels; + using Channels.Http; + using HeaderManagement; + using Sending; + + static class ChannelReceiverHeaderReader + { + + internal static CallInfo GetCallInfo(DataReceivedOnChannelArgs receivedData) + { + return new CallInfo + { + ClientId = ReadClientId(receivedData.Headers), + TimeToBeReceived = ReadTimeToBeReceived(receivedData.Headers), + Type = ReadCallType(receivedData.Headers), + Headers = receivedData.Headers, + Data = receivedData.Data, + AutoAck = receivedData.Headers.ContainsKey(GatewayHeaders.AutoAck), + Md5 = ReadMd5(receivedData.Headers) + }; + } + + static TimeSpan ReadTimeToBeReceived(IDictionary headers) + { + string timeToBeReceivedString; + if (headers.TryGetValue("NServiceBus.TimeToBeReceived", out timeToBeReceivedString)) + { + TimeSpan timeToBeReceived; + if (TimeSpan.TryParse(timeToBeReceivedString, out timeToBeReceived)) + { + return timeToBeReceived; + } + } + return TimeSpan.FromHours(1); + } + + internal static string ReadMd5(IDictionary headers) + { + string md5; + headers.TryGetValue(HttpHeaders.ContentMd5Key, out md5); + + if (string.IsNullOrWhiteSpace(md5)) + { + throw new ChannelException(400, "Required header '" + HttpHeaders.ContentMd5Key + "' missing."); + } + return md5; + } + internal static string ReadDataBus(this CallInfo callInfo) + { + string dataBus; + callInfo.Headers.TryGetValue(GatewayHeaders.DatabusKey, out dataBus); + + if (string.IsNullOrWhiteSpace(dataBus)) + { + throw new ChannelException(400, "Required header '" + GatewayHeaders.DatabusKey + "' missing."); + } + return dataBus; + } + + internal static string ReadClientId(IDictionary headers) + { + string clientIdString; + headers.TryGetValue(GatewayHeaders.ClientIdHeader, out clientIdString); + if (string.IsNullOrWhiteSpace(clientIdString)) + { + throw new ChannelException(400, "Required header '" + GatewayHeaders.ClientIdHeader + "' missing."); + } + return clientIdString; + } + + internal static CallType ReadCallType(IDictionary headers) + { + string callTypeString; + CallType callType; + if (!headers.TryGetValue(GatewayHeaders.CallTypeHeader, out callTypeString)) + { + throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); + } + if (!Enum.TryParse(callTypeString, out callType)) + { + throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); + } + return callType; + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs index 81980257f51..e67cd1b58cd 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs @@ -4,7 +4,6 @@ namespace NServiceBus.Gateway.Receiving using System.Collections.Generic; using System.Transactions; using Channels; - using Channels.Http; using DataBus; using HeaderManagement; using Logging; @@ -51,8 +50,9 @@ void DataReceivedOnChannel(object sender, DataReceivedOnChannelArgs e) { using (e.Data) { - var callInfo = GetCallInfo(e); + var callInfo = ChannelReceiverHeaderReader.GetCallInfo(e); + Hasher.Verify(callInfo.Data,callInfo.Md5); Logger.DebugFormat("Received message of type {0} for client id: {1}", callInfo.Type, callInfo.ClientId); using (var scope = DefaultTransactionScope()) @@ -89,69 +89,6 @@ static TransactionScope DefaultTransactionScope() }); } - internal static CallInfo GetCallInfo(DataReceivedOnChannelArgs receivedData) - { - - var callType = ReadCallType(receivedData.Headers); - - var clientId = ReadClientId(receivedData.Headers); - - VerifyData(receivedData); - - return new CallInfo - { - ClientId = clientId, - Type = callType, - Headers = receivedData.Headers, - Data = receivedData.Data, - AutoAck = receivedData.Headers.ContainsKey(GatewayHeaders.AutoAck) - }; - } - - internal static void VerifyData(DataReceivedOnChannelArgs receivedData) - { - string md5; - receivedData.Headers.TryGetValue(HttpHeaders.ContentMd5Key, out md5); - - if (string.IsNullOrWhiteSpace(md5)) - { - throw new ChannelException(400, "Required header '" + HttpHeaders.ContentMd5Key + "' missing."); - } - - var hash = Hasher.Hash(receivedData.Data); - - if (receivedData.Data.Length > 0 && hash != md5) - { - throw new ChannelException(412, "MD5 hash received does not match hash calculated on server. Consider resubmitting."); - } - } - - internal static string ReadClientId(IDictionary headers) - { - string clientIdString; - headers.TryGetValue(GatewayHeaders.ClientIdHeader, out clientIdString); - if (string.IsNullOrWhiteSpace(clientIdString)) - { - throw new ChannelException(400, "Required header '" + GatewayHeaders.ClientIdHeader + "' missing."); - } - return clientIdString; - } - - internal static CallType ReadCallType(IDictionary headers) - { - string callTypeString; - CallType callType; - if (!headers.TryGetValue(GatewayHeaders.CallTypeHeader, out callTypeString)) - { - throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); - } - if (!Enum.TryParse(callTypeString, out callType)) - { - throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); - } - return callType; - } - void HandleSubmit(CallInfo callInfo) { persister.InsertMessage(callInfo.ClientId, DateTime.UtcNow, callInfo.Data, callInfo.Headers); @@ -168,26 +105,20 @@ void HandleDatabusProperty(CallInfo callInfo) { throw new InvalidOperationException("Databus transmission received without a databus configured"); } - - TimeSpan timeToBeReceived; - - if (!TimeSpan.TryParse(callInfo.Headers["NServiceBus.TimeToBeReceived"], out timeToBeReceived)) - { - timeToBeReceived = TimeSpan.FromHours(1); - } - + string newDatabusKey; using (callInfo.Data) { - newDatabusKey = DataBus.Put(callInfo.Data, timeToBeReceived); + newDatabusKey = DataBus.Put(callInfo.Data, callInfo.TimeToBeReceived); } - var specificDataBusHeaderToUpdate = callInfo.Headers[GatewayHeaders.DatabusKey]; + var specificDataBusHeaderToUpdate = callInfo.ReadDataBus(); persister.UpdateHeader(callInfo.ClientId, specificDataBusHeaderToUpdate, newDatabusKey); } + void HandleAck(CallInfo callInfo) { byte[] outMessage; @@ -207,7 +138,7 @@ void HandleAck(CallInfo callInfo) MessageReceived(this, new MessageReceivedOnChannelArgs {Message = msg}); } - static readonly ILog Logger = LogManager.GetLogger(typeof(IdempotentChannelReceiver)); + static ILog Logger = LogManager.GetLogger(typeof(IdempotentChannelReceiver)); IChannelFactory channelFactory; IPersistMessages persister; diff --git a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs index e3b9ac7a06d..10dec86b1b4 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs @@ -4,7 +4,6 @@ using System.IO; using System.Transactions; using Channels; - using Channels.Http; using DataBus; using Deduplication; using HeaderManagement; @@ -62,7 +61,7 @@ void DataReceivedOnChannel(object sender, DataReceivedOnChannelArgs e) { using (e.Data) { - var callInfo = GetCallInfo(e); + var callInfo = ChannelReceiverHeaderReader.GetCallInfo(e); Logger.DebugFormat("Received message of type {0} for client id: {1}", callInfo.Type, callInfo.ClientId); @@ -95,33 +94,6 @@ static TransactionScope DefaultTransactionScope() }); } - CallInfo GetCallInfo(DataReceivedOnChannelArgs receivedData) - { - var headers = receivedData.Headers; - - var callType = headers[GatewayHeaders.CallTypeHeader]; - if (!Enum.IsDefined(typeof(CallType), callType)) - { - throw new ChannelException(400, "Required header '" + GatewayHeaders.CallTypeHeader + "' missing."); - } - - var type = (CallType) Enum.Parse(typeof(CallType), callType); - - var clientId = headers[GatewayHeaders.ClientIdHeader]; - if (clientId == null) - { - throw new ChannelException(400, "Required header '" + GatewayHeaders.ClientIdHeader + "' missing."); - } - - return new CallInfo - { - ClientId = clientId, - Type = type, - Headers = headers, - Data = receivedData.Data, - AutoAck = headers.ContainsKey(GatewayHeaders.AutoAck) - }; - } void HandleSubmit(CallInfo callInfo) { @@ -130,7 +102,7 @@ void HandleSubmit(CallInfo callInfo) callInfo.Data.CopyTo(stream); stream.Position = 0; - CheckHashOfGatewayStream(stream, callInfo.Headers[HttpHeaders.ContentMd5Key]); + Hasher.Verify(stream, callInfo.Md5); var msg = HeaderMapper.Map(headerManager.Reassemble(callInfo.ClientId, callInfo.Headers)); msg.Body = new byte[stream.Length]; @@ -142,8 +114,7 @@ void HandleSubmit(CallInfo callInfo) } else { - Logger.InfoFormat("Message with id: {0} is already on the bus, dropping the request", - callInfo.ClientId); + Logger.InfoFormat("Message with id: {0} is already on the bus, dropping the request", callInfo.ClientId); } } } @@ -155,45 +126,26 @@ void HandleDatabusProperty(CallInfo callInfo) throw new InvalidOperationException("Databus transmission received without a configured databus"); } - TimeSpan timeToBeReceived; - if (!TimeSpan.TryParse(callInfo.Headers["NServiceBus.TimeToBeReceived"], out timeToBeReceived)) - { - timeToBeReceived = TimeSpan.FromHours(1); - } - - var newDatabusKey = DataBus.Put(callInfo.Data, timeToBeReceived); + + var newDatabusKey = DataBus.Put(callInfo.Data, callInfo.TimeToBeReceived); using (var databusStream = DataBus.Get(newDatabusKey)) { - CheckHashOfGatewayStream(databusStream, callInfo.Headers[HttpHeaders.ContentMd5Key]); + Hasher.Verify(databusStream, callInfo.Md5); } - var specificDataBusHeaderToUpdate = callInfo.Headers[GatewayHeaders.DatabusKey]; + var specificDataBusHeaderToUpdate = callInfo.ReadDataBus(); headerManager.InsertHeader(callInfo.ClientId, specificDataBusHeaderToUpdate, newDatabusKey); } - void CheckHashOfGatewayStream(Stream input, string md5Hash) - { - if (md5Hash == null) - { - throw new ChannelException(400, "Required header '" + HttpHeaders.ContentMd5Key + "' missing."); - } - - if (md5Hash != Hasher.Hash(input)) - { - throw new ChannelException(412, - "MD5 hash received does not match hash calculated on server. Please resubmit."); - } - } - - static readonly ILog Logger = LogManager.GetLogger("NServiceBus.Gateway"); + static ILog Logger = LogManager.GetLogger("NServiceBus.Gateway"); - readonly IChannelFactory channelFactory; - readonly IDeduplicateMessages deduplicator; - readonly DataBusHeaderManager headerManager; + IChannelFactory channelFactory; + IDeduplicateMessages deduplicator; + DataBusHeaderManager headerManager; - [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] readonly IdempotentChannelReceiver - receiver; + [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] + IdempotentChannelReceiver receiver; IChannelReceiver channelReceiver; } diff --git a/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs b/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs index 8eaf5fea8f3..6593a300197 100644 --- a/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs +++ b/src/NServiceBus.Core/Gateway/Sending/CallInfo.cs @@ -1,5 +1,6 @@ namespace NServiceBus.Gateway.Sending { + using System; using System.Collections.Generic; using System.IO; @@ -12,5 +13,8 @@ public class CallInfo [ObsoleteEx(RemoveInVersion = "6.0", TreatAsErrorFromVersion = "5.0")] public bool AutoAck { get; set; } + + public TimeSpan TimeToBeReceived { get; set; } + public string Md5 { get; set; } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Gateway/Utils/Hasher.cs b/src/NServiceBus.Core/Gateway/Utils/Hasher.cs index d95c511f46c..48247055e62 100644 --- a/src/NServiceBus.Core/Gateway/Utils/Hasher.cs +++ b/src/NServiceBus.Core/Gateway/Utils/Hasher.cs @@ -3,6 +3,7 @@ namespace NServiceBus.Gateway.Utils using System; using System.IO; using System.Security.Cryptography; + using Receiving; public class Hasher { @@ -15,5 +16,14 @@ public static string Hash(Stream stream) return Convert.ToBase64String(hash); } + + internal static void Verify(Stream input, string md5Hash) + { + + if (md5Hash != Hash(input)) + { + throw new ChannelException(412, "MD5 hash received does not match hash calculated on server. Please resubmit."); + } + } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 3b6ccf9dfc3..5c278736343 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -118,6 +118,7 @@ + diff --git a/src/NServiceBus.sln.DotSettings b/src/NServiceBus.sln.DotSettings index a400cfe4f29..1a34c021dbc 100644 --- a/src/NServiceBus.sln.DotSettings +++ b/src/NServiceBus.sln.DotSettings @@ -40,6 +40,7 @@ ERROR WARNING ERROR + ERROR ERROR ERROR ERROR @@ -89,6 +90,7 @@ ERROR ERROR ERROR + ERROR ERROR ERROR ERROR From ba93ce226d220d7a3fc80ecb0bae4cf469c32d33 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 9 Jan 2014 09:37:00 +0200 Subject: [PATCH 066/146] properly extract autoack fixes #1888 --- .../Receiving/ChannelReceiverHeaderReader.cs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs b/src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs index 755c7e9de6c..b3191711b21 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/ChannelReceiverHeaderReader.cs @@ -19,11 +19,26 @@ internal static CallInfo GetCallInfo(DataReceivedOnChannelArgs receivedData) Type = ReadCallType(receivedData.Headers), Headers = receivedData.Headers, Data = receivedData.Data, - AutoAck = receivedData.Headers.ContainsKey(GatewayHeaders.AutoAck), + AutoAck = ReadAutoAck(receivedData.Headers), Md5 = ReadMd5(receivedData.Headers) }; } + static bool ReadAutoAck(IDictionary headers) + { + string autoAckString; + if (headers.TryGetValue(GatewayHeaders.AutoAck, out autoAckString)) + { + bool autoAck; + if (bool.TryParse(autoAckString, out autoAck)) + { + return autoAck; + } + var message = string.Format("Invalid AutoAck header '{0}'. Found '{1}'", GatewayHeaders.AutoAck, autoAckString); + throw new ChannelException(400, message); + } + return false; + } static TimeSpan ReadTimeToBeReceived(IDictionary headers) { string timeToBeReceivedString; From 5d0687a6c235509228e6e6ca8a239eb463ad6bf3 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 9 Jan 2014 09:38:37 +0200 Subject: [PATCH 067/146] hasher should throw --- src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs b/src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs index 1ab1b3ed27e..89f7ef67dfd 100644 --- a/src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs +++ b/src/NServiceBus.Core.Tests/Gateway/Receiving/HasherTests.cs @@ -1,5 +1,6 @@ namespace NServiceBus.Core.Tests { + using Gateway.Receiving; using Gateway.Utils; using NUnit.Framework; @@ -16,7 +17,7 @@ public void Valid_Md5_can_be_verified() [Test] public void Invalid_hash_throws_ChannelException() { - Hasher.Verify("myData".ConvertToStream(), "invalidHash"); + Assert.Throws(() => Hasher.Verify("myData".ConvertToStream(), "invalidHash")); } } From 83c668d7a84e89db8c2bd545d70c40f6816cdda2 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 9 Jan 2014 10:28:41 +0200 Subject: [PATCH 068/146] audit should use NSB logManager --- src/NServiceBus.Core/Audit/Audit.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Audit/Audit.cs b/src/NServiceBus.Core/Audit/Audit.cs index e05b0eb92eb..1b0d5eb4b95 100644 --- a/src/NServiceBus.Core/Audit/Audit.cs +++ b/src/NServiceBus.Core/Audit/Audit.cs @@ -3,7 +3,7 @@ using System; using System.Diagnostics; using Config; - using log4net; + using Logging; using NServiceBus.Audit; using Utils; From 580b26979d167c505547ed2a064735cc363270bc Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 9 Jan 2014 10:39:36 +0200 Subject: [PATCH 069/146] should use NSB LogManager --- .../Gateway/Receiving/SingleCallChannelReceiver.cs | 2 +- .../Gateway/Sending/SingleCallChannelForwarder.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs index e3b9ac7a06d..41d1612b219 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs @@ -8,7 +8,7 @@ using DataBus; using Deduplication; using HeaderManagement; - using log4net; + using Logging; using Notifications; using Sending; using Utils; diff --git a/src/NServiceBus.Core/Gateway/Sending/SingleCallChannelForwarder.cs b/src/NServiceBus.Core/Gateway/Sending/SingleCallChannelForwarder.cs index 99572f1bd86..63660c63aa4 100644 --- a/src/NServiceBus.Core/Gateway/Sending/SingleCallChannelForwarder.cs +++ b/src/NServiceBus.Core/Gateway/Sending/SingleCallChannelForwarder.cs @@ -8,7 +8,7 @@ using Channels.Http; using DataBus; using HeaderManagement; - using log4net; + using Logging; using Routing; using Utils; From c2216ed116591969647d394f227ce545924ba809 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 9 Jan 2014 10:01:52 +0100 Subject: [PATCH 070/146] acceptance test for Issue_1819 now takes context into account --- .../Sagas/Issue_1819.cs | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/Sagas/Issue_1819.cs b/src/NServiceBus.AcceptanceTests/Sagas/Issue_1819.cs index 5547c8c651c..fc4a344bc49 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/Issue_1819.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/Issue_1819.cs @@ -11,10 +11,10 @@ public class Issue_1819 : NServiceBusAcceptanceTest [Test] public void Run() { - var context = new Context(); + var context = new Context { Id = Guid.NewGuid() }; Scenario.Define(context) - .WithEndpoint(b => b.Given(bus => bus.SendLocal(new StartSaga1()))) + .WithEndpoint(b => b.Given((bus, c) => bus.SendLocal(new StartSaga1 { ContextId = c.Id }))) .Done(c => (c.Saga1TimeoutFired && c.Saga2TimeoutFired) || c.SagaNotFound) .Run(TimeSpan.FromSeconds(20)); @@ -25,6 +25,7 @@ public void Run() public class Context : ScenarioContext { + public Guid Id { get; set; } public bool Saga1TimeoutFired { get; set; } public bool Saga2TimeoutFired { get; set; } public bool SagaNotFound { get; set; } @@ -43,18 +44,23 @@ public class Saga1 : Saga, IAmStartedByMessages, IH public void Handle(StartSaga1 message) { - RequestTimeout(TimeSpan.FromSeconds(5)); - RequestTimeout(new DateTime(2011, 10, 14, 23, 08, 0, DateTimeKind.Local)); + if (message.ContextId != Context.Id) return; + + RequestTimeout(TimeSpan.FromSeconds(5), new Saga1Timeout { ContextId = Context.Id }); + RequestTimeout(new DateTime(2011, 10, 14, 23, 08, 0, DateTimeKind.Local), new Saga2Timeout { ContextId = Context.Id }); } public void Timeout(Saga1Timeout state) { MarkAsComplete(); + + if (state.ContextId != Context.Id) return; Context.Saga1TimeoutFired = true; } public void Timeout(Saga2Timeout state) { + if (state.ContextId != Context.Id) return; Context.Saga2TimeoutFired = true; } @@ -69,6 +75,8 @@ public class SagaNotFound : IHandleSagaNotFound public void Handle(object message) { + if (((dynamic)message).ContextId != Context.Id) return; + Context.SagaNotFound = true; } } @@ -81,7 +89,7 @@ public void Handle(object message) } } - public class Foo: ISpecifyMessageHandlerOrdering + public class Foo : ISpecifyMessageHandlerOrdering { public void SpecifyOrder(Order order) { @@ -93,15 +101,18 @@ public void SpecifyOrder(Order order) [Serializable] public class StartSaga1 : ICommand { + public Guid ContextId { get; set; } } public class Saga1Timeout { + public Guid ContextId { get; set; } } public class Saga2Timeout { + public Guid ContextId { get; set; } } } } \ No newline at end of file From 8132d8ecf6fa4b386e1f7ea725f7a7ba12bff12d Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 9 Jan 2014 11:07:24 +0100 Subject: [PATCH 071/146] there is no need for the inmemory tests to autosubscribe --- ...ontinueDispatchingCurrentMessageToHandlers_from_inmemory.cs | 3 ++- .../InMemory/When_raising_an_in_memory_event.cs | 3 ++- .../When_raising_an_in_memory_event_from_a_non_handler.cs | 3 ++- ..._in_memory_event_transport_mutators_should_not_be_called.cs | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/InMemory/When_calling_DoNotContinueDispatchingCurrentMessageToHandlers_from_inmemory.cs b/src/NServiceBus.AcceptanceTests/InMemory/When_calling_DoNotContinueDispatchingCurrentMessageToHandlers_from_inmemory.cs index 357a94f06de..1be685dd16f 100644 --- a/src/NServiceBus.AcceptanceTests/InMemory/When_calling_DoNotContinueDispatchingCurrentMessageToHandlers_from_inmemory.cs +++ b/src/NServiceBus.AcceptanceTests/InMemory/When_calling_DoNotContinueDispatchingCurrentMessageToHandlers_from_inmemory.cs @@ -3,6 +3,7 @@ using System; using AcceptanceTesting; using EndpointTemplates; + using Features; using NUnit.Framework; public class When_calling_DoNotContinueDispatchingCurrentMessageToHandlers_from_inmemory : NServiceBusAcceptanceTest @@ -45,7 +46,7 @@ public class MyEndpoint : EndpointConfigurationBuilder { public MyEndpoint() { - EndpointSetup(); + EndpointSetup(c => Configure.Features.Disable()); } class EnsureOrdering : ISpecifyMessageHandlerOrdering diff --git a/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event.cs b/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event.cs index a31ca184e2a..e8fad151dc7 100644 --- a/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event.cs +++ b/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event.cs @@ -3,6 +3,7 @@ using System; using EndpointTemplates; using AcceptanceTesting; + using Features; using NUnit.Framework; public class When_raising_an_in_memory_event : NServiceBusAcceptanceTest @@ -32,7 +33,7 @@ public class InMemoryEndpoint : EndpointConfigurationBuilder { public InMemoryEndpoint() { - EndpointSetup(); + EndpointSetup(c => Configure.Features.Disable()); } public class CommandHandler : IHandleMessages diff --git a/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_from_a_non_handler.cs b/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_from_a_non_handler.cs index 566ab6a2e57..1e514ea0297 100644 --- a/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_from_a_non_handler.cs +++ b/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_from_a_non_handler.cs @@ -3,6 +3,7 @@ using System; using EndpointTemplates; using AcceptanceTesting; + using Features; using NUnit.Framework; public class When_raising_an_in_memory_event_from_a_non_handler : NServiceBusAcceptanceTest @@ -30,7 +31,7 @@ public class InMemoryEndpoint : EndpointConfigurationBuilder { public InMemoryEndpoint() { - EndpointSetup(); + EndpointSetup(c => Configure.Features.Disable()); } public class StartUpRunner : IWantToRunWhenBusStartsAndStops diff --git a/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_transport_mutators_should_not_be_called.cs b/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_transport_mutators_should_not_be_called.cs index 657ad2b0a4b..d095da74e87 100644 --- a/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_transport_mutators_should_not_be_called.cs +++ b/src/NServiceBus.AcceptanceTests/InMemory/When_raising_an_in_memory_event_transport_mutators_should_not_be_called.cs @@ -3,6 +3,7 @@ using System; using EndpointTemplates; using AcceptanceTesting; + using Features; using MessageMutator; using NUnit.Framework; @@ -51,7 +52,7 @@ public class InMemoryEndpoint : EndpointConfigurationBuilder { public InMemoryEndpoint() { - EndpointSetup(); + EndpointSetup(c => Configure.Features.Disable()); } } From cd4095d60746703a6bf4c5a704e26fa0a8caf541 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 9 Jan 2014 11:58:18 +0100 Subject: [PATCH 072/146] Tests that use Subscriptions.OnEndpointSubscribed should also take into account transport that work without message driven subscriptions --- ...n_multi_subscribing_to_a_polymorphic_event.cs | 6 ++++++ ...rted_by_an_event_published_by_another_saga.cs | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_multi_subscribing_to_a_polymorphic_event.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_multi_subscribing_to_a_polymorphic_event.cs index 4388dc3c58d..9b4ad61a509 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_multi_subscribing_to_a_polymorphic_event.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_multi_subscribing_to_a_polymorphic_event.cs @@ -44,6 +44,12 @@ public void Both_events_should_be_delivered() { bus.Subscribe(); bus.Subscribe(); + + if (!Feature.IsEnabled()) + { + context.SubscribedToIMyEvent = true; + context.SubscribedToMyEvent2 = true; + } })) .Done(c => c.SubscriberGotIMyEvent && c.SubscriberGotMyEvent2) .Run(); diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs index c3f1ec8b622..4d2f990e196 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs @@ -31,7 +31,13 @@ public void Should_start_the_saga_and_request_a_timeout() bus.SendLocal(new StartSaga {DataId = Guid.NewGuid()})) ) .WithEndpoint( - b => b.Given((bus, context) => bus.Subscribe())) + b => b.Given((bus, context) => + { + bus.Subscribe(); + + if (!Feature.IsEnabled()) + context.IsEventSubscriptionReceived = true; + })) .Done(c => c.DidSaga1Complete && c.DidSaga2Complete) .Repeat(r => r.For(Transports.Default)) @@ -66,7 +72,13 @@ public void Should_start_the_saga_when_set_up_to_start_for_the_base_event() bus.Publish(m=> { m.DataId = Guid.NewGuid(); })) ) .WithEndpoint( - b => b.Given((bus, context) => bus.Subscribe())) + b => b.Given((bus, context) => + { + bus.Subscribe(); + + if (!Feature.IsEnabled()) + context.IsEventSubscriptionReceived = true; + })) .Done(c => c.DidSagaComplete) .Repeat(r => r.For(Transports.Default)) .Should(c => Assert.True(c.DidSagaComplete)) From b41b6f3997615fc3aa6c9419a7cb7f9585283dd6 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 9 Jan 2014 13:34:15 +0100 Subject: [PATCH 073/146] Limiting When_publishing_an_event_with_the_subscriber_scaled_out to transports with message driven pub sub as only those have an ISubscriptionStorage implementation which is used to look up the subscribers --- .../When_publishing_an_event_with_the_subscriber_scaled_out.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs index f9aa47c381b..cd37cda4055 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_the_subscriber_scaled_out.cs @@ -49,7 +49,7 @@ public void Should_only_publish_one_event() context.NumberOfSubcriptionsReceived++; })) .Done(c => c.SubcribersOfTheEvent != null) - .Repeat(r => r.For(Transports.Msmq) + .Repeat(r => r.For(Transports.Msmq) .For(SubscriptionStorages.Msmq)) .Should(c => { From a76222c0b3808d69607a0aefc41e161658e64741 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 9 Jan 2014 13:47:24 +0100 Subject: [PATCH 074/146] When_using_a_received_message_for_timeout relied on IAuthorizeSubscriptions without taking into account if the MessageDrivenSubscriptions feature is enabled --- .../Sagas/When_using_a_received_message_for_timeout.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs index e1ad8879e73..657191b8dba 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs @@ -3,6 +3,7 @@ using System; using EndpointTemplates; using AcceptanceTesting; + using Features; using NUnit.Framework; using Saga; using ScenarioDescriptors; @@ -20,7 +21,10 @@ public void Timeout_should_be_received_after_expiration() b.When(context => context.StartSagaMessageReceived, (bus, context) => { - bus.EnsureSubscriptionMessagesHaveArrived(); + if (Feature.IsEnabled()) + { + bus.EnsureSubscriptionMessagesHaveArrived(); + } bus.Publish(new SomeEvent {SomeId = context.Id}); }); }) From 3d76cca144a8a61a80269d98c5cddb6c6eb0df85 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 9 Jan 2014 16:08:50 +0100 Subject: [PATCH 075/146] added explicit handler for When_publishing_an_event_with_only_local_messagehandlers.Should_trigger_the_catch_all_handler_for_publishers_with_centralized_pubsub as well to force subscription --- ...publishing_an_event_with_only_local_messagehandlers.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_only_local_messagehandlers.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_only_local_messagehandlers.cs index 1f180174501..76c0123d800 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_only_local_messagehandlers.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event_with_only_local_messagehandlers.cs @@ -93,6 +93,14 @@ public void Handle(IEvent message) Context.CatchAllHandlerGotTheMessage = true; } } + + class DummyHandler : IHandleMessages //explicit handler for the event is needed + { + public Context Context { get; set; } + public void Handle(EventHandledByLocalEndpoint message) + { + } + } } [Serializable] public class EventHandledByLocalEndpoint : IEvent From 7177525bad0809e8f132a4fdf29ea05e2c01bc2a Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Sun, 12 Jan 2014 15:08:15 +1100 Subject: [PATCH 076/146] Dispose of stream only once Stream disposed of by `using` in `DataReceivedOnChannel` --- .../Gateway/Receiving/IdempotentChannelReceiver.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs index 81980257f51..1c84021cea0 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs @@ -176,12 +176,7 @@ void HandleDatabusProperty(CallInfo callInfo) timeToBeReceived = TimeSpan.FromHours(1); } - string newDatabusKey; - - using (callInfo.Data) - { - newDatabusKey = DataBus.Put(callInfo.Data, timeToBeReceived); - } + var newDatabusKey = DataBus.Put(callInfo.Data, timeToBeReceived); var specificDataBusHeaderToUpdate = callInfo.Headers[GatewayHeaders.DatabusKey]; From fccfb1f541484b8b2f7e968059dc5a08b2c66c42 Mon Sep 17 00:00:00 2001 From: John Simons Date: Sun, 12 Jan 2014 19:04:12 +1100 Subject: [PATCH 077/146] Ensuring IdempotentChannelReceiver is disposed --- .../Gateway/Receiving/SingleCallChannelReceiver.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs index 41d1612b219..f235d22ac7d 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs @@ -42,13 +42,15 @@ public void Dispose() public void DisposeManaged() { + if (receiver != null) + { + receiver.MessageReceived -= MessageReceivedOnOldChannel; + receiver.Dispose(); + } + if (channelReceiver != null) { channelReceiver.DataReceived -= DataReceivedOnChannel; - if (receiver != null) - { - receiver.MessageReceived -= MessageReceivedOnOldChannel; - } channelReceiver.Dispose(); } } From 2646f4e013a706b7641ef7c748e5df26ad2e19f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Sun, 12 Jan 2014 20:00:17 +0100 Subject: [PATCH 078/146] Adding performance tests for our subscription storages --- .../NServiceBus.PerformanceTests.csproj | 8 +- src/NServiceBus.PerformanceTests/Program.cs | 18 ++- .../PubSub/PubSubTestCase.cs | 145 ++++++++++++++++++ .../RavenSubscriptionStorageTestCase.cs | 75 +++++++++ .../PubSub/TestCase.cs | 91 +++++++++++ .../TestSuites/PubSub-Raven.ps1 | 27 ++++ .../TestSuites/PubSub.ps1 | 15 ++ .../TransportConfigOverride.cs | 13 ++ 8 files changed, 389 insertions(+), 3 deletions(-) create mode 100644 src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs create mode 100644 src/NServiceBus.PerformanceTests/PubSub/RavenSubscriptionStorageTestCase.cs create mode 100644 src/NServiceBus.PerformanceTests/PubSub/TestCase.cs create mode 100644 src/NServiceBus.PerformanceTests/TestSuites/PubSub-Raven.ps1 create mode 100644 src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 diff --git a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj index 7e4e186545a..c8974164697 100644 --- a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj +++ b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj @@ -23,7 +23,7 @@ prompt 4 false - true + false AnyCPU @@ -63,6 +63,9 @@ + + + @@ -75,8 +78,10 @@ + + @@ -103,6 +108,7 @@ + \ No newline at end of file diff --git a/src/NServiceBus.PerformanceTests/Program.cs b/src/NServiceBus.PerformanceTests/Program.cs index b14c8e9ea55..c812efcbabe 100644 --- a/src/NServiceBus.PerformanceTests/Program.cs +++ b/src/NServiceBus.PerformanceTests/Program.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using System.Diagnostics; + using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -12,12 +13,25 @@ using Encryption; using Saga; using System; - + class Program { static void Main(string[] args) { - var numberOfThreads = int.Parse(args[0]); + var testCaseToRun = args[0]; + + int numberOfThreads; + + if (!int.TryParse(testCaseToRun, out numberOfThreads)) + { + var testCase = TestCase.Load(testCaseToRun,args); + + testCase.Run(); + testCase.DumpSettings(); + + return; + } + var volatileMode = (args[4].ToLower() == "volatile"); var suppressDTC = (args[4].ToLower() == "suppressdtc"); var twoPhaseCommit = (args[4].ToLower() == "twophasecommit"); diff --git a/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs new file mode 100644 index 00000000000..d8397174c90 --- /dev/null +++ b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using NServiceBus; +using NServiceBus.Features; +using NServiceBus.Transports.Msmq; +using NServiceBus.Transports.Msmq.Config; +using NServiceBus.Unicast.Subscriptions; +using NServiceBus.Unicast.Subscriptions.MessageDrivenSubscriptions; +using RavenTestMessages; +using Runner; + +public class PubSubTestCase : TestCase +{ + protected int NumberOfSubscribers + { + get + { + int value; + + if (!int.TryParse(GetParameterValue("numberofsubscribers"), out value)) + { + return 10; + } + + return value; + } + } + + protected string StorageType + { + get + { + var value = GetParameterValue("storage"); + + if (string.IsNullOrEmpty(value)) + { + return "raven"; + } + return value.ToLower(); + } + } + + + public override void Run() + { + var endpointName = "PubSubPerformanceTest"; + + + + + TransportConfigOverride.MaximumConcurrencyLevel = NumberOfThreads; + + Feature.Disable(); + var config = Configure.With() + .DefineEndpointName(endpointName) + .DefaultBuilder() + .UseTransport() + .InMemoryFaultManagement(); + + switch (StorageType) + { + case "raven": + config.RavenSubscriptionStorage(); + break; + case "inmemory": + config.InMemorySubscriptionStorage(); + break; + case "msmq": + config.MsmqSubscriptionStorage(); + break; + } + + using (var bus = config.InMemorySubscriptionStorage() + .UnicastBus() + .CreateBus()) + { + var subscriptionStorage = Configure.Instance.Builder.Build(); + + var testEventMessage = new MessageType(typeof(RavenTestEvent)); + + + subscriptionStorage.Init(); + + + var creator = new MsmqQueueCreator + { + Settings = new MsmqSettings { UseTransactionalQueues = true } + }; + + + for (var i = 0; i < NumberOfSubscribers; i++) + { + var subscriberAddress = Address.Parse(endpointName + ".Subscriber" + i); + creator.CreateQueueIfNecessary(subscriberAddress, null); + subscriptionStorage.Subscribe(subscriberAddress, new List + { + testEventMessage + }); + } + + + + Configure.Instance.ForInstallationOn().Install(); + + Parallel.For( + 0, + NumberMessages, + new ParallelOptions { MaxDegreeOfParallelism = NumberOfThreads }, + x => bus.SendLocal(new PerformRavenPublish())); + + + Statistics.StartTime = DateTime.Now; + bus.Start(); + + while (Interlocked.Read(ref Statistics.NumberOfMessages) < NumberMessages) + Thread.Sleep(1000); + + + Statistics.Dump(); + } + + } +} + +class PublishRavenEventHandler : IHandleMessages +{ + public IBus Bus { get; set; } + public void Handle(PerformRavenPublish message) + { + Bus.Publish(); + } +} + +namespace RavenTestMessages +{ + public class PerformRavenPublish : IMessage + { + } + + public class RavenTestEvent : IEvent + { + } +} diff --git a/src/NServiceBus.PerformanceTests/PubSub/RavenSubscriptionStorageTestCase.cs b/src/NServiceBus.PerformanceTests/PubSub/RavenSubscriptionStorageTestCase.cs new file mode 100644 index 00000000000..42eaa32e557 --- /dev/null +++ b/src/NServiceBus.PerformanceTests/PubSub/RavenSubscriptionStorageTestCase.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading.Tasks; +using System.Transactions; +using NServiceBus; +using NServiceBus.Persistence.Raven; +using NServiceBus.Persistence.Raven.SubscriptionStorage; +using NServiceBus.Unicast.Subscriptions; +using NServiceBus.Unicast.Subscriptions.MessageDrivenSubscriptions; +using Raven.Client.Document; + +public class RavenSubscriptionStorageTestCase : TestCase +{ + int NumberOfSubscribers + { + get + { + return int.Parse(parameters["numberofsubscribers"]); + } + } + + + public override void Run() + { + using (var store = new DocumentStore()) + { + store.Url = "http://localhost:8080"; + store.Initialize(); + + var ravenStorage = new RavenSubscriptionStorage(new StoreAccessor(store)); + + ravenStorage.Init(); + + var subscriptionStorage = (ISubscriptionStorage) ravenStorage; + var testEventMessage = new MessageType(typeof(TestEvent)); + + for (var i = 0; i < NumberOfSubscribers; i++) + { + subscriptionStorage.Subscribe(Address.Parse("endpoint" + i), new List + { + testEventMessage + }); + } + + var sw = new Stopwatch(); + + + sw.Start(); + Parallel.For( + 0, + NumberMessages, + new ParallelOptions { MaxDegreeOfParallelism = NumberOfThreads }, + x => + { + using (var tx = new TransactionScope()) + { + subscriptionStorage.GetSubscriberAddressesForMessage(new[] { new MessageType(typeof(TestEvent)) }); + + tx.Complete(); + } + }); + sw.Stop(); + + var elapsedMS = sw.ElapsedMilliseconds; + + Console.Out.WriteLine("Average (ms): {0} - Total:{1}", NumberMessages / elapsedMS, elapsedMS); + + } + } +} + +public class TestEvent +{ +} \ No newline at end of file diff --git a/src/NServiceBus.PerformanceTests/PubSub/TestCase.cs b/src/NServiceBus.PerformanceTests/PubSub/TestCase.cs new file mode 100644 index 00000000000..3239b069c1f --- /dev/null +++ b/src/NServiceBus.PerformanceTests/PubSub/TestCase.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +public abstract class TestCase +{ + + protected int NumberOfThreads + { + get + { + int value; + + if (!int.TryParse(GetParameterValue("numberofthreads"), out value)) + { + return 10; + } + + return value; + } + } + + protected int NumberMessages + { + get + { + int value; + + if (!int.TryParse(GetParameterValue("numberofmessages"), out value)) + { + return 10000; + } + + return value; + } + } + + protected string GetParameterValue(string key) + { + string value; + + if (!parameters.TryGetValue(key, out value)) + { + return null; + } + + return value; + + } + + + protected Dictionary parameters = new Dictionary(); + public void WithParameters(Dictionary testCaseParameters) + { + parameters = testCaseParameters; + } + + + public abstract void Run(); + + public static TestCase Load(string testCaseToRun, IEnumerable args) + { + var typeName = testCaseToRun; + + if (!testCaseToRun.Contains("TestCase")) + { + typeName += "TestCase"; + } + var testCase = (TestCase)Activator.CreateInstance(Type.GetType(typeName)); + + var parameters = args.Where(arg => arg.Contains("=")).Select(arg => new KeyValuePair(arg.Split('=').First().ToLower(), arg.Split('=').Last())) + .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + testCase.WithParameters(parameters); + + return testCase; + } + + public void DumpSettings() + { + var settings = GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Instance).Select(pi => new + { + Name = pi.Name, + Value = pi.GetValue(this, null) + }).ToList(); + + Console.Out.WriteLine("Settings: {0}",string.Join(" ",settings.Select(s=>string.Format("{0}={1}",s.Name,s.Value)))); + } + +} \ No newline at end of file diff --git a/src/NServiceBus.PerformanceTests/TestSuites/PubSub-Raven.ps1 b/src/NServiceBus.PerformanceTests/TestSuites/PubSub-Raven.ps1 new file mode 100644 index 00000000000..bbe260a9fca --- /dev/null +++ b/src/NServiceBus.PerformanceTests/TestSuites/PubSub-Raven.ps1 @@ -0,0 +1,27 @@ +. .\TestSupport.ps1 + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=1 numberofmessages=10000 numberofthreads=10 storage=raven + +Cleanup + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=2 numberofmessages=10000 numberofthreads=10 storage=raven + +Cleanup + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=5 numberofmessages=10000 numberofthreads=10 storage=raven + +Cleanup + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=raven + +Cleanup + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=25 numberofmessages=10000 numberofthreads=10 storage=raven + +Cleanup + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=50 numberofmessages=10000 numberofthreads=10 storage=raven + +Cleanup + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=100 numberofmessages=10000 numberofthreads=10 storage=raven \ No newline at end of file diff --git a/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 b/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 new file mode 100644 index 00000000000..bd0c3b1536d --- /dev/null +++ b/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 @@ -0,0 +1,15 @@ +. .\TestSupport.ps1 + + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=msmq + +Cleanup + + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=inmemory + +Cleanup + +..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=raven + +Cleanup diff --git a/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs b/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs index a36f826efcc..5c2b3c8ff5e 100644 --- a/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs +++ b/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs @@ -16,4 +16,17 @@ public TransportConfig GetConfiguration() }; } } + + + class MsmqConfigOverride : IProvideConfiguration + { + public MsmqMessageQueueConfig GetConfiguration() + { + return new MsmqMessageQueueConfig + { + UseDeadLetterQueue=false, + UseJournalQueue = false + }; + } + } } \ No newline at end of file From 4bd7569d612d3c2bce998cebccea75553e80cb30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Sun, 12 Jan 2014 20:34:48 +0100 Subject: [PATCH 079/146] Switched the perf tests to use the transport connection string --- .../NServiceBus.PerformanceTests.csproj | 2 +- src/NServiceBus.PerformanceTests/Program.cs | 4 +++- .../TransportConfigOverride.cs | 12 ------------ 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj index c8974164697..9ab5b4afa3c 100644 --- a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj +++ b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj @@ -23,7 +23,7 @@ prompt 4 false - false + true AnyCPU diff --git a/src/NServiceBus.PerformanceTests/Program.cs b/src/NServiceBus.PerformanceTests/Program.cs index c812efcbabe..49eab7a7dd1 100644 --- a/src/NServiceBus.PerformanceTests/Program.cs +++ b/src/NServiceBus.PerformanceTests/Program.cs @@ -3,7 +3,6 @@ using System.Collections; using System.Collections.Generic; using System.Diagnostics; - using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -11,6 +10,7 @@ using NServiceBus; using NServiceBus.Features; using Encryption; + using NServiceBus.Unicast.Transport; using Saga; using System; @@ -18,6 +18,8 @@ class Program { static void Main(string[] args) { + TransportConnectionString.Override(() => "deadLetter=false;journal=false"); + var testCaseToRun = args[0]; int numberOfThreads; diff --git a/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs b/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs index 5c2b3c8ff5e..a1d4bbaf54e 100644 --- a/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs +++ b/src/NServiceBus.PerformanceTests/TransportConfigOverride.cs @@ -17,16 +17,4 @@ public TransportConfig GetConfiguration() } } - - class MsmqConfigOverride : IProvideConfiguration - { - public MsmqMessageQueueConfig GetConfiguration() - { - return new MsmqMessageQueueConfig - { - UseDeadLetterQueue=false, - UseJournalQueue = false - }; - } - } } \ No newline at end of file From 3c09ebe328c2c83968116812b9cbf4871fcd934f Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Mon, 13 Jan 2014 13:13:22 +0100 Subject: [PATCH 080/146] Changed FLR retry count from 5 to X, as we need to stay backward compat with settings on older asb queues --- ripple.cmd | 1 + .../When_doing_flr_with_default_settings.cs | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 ripple.cmd diff --git a/ripple.cmd b/ripple.cmd new file mode 100644 index 00000000000..74b6af73f06 --- /dev/null +++ b/ripple.cmd @@ -0,0 +1 @@ +buildsupport\ripple.exe %* \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs b/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs index 888a062e83e..d899fc02bbd 100644 --- a/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs +++ b/src/NServiceBus.AcceptanceTests/Retries/When_doing_flr_with_default_settings.cs @@ -10,20 +10,22 @@ public class When_doing_flr_with_default_settings : NServiceBusAcceptanceTest { + public static Func X = () => 5; + [Test] - public void Should_do_5_retries_by_default_with_dtc_on() + public void Should_do_X_retries_by_default_with_dtc_on() { Scenario.Define(() => new Context { Id = Guid.NewGuid() }) .WithEndpoint(b => b.Given((bus, context) => bus.SendLocal(new MessageToBeRetried{ Id = context.Id }))) - .Done(c => c.HandedOverToSlr || c.NumberOfTimesInvoked > 5) + .Done(c => c.HandedOverToSlr || c.NumberOfTimesInvoked > X()) .Repeat(r => r.For()) - .Should(c => Assert.AreEqual(5, c.NumberOfTimesInvoked, "The FLR should by default retry 5 times")) + .Should(c => Assert.AreEqual(X(), c.NumberOfTimesInvoked, string.Format("The FLR should by default retry {0} times", X()))) .Run(); } [Test] - public void Should_do_5_retries_by_default_with_native_transactions() + public void Should_do_X_retries_by_default_with_native_transactions() { Scenario.Define(() => new Context { Id = Guid.NewGuid() }) .WithEndpoint(b => @@ -31,10 +33,10 @@ public void Should_do_5_retries_by_default_with_native_transactions() b.CustomConfig(c => Configure.Transactions.Advanced(a => a.DisableDistributedTransactions())); b.Given((bus, context) => bus.SendLocal(new MessageToBeRetried { Id = context.Id })); }) - .Done(c => c.HandedOverToSlr || c.NumberOfTimesInvoked > 5) + .Done(c => c.HandedOverToSlr || c.NumberOfTimesInvoked > X()) .Repeat(r => r.For(Transports.Default)) - .Should(c => Assert.AreEqual(5, c.NumberOfTimesInvoked, "The FLR should by default retry 5 times")) - .Run(TimeSpan.FromMinutes(5)); + .Should(c => Assert.AreEqual(X(), c.NumberOfTimesInvoked, string.Format("The FLR should by default retry {0} times", X()))) + .Run(TimeSpan.FromMinutes(X())); } From c2f27fd861ffd94b4cb1e0b4d5961ab9537158d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Mon, 13 Jan 2014 21:34:13 +0100 Subject: [PATCH 081/146] Fixing a bug in the perf tests where inmemory storage was used for all tests --- .../PubSub/PubSubTestCase.cs | 26 +++++++++++++------ .../TestSuites/PubSub.ps1 | 1 + 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs index d8397174c90..6126e693421 100644 --- a/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs +++ b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using System.Transactions; using NServiceBus; using NServiceBus.Features; using NServiceBus.Transports.Msmq; @@ -53,6 +54,9 @@ public override void Run() TransportConfigOverride.MaximumConcurrencyLevel = NumberOfThreads; Feature.Disable(); + + Configure.Transactions.Enable(); + var config = Configure.With() .DefineEndpointName(endpointName) .DefaultBuilder() @@ -72,10 +76,13 @@ public override void Run() break; } - using (var bus = config.InMemorySubscriptionStorage() - .UnicastBus() + using (var bus = config.UnicastBus() .CreateBus()) { + + + Configure.Instance.ForInstallationOn().Install(); + var subscriptionStorage = Configure.Instance.Builder.Build(); var testEventMessage = new MessageType(typeof(RavenTestEvent)); @@ -89,20 +96,23 @@ public override void Run() Settings = new MsmqSettings { UseTransactionalQueues = true } }; - - for (var i = 0; i < NumberOfSubscribers; i++) + using (var tx = new TransactionScope()) { - var subscriberAddress = Address.Parse(endpointName + ".Subscriber" + i); - creator.CreateQueueIfNecessary(subscriberAddress, null); - subscriptionStorage.Subscribe(subscriberAddress, new List + for (var i = 0; i < NumberOfSubscribers; i++) + { + var subscriberAddress = Address.Parse(endpointName + ".Subscriber" + i); + creator.CreateQueueIfNecessary(subscriberAddress, null); + subscriptionStorage.Subscribe(subscriberAddress, new List { testEventMessage }); + } + + tx.Complete(); } - Configure.Instance.ForInstallationOn().Install(); Parallel.For( 0, diff --git a/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 b/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 index bd0c3b1536d..5c745c83912 100644 --- a/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 +++ b/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 @@ -1,5 +1,6 @@ . .\TestSupport.ps1 +Cleanup ..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=msmq From 3a3105b1e4f0e3f836319b80f2368ed89d07f324 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 14 Jan 2014 18:46:30 +1100 Subject: [PATCH 082/146] rename file --- .../NServiceBus.AcceptanceTests.csproj | 2 +- .../PubSub/{PubSubAcceptanceTest.cs => Subscriptions.cs} | 0 .../PubSub/When_publishing_an_event.cs | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/NServiceBus.AcceptanceTests/PubSub/{PubSubAcceptanceTest.cs => Subscriptions.cs} (100%) diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index aa6b051e042..f1caf6e95f2 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -132,7 +132,7 @@ - + diff --git a/src/NServiceBus.AcceptanceTests/PubSub/PubSubAcceptanceTest.cs b/src/NServiceBus.AcceptanceTests/PubSub/Subscriptions.cs similarity index 100% rename from src/NServiceBus.AcceptanceTests/PubSub/PubSubAcceptanceTest.cs rename to src/NServiceBus.AcceptanceTests/PubSub/Subscriptions.cs diff --git a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs index 7095906bf24..c3f5dec98df 100644 --- a/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs +++ b/src/NServiceBus.AcceptanceTests/PubSub/When_publishing_an_event.cs @@ -40,7 +40,7 @@ public void Issue_1851() } [Test] - public void Should_be_delivered_to_allsubscribers() + public void Should_be_delivered_to_all_subscribers() { Scenario.Define() .WithEndpoint(b => From 2e9d8983499d87e89f7fdcfc3f2cf452366ae7ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Tue, 14 Jan 2014 13:26:37 +0100 Subject: [PATCH 083/146] Making sure that we audit the saga type and if of all saga instances a give message invokes. First part of fixing: https://github.com/Particular/ServiceControl/issues/179 --- .../Unicast/Contexts/using_the_unicastbus.cs | 4 ++ src/NServiceBus.Core.Tests/Unicast/Sagas.cs | 21 +++++++++++ src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + .../Contexts/HandlerInvocationContext.cs | 4 -- .../Pipeline/PipelineBuilder.cs | 1 + .../Sagas/AuditInvokedSagaBehavior.cs | 37 +++++++++++++++++++ .../Sagas/SagaPersistenceBehavior.cs | 5 ++- src/NServiceBus/Headers.cs | 6 +++ 8 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 src/NServiceBus.Core/Sagas/AuditInvokedSagaBehavior.cs diff --git a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs index fdcbbddd734..d9f5455939b 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Contexts/using_the_unicastbus.cs @@ -289,6 +289,8 @@ public class using_the_unicastBus : using_a_configured_unicastBus protected Exception ResultingException; + protected TransportMessage AuditedMessage; + protected void ReceiveMessage(TransportMessage transportMessage) { try @@ -303,6 +305,8 @@ protected void ReceiveMessage(TransportMessage transportMessage) ExtensionMethods.SetHeaderAction = (o, s, v) => { transportMessage.Headers[s] = v; }; Transport.FakeMessageBeingProcessed(transportMessage); + + AuditedMessage = transportMessage; } catch (Exception ex) { diff --git a/src/NServiceBus.Core.Tests/Unicast/Sagas.cs b/src/NServiceBus.Core.Tests/Unicast/Sagas.cs index d38e7795cb4..d263c21952e 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Sagas.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Sagas.cs @@ -88,6 +88,27 @@ public void Should_find_existing_instance_by_property() } + [Test] + public void Should_enrich_the_audit_data_with_the_saga_type_and_id() + { + var sagaId = Guid.NewGuid(); + var correlationId = Guid.NewGuid(); + + RegisterSaga(new MySagaData { Id = sagaId, PropertyThatCorrelatesToMessage = correlationId }); + + ReceiveMessage(new MessageThatHitsExistingSaga { PropertyThatCorrelatesToSaga = correlationId }); + + var sagaAuditTrail = AuditedMessage.Headers[Headers.InvokedSagas]; + + var sagas = sagaAuditTrail.Split(';'); + + var sagaInfo = sagas.Single(); + + Assert.AreEqual(typeof(MySaga).FullName,sagaInfo.Split(':').First()); + Assert.AreEqual(sagaId.ToString(), sagaInfo.Split(':').Last()); + } + + class MySaga : Saga, IHandleMessages { public void Handle(MessageThatHitsExistingSaga message) diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 3b6ccf9dfc3..c75fe0e4773 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -156,6 +156,7 @@ + diff --git a/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs b/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs index cd0915ea7e0..1b9ed74f758 100644 --- a/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs +++ b/src/NServiceBus.Core/Pipeline/Contexts/HandlerInvocationContext.cs @@ -25,9 +25,5 @@ public LogicalMessage LogicalMessage { get { return Get(); } } - public TransportMessage PhysicalMessage - { - get { return Get(ReceivePhysicalMessageContext.IncomingPhysicalMessageKey); } - } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Pipeline/PipelineBuilder.cs b/src/NServiceBus.Core/Pipeline/PipelineBuilder.cs index 2e39da2d26e..3e4bf6bec80 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineBuilder.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineBuilder.cs @@ -98,6 +98,7 @@ void CreateHandlerInvocationList() var behaviorList = new BehaviorList(); behaviorList.Add(); + behaviorList.Add(); behaviorList.Add(); behaviorList.Add(); diff --git a/src/NServiceBus.Core/Sagas/AuditInvokedSagaBehavior.cs b/src/NServiceBus.Core/Sagas/AuditInvokedSagaBehavior.cs new file mode 100644 index 00000000000..12e9f350518 --- /dev/null +++ b/src/NServiceBus.Core/Sagas/AuditInvokedSagaBehavior.cs @@ -0,0 +1,37 @@ +namespace NServiceBus.Sagas +{ + using System; + using System.ComponentModel; + using Pipeline; + using Pipeline.Contexts; + + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class AuditInvokedSagaBehavior : IBehavior + { + public void Invoke(HandlerInvocationContext context, Action next) + { + next(); + + ActiveSagaInstance saga; + + if (!context.TryGet(out saga) || saga.NotFound) + { + return; + } + + var audit = string.Format("{0}:{1}",saga.SagaType.FullName,saga.Instance.Entity.Id); + + string header; + + if (context.LogicalMessage.Headers.TryGetValue(Headers.InvokedSagas, out header)) + { + context.LogicalMessage.Headers[Headers.InvokedSagas] += ";" + audit; + } + else + { + context.LogicalMessage.Headers[Headers.InvokedSagas] = audit; + } + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs index f6ae8ccefb1..fcafc33d0cd 100644 --- a/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs +++ b/src/NServiceBus.Core/Sagas/SagaPersistenceBehavior.cs @@ -36,6 +36,9 @@ public void Invoke(HandlerInvocationContext context, Action next) var sagaInstanceState = new ActiveSagaInstance(saga); + //so that other behaviors can access the saga + context.Set(sagaInstanceState); + var loadedEntity = TryLoadSagaEntity(saga, context.LogicalMessage); if (loadedEntity == null) @@ -62,8 +65,6 @@ public void Invoke(HandlerInvocationContext context, Action next) context.MessageHandler.Invocation = HandlerInvocationCache.InvokeTimeout; } - //so that other behaviors can access the saga - context.Set(sagaInstanceState); next(); diff --git a/src/NServiceBus/Headers.cs b/src/NServiceBus/Headers.cs index c6cd016bcee..7729398c213 100644 --- a/src/NServiceBus/Headers.cs +++ b/src/NServiceBus/Headers.cs @@ -54,6 +54,12 @@ public static class Headers /// public const string SagaId = "NServiceBus.SagaId"; + /// + /// Header containing a list of saga types and ids that this message invoked, the format is "{sagatype}={sagaid};{sagatype}={sagaid}" + /// This header is considered an applicative header. + /// + public const string InvokedSagas = "NServiceBus.InvokedSagas"; + /// /// Header telling the timeout manager to clear previous timeouts /// This header is considered an applicative header. From 42c096a39b44cf56e00c852d437edd7885132745 Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Tue, 14 Jan 2014 23:46:03 +1100 Subject: [PATCH 084/146] Use ex.Queue to format exception message sendOptions.Destination empty when publishing messages --- .../Unicast/Behaviors/DispatchMessageToTransportBehavior.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs index 871e2b8f0a1..7c3bff9e08c 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs @@ -79,7 +79,7 @@ public void Invoke(SendPhysicalMessageContext context, Action next) } catch (QueueNotFoundException ex) { - throw new ConfigurationErrorsException("The destination queue '" + sendOptions.Destination + + throw new ConfigurationErrorsException("The destination queue '" + ex.Queue + "' could not be found. You may have misconfigured the destination for this kind of message (" + messageDescription + ") in the MessageEndpointMappings of the UnicastBusConfig section in your configuration file. " + From c1618ecfbf5974bf274760d58ba2630a2b39802a Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Tue, 14 Jan 2014 23:51:06 +1100 Subject: [PATCH 085/146] Clear MSMQ connection cache when starting the bus Bus.Shutdown + Bus.Start will then pick up any queue changes --- src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs b/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs index 665d099fe6b..8e25b165a18 100644 --- a/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs +++ b/src/NServiceBus.Core/Transports/Msmq/MsmqDequeueStrategy.cs @@ -96,6 +96,8 @@ public void Init(Address address, TransactionSettings settings, FuncThe maximum concurrency level supported. public void Start(int maximumConcurrencyLevel) { + MessageQueue.ClearConnectionCache(); + this.maximumConcurrencyLevel = maximumConcurrencyLevel; throttlingSemaphore = new SemaphoreSlim(maximumConcurrencyLevel, maximumConcurrencyLevel); From 8bb0596d119fc60aac11f03647aceb3431e40a79 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 15 Jan 2014 14:18:17 +1100 Subject: [PATCH 086/146] reduce Dict lookups fixes #1627 --- .../Support/ScenarioConfigSource.cs | 11 ++++- .../DistributorReadyMessageProcessor.cs | 5 +- .../Encryption/EncryptionMessageMutator.cs | 5 +- .../Channels/Http/HttpChannelSender.cs | 4 +- .../Gateway/GatewayExtensions.cs | 5 +- .../HeaderManagement/DataBusHeaderManager.cs | 7 +-- .../HeaderManagement/GatewayHeaderManager.cs | 19 ++++---- .../Gateway/HeaderManagement/HeaderMapper.cs | 11 +++-- .../Sites/ConfigurationBasedSiteRouter.cs | 10 ++-- .../Sites/KeyPrefixConventionSiteRouter.cs | 12 +++-- .../Sites/OriginatingSiteHeaderRouter.cs | 5 +- .../Sending/IdempotentChannelForwarder.cs | 6 +-- .../Windows/WindowsImpersonator.cs | 9 ++-- .../MessageHeaders/HeaderBootstrapper.cs | 13 +++--- .../MessageMapper/Reflection/MessageMapper.cs | 5 +- .../SagaPersister/InMemorySagaPersister.cs | 5 +- .../InMemorySubscriptionStorage.cs | 27 +++++++---- .../MsmqSubscriptionStorage.cs | 21 +++++---- .../Pipeline/BehaviorContext.cs | 5 +- src/NServiceBus.Core/Sagas/Sagas.cs | 46 +++++++++++-------- .../InMemoryScheduledTaskStorage.cs | 7 ++- .../Helpers/TransportMessageHelpers.cs | 4 +- .../Serializers/XML/XmlMessageSerializer.cs | 10 ++-- .../Timeout/Core/TimeoutData.cs | 10 ++-- .../Windows/TimeoutMessageProcessor.cs | 26 +++++++---- src/NServiceBus.Core/TransportMessage.cs | 13 +++--- .../Unicast/MessageContext.cs | 5 +- .../Unicast/MessageHandlerRegistry.cs | 9 ++-- .../Unicast/Monitoring/CausationMutator.cs | 7 ++- .../Monitoring/ProcessingStatistics.cs | 11 +++-- .../SubscriptionPredicatesEvaluator.cs | 38 ++++++++++----- .../Utils/Reflection/ExtensionMethods.cs | 9 +++- src/ObjectBuilder.Spring/ComponentConfig.cs | 4 +- .../PropertyInjectionBuilderStrategy.cs | 12 +++-- 34 files changed, 243 insertions(+), 153 deletions(-) diff --git a/src/NServiceBus.AcceptanceTesting/Support/ScenarioConfigSource.cs b/src/NServiceBus.AcceptanceTesting/Support/ScenarioConfigSource.cs index d15c56f4f6e..051586635a8 100644 --- a/src/NServiceBus.AcceptanceTesting/Support/ScenarioConfigSource.cs +++ b/src/NServiceBus.AcceptanceTesting/Support/ScenarioConfigSource.cs @@ -21,15 +21,20 @@ public ScenarioConfigSource(EndpointConfiguration configuration, IDictionary GetFieldsAndProperties(object target) var messageType = target.GetType(); - if (!cache.ContainsKey(messageType)) + IEnumerable members; + if (!cache.TryGetValue(messageType, out members)) { cache[messageType] = messageType.GetMembers(BindingFlags.Public | BindingFlags.Instance) .Where(m => m is FieldInfo || m is PropertyInfo) .ToList(); } - return cache[messageType]; + return members; } HashSet visitedMembers = new HashSet(); diff --git a/src/NServiceBus.Core/Gateway/Channels/Http/HttpChannelSender.cs b/src/NServiceBus.Core/Gateway/Channels/Http/HttpChannelSender.cs index 1250796efa9..869509e79a1 100644 --- a/src/NServiceBus.Core/Gateway/Channels/Http/HttpChannelSender.cs +++ b/src/NServiceBus.Core/Gateway/Channels/Http/HttpChannelSender.cs @@ -46,9 +46,9 @@ static WebHeaderCollection Encode(IDictionary headers) { var webHeaders = new WebHeaderCollection(); - foreach (var header in headers.Keys) + foreach (var pair in headers) { - webHeaders.Add(HttpUtility.UrlEncode(header), HttpUtility.UrlEncode(headers[header])); + webHeaders.Add(HttpUtility.UrlEncode(pair.Key), HttpUtility.UrlEncode(pair.Value)); } return webHeaders; diff --git a/src/NServiceBus.Core/Gateway/GatewayExtensions.cs b/src/NServiceBus.Core/Gateway/GatewayExtensions.cs index 5181276c466..e9e17cfc913 100644 --- a/src/NServiceBus.Core/Gateway/GatewayExtensions.cs +++ b/src/NServiceBus.Core/Gateway/GatewayExtensions.cs @@ -20,9 +20,10 @@ public static bool IsLegacyGatewayMessage(this TransportMessage message) var legacyMode = true; // Gateway v3 would never have sent this header - if (message.Headers.ContainsKey(GatewayHeaders.LegacyMode)) + string legacyModeString; + if (message.Headers.TryGetValue(GatewayHeaders.LegacyMode, out legacyModeString)) { - bool.TryParse(message.Headers[GatewayHeaders.LegacyMode], out legacyMode); + bool.TryParse(legacyModeString, out legacyMode); } return legacyMode; diff --git a/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs b/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs index 5d307096744..f540c25e0a2 100644 --- a/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs +++ b/src/NServiceBus.Core/Gateway/HeaderManagement/DataBusHeaderManager.cs @@ -40,12 +40,13 @@ public IDictionary Reassemble(string clientId, IDictionary Reassemble(string clientId, IDictionary> headers + readonly IDictionary> headers = new Dictionary>(); } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Gateway/HeaderManagement/GatewayHeaderManager.cs b/src/NServiceBus.Core/Gateway/HeaderManagement/GatewayHeaderManager.cs index 3c6b7a4079a..54d5a1cef99 100644 --- a/src/NServiceBus.Core/Gateway/HeaderManagement/GatewayHeaderManager.cs +++ b/src/NServiceBus.Core/Gateway/HeaderManagement/GatewayHeaderManager.cs @@ -9,23 +9,22 @@ public void MutateIncoming(TransportMessage transportMessage) { returnInfo = null; - if (!transportMessage.Headers.ContainsKey(Headers.HttpFrom) && - !transportMessage.Headers.ContainsKey(Headers.OriginatingSite)) + var headers = transportMessage.Headers; + if (!headers.ContainsKey(Headers.HttpFrom) && + !headers.ContainsKey(Headers.OriginatingSite)) { return; } + string originatingSite; + headers.TryGetValue(Headers.OriginatingSite, out originatingSite); + string httpFrom; + headers.TryGetValue(Headers.HttpFrom, out httpFrom); returnInfo = new HttpReturnInfo { //we preserve the httpFrom to be backwards compatible with NServiceBus 2.X - HttpFrom = - transportMessage.Headers.ContainsKey(Headers.HttpFrom) - ? transportMessage.Headers[Headers.HttpFrom] - : null, - OriginatingSite = - transportMessage.Headers.ContainsKey(Headers.OriginatingSite) - ? transportMessage.Headers[Headers.OriginatingSite] - : null, + HttpFrom = httpFrom, + OriginatingSite = originatingSite, ReplyToAddress = transportMessage.ReplyToAddress, LegacyMode = transportMessage.IsLegacyGatewayMessage() }; diff --git a/src/NServiceBus.Core/Gateway/HeaderManagement/HeaderMapper.cs b/src/NServiceBus.Core/Gateway/HeaderManagement/HeaderMapper.cs index ef1161d69c4..c80725aa4ab 100644 --- a/src/NServiceBus.Core/Gateway/HeaderManagement/HeaderMapper.cs +++ b/src/NServiceBus.Core/Gateway/HeaderManagement/HeaderMapper.cs @@ -47,11 +47,11 @@ static Dictionary ExtractHeaders(IDictionary fro { var result = new Dictionary(); - foreach (var header in from.Keys) + foreach (var pair in from) { - if (header.Contains(NServiceBus + Headers.HeaderName)) + if (pair.Key.Contains(NServiceBus + Headers.HeaderName)) { - result.Add(header.Replace(NServiceBus + Headers.HeaderName + ".", String.Empty), from[header]); + result.Add(pair.Key.Replace(NServiceBus + Headers.HeaderName + ".", String.Empty), pair.Value); } } @@ -72,9 +72,10 @@ public static void Map(TransportMessage from, IDictionary to) SetBackwardsCompatibilityHeaders(to); - if (from.Headers.ContainsKey(ReplyToAddress)) + string replyToAddress; + if (from.Headers.TryGetValue(ReplyToAddress, out replyToAddress)) { - to[Headers.RouteTo] = from.Headers[ReplyToAddress]; + to[Headers.RouteTo] = replyToAddress; } from.Headers.ToList() diff --git a/src/NServiceBus.Core/Gateway/Routing/Sites/ConfigurationBasedSiteRouter.cs b/src/NServiceBus.Core/Gateway/Routing/Sites/ConfigurationBasedSiteRouter.cs index 3d6e0b81117..f530d485719 100644 --- a/src/NServiceBus.Core/Gateway/Routing/Sites/ConfigurationBasedSiteRouter.cs +++ b/src/NServiceBus.Core/Gateway/Routing/Sites/ConfigurationBasedSiteRouter.cs @@ -16,15 +16,17 @@ public ConfigurationBasedSiteRouter() public IEnumerable GetDestinationSitesFor(TransportMessage messageToDispatch) { - if (messageToDispatch.Headers.ContainsKey(Headers.DestinationSites)) + string destinationSites; + if (messageToDispatch.Headers.TryGetValue(Headers.DestinationSites, out destinationSites)) { - var siteKeys = messageToDispatch.Headers[Headers.DestinationSites].Split(','); + var siteKeys = destinationSites.Split(','); foreach (var siteKey in siteKeys) { - if (sites.ContainsKey(siteKey)) + Site site; + if (sites.TryGetValue(siteKey, out site)) { - yield return sites[siteKey]; + yield return site; } } } diff --git a/src/NServiceBus.Core/Gateway/Routing/Sites/KeyPrefixConventionSiteRouter.cs b/src/NServiceBus.Core/Gateway/Routing/Sites/KeyPrefixConventionSiteRouter.cs index 0aa36100c8c..a9c6fce072e 100644 --- a/src/NServiceBus.Core/Gateway/Routing/Sites/KeyPrefixConventionSiteRouter.cs +++ b/src/NServiceBus.Core/Gateway/Routing/Sites/KeyPrefixConventionSiteRouter.cs @@ -7,10 +7,10 @@ public class KeyPrefixConventionSiteRouter : IRouteMessagesToSites { public IEnumerable GetDestinationSitesFor(TransportMessage messageToDispatch) { - if (messageToDispatch.Headers.ContainsKey(Headers.DestinationSites)) + string sites; + if (messageToDispatch.Headers.TryGetValue(Headers.DestinationSites, out sites)) { - var siteKeys = messageToDispatch.Headers[Headers.DestinationSites].Split(','); - + var siteKeys = sites.Split(','); foreach (var siteKey in siteKeys) { @@ -20,7 +20,11 @@ public IEnumerable GetDestinationSitesFor(TransportMessage messageToDispat { yield return new Site { - Channel = new Channel {Address = siteKey, Type = parts[0]}, + Channel = new Channel + { + Address = siteKey, + Type = parts[0] + }, Key = siteKey }; } diff --git a/src/NServiceBus.Core/Gateway/Routing/Sites/OriginatingSiteHeaderRouter.cs b/src/NServiceBus.Core/Gateway/Routing/Sites/OriginatingSiteHeaderRouter.cs index e9db935abba..a42e240087a 100644 --- a/src/NServiceBus.Core/Gateway/Routing/Sites/OriginatingSiteHeaderRouter.cs +++ b/src/NServiceBus.Core/Gateway/Routing/Sites/OriginatingSiteHeaderRouter.cs @@ -7,11 +7,12 @@ public class OriginatingSiteHeaderRouter : IRouteMessagesToSites { public IEnumerable GetDestinationSitesFor(TransportMessage messageToDispatch) { - if (messageToDispatch.Headers.ContainsKey(Headers.OriginatingSite)) + string originatingSite; + if (messageToDispatch.Headers.TryGetValue(Headers.OriginatingSite, out originatingSite)) { yield return new Site { - Channel = Channel.Parse(messageToDispatch.Headers[Headers.OriginatingSite]), + Channel = Channel.Parse(originatingSite), Key = "Default reply channel", LegacyMode = messageToDispatch.IsLegacyGatewayMessage() }; diff --git a/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs b/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs index 2ac550d45fc..b46faa037c0 100644 --- a/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs +++ b/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs @@ -55,13 +55,11 @@ void Transmit(IChannelSender channelSender, Site targetSite, CallType callType, channelSender.Send(targetSite.Channel.Address, headers, data); } - void TransmitDataBusProperties(IChannelSender channelSender, Site targetSite, - IDictionary headers) + void TransmitDataBusProperties(IChannelSender channelSender, Site targetSite, IDictionary headers) { var headersToSend = new Dictionary(headers); - foreach ( - var headerKey in headers.Keys.Where(headerKey => headerKey.Contains(HeaderMapper.DATABUS_PREFIX))) + foreach (var headerKey in headers.Keys.Where(headerKey => headerKey.Contains(HeaderMapper.DATABUS_PREFIX))) { if (DataBus == null) { diff --git a/src/NServiceBus.Core/Impersonation/Windows/WindowsImpersonator.cs b/src/NServiceBus.Core/Impersonation/Windows/WindowsImpersonator.cs index 0389f37484d..83fbcc5a528 100644 --- a/src/NServiceBus.Core/Impersonation/Windows/WindowsImpersonator.cs +++ b/src/NServiceBus.Core/Impersonation/Windows/WindowsImpersonator.cs @@ -15,19 +15,18 @@ public class WindowsImpersonator : ExtractIncomingPrincipal { public IPrincipal GetPrincipal(TransportMessage message) { - if (!message.Headers.ContainsKey(Headers.WindowsIdentityName)) + string windowsIdentityName; + if (!message.Headers.TryGetValue(Headers.WindowsIdentityName, out windowsIdentityName)) { return null; } - var name = message.Headers[Headers.WindowsIdentityName]; - - if (name == null) + if (windowsIdentityName == null) { return null; } - return new GenericPrincipal(new GenericIdentity(name), new string[0]); + return new GenericPrincipal(new GenericIdentity(windowsIdentityName), new string[0]); } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs b/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs index 24cf769c240..450f3780b1c 100644 --- a/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs +++ b/src/NServiceBus.Core/MessageHeaders/HeaderBootstrapper.cs @@ -35,14 +35,15 @@ public void SetupHeaderActions() // when we remove the multi message feature we can remove this and instead // share the same header collection btw physical and logical message var bus = Builder.Build(); - if (bus.CurrentMessageContext != null && bus.CurrentMessageContext.Headers.ContainsKey(key)) + if (bus.CurrentMessageContext != null) { - return bus.CurrentMessageContext.Headers[key]; - } - else - { - return null; + string value; + if (bus.CurrentMessageContext.Headers.TryGetValue(key, out value)) + { + return value; + } } + return null; } Dictionary> outgoingHeaders; diff --git a/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs b/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs index 6277acd4e39..e82a0d8132d 100644 --- a/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs +++ b/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs @@ -363,9 +363,10 @@ public Type GetMappedTypeFor(string typeName) name = typeName.Substring(0, typeName.Length - SUFFIX.Length); } - if (nameToType.ContainsKey(name)) + Type type; + if (nameToType.TryGetValue(name, out type)) { - return nameToType[name]; + return type; } return Type.GetType(name); diff --git a/src/NServiceBus.Core/Persistence/InMemory/SagaPersister/InMemorySagaPersister.cs b/src/NServiceBus.Core/Persistence/InMemory/SagaPersister/InMemorySagaPersister.cs index e7f1f7e3931..fd1be48f53c 100644 --- a/src/NServiceBus.Core/Persistence/InMemory/SagaPersister/InMemorySagaPersister.cs +++ b/src/NServiceBus.Core/Persistence/InMemory/SagaPersister/InMemorySagaPersister.cs @@ -60,9 +60,10 @@ public void Save(IContainSagaData saga) { ValidateUniqueProperties(saga); - if (data.ContainsKey(saga.Id)) + VersionedSagaEntity sagaEntity; + if (data.TryGetValue(saga.Id, out sagaEntity)) { - data[saga.Id].ConcurrencyCheck(); + sagaEntity.ConcurrencyCheck(); } data[saga.Id] = new VersionedSagaEntity { SagaEntity = DeepClone(saga) }; diff --git a/src/NServiceBus.Core/Persistence/InMemory/SubscriptionStorage/InMemorySubscriptionStorage.cs b/src/NServiceBus.Core/Persistence/InMemory/SubscriptionStorage/InMemorySubscriptionStorage.cs index d9b4ff4131b..d609275395c 100644 --- a/src/NServiceBus.Core/Persistence/InMemory/SubscriptionStorage/InMemorySubscriptionStorage.cs +++ b/src/NServiceBus.Core/Persistence/InMemory/SubscriptionStorage/InMemorySubscriptionStorage.cs @@ -15,11 +15,16 @@ void ISubscriptionStorage.Subscribe(Address address, IEnumerable me { messageTypes.ToList().ForEach(m => { - if (!storage.ContainsKey(m)) - storage[m] = new List
(); + List
list; + if (!storage.TryGetValue(m, out list)) + { + storage[m] = list = new List
(); + } - if (!storage[m].Contains(address)) - storage[m].Add(address); + if (!list.Contains(address)) + { + list.Add(address); + } }); } @@ -27,8 +32,11 @@ void ISubscriptionStorage.Unsubscribe(Address address, IEnumerable { messageTypes.ToList().ForEach(m => { - if (storage.ContainsKey(m)) - storage[m].Remove(address); + List
list; + if (storage.TryGetValue(m, out list)) + { + list.Remove(address); + } }); } @@ -38,8 +46,11 @@ IEnumerable
ISubscriptionStorage.GetSubscriberAddressesForMessage(IEnum var result = new List
(); messageTypes.ToList().ForEach(m => { - if (storage.ContainsKey(m)) - result.AddRange(storage[m]); + List
list; + if (storage.TryGetValue(m, out list)) + { + result.AddRange(list); + } }); return result.Distinct(); diff --git a/src/NServiceBus.Core/Persistence/Msmq/SubscriptionStorage/MsmqSubscriptionStorage.cs b/src/NServiceBus.Core/Persistence/Msmq/SubscriptionStorage/MsmqSubscriptionStorage.cs index a88f8517e54..a8a1aa4c95a 100644 --- a/src/NServiceBus.Core/Persistence/Msmq/SubscriptionStorage/MsmqSubscriptionStorage.cs +++ b/src/NServiceBus.Core/Persistence/Msmq/SubscriptionStorage/MsmqSubscriptionStorage.cs @@ -194,14 +194,19 @@ public Address Queue /// private void AddToLookup(Address subscriber, MessageType typeName, string messageId) { - lock (lookup) - { - if (!lookup.ContainsKey(subscriber)) - lookup.Add(subscriber, new Dictionary()); - - if (!lookup[subscriber].ContainsKey(typeName)) - lookup[subscriber].Add(typeName, messageId); - } + lock (lookup) + { + Dictionary dictionary; + if (!lookup.TryGetValue(subscriber, out dictionary)) + { + lookup[subscriber] = dictionary = new Dictionary(); + } + + if (!dictionary.ContainsKey(typeName)) + { + dictionary.Add(typeName, messageId); + } + } } string RemoveFromLookup(Address subscriber, MessageType typeName) diff --git a/src/NServiceBus.Core/Pipeline/BehaviorContext.cs b/src/NServiceBus.Core/Pipeline/BehaviorContext.cs index 1cc6e7d17d7..a57af35640b 100644 --- a/src/NServiceBus.Core/Pipeline/BehaviorContext.cs +++ b/src/NServiceBus.Core/Pipeline/BehaviorContext.cs @@ -42,9 +42,10 @@ public bool TryGet(out T result) public bool TryGet(string key,out T result) { - if (stash.ContainsKey(key)) + object value; + if (stash.TryGetValue(key, out value)) { - result = (T)stash[key]; + result = (T)value; return true; } diff --git a/src/NServiceBus.Core/Sagas/Sagas.cs b/src/NServiceBus.Core/Sagas/Sagas.cs index 342121bd04c..95cd54f9198 100644 --- a/src/NServiceBus.Core/Sagas/Sagas.cs +++ b/src/NServiceBus.Core/Sagas/Sagas.cs @@ -83,17 +83,17 @@ internal static void ConfigureHowToFindSagaWithMessage(Type sagaType, PropertyIn void CreateAdditionalFindersAsNecessary() { - foreach (var sagaEntityType in SagaEntityToMessageToPropertyLookup.Keys) - foreach (var messageType in SagaEntityToMessageToPropertyLookup[sagaEntityType].Keys) + foreach (var sagaEntityPair in SagaEntityToMessageToPropertyLookup) + { + foreach (var messageType in sagaEntityPair.Value.Keys) { - var pair = SagaEntityToMessageToPropertyLookup[sagaEntityType][messageType]; - CreatePropertyFinder(sagaEntityType, messageType, pair.Key, pair.Value); + var pair = sagaEntityPair.Value[messageType]; + CreatePropertyFinder(sagaEntityPair.Key, messageType, pair.Key, pair.Value); } + } - foreach (var sagaType in SagaTypeToSagaEntityTypeLookup.Keys) + foreach (var sagaEntityType in SagaTypeToSagaEntityTypeLookup.Values) { - var sagaEntityType = SagaTypeToSagaEntityTypeLookup[sagaType]; - var sagaHeaderIdFinder = typeof(HeaderSagaIdFinder<>).MakeGenericType(sagaEntityType); Configure.Component(sagaHeaderIdFinder, DependencyLifecycle.InstancePerCall); ConfigureFinder(sagaHeaderIdFinder); @@ -201,9 +201,15 @@ public static MethodInfo GetFindByMethodForFinder(IFinder finder, object message methods.TryGetValue(message.GetType(), out result); if (result == null) - foreach (var messageType in methods.Keys) - if (messageType.IsInstanceOfType(message)) - result = methods[messageType]; + { + foreach (var messageTypePair in methods) + { + if (messageTypePair.Key.IsInstanceOfType(message)) + { + result = messageTypePair.Value; + } + } + } } return result; @@ -215,18 +221,18 @@ public static MethodInfo GetFindByMethodForFinder(IFinder finder, object message [ObsoleteEx(Replacement = "GetFindersForMessageAndEntity", TreatAsErrorFromVersion = "4.3")] public static IEnumerable GetFindersFor(object m) { - foreach (var finderType in FinderTypeToMessageToMethodInfoLookup.Keys) + foreach (var finderPair in FinderTypeToMessageToMethodInfoLookup) { - var messageToMethodInfo = FinderTypeToMessageToMethodInfoLookup[finderType]; + var messageToMethodInfo = finderPair.Value; if (messageToMethodInfo.ContainsKey(m.GetType())) { - yield return finderType; + yield return finderPair.Key; continue; } foreach (var messageType in messageToMethodInfo.Keys) if (messageType.IsInstanceOfType(m)) - yield return finderType; + yield return finderPair.Key; } } @@ -238,23 +244,23 @@ public static IEnumerable GetFindersForMessageAndEntity(Type messageType, var findersWithExactMatch = new List(); var findersMatchingBaseTypes = new List(); - foreach (var finderType in FinderTypeToMessageToMethodInfoLookup.Keys) + foreach (var finderPair in FinderTypeToMessageToMethodInfoLookup) { - var messageToMethodInfo = FinderTypeToMessageToMethodInfoLookup[finderType]; + var messageToMethodInfo = finderPair.Value; MethodInfo methodInfo; if (messageToMethodInfo.TryGetValue(messageType, out methodInfo) && methodInfo.ReturnType == entityType) { - findersWithExactMatch.Add(finderType); + findersWithExactMatch.Add(finderPair.Key); } else { - foreach (var otherMessage in messageToMethodInfo.Keys) + foreach (var otherMessagePair in messageToMethodInfo) { - if (otherMessage.IsAssignableFrom(messageType) && messageToMethodInfo[otherMessage].ReturnType == entityType) + if (otherMessagePair.Key.IsAssignableFrom(messageType) && otherMessagePair.Value.ReturnType == entityType) { - findersMatchingBaseTypes.Add(finderType); + findersMatchingBaseTypes.Add(finderPair.Key); } } } diff --git a/src/NServiceBus.Core/Scheduling/InMemoryScheduledTaskStorage.cs b/src/NServiceBus.Core/Scheduling/InMemoryScheduledTaskStorage.cs index 08e10994c7b..7f0d09442c4 100644 --- a/src/NServiceBus.Core/Scheduling/InMemoryScheduledTaskStorage.cs +++ b/src/NServiceBus.Core/Scheduling/InMemoryScheduledTaskStorage.cs @@ -15,10 +15,9 @@ public void Add(ScheduledTask scheduledTask) public ScheduledTask Get(Guid taskId) { - if (scheduledTasks.ContainsKey(taskId)) - return scheduledTasks[taskId]; - - return null; + ScheduledTask task; + scheduledTasks.TryGetValue(taskId, out task); + return task; } public IDictionary Tasks diff --git a/src/NServiceBus.Core/SecondLevelRetries/Helpers/TransportMessageHelpers.cs b/src/NServiceBus.Core/SecondLevelRetries/Helpers/TransportMessageHelpers.cs index d80690b3166..300c1eda410 100644 --- a/src/NServiceBus.Core/SecondLevelRetries/Helpers/TransportMessageHelpers.cs +++ b/src/NServiceBus.Core/SecondLevelRetries/Helpers/TransportMessageHelpers.cs @@ -26,7 +26,9 @@ public static Address GetAddressOfFaultingEndpoint(TransportMessage message) public static string GetHeader(TransportMessage message, string key) { - return message.Headers.ContainsKey(key) ? message.Headers[key] : null; + string value; + message.Headers.TryGetValue(key, out value); + return value; } public static bool HeaderExists(TransportMessage message, string key) diff --git a/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs b/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs index 599c925bc72..6238df926c4 100644 --- a/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs +++ b/src/NServiceBus.Core/Serializers/XML/XmlMessageSerializer.cs @@ -779,9 +779,10 @@ object GetPropertyValue(Type type, XmlNode n) typeToCreate = typesToCreateForArrays[type]; } - if (typesToCreateForEnumerables.ContainsKey(type)) //handle IEnumerable + Type typeToCreateForEnumerables; + if (typesToCreateForEnumerables.TryGetValue(type, out typeToCreateForEnumerables)) //handle IEnumerable { - typeToCreate = typesToCreateForEnumerables[type]; + typeToCreate = typeToCreateForEnumerables; } if (typeof(IList).IsAssignableFrom(typeToCreate)) @@ -907,12 +908,13 @@ void Write(StringBuilder builder, Type t, object obj) return; } - if (!typeToProperties.ContainsKey(t)) + IEnumerable properties; + if (!typeToProperties.TryGetValue(t, out properties)) { throw new InvalidOperationException(string.Format("Type {0} was not registered in the serializer. Check that it appears in the list of configured assemblies/types to scan.", t.FullName)); } - foreach (var prop in typeToProperties[t]) + foreach (var prop in properties) { if (IsIndexedProperty(prop)) { diff --git a/src/NServiceBus.Core/Timeout/Core/TimeoutData.cs b/src/NServiceBus.Core/Timeout/Core/TimeoutData.cs index ac98f3bb27f..7252ae7fc4a 100644 --- a/src/NServiceBus.Core/Timeout/Core/TimeoutData.cs +++ b/src/NServiceBus.Core/Timeout/Core/TimeoutData.cs @@ -67,10 +67,14 @@ public override string ToString() public TransportMessage ToTransportMessage() { var replyToAddress = Address.Local; - if (Headers != null && Headers.ContainsKey(OriginalReplyToAddress)) + if (Headers != null) { - replyToAddress = Address.Parse(Headers[OriginalReplyToAddress]); - Headers.Remove(OriginalReplyToAddress); + string originalReplyToAddressValue; + if (Headers.TryGetValue(OriginalReplyToAddress, out originalReplyToAddressValue)) + { + replyToAddress = Address.Parse(originalReplyToAddressValue); + Headers.Remove(OriginalReplyToAddress); + } } var transportMessage = new TransportMessage(Id,Headers) diff --git a/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutMessageProcessor.cs b/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutMessageProcessor.cs index 818e501b8b8..ba0a92f9e60 100644 --- a/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutMessageProcessor.cs +++ b/src/NServiceBus.Core/Timeout/Hosting/Windows/TimeoutMessageProcessor.cs @@ -45,9 +45,13 @@ public bool Handle(TransportMessage message) { //dispatch request will arrive at the same input so we need to make sure to call the correct handler if (message.Headers.ContainsKey(TimeoutIdToDispatchHeader)) + { HandleBackwardsCompatibility(message); + } else + { HandleInternal(message); + } return true; } @@ -62,9 +66,10 @@ void HandleBackwardsCompatibility(TransportMessage message) message.Headers.Remove(TimeoutIdToDispatchHeader); message.Headers.Remove(TimeoutDestinationHeader); - if (message.Headers.ContainsKey(TimeoutManagerHeaders.RouteExpiredTimeoutTo)) + string routeExpiredTimeoutTo; + if (message.Headers.TryGetValue(TimeoutManagerHeaders.RouteExpiredTimeoutTo, out routeExpiredTimeoutTo)) { - destination = Address.Parse(message.Headers[TimeoutManagerHeaders.RouteExpiredTimeoutTo]); + destination = Address.Parse(routeExpiredTimeoutTo); } TimeoutManager.RemoveTimeout(timeoutId); @@ -75,9 +80,10 @@ void HandleInternal(TransportMessage message) { var sagaId = Guid.Empty; - if (message.Headers.ContainsKey(Headers.SagaId)) + string sagaIdString; + if (message.Headers.TryGetValue(Headers.SagaId, out sagaIdString)) { - sagaId = Guid.Parse(message.Headers[Headers.SagaId]); + sagaId = Guid.Parse(sagaIdString); } if (message.Headers.ContainsKey(TimeoutManagerHeaders.ClearTimeouts)) @@ -89,14 +95,18 @@ void HandleInternal(TransportMessage message) } else { - if (!message.Headers.ContainsKey(TimeoutManagerHeaders.Expire)) + string expire; + if (!message.Headers.TryGetValue(TimeoutManagerHeaders.Expire, out expire)) + { throw new InvalidOperationException("Non timeout message arrived at the timeout manager, id:" + message.Id); + } var destination = message.ReplyToAddress; - if (message.Headers.ContainsKey(TimeoutManagerHeaders.RouteExpiredTimeoutTo)) + string routeExpiredTimeoutTo; + if (message.Headers.TryGetValue(TimeoutManagerHeaders.RouteExpiredTimeoutTo, out routeExpiredTimeoutTo)) { - destination = Address.Parse(message.Headers[TimeoutManagerHeaders.RouteExpiredTimeoutTo]); + destination = Address.Parse(routeExpiredTimeoutTo); } var data = new TimeoutData @@ -104,7 +114,7 @@ void HandleInternal(TransportMessage message) Destination = destination, SagaId = sagaId, State = message.Body, - Time = DateTimeExtensions.ToUtcDateTime(message.Headers[TimeoutManagerHeaders.Expire]), + Time = DateTimeExtensions.ToUtcDateTime(expire), CorrelationId = GetCorrelationIdToStore(message), Headers = message.Headers, OwningTimeoutManager = Configure.EndpointName diff --git a/src/NServiceBus.Core/TransportMessage.cs b/src/NServiceBus.Core/TransportMessage.cs index 3b0963ba6b6..e9a923a0b8c 100644 --- a/src/NServiceBus.Core/TransportMessage.cs +++ b/src/NServiceBus.Core/TransportMessage.cs @@ -56,12 +56,12 @@ public string Id { get { - if (!Headers.ContainsKey(NServiceBus.Headers.MessageId)) + string headerId; + if (Headers.TryGetValue(NServiceBus.Headers.MessageId, out headerId)) { - return id; + return headerId; } - - return Headers[NServiceBus.Headers.MessageId]; + return id; } } @@ -114,9 +114,10 @@ public MessageIntentEnum MessageIntent { var messageIntent = default(MessageIntentEnum); - if (Headers.ContainsKey(NServiceBus.Headers.MessageIntent)) + string messageIntentString; + if (Headers.TryGetValue(NServiceBus.Headers.MessageIntent, out messageIntentString)) { - Enum.TryParse(Headers[NServiceBus.Headers.MessageIntent], true, out messageIntent); + Enum.TryParse(messageIntentString, true, out messageIntent); } return messageIntent; diff --git a/src/NServiceBus.Core/Unicast/MessageContext.cs b/src/NServiceBus.Core/Unicast/MessageContext.cs index cb5cb42f4b6..92f342c0f02 100644 --- a/src/NServiceBus.Core/Unicast/MessageContext.cs +++ b/src/NServiceBus.Core/Unicast/MessageContext.cs @@ -27,9 +27,10 @@ public DateTime TimeSent { get { - if (transportMessage.Headers.ContainsKey(Headers.TimeSent)) + string timeSent; + if (transportMessage.Headers.TryGetValue(Headers.TimeSent, out timeSent)) { - return DateTimeExtensions.ToUtcDateTime(transportMessage.Headers[Headers.TimeSent]); + return DateTimeExtensions.ToUtcDateTime(timeSent); } return DateTime.MinValue; diff --git a/src/NServiceBus.Core/Unicast/MessageHandlerRegistry.cs b/src/NServiceBus.Core/Unicast/MessageHandlerRegistry.cs index 21a8bbdd3f2..5c11cc3a3fd 100644 --- a/src/NServiceBus.Core/Unicast/MessageHandlerRegistry.cs +++ b/src/NServiceBus.Core/Unicast/MessageHandlerRegistry.cs @@ -47,14 +47,15 @@ public void RegisterHandler(Type handlerType) foreach (var messageType in messageTypesThisHandlerHandles) { - if (!handlerList.ContainsKey(handlerType)) + List typeList; + if (!handlerList.TryGetValue(handlerType, out typeList)) { - handlerList.Add(handlerType, new List()); + handlerList[handlerType] = typeList = new List(); } - if (!(handlerList[handlerType].Contains(messageType))) + if (!typeList.Contains(messageType)) { - handlerList[handlerType].Add(messageType); + typeList.Add(messageType); Log.DebugFormat("Associated '{0}' message with '{1}' handler", messageType, handlerType); } diff --git a/src/NServiceBus.Core/Unicast/Monitoring/CausationMutator.cs b/src/NServiceBus.Core/Unicast/Monitoring/CausationMutator.cs index 88870ffd467..d4e29bb6c32 100644 --- a/src/NServiceBus.Core/Unicast/Monitoring/CausationMutator.cs +++ b/src/NServiceBus.Core/Unicast/Monitoring/CausationMutator.cs @@ -27,8 +27,11 @@ public void MutateOutgoing(object[] messages, TransportMessage transportMessage) { transportMessage.Headers[Headers.RelatedTo] = Bus.CurrentMessageContext.Id; - if (Bus.CurrentMessageContext.Headers.ContainsKey(Headers.ConversationId)) - conversationId = Bus.CurrentMessageContext.Headers[Headers.ConversationId]; + string conversationIdFromCurrentMessageContext; + if (Bus.CurrentMessageContext.Headers.TryGetValue(Headers.ConversationId, out conversationIdFromCurrentMessageContext)) + { + conversationId = conversationIdFromCurrentMessageContext; + } } transportMessage.Headers[Headers.ConversationId] = conversationId; diff --git a/src/NServiceBus.Core/Unicast/Monitoring/ProcessingStatistics.cs b/src/NServiceBus.Core/Unicast/Monitoring/ProcessingStatistics.cs index f953470b585..03017d05ddc 100644 --- a/src/NServiceBus.Core/Unicast/Monitoring/ProcessingStatistics.cs +++ b/src/NServiceBus.Core/Unicast/Monitoring/ProcessingStatistics.cs @@ -35,20 +35,25 @@ public void End(Exception ex = null) Bus.CurrentMessageContext.Headers[Headers.ProcessingEnded] = DateTimeExtensions.ToWireFormattedString(now); - if (Bus.CurrentMessageContext.Headers.ContainsKey(Headers.TimeSent)) + string timeSent; + if (Bus.CurrentMessageContext.Headers.TryGetValue(Headers.TimeSent, out timeSent)) { - UpdateCounters(DateTimeExtensions.ToUtcDateTime(Bus.CurrentMessageContext.Headers[Headers.TimeSent]), DateTimeExtensions.ToUtcDateTime(Bus.CurrentMessageContext.Headers[Headers.ProcessingStarted]), now); + UpdateCounters(DateTimeExtensions.ToUtcDateTime(timeSent), DateTimeExtensions.ToUtcDateTime(Bus.CurrentMessageContext.Headers[Headers.ProcessingStarted]), now); } } void UpdateCounters(DateTime timeSent, DateTime processingStarted, DateTime processingEnded) { - if(CriticalTimeCounter != null) + if (CriticalTimeCounter != null) + { CriticalTimeCounter.Update(timeSent, processingStarted,processingEnded); + } if (EstimatedTimeToSLABreachCalculator != null) + { EstimatedTimeToSLABreachCalculator.Update(timeSent, processingStarted, processingEnded); + } } public void Init() diff --git a/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/SubcriberSideFiltering/SubscriptionPredicatesEvaluator.cs b/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/SubcriberSideFiltering/SubscriptionPredicatesEvaluator.cs index 119e4aeffc0..31e74af3289 100644 --- a/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/SubcriberSideFiltering/SubscriptionPredicatesEvaluator.cs +++ b/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/SubcriberSideFiltering/SubscriptionPredicatesEvaluator.cs @@ -22,11 +22,18 @@ public IList> GetConditionsForMessage(object message) var result = new List>(); lock (locker) - if (messageTypeToConditionLookup.ContainsKey(message.GetType())) - foreach (var condition in messageTypeToConditionLookup[message.GetType()]) + { + List> conditionLookup; + if (messageTypeToConditionLookup.TryGetValue(message.GetType(), out conditionLookup)) + { + foreach (var condition in conditionLookup) + { result.Add(condition); + } + } + } - return result; + return result; } /// @@ -39,17 +46,24 @@ public IList> GetConditionsForMessage(object message) /// are to be published to a subscriber. public void AddConditionForSubscriptionToMessageType(Type messageType, Predicate condition) { - if (condition == null) - return; + if (condition == null) + { + return; + } - lock (locker) - { - if (!messageTypeToConditionLookup.ContainsKey(messageType)) - messageTypeToConditionLookup.Add(messageType, new List>()); + lock (locker) + { + List> conditionLookup; + if (!messageTypeToConditionLookup.TryGetValue(messageType, out conditionLookup)) + { + messageTypeToConditionLookup[messageType] = conditionLookup = new List>(); + } - if (!messageTypeToConditionLookup[messageType].Contains(condition)) - messageTypeToConditionLookup[messageType].Add(condition); - } + if (!conditionLookup.Contains(condition)) + { + conditionLookup.Add(condition); + } + } } private readonly IDictionary>> messageTypeToConditionLookup = new Dictionary>>(); diff --git a/src/NServiceBus.Core/Utils/Reflection/ExtensionMethods.cs b/src/NServiceBus.Core/Utils/Reflection/ExtensionMethods.cs index ae508464f08..3ea6fac012a 100644 --- a/src/NServiceBus.Core/Utils/Reflection/ExtensionMethods.cs +++ b/src/NServiceBus.Core/Utils/Reflection/ExtensionMethods.cs @@ -76,8 +76,13 @@ public static bool IsSimpleType(this Type type) public static string SerializationFriendlyName(this Type t) { lock(TypeToNameLookup) - if (TypeToNameLookup.ContainsKey(t)) - return TypeToNameLookup[t]; + { + string typeName; + if (TypeToNameLookup.TryGetValue(t, out typeName)) + { + return typeName; + } + } var index = t.Name.IndexOf('`'); if (index >= 0) diff --git a/src/ObjectBuilder.Spring/ComponentConfig.cs b/src/ObjectBuilder.Spring/ComponentConfig.cs index bd5016d7c11..b2e202851f0 100644 --- a/src/ObjectBuilder.Spring/ComponentConfig.cs +++ b/src/ObjectBuilder.Spring/ComponentConfig.cs @@ -9,9 +9,9 @@ class ComponentConfig : IComponentConfig public void Configure(ObjectDefinitionBuilder builder) { - foreach (var key in properties.Keys) + foreach (var keyValue in properties) { - builder.AddPropertyValue(key, properties[key]); + builder.AddPropertyValue(keyValue.Key, keyValue.Value); } } diff --git a/src/ObjectBuilder.Unity/PropertyInjectionBuilderStrategy.cs b/src/ObjectBuilder.Unity/PropertyInjectionBuilderStrategy.cs index 8a1fe8c983c..52ff3370a59 100644 --- a/src/ObjectBuilder.Unity/PropertyInjectionBuilderStrategy.cs +++ b/src/ObjectBuilder.Unity/PropertyInjectionBuilderStrategy.cs @@ -18,12 +18,13 @@ public PropertyInjectionBuilderStrategy(IUnityContainer unityContainer) public static void SetPropertyValue(Type type, string name,object value) { - if (!configuredProperties.ContainsKey(type)) + List> properties; + if (!configuredProperties.TryGetValue(type, out properties)) { - configuredProperties.Add(type,new List>()); + configuredProperties[type] = properties = new List>(); } - configuredProperties[type].Add(new Tuple(name,value)); + properties.Add(new Tuple(name, value)); } public override void PreBuildUp(IBuilderContext context) @@ -44,9 +45,10 @@ public override void PreBuildUp(IBuilderContext context) property.SetValue(context.Existing, unityContainer.Resolve(property.PropertyType),null); } - if(configuredProperties.ContainsKey(type)) + List> configuredProperty; + if(configuredProperties.TryGetValue(type, out configuredProperty)) { - var p = configuredProperties[type].FirstOrDefault(t => t.Item1 == property.Name); + var p = configuredProperty.FirstOrDefault(t => t.Item1 == property.Name); if (p != null) { From 5c48b819db1895f5c4cee0473bcc815b9a134126 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 15 Jan 2014 19:12:09 +1100 Subject: [PATCH 087/146] obsolete AddSystemMessagesAs fixes #1574 --- .../Config/Conventions/SystemMessageConventions.cs | 3 ++- .../MessageMapper/Reflection/MessageMapper.cs | 2 +- src/NServiceBus.Core/Sagas/ConfigureTimeoutAsSystemMessages.cs | 2 +- .../Configuration/ConfigureScheduledTaskAsSystemMessages.cs | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.Core/Config/Conventions/SystemMessageConventions.cs b/src/NServiceBus.Core/Config/Conventions/SystemMessageConventions.cs index 56f743e45ae..1569134e97f 100644 --- a/src/NServiceBus.Core/Config/Conventions/SystemMessageConventions.cs +++ b/src/NServiceBus.Core/Config/Conventions/SystemMessageConventions.cs @@ -5,12 +5,12 @@ namespace NServiceBus.Config.Conventions /// /// Define system message convention /// + [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "4.0")] public static class SystemMessageConventions { /// /// Add system messages convention /// - [ObsoleteEx(Message = "Moved to NServiceBus namespace.", RemoveInVersion = "5.0", TreatAsErrorFromVersion = "4.0")] public static Configure AddSystemMessagesAs(this Configure config, Func definesMessageType) { MessageConventionExtensions.AddSystemMessagesConventions(definesMessageType); @@ -26,6 +26,7 @@ namespace NServiceBus /// /// Define system message convention /// + [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "4.0")] public static class SystemMessageConventions { /// diff --git a/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs b/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs index 6277acd4e39..0b23d5c8703 100644 --- a/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs +++ b/src/NServiceBus.Core/MessageInterfaces/MessageMapper/Reflection/MessageMapper.cs @@ -409,7 +409,7 @@ public object CreateInstance(Type t) } } - ConstructorInfo constructor = null; + ConstructorInfo constructor; typeToConstructor.TryGetValue(mapped, out constructor); if (constructor != null) { diff --git a/src/NServiceBus.Core/Sagas/ConfigureTimeoutAsSystemMessages.cs b/src/NServiceBus.Core/Sagas/ConfigureTimeoutAsSystemMessages.cs index 77c9e33d27c..79658e43a05 100644 --- a/src/NServiceBus.Core/Sagas/ConfigureTimeoutAsSystemMessages.cs +++ b/src/NServiceBus.Core/Sagas/ConfigureTimeoutAsSystemMessages.cs @@ -17,7 +17,7 @@ public void Init() { var sagas = Configure.TypesToScan.Where(Features.Sagas.IsSagaType).ToList(); - Configure.Instance.AddSystemMessagesAs(t => IsTypeATimeoutHandledByAnySaga(t, sagas)); + MessageConventionExtensions.AddSystemMessagesConventions(t => IsTypeATimeoutHandledByAnySaga(t, sagas)); } static bool IsTypeATimeoutHandledByAnySaga(Type type, IEnumerable sagas) diff --git a/src/NServiceBus.Core/Scheduling/Configuration/ConfigureScheduledTaskAsSystemMessages.cs b/src/NServiceBus.Core/Scheduling/Configuration/ConfigureScheduledTaskAsSystemMessages.cs index fae8a9c6120..9851b1eb03d 100644 --- a/src/NServiceBus.Core/Scheduling/Configuration/ConfigureScheduledTaskAsSystemMessages.cs +++ b/src/NServiceBus.Core/Scheduling/Configuration/ConfigureScheduledTaskAsSystemMessages.cs @@ -4,7 +4,7 @@ public class ConfigureScheduledTaskAsSystemMessages : IWantToRunBeforeConfigurat { public void Init() { - Configure.Instance.AddSystemMessagesAs(t => typeof(Messages.ScheduledTask).IsAssignableFrom(t)); + MessageConventionExtensions.AddSystemMessagesConventions(t => typeof(Messages.ScheduledTask).IsAssignableFrom(t)); } } } \ No newline at end of file From 0e8662e41bff5619c020946d963119b92504bdfd Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Wed, 15 Jan 2014 10:23:58 +0100 Subject: [PATCH 088/146] ensured that all behaviors are public and decorated with obsolete & editorbrowsable --- src/NServiceBus.Core/DataBus/DataBusSendBehavior.cs | 5 ++++- .../Unicast/Behaviors/CallbackInvocationBehavior.cs | 5 ++++- .../Unicast/Behaviors/MultiMessageBehavior.cs | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.Core/DataBus/DataBusSendBehavior.cs b/src/NServiceBus.Core/DataBus/DataBusSendBehavior.cs index 36ffcb9f2b5..68341259a42 100644 --- a/src/NServiceBus.Core/DataBus/DataBusSendBehavior.cs +++ b/src/NServiceBus.Core/DataBus/DataBusSendBehavior.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; + using System.ComponentModel; using System.IO; using System.Linq; using System.Reflection; @@ -11,7 +12,9 @@ using Pipeline; using Pipeline.Contexts; - class DataBusSendBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class DataBusSendBehavior : IBehavior { public IDataBus DataBus { get; set; } diff --git a/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs index a3e1ee3aa39..40243d4c931 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/CallbackInvocationBehavior.cs @@ -1,13 +1,16 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using System.Linq; using Pipeline; using Pipeline.Contexts; using Unicast; using Transport; - class CallbackInvocationBehavior : IBehavior + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] + public class CallbackInvocationBehavior : IBehavior { public const string CallbackInvokedKey = "NServiceBus.CallbackInvocationBehavior.CallbackWasInvoked"; diff --git a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs index dc28754231d..cc40002dbe9 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs @@ -1,10 +1,13 @@ namespace NServiceBus.Unicast.Behaviors { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "5.0")] + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] public class MultiMessageBehavior : IBehavior { public PipelineExecutor PipelineExecutor { get; set; } From 2515cbfa2212e3e5ca1cd7deae70ff09621c1c16 Mon Sep 17 00:00:00 2001 From: chrisbednarski Date: Thu, 16 Jan 2014 00:13:42 +1100 Subject: [PATCH 089/146] Share transaction timeout config between gateway sender and receiver --- .../Gateway/GatewayTransaction.cs | 36 +++++++++++++++++++ .../Receiving/IdempotentChannelReceiver.cs | 12 +------ .../Receiving/SingleCallChannelReceiver.cs | 13 +------ .../Gateway/Sending/GatewaySender.cs | 7 ++-- src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + 5 files changed, 41 insertions(+), 28 deletions(-) create mode 100644 src/NServiceBus.Core/Gateway/GatewayTransaction.cs diff --git a/src/NServiceBus.Core/Gateway/GatewayTransaction.cs b/src/NServiceBus.Core/Gateway/GatewayTransaction.cs new file mode 100644 index 00000000000..10ba9d0d53b --- /dev/null +++ b/src/NServiceBus.Core/Gateway/GatewayTransaction.cs @@ -0,0 +1,36 @@ +namespace NServiceBus.Gateway +{ + using System; + using System.Transactions; + using Config; + + internal static class GatewayTransaction + { + private static readonly GatewayConfig Config; + + static GatewayTransaction() + { + Config = Configure.GetConfigSection(); + } + + internal static TimeSpan Timeout(TimeSpan defaultTimeout) + { + if (Config != null && Config.TransactionTimeout > defaultTimeout) + { + return Config.TransactionTimeout; + } + + return defaultTimeout; + } + + internal static TransactionScope Scope() + { + return new TransactionScope(TransactionScopeOption.RequiresNew, + new TransactionOptions + { + IsolationLevel = IsolationLevel.ReadCommitted, + Timeout = Timeout(TimeSpan.FromSeconds(30)), + }); + } + } +} diff --git a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs index 066aefcec1b..6494dfb3bb2 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs @@ -55,7 +55,7 @@ void DataReceivedOnChannel(object sender, DataReceivedOnChannelArgs e) Hasher.Verify(callInfo.Data,callInfo.Md5); Logger.DebugFormat("Received message of type {0} for client id: {1}", callInfo.Type, callInfo.ClientId); - using (var scope = DefaultTransactionScope()) + using (var scope = GatewayTransaction.Scope()) { DispatchReceivedCallInfo(callInfo); scope.Complete(); @@ -79,16 +79,6 @@ internal void DispatchReceivedCallInfo(CallInfo callInfo) } } - static TransactionScope DefaultTransactionScope() - { - return new TransactionScope(TransactionScopeOption.Required, - new TransactionOptions - { - IsolationLevel = IsolationLevel.ReadCommitted, - Timeout = TimeSpan.FromSeconds(30) - }); - } - void HandleSubmit(CallInfo callInfo) { persister.InsertMessage(callInfo.ClientId, DateTime.UtcNow, callInfo.Data, callInfo.Headers); diff --git a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs index effaa2ee71f..3048e999c14 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs @@ -67,7 +67,7 @@ void DataReceivedOnChannel(object sender, DataReceivedOnChannelArgs e) Logger.DebugFormat("Received message of type {0} for client id: {1}", callInfo.Type, callInfo.ClientId); - using (var scope = DefaultTransactionScope()) + using (var scope = GatewayTransaction.Scope()) { switch (callInfo.Type) { @@ -86,17 +86,6 @@ void DataReceivedOnChannel(object sender, DataReceivedOnChannelArgs e) } } - static TransactionScope DefaultTransactionScope() - { - return new TransactionScope(TransactionScopeOption.RequiresNew, - new TransactionOptions - { - IsolationLevel = IsolationLevel.ReadCommitted, - Timeout = TimeSpan.FromSeconds(30) - }); - } - - void HandleSubmit(CallInfo callInfo) { using (var stream = new MemoryStream()) diff --git a/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs b/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs index b87707d1612..ad3eafb9a55 100644 --- a/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs +++ b/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs @@ -71,11 +71,8 @@ public Action GetReceiverCustomization() { return transport => { - var configSection = Configure.ConfigurationSource.GetConfiguration(); - if (configSection != null && configSection.TransactionTimeout > transport.TransactionSettings.TransactionTimeout) - { - transport.TransactionSettings.TransactionTimeout = configSection.TransactionTimeout; - } + transport.TransactionSettings.TransactionTimeout = + GatewayTransaction.Timeout(transport.TransactionSettings.TransactionTimeout); }; } diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 33189614069..79f2ddcd235 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -120,6 +120,7 @@ + From cb99cf6737068729ffdf41d32664c52c3924e4bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 15 Jan 2014 15:03:50 +0100 Subject: [PATCH 090/146] Moving the test files into the root of /content --- packaging/nuget/nservicebus.acceptancetests.nuspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/nuget/nservicebus.acceptancetests.nuspec b/packaging/nuget/nservicebus.acceptancetests.nuspec index 27b145c74ef..451c82b23be 100644 --- a/packaging/nuget/nservicebus.acceptancetests.nuspec +++ b/packaging/nuget/nservicebus.acceptancetests.nuspec @@ -17,6 +17,6 @@ - + - \ No newline at end of file + From 5480c5fac71e9231f5281fe0dc63b8d48748c9b6 Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 16 Jan 2014 16:00:20 +1100 Subject: [PATCH 091/146] Renamed test to avoid confusion --- .../Retries/When_message_fails_with_retries_set_to_0.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs b/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs index 68f0c2d2d3c..079921fa825 100644 --- a/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs +++ b/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs @@ -11,7 +11,7 @@ public class When_message_fails_with_retries_set_to_0 : NServiceBusAcceptanceTest { [Test] - public void Should_not_retry_the_message() + public void Should_not_retry_the_message_using_flr() { var context = new Context(); From 379f7544d9f670b63c0b3f4f97573a9bc1284b9f Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 16 Jan 2014 19:51:43 +1100 Subject: [PATCH 092/146] fix nullref in GetFieldsAndProperties --- src/NServiceBus.Core/Encryption/EncryptionMessageMutator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core/Encryption/EncryptionMessageMutator.cs b/src/NServiceBus.Core/Encryption/EncryptionMessageMutator.cs index e2fdb068935..75fc0341688 100644 --- a/src/NServiceBus.Core/Encryption/EncryptionMessageMutator.cs +++ b/src/NServiceBus.Core/Encryption/EncryptionMessageMutator.cs @@ -247,7 +247,7 @@ static IEnumerable GetFieldsAndProperties(object target) IEnumerable members; if (!cache.TryGetValue(messageType, out members)) { - cache[messageType] = messageType.GetMembers(BindingFlags.Public | BindingFlags.Instance) + cache[messageType] = members = messageType.GetMembers(BindingFlags.Public | BindingFlags.Instance) .Where(m => m is FieldInfo || m is PropertyInfo) .ToList(); } From aad4e957f3ba4432c5481d2a3b3caf39cd91255e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 16 Jan 2014 11:24:05 +0100 Subject: [PATCH 093/146] Renaming the acceptance tests source package to follow the naming convetion in http://nikcodes.com/2013/10/23/packaging-source-code-with-nuget/ --- ...ests.nuspec => nservicebus.acceptancetests.sources.nuspec} | 4 ++-- ripple.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename packaging/nuget/{nservicebus.acceptancetests.nuspec => nservicebus.acceptancetests.sources.nuspec} (88%) diff --git a/packaging/nuget/nservicebus.acceptancetests.nuspec b/packaging/nuget/nservicebus.acceptancetests.sources.nuspec similarity index 88% rename from packaging/nuget/nservicebus.acceptancetests.nuspec rename to packaging/nuget/nservicebus.acceptancetests.sources.nuspec index 451c82b23be..4bc70cb3071 100644 --- a/packaging/nuget/nservicebus.acceptancetests.nuspec +++ b/packaging/nuget/nservicebus.acceptancetests.sources.nuspec @@ -1,8 +1,8 @@  - NServiceBus.AcceptanceTests - NServiceBus Acceptance Tests + nservicebus.acceptancetests.sources + Source only package containing the NServiceBus acceptance test suite 4.0.0-alpha0 NServiceBus Ltd Udi Dahan, Andreas Ohlund, John Simons diff --git a/ripple.config b/ripple.config index e989b8266b6..2a56f3d26a0 100644 --- a/ripple.config +++ b/ripple.config @@ -45,7 +45,7 @@ - + From f9c405aeefd3e1682538380f58c9371a9e816382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 16 Jan 2014 12:03:11 +0100 Subject: [PATCH 094/146] Fixing the nuget id for the acceptance tests package --- packaging/nuget/nservicebus.acceptancetests.sources.nuspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/nuget/nservicebus.acceptancetests.sources.nuspec b/packaging/nuget/nservicebus.acceptancetests.sources.nuspec index 4bc70cb3071..fe43edd490b 100644 --- a/packaging/nuget/nservicebus.acceptancetests.sources.nuspec +++ b/packaging/nuget/nservicebus.acceptancetests.sources.nuspec @@ -1,7 +1,7 @@  - nservicebus.acceptancetests.sources + NServiceBus.AcceptanceTests.Sources Source only package containing the NServiceBus acceptance test suite 4.0.0-alpha0 NServiceBus Ltd From 2ff23a71e5ea70cda7c471d10c2166aa82c71f6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 16 Jan 2014 12:37:29 +0100 Subject: [PATCH 095/146] Removing the distributor specific test since it requires a reference to NSB.Distributor.Msmq --- .../Distributor/When_using_master.cs | 99 ------------------- 1 file changed, 99 deletions(-) delete mode 100644 src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs diff --git a/src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs b/src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs deleted file mode 100644 index a2543de331f..00000000000 --- a/src/NServiceBus.AcceptanceTests/Distributor/When_using_master.cs +++ /dev/null @@ -1,99 +0,0 @@ -namespace NServiceBus.AcceptanceTests.Distributor -{ - using System; - using System.Threading; - using Config; - using EndpointTemplates; - using AcceptanceTesting; - using NUnit.Framework; - - public class When_using_master : NServiceBusAcceptanceTest - { - [Test, Ignore("https://github.com/Particular/NServiceBus/issues/1878")] - public void Master_and_workers_should_receive_messages() - { - var context = new Context(); - - Scenario.Define(context) - .WithEndpoint(e => e.Given(bus => - { - bus.Send(new MyMessage()); - bus.Send(new MyMessage()); - })) - .WithEndpoint() - .WithEndpoint() - .Done(c => c.MasterGotMessage && c.Worker1GotMessage) - .Run(); - - Assert.IsTrue(context.MasterGotMessage); - Assert.IsTrue(context.Worker1GotMessage); - } - - class Context : ScenarioContext - { - public bool MasterGotMessage { get; set; } - public bool Worker1GotMessage { get; set; } - } - - class Sender : EndpointConfigurationBuilder - { - public Sender() - { - EndpointSetup() - .AddMapping(typeof(MasterEndpoint)); - } - } - - class MasterEndpoint : EndpointConfigurationBuilder - { - public MasterEndpoint() - { - EndpointSetup(c => c.AsMSMQMasterNode()).WithConfig(c => - { - c.MaximumConcurrencyLevel = 1; - }); - - } - - public class Handler : IHandleMessages - { - public Context Context { get; set; } - - public void Handle(MyMessage message) - { - Context.MasterGotMessage = true; - Thread.Sleep(3000); - } - } - } - - class Worker1Endpoint : EndpointConfigurationBuilder - { - public Worker1Endpoint() - { - EndpointSetup(c => c.EnlistWithMSMQDistributor()).WithConfig(c => - { - c.MaximumConcurrencyLevel = 1; - }) - .WithConfig(c=> c.Node = "localhost") - .WithConfig(c=> c.DistributorDataAddress = "distributor.masterendpoint.msmq"); - } - - public class Handler : IHandleMessages - { - public Context Context { get; set; } - - public void Handle(MyMessage message) - { - Context.Worker1GotMessage = true; - } - } - } - - [Serializable] - public class MyMessage : ICommand - { - - } - } -} \ No newline at end of file From 541fe2bc75c8f4c270924ec3c26a593271224958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 16 Jan 2014 12:40:28 +0100 Subject: [PATCH 096/146] Forgot the csproj --- .../NServiceBus.AcceptanceTests.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index f1caf6e95f2..bae12501957 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -112,7 +112,6 @@ - From 688c8e3499c4148c3454d516a97c31021cff236b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 16 Jan 2014 13:41:05 +0100 Subject: [PATCH 097/146] The gateway are now prepared for messages without a body. This can happen since some transports, sqlserver in this case, can return null instead of byte[0] for control messages. --- .../Gateway/When_doing_request_return.cs | 2 ++ .../Gateway/Sending/IdempotentChannelForwarder.cs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Gateway/When_doing_request_return.cs b/src/NServiceBus.AcceptanceTests/Gateway/When_doing_request_return.cs index 17dabcf0dc7..25480cbaa1d 100644 --- a/src/NServiceBus.AcceptanceTests/Gateway/When_doing_request_return.cs +++ b/src/NServiceBus.AcceptanceTests/Gateway/When_doing_request_return.cs @@ -36,6 +36,7 @@ public SiteA() { EndpointSetup(c => c.RunGateway() .UseInMemoryGatewayPersister()) + .AllowExceptions() .WithConfig(c => { c.Sites = new SiteCollection @@ -66,6 +67,7 @@ public class SiteB : EndpointConfigurationBuilder public SiteB() { EndpointSetup(c => c.RunGateway().UseInMemoryGatewayPersister()) + .AllowExceptions() .WithConfig(c => { c.Channels = new ChannelCollection diff --git a/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs b/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs index 2ac550d45fc..e5430b46a95 100644 --- a/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs +++ b/src/NServiceBus.Core/Gateway/Sending/IdempotentChannelForwarder.cs @@ -30,7 +30,9 @@ public void Forward(TransportMessage message, Site targetSite) var channelSender = channelFactory.GetSender(targetSite.Channel.Type); - using (var messagePayload = new MemoryStream(message.Body)) + var bodyToSend = message.Body ?? new byte[0]; + + using (var messagePayload = new MemoryStream(bodyToSend)) { Transmit(channelSender, targetSite, CallType.Submit, headers, messagePayload); } From 8c86329302d29d1d175fcd7a36630915b6b691cc Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Fri, 17 Jan 2014 12:10:58 +1100 Subject: [PATCH 098/146] add behavior convention test --- .../NServiceBus.Core.Tests.csproj | 1 + .../Pipeline/BehaviorConventions.cs | 29 +++++++++++++++++++ .../Sagas/RemoveIncomingHeadersBehavior.cs | 5 +++- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index c514fa070ab..6d5cae59e80 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -129,6 +129,7 @@ + diff --git a/src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs b/src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs new file mode 100644 index 00000000000..5e888552962 --- /dev/null +++ b/src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs @@ -0,0 +1,29 @@ +namespace NServiceBus.Core.Tests.Pipeline +{ + using System; + using System.ComponentModel; + using System.Diagnostics; + using System.Linq; + using NServiceBus.Pipeline; + using NUnit.Framework; + + [TestFixture] + public class BehaviorConventions + { + [Test] + public void Verify() + { + var allBehaviors = typeof(IBehavior<>).Assembly.GetTypes() + .Where(x => x.GetInterfaces().Any(y => y.Name.Contains("IBehavior"))); + foreach (var behavior in allBehaviors) + { + Debug.WriteLine(behavior); + Assert.IsTrue(behavior.IsPublic); + var obsoleteAttribute = (ObsoleteAttribute)behavior.GetCustomAttributes(typeof(ObsoleteAttribute),false).First(); + Assert.AreEqual("This is a prototype API. May change in minor version releases.", obsoleteAttribute.Message); + var editorBrowsableAttribute = (EditorBrowsableAttribute)behavior.GetCustomAttributes(typeof(EditorBrowsableAttribute),false).First(); + Assert.AreEqual(EditorBrowsableState.Never, editorBrowsableAttribute.State); + } + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs b/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs index 34c1de1039c..caa2e250ccd 100644 --- a/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs +++ b/src/NServiceBus.Core/Sagas/RemoveIncomingHeadersBehavior.cs @@ -1,12 +1,15 @@ namespace NServiceBus.Sagas { using System; + using System.ComponentModel; using Pipeline; using Pipeline.Contexts; - [ObsoleteEx(RemoveInVersion="5.0")] + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] public class RemoveIncomingHeadersBehavior : IBehavior { + [ObsoleteEx(RemoveInVersion = "5.0")] public void Invoke(ReceivePhysicalMessageContext context, Action next) { From 91f3a1a101f3d0b3754f6c4ad554dd96de1e9ee2 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Fri, 17 Jan 2014 15:54:03 +1100 Subject: [PATCH 099/146] better verification test --- .../Pipeline/BehaviorConventions.cs | 16 +++++++++------- .../Receiving/IdempotentChannelReceiver.cs | 1 - .../Receiving/SingleCallChannelReceiver.cs | 1 - .../Gateway/Sending/GatewaySender.cs | 1 - 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs b/src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs index 5e888552962..aff441ba135 100644 --- a/src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs +++ b/src/NServiceBus.Core.Tests/Pipeline/BehaviorConventions.cs @@ -2,7 +2,6 @@ namespace NServiceBus.Core.Tests.Pipeline { using System; using System.ComponentModel; - using System.Diagnostics; using System.Linq; using NServiceBus.Pipeline; using NUnit.Framework; @@ -17,12 +16,15 @@ public void Verify() .Where(x => x.GetInterfaces().Any(y => y.Name.Contains("IBehavior"))); foreach (var behavior in allBehaviors) { - Debug.WriteLine(behavior); - Assert.IsTrue(behavior.IsPublic); - var obsoleteAttribute = (ObsoleteAttribute)behavior.GetCustomAttributes(typeof(ObsoleteAttribute),false).First(); - Assert.AreEqual("This is a prototype API. May change in minor version releases.", obsoleteAttribute.Message); - var editorBrowsableAttribute = (EditorBrowsableAttribute)behavior.GetCustomAttributes(typeof(EditorBrowsableAttribute),false).First(); - Assert.AreEqual(EditorBrowsableState.Never, editorBrowsableAttribute.State); + Assert.IsTrue(behavior.IsPublic, behavior + " should be public"); + var customAttributes = behavior.GetCustomAttributes(typeof(ObsoleteAttribute),false); + Assert.IsNotEmpty(customAttributes, behavior + " should be marked with an ObsoleteAttribute"); + var obsoleteAttribute = (ObsoleteAttribute)customAttributes.First(); + Assert.AreEqual("This is a prototype API. May change in minor version releases.", obsoleteAttribute.Message, behavior + " should be marked with an ObsoleteAttribute"); + var editorAttributes = behavior.GetCustomAttributes(typeof(EditorBrowsableAttribute), false); + Assert.IsNotEmpty(editorAttributes, behavior + " should be marked with an EditorBrowsableAttribute"); + var editorBrowsableAttribute = (EditorBrowsableAttribute)editorAttributes.First(); + Assert.AreEqual(EditorBrowsableState.Never, editorBrowsableAttribute.State, behavior + " should be marked with an EditorBrowsableAttribute"); } } } diff --git a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs index 6494dfb3bb2..afeac8d06f7 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/IdempotentChannelReceiver.cs @@ -2,7 +2,6 @@ namespace NServiceBus.Gateway.Receiving { using System; using System.Collections.Generic; - using System.Transactions; using Channels; using DataBus; using HeaderManagement; diff --git a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs index 3048e999c14..caa5e963798 100644 --- a/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs +++ b/src/NServiceBus.Core/Gateway/Receiving/SingleCallChannelReceiver.cs @@ -2,7 +2,6 @@ { using System; using System.IO; - using System.Transactions; using Channels; using DataBus; using Deduplication; diff --git a/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs b/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs index ad3eafb9a55..ec0239eb062 100644 --- a/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs +++ b/src/NServiceBus.Core/Gateway/Sending/GatewaySender.cs @@ -3,7 +3,6 @@ namespace NServiceBus.Gateway.Sending using System; using System.Collections.Generic; using System.Linq; - using Config; using Features; using HeaderManagement; using Notifications; From 278a4684dc48e9cd855951670a6483e6f1d50c02 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 19 Jan 2014 16:54:07 +1100 Subject: [PATCH 100/146] fix the build --- .../Unicast/Behaviors/MultiMessageBehavior.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs index cc40002dbe9..1c3359b2a2c 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/MultiMessageBehavior.cs @@ -5,18 +5,18 @@ using Pipeline; using Pipeline.Contexts; - [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "5.0")] [Obsolete("This is a prototype API. May change in minor version releases.")] [EditorBrowsable(EditorBrowsableState.Never)] public class MultiMessageBehavior : IBehavior { public PipelineExecutor PipelineExecutor { get; set; } + [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "5.0")] public void Invoke(SendLogicalMessagesContext context, Action next) { foreach (var logicalMessage in context.LogicalMessages) { - PipelineExecutor.InvokeSendPipeline(context.SendOptions,logicalMessage); + PipelineExecutor.InvokeSendPipeline(context.SendOptions, logicalMessage); } next(); } From 35750655f7329e0ed3844efe9790827c36fccabe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Mon, 20 Jan 2014 11:32:13 +0100 Subject: [PATCH 101/146] Adding acceptance tests to verify outgoing message mutators --- .../When_defining_outoing_message_mutators.cs | 95 +++++++++++++++++++ .../NServiceBus.AcceptanceTests.csproj | 1 + 2 files changed, 96 insertions(+) create mode 100644 src/NServiceBus.AcceptanceTests/MessageMutators/When_defining_outoing_message_mutators.cs diff --git a/src/NServiceBus.AcceptanceTests/MessageMutators/When_defining_outoing_message_mutators.cs b/src/NServiceBus.AcceptanceTests/MessageMutators/When_defining_outoing_message_mutators.cs new file mode 100644 index 00000000000..40cabaa7f42 --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/MessageMutators/When_defining_outoing_message_mutators.cs @@ -0,0 +1,95 @@ +namespace NServiceBus.AcceptanceTests.Sagas +{ + using System; + using EndpointTemplates; + using AcceptanceTesting; + using MessageMutator; + using NUnit.Framework; + + public class When_defining_outoing_message_mutators : NServiceBusAcceptanceTest + { + [Test] + public void Should_be_applied_to_outgoing_messages() + { + var context = new Context(); + + Scenario.Define(context) + .WithEndpoint(b => b.Given(bus => bus.SendLocal(new MessageToBeMutated()))) + .Done(c => c.MessageProcessed) + .Run(); + + Assert.True(context.TransportMutatorCalled); + Assert.True(context.MessageMutatorCalled); + } + + public class Context : ScenarioContext + { + public bool MessageProcessed { get; set; } + public bool TransportMutatorCalled { get; set; } + public bool MessageMutatorCalled { get; set; } + } + + public class OutgoingMutatatorEndpoint : EndpointConfigurationBuilder + { + public OutgoingMutatatorEndpoint() + { + EndpointSetup(); + } + + + class MyTransportMessageMutator:IMutateOutgoingTransportMessages,INeedInitialization + { + public void MutateOutgoing(object[] messages, TransportMessage transportMessage) + { + transportMessage.Headers["TransportMutatorCalled"] = true.ToString(); + } + + public void Init() + { + Configure.Component(DependencyLifecycle.InstancePerCall); + } + } + + class MyMessageMutator : IMutateOutgoingMessages, INeedInitialization + { + + + public object MutateOutgoing(object message) + { + Headers.SetMessageHeader(message,"MessageMutatorCalled","true"); + + return message; + } + + public void Init() + { + Configure.Component(DependencyLifecycle.InstancePerCall); + } + + } + + class MessageToBeMutatedHandler : IHandleMessages + { + public Context Context { get; set; } + + public IBus Bus { get; set; } + + + public void Handle(MessageToBeMutated message) + { + Context.TransportMutatorCalled = Bus.CurrentMessageContext.Headers.ContainsKey("TransportMutatorCalled"); + Context.MessageMutatorCalled = Bus.CurrentMessageContext.Headers.ContainsKey("MessageMutatorCalled"); + + Context.MessageProcessed = true; + + } + } + + } + + [Serializable] + public class MessageToBeMutated : ICommand + { + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index bae12501957..98e4c2ac278 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -100,6 +100,7 @@ + From 301bf4ed20ba7f2ad6132c6608e40cd41b01992d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Mon, 20 Jan 2014 12:47:54 +0100 Subject: [PATCH 102/146] Making sure that the sent time and version headers gets populated at all times. #1910 --- src/NServiceBus.Core.Tests/Unicast/Subscriptions.cs | 7 +++++-- src/NServiceBus.Core/TransportMessage.cs | 2 ++ .../Behaviors/DispatchMessageToTransportBehavior.cs | 2 -- src/NServiceBus.Core/Unicast/Monitoring/VersionMutator.cs | 3 ++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/NServiceBus.Core.Tests/Unicast/Subscriptions.cs b/src/NServiceBus.Core.Tests/Unicast/Subscriptions.cs index 016867f1f70..90f303306f8 100644 --- a/src/NServiceBus.Core.Tests/Unicast/Subscriptions.cs +++ b/src/NServiceBus.Core.Tests/Unicast/Subscriptions.cs @@ -34,8 +34,11 @@ public void Should_set_the_message_intent_to_subscribe() { bus.Subscribe(); - AssertSubscription(m => m.MessageIntent == MessageIntentEnum.Subscribe, - addressToOwnerOfTestMessage); + + AssertSubscription(m => m.MessageIntent == MessageIntentEnum.Subscribe && + m.Headers.ContainsKey(Headers.NServiceBusVersion) && + m.Headers.ContainsKey(Headers.TimeSent) + ,addressToOwnerOfTestMessage); } } diff --git a/src/NServiceBus.Core/TransportMessage.cs b/src/NServiceBus.Core/TransportMessage.cs index 3b0963ba6b6..75e73ecaf1b 100644 --- a/src/NServiceBus.Core/TransportMessage.cs +++ b/src/NServiceBus.Core/TransportMessage.cs @@ -27,6 +27,8 @@ public TransportMessage() Headers.Add(NServiceBus.Headers.OriginatingEndpoint, Configure.EndpointName); Headers.Add(NServiceBus.Headers.OriginatingMachine, RuntimeEnvironment.MachineName); MessageIntent = MessageIntentEnum.Send; + Headers[NServiceBus.Headers.NServiceBusVersion] = NServiceBusVersion.Version; + Headers[NServiceBus.Headers.TimeSent] = DateTimeExtensions.ToWireFormattedString(DateTime.UtcNow); } /// diff --git a/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs b/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs index 20d0e7e7261..c701778d790 100644 --- a/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs +++ b/src/NServiceBus.Core/Unicast/Behaviors/DispatchMessageToTransportBehavior.cs @@ -33,8 +33,6 @@ public void Invoke(SendPhysicalMessageContext context, Action next) messageDescription = logicalMessage.MessageType.FullName; } - context.MessageToSend.Headers[Headers.TimeSent] = DateTimeExtensions.ToWireFormattedString(DateTime.UtcNow); - try { if (sendOptions.Intent == MessageIntentEnum.Publish) diff --git a/src/NServiceBus.Core/Unicast/Monitoring/VersionMutator.cs b/src/NServiceBus.Core/Unicast/Monitoring/VersionMutator.cs index c91b35bbcc8..455d1b59bcd 100644 --- a/src/NServiceBus.Core/Unicast/Monitoring/VersionMutator.cs +++ b/src/NServiceBus.Core/Unicast/Monitoring/VersionMutator.cs @@ -2,6 +2,7 @@ namespace NServiceBus.Unicast.Monitoring { using MessageMutator; + [ObsoleteEx(TreatAsErrorFromVersion = "4.4", RemoveInVersion = "5.0")] public class VersionMutator : IMutateOutgoingTransportMessages, INeedInitialization { /// @@ -9,7 +10,7 @@ public class VersionMutator : IMutateOutgoingTransportMessages, INeedInitializat /// public void MutateOutgoing(object[] messages, TransportMessage transportMessage) { - transportMessage.Headers[Headers.NServiceBusVersion] = NServiceBusVersion.Version; + } /// From 683b08d9ba78ad6fa50b26d016c54e49b7f369bb Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 21 Jan 2014 13:20:39 +0100 Subject: [PATCH 103/146] removing subscriptionspy from acceptance tests as it can lead to race conditions and there is a better way to do this. --- .../EndpointConfigurationBuilder.cs | 35 +------------------ .../EndpointTemplates/BusExtensions.cs | 13 ------- .../EndpointTemplates/ConfigureExtensions.cs | 8 ----- .../NServiceBus.AcceptanceTests.csproj | 1 - ...en_using_a_received_message_for_timeout.cs | 25 ++++++------- 5 files changed, 11 insertions(+), 71 deletions(-) delete mode 100644 src/NServiceBus.AcceptanceTests/EndpointTemplates/BusExtensions.cs diff --git a/src/NServiceBus.AcceptanceTesting/EndpointConfigurationBuilder.cs b/src/NServiceBus.AcceptanceTesting/EndpointConfigurationBuilder.cs index bdf80f07bba..6ef6158a244 100644 --- a/src/NServiceBus.AcceptanceTesting/EndpointConfigurationBuilder.cs +++ b/src/NServiceBus.AcceptanceTesting/EndpointConfigurationBuilder.cs @@ -2,7 +2,6 @@ { using System; using System.Collections.Generic; - using System.Threading; using Support; public class EndpointConfigurationBuilder : IEndpointConfigurationFactory @@ -83,39 +82,7 @@ EndpointConfiguration IEndpointConfigurationFactory.Get() return CreateScenario(); } - public class SubscriptionsSpy : IAuthorizeSubscriptions - { - private readonly ManualResetEvent manualResetEvent = new ManualResetEvent(false); - private int subscriptionsReceived; - - public int NumberOfSubscriptionsToWaitFor { get; set; } - - public bool AuthorizeSubscribe(string messageType, string clientEndpoint, - IDictionary headers) - { - if (Interlocked.Increment(ref subscriptionsReceived) >= NumberOfSubscriptionsToWaitFor) - { - manualResetEvent.Set(); - } - - return true; - } - - public bool AuthorizeUnsubscribe(string messageType, string clientEndpoint, - IDictionary headers) - { - return true; - } - - public void Wait() - { - if(!manualResetEvent.WaitOne(TimeSpan.FromSeconds(20))) - throw new Exception("No subscription message was received"); - - } - } - - + readonly EndpointConfiguration configuration = new EndpointConfiguration(); public EndpointConfigurationBuilder WithConfig(Action action) diff --git a/src/NServiceBus.AcceptanceTests/EndpointTemplates/BusExtensions.cs b/src/NServiceBus.AcceptanceTests/EndpointTemplates/BusExtensions.cs deleted file mode 100644 index 6c087c00955..00000000000 --- a/src/NServiceBus.AcceptanceTests/EndpointTemplates/BusExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace NServiceBus.AcceptanceTests.EndpointTemplates -{ - using AcceptanceTesting; - - public static class BusExtensions - { - public static void EnsureSubscriptionMessagesHaveArrived(this IBus bus) - { - Configure.Instance.Builder.Build() - .Wait(); - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs b/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs index ab17ea5b663..ccc61446885 100644 --- a/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs +++ b/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs @@ -27,14 +27,6 @@ public static string GetOrNull(this IDictionary dictionary, stri return dictionary[key]; } - public static Configure DefineHowManySubscriptionMessagesToWaitFor(this Configure config, int numberOfSubscriptionsToWaitFor) - { - config.Configurer.ConfigureProperty( - spy => spy.NumberOfSubscriptionsToWaitFor, numberOfSubscriptionsToWaitFor); - - return config; - } - public static Configure DefineTransport(this Configure config, IDictionary settings) { if (!settings.ContainsKey("Transport")) diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 98e4c2ac278..85b91b30e64 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -114,7 +114,6 @@ - diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs index 657191b8dba..261631bf504 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs @@ -3,8 +3,8 @@ using System; using EndpointTemplates; using AcceptanceTesting; - using Features; using NUnit.Framework; + using PubSub; using Saga; using ScenarioDescriptors; @@ -15,19 +15,15 @@ public void Timeout_should_be_received_after_expiration() { Scenario.Define(() => new Context {Id = Guid.NewGuid()}) .WithEndpoint(b => - { - b.Given((bus, context) => bus.SendLocal(new StartSagaMessage {SomeId = context.Id})); - - b.When(context => context.StartSagaMessageReceived, - (bus, context) => - { - if (Feature.IsEnabled()) - { - bus.EnsureSubscriptionMessagesHaveArrived(); - } - bus.Publish(new SomeEvent {SomeId = context.Id}); - }); - }) + { + b.Given((bus, context) => Subscriptions.OnEndpointSubscribed(s => bus.SendLocal(new StartSagaMessage{ SomeId = context.Id }))); + + b.When(context => context.StartSagaMessageReceived, + (bus, context) => + { + bus.Publish(new SomeEvent {SomeId = context.Id}); + }); + }) .Done(c => c.TimeoutReceived) .Repeat(r => r.For(Transports.Default)) .Run(); @@ -49,7 +45,6 @@ public class SagaEndpoint : EndpointConfigurationBuilder public SagaEndpoint() { EndpointSetup(c => c.RavenSagaPersister() - .DefineHowManySubscriptionMessagesToWaitFor(1) .UnicastBus()) .AddMapping(typeof (SagaEndpoint)); } From 76bc9744c99b27a0836e03ac90bcc66c8a2413f9 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Tue, 21 Jan 2014 15:22:43 +0100 Subject: [PATCH 104/146] forgot about brokers in this test --- ...en_using_a_received_message_for_timeout.cs | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs index 261631bf504..6441990b652 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_using_a_received_message_for_timeout.cs @@ -3,6 +3,7 @@ using System; using EndpointTemplates; using AcceptanceTesting; + using Features; using NUnit.Framework; using PubSub; using Saga; @@ -16,13 +17,25 @@ public void Timeout_should_be_received_after_expiration() Scenario.Define(() => new Context {Id = Guid.NewGuid()}) .WithEndpoint(b => { - b.Given((bus, context) => Subscriptions.OnEndpointSubscribed(s => bus.SendLocal(new StartSagaMessage{ SomeId = context.Id }))); - + b.Given((bus, context) => + { + if (!Feature.IsEnabled()) + { + bus.SendLocal(new StartSagaMessage { SomeId = context.Id }); + } + else + { + Subscriptions.OnEndpointSubscribed(s => bus.SendLocal(new StartSagaMessage { SomeId = context.Id })); + } + + }); + b.When(context => context.StartSagaMessageReceived, - (bus, context) => - { - bus.Publish(new SomeEvent {SomeId = context.Id}); - }); + (bus, context) => + { + bus.Publish(new SomeEvent { SomeId = context.Id }); + }); + }) .Done(c => c.TimeoutReceived) .Repeat(r => r.For(Transports.Default)) From 33a427f85856c4fb9d09c3666b58a79d4c6a478c Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Wed, 22 Jan 2014 13:39:30 +0100 Subject: [PATCH 105/146] changed acceptance test endpoint naming convention to include testname --- src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs b/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs index 5823b0699d1..4025c5151be 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs +++ b/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs @@ -17,7 +17,7 @@ public void SetUp() { var baseNs = typeof (NServiceBusAcceptanceTest).Namespace; var testName = GetType().Name; - return t.FullName.Replace(baseNs + ".", "").Replace(testName + "+", ""); + return t.FullName.Replace(baseNs + ".", "") + "." + testName.Replace("_", "").Replace("+", ""); }; Conventions.DefaultRunDescriptor = () => ScenarioDescriptors.Transports.Default; From 8ea2921df822f16449ad488fd2272384a8945649 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Wed, 22 Jan 2014 14:02:19 +0100 Subject: [PATCH 106/146] changed acceptance test endpoint naming convention to include testname, better way --- src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs b/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs index 4025c5151be..60fbe360e24 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs +++ b/src/NServiceBus.AcceptanceTests/NServiceBusAcceptanceTest.cs @@ -17,7 +17,8 @@ public void SetUp() { var baseNs = typeof (NServiceBusAcceptanceTest).Namespace; var testName = GetType().Name; - return t.FullName.Replace(baseNs + ".", "") + "." + testName.Replace("_", "").Replace("+", ""); + return t.FullName.Replace(baseNs + ".", "").Replace(testName + "+", "") + + "." + System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(testName).Replace("_", ""); }; Conventions.DefaultRunDescriptor = () => ScenarioDescriptors.Transports.Default; From 17eab0d09b5ebb3b921e2f1a19545535b98afab3 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Wed, 22 Jan 2014 14:56:52 +0100 Subject: [PATCH 107/146] dealing with too long queue names in msmq --- .../Transports/Msmq/MsmqQueueCreator.cs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs index dc0afb0fac1..104c32d7403 100644 --- a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs +++ b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs @@ -2,7 +2,9 @@ namespace NServiceBus.Transports.Msmq { using System; using System.Messaging; + using System.Security.Cryptography; using System.Security.Principal; + using System.Text; using Config; using Logging; using Support; @@ -104,9 +106,27 @@ private static void SetPermissionsForQueue(string queue, string account) /// public static string GetFullPathWithoutPrefix(Address address) { - return address.Machine + MsmqUtilities.PRIVATE + address.Queue; + var queueName = address.Queue; + + if (queueName.Length >= 115) + { + queueName = DeterministicGuidBuilder(queueName).ToString(); + } + + return address.Machine + MsmqUtilities.PRIVATE + queueName; + } + + private static Guid DeterministicGuidBuilder(string input) + { + // use MD5 hash to get a 16-byte hash of the string + using (var provider = new MD5CryptoServiceProvider()) + { + var inputBytes = Encoding.Default.GetBytes(input); + var hashBytes = provider.ComputeHash(inputBytes); + // generate a guid from the hash: + return new Guid(hashBytes); + } } - } } \ No newline at end of file From caa01e5c2aeff6e5f9a81b1d46b8b6e3fa0e7cc9 Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Wed, 22 Jan 2014 15:34:35 +0100 Subject: [PATCH 108/146] msmq is a bit inconsistent in it's naming conventions, playing safe and limiting everything to 124 chars --- src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs index 104c32d7403..91902845a8f 100644 --- a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs +++ b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs @@ -107,13 +107,14 @@ private static void SetPermissionsForQueue(string queue, string account) public static string GetFullPathWithoutPrefix(Address address) { var queueName = address.Queue; + var msmqTotalQueueName = address.Machine + MsmqUtilities.PRIVATE + queueName; - if (queueName.Length >= 115) + if (msmqTotalQueueName.Length >= 124) { - queueName = DeterministicGuidBuilder(queueName).ToString(); + msmqTotalQueueName = address.Machine + MsmqUtilities.PRIVATE + DeterministicGuidBuilder(queueName).ToString(); } - return address.Machine + MsmqUtilities.PRIVATE + queueName; + return msmqTotalQueueName; } private static Guid DeterministicGuidBuilder(string input) From 8635f3fef79c57ebacd853136f04805e94c795cf Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 23 Jan 2014 12:18:45 +1100 Subject: [PATCH 109/146] A TransactionScope here causes #1918 --- .../PubSub/PubSubTestCase.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs index 6126e693421..2d07f8052cb 100644 --- a/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs +++ b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs @@ -96,23 +96,21 @@ public override void Run() Settings = new MsmqSettings { UseTransactionalQueues = true } }; - using (var tx = new TransactionScope()) - { for (var i = 0; i < NumberOfSubscribers; i++) { var subscriberAddress = Address.Parse(endpointName + ".Subscriber" + i); creator.CreateQueueIfNecessary(subscriberAddress, null); - subscriptionStorage.Subscribe(subscriberAddress, new List - { - testEventMessage - }); - } - - tx.Complete(); - } - + using (var tx = new TransactionScope()) + { + subscriptionStorage.Subscribe(subscriberAddress, new List + { + testEventMessage + }); + tx.Complete(); + } + } Parallel.For( 0, From 27aadff4f75b79f051d9433b4977138299083e04 Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 23 Jan 2014 12:31:04 +1100 Subject: [PATCH 110/146] Running performance tests against release versions --- src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 | 6 +++--- src/NServiceBus.PerformanceTests/TestSuites/TestSupport.ps1 | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 b/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 index 5c745c83912..7ecba26a879 100644 --- a/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 +++ b/src/NServiceBus.PerformanceTests/TestSuites/PubSub.ps1 @@ -2,15 +2,15 @@ Cleanup -..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=msmq +..\.\bin\release\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=msmq Cleanup -..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=inmemory +..\.\bin\release\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=inmemory Cleanup -..\.\bin\debug\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=raven +..\.\bin\release\Runner.exe PubSub numberofsubscribers=10 numberofmessages=10000 numberofthreads=10 storage=raven Cleanup diff --git a/src/NServiceBus.PerformanceTests/TestSuites/TestSupport.ps1 b/src/NServiceBus.PerformanceTests/TestSuites/TestSupport.ps1 index 264ebdfc7ae..a5d71b5ee8b 100644 --- a/src/NServiceBus.PerformanceTests/TestSuites/TestSupport.ps1 +++ b/src/NServiceBus.PerformanceTests/TestSuites/TestSupport.ps1 @@ -19,7 +19,7 @@ { - ..\.\bin\debug\Runner.exe $numThreads $numMessages $serializationFormat $transport $mode $messagemode $persistence $concurrency + ..\.\bin\release\Runner.exe $numThreads $numMessages $serializationFormat $transport $mode $messagemode $persistence $concurrency } From 9172185a9ca68debdca1c3aa81abb8d166d9e899 Mon Sep 17 00:00:00 2001 From: John Simons Date: Tue, 21 Jan 2014 16:24:46 +1100 Subject: [PATCH 111/146] Added HostInformation class --- .../Hosting/HostInformation.cs | 21 +++++++++++++++++++ src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + src/NServiceBus.Core/Unicast/UnicastBus.cs | 3 +-- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/NServiceBus.Core/Hosting/HostInformation.cs diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs new file mode 100644 index 00000000000..ca88b3c9ed5 --- /dev/null +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -0,0 +1,21 @@ +namespace NServiceBus.Hosting +{ + using System.Collections.Generic; + + public static class HostInformation + { + public static string HostId { get; set; } + + public static Dictionary Properties { get; set; } + + //new Dictionary + // { + // {"WinService","Sales-1.0.0"}, + // {"Machine","server2045"}, + // {"IISSite","acme.com"}, + // {"RoleInstanceId","2"}, + // {"PID","1045"}, + // {"Path","C:/somepath"} + // } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 79f2ddcd235..1de4cd08174 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -124,6 +124,7 @@ + diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index f4aa3451783..217c2007cf3 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -7,6 +7,7 @@ namespace NServiceBus.Unicast using System.Security.Principal; using System.Threading.Tasks; using Audit; + using Hosting; using Licensing; using Logging; using MessageInterfaces; @@ -28,8 +29,6 @@ namespace NServiceBus.Unicast /// public class UnicastBus : IUnicastBus, IInMemoryOperations { - - bool messageHandlingDisabled; /// From 481f0e58a83eaaccd877fb935550ec3bab593af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Tue, 21 Jan 2014 15:12:21 +0100 Subject: [PATCH 112/146] Switch the hsotinfo over to be instance based and resolved from the container --- .../When_defining_outoing_message_mutators.cs | 62 ++++++++++++++++ .../NServiceBus.AcceptanceTests.csproj | 1 + .../Hosting/HostInformation.cs | 74 +++++++++++++++---- src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + .../Utils/DeterministicGuid.cs | 21 ++++++ 5 files changed, 145 insertions(+), 14 deletions(-) create mode 100644 src/NServiceBus.AcceptanceTests/HostInformation/When_defining_outoing_message_mutators.cs create mode 100644 src/NServiceBus.Core/Utils/DeterministicGuid.cs diff --git a/src/NServiceBus.AcceptanceTests/HostInformation/When_defining_outoing_message_mutators.cs b/src/NServiceBus.AcceptanceTests/HostInformation/When_defining_outoing_message_mutators.cs new file mode 100644 index 00000000000..2171dc1d286 --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/HostInformation/When_defining_outoing_message_mutators.cs @@ -0,0 +1,62 @@ +namespace NServiceBus.AcceptanceTests.Sagas +{ + using System; + using System.Collections.Generic; + using System.Linq; + using EndpointTemplates; + using AcceptanceTesting; + using Hosting; + using NUnit.Framework; + + public class When_an_endpoint_is_started : NServiceBusAcceptanceTest + { + [Test] + public void Host_information_should_be_available_through_DI() + { + var context = new Context(); + + Scenario.Define(context) + .WithEndpoint() + .Done(c => c.HostId != Guid.Empty) + .Run(); + + Console.Out.WriteLine(context.HostDisplayName); + Console.Out.WriteLine(string.Join(Environment.NewLine,context.HostProperties.Select(kvp => string.Format("{0}:{1}", kvp.Key, kvp.Value)).ToList())); + } + + public class Context : ScenarioContext + { + public Guid HostId { get; set; } + public string HostDisplayName { get; set; } + + public Dictionary HostProperties { get; set; } + } + + public class MyEndpoint : EndpointConfigurationBuilder + { + public MyEndpoint() + { + EndpointSetup(); + } + + class MyStartUpTask:IWantToRunWhenBusStartsAndStops + { + public HostInformation HostInformation { get; set; } + + public Context Context { get; set; } + public void Start() + { + Context.HostId = HostInformation.HostId; + Context.HostDisplayName = HostInformation.DisplayName; + Context.HostProperties = HostInformation.Properties; + } + + public void Stop() + { + + } + } + + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 85b91b30e64..39ecc9bddb8 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -100,6 +100,7 @@ + diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index ca88b3c9ed5..db111aa7dc4 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -1,21 +1,67 @@ namespace NServiceBus.Hosting { + using System; using System.Collections.Generic; + using System.Diagnostics; + using System.Reflection; + using Settings; + using Support; + using Utils; - public static class HostInformation + public class HostInformation { - public static string HostId { get; set; } - - public static Dictionary Properties { get; set; } - - //new Dictionary - // { - // {"WinService","Sales-1.0.0"}, - // {"Machine","server2045"}, - // {"IISSite","acme.com"}, - // {"RoleInstanceId","2"}, - // {"PID","1045"}, - // {"Path","C:/somepath"} - // } + public Guid HostId { get; set; } + + public string DisplayName { get; set; } + + public Dictionary Properties { get; set; } + } + + class DefaultHostInformation + { + public static HostInformation GetCurrent() + { + var assembly = Assembly.GetEntryAssembly(); + + if (assembly == null) + { + assembly = Assembly.GetCallingAssembly(); + } + + return new HostInformation + { + HostId = DeterministicGuid.Create(assembly.Location), //todo is this what we need? + DisplayName = string.Format("{0}@{1}", assembly.Location, RuntimeEnvironment.MachineName), + Properties = new Dictionary + { + {"Machine", RuntimeEnvironment.MachineName}, + {"ProcessID",Process.GetCurrentProcess().Id.ToString()}, + {"WorkingDirectory",Environment.CurrentDirectory}, + {"UserName",Environment.UserName}, + {"CommandLine",Environment.CommandLine}, + {"InDebugMode",Debugger.IsAttached.ToString()}, + + } + }; + } } + class Defaults : ISetDefaultSettings + { + public Defaults() + { + SettingsHolder.SetDefault(DefaultHostInformation.GetCurrent()); + } + } + + class RegisterHostInformation:IWantToRunBeforeConfigurationIsFinalized + { + public void Run() + { + var hostInformation = SettingsHolder.Get(typeof(HostInformation).FullName); + + Configure.Component(() => hostInformation, DependencyLifecycle.InstancePerCall); + } + } + + } \ No newline at end of file diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 1de4cd08174..9fd157223e1 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -597,6 +597,7 @@ + diff --git a/src/NServiceBus.Core/Utils/DeterministicGuid.cs b/src/NServiceBus.Core/Utils/DeterministicGuid.cs new file mode 100644 index 00000000000..f43a35ce286 --- /dev/null +++ b/src/NServiceBus.Core/Utils/DeterministicGuid.cs @@ -0,0 +1,21 @@ +namespace NServiceBus.Utils +{ + using System; + using System.Security.Cryptography; + using System.Text; + + public class DeterministicGuid + { + public static Guid Create(params string[] data) + { + // use MD5 hash to get a 16-byte hash of the string + using (var provider = new MD5CryptoServiceProvider()) + { + var inputBytes = Encoding.Default.GetBytes(string.Concat(data)); + var hashBytes = provider.ComputeHash(inputBytes); + // generate a guid from the hash: + return new Guid(hashBytes); + } + } + } +} \ No newline at end of file From 951711f161968a3a6362244ea218610b9e1f6160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 22 Jan 2014 15:23:37 +0100 Subject: [PATCH 113/146] Tweaking the hostid --- IntegrationTests/TimeoutManager/MyServer/Starter.cs | 3 +++ ...ge_mutators.cs => When_an_endpoint_is_started.cs} | 0 .../NServiceBus.AcceptanceTests.csproj | 2 +- src/NServiceBus.Core/Hosting/HostInformation.cs | 12 +++++------- 4 files changed, 9 insertions(+), 8 deletions(-) rename src/NServiceBus.AcceptanceTests/HostInformation/{When_defining_outoing_message_mutators.cs => When_an_endpoint_is_started.cs} (100%) diff --git a/IntegrationTests/TimeoutManager/MyServer/Starter.cs b/IntegrationTests/TimeoutManager/MyServer/Starter.cs index d99a0b21c5a..2ced7110972 100644 --- a/IntegrationTests/TimeoutManager/MyServer/Starter.cs +++ b/IntegrationTests/TimeoutManager/MyServer/Starter.cs @@ -1,4 +1,5 @@ using MyServer.Scheduling; +using NServiceBus.Hosting; namespace MyServer { @@ -13,6 +14,8 @@ class Starter : IWantToRunWhenBusStartsAndStops { public IBus Bus { get; set; } + public HostInformation HostInformation { get; set; } + public void Start() { Console.WriteLine("Press 'S' to start the saga"); diff --git a/src/NServiceBus.AcceptanceTests/HostInformation/When_defining_outoing_message_mutators.cs b/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs similarity index 100% rename from src/NServiceBus.AcceptanceTests/HostInformation/When_defining_outoing_message_mutators.cs rename to src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 39ecc9bddb8..ee9a949a6b4 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -100,7 +100,7 @@ - + diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index db111aa7dc4..4f41cc68998 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -3,6 +3,7 @@ namespace NServiceBus.Hosting using System; using System.Collections.Generic; using System.Diagnostics; + using System.Linq; using System.Reflection; using Settings; using Support; @@ -21,17 +22,14 @@ class DefaultHostInformation { public static HostInformation GetCurrent() { - var assembly = Assembly.GetEntryAssembly(); + var commandLine = Environment.CommandLine; - if (assembly == null) - { - assembly = Assembly.GetCallingAssembly(); - } + var fullPathToStartingExe = commandLine.Split('"')[1]; return new HostInformation { - HostId = DeterministicGuid.Create(assembly.Location), //todo is this what we need? - DisplayName = string.Format("{0}@{1}", assembly.Location, RuntimeEnvironment.MachineName), + HostId = DeterministicGuid.Create(fullPathToStartingExe), //todo is this what we need? + DisplayName = string.Format("{0}@{1}", fullPathToStartingExe, RuntimeEnvironment.MachineName), Properties = new Dictionary { {"Machine", RuntimeEnvironment.MachineName}, From b53b3feb46de5118b9c505d27800953111102f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 22 Jan 2014 23:49:56 +0100 Subject: [PATCH 114/146] More improvements after call with John1 --- src/NServiceBus.Core/Hosting/GenericHost.cs | 3 ++ .../Hosting/HostInformation.cs | 28 ++++++++++--------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/NServiceBus.Core/Hosting/GenericHost.cs b/src/NServiceBus.Core/Hosting/GenericHost.cs index 1ce49229a02..c4416d667dd 100644 --- a/src/NServiceBus.Core/Hosting/GenericHost.cs +++ b/src/NServiceBus.Core/Hosting/GenericHost.cs @@ -66,6 +66,9 @@ public void Start() { PerformConfiguration(); + //do it here + //SettingsHolder.SetDefault<>(); + bus = Configure.Instance.CreateBus(); if (bus != null && !SettingsHolder.Get("Endpoint.SendOnly")) { diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index 4f41cc68998..e04d11ae184 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -11,6 +11,17 @@ namespace NServiceBus.Hosting public class HostInformation { + public HostInformation() + { + Properties = new Dictionary + { + {"Machine", Environment.MachineName}, + {"ProcessID", Process.GetCurrentProcess().Id.ToString()}, + {"UserName", Environment.UserName}, //check this + {"CommandLine", Environment.CommandLine} + }; + } + public Guid HostId { get; set; } public string DisplayName { get; set; } @@ -28,18 +39,9 @@ public static HostInformation GetCurrent() return new HostInformation { - HostId = DeterministicGuid.Create(fullPathToStartingExe), //todo is this what we need? - DisplayName = string.Format("{0}@{1}", fullPathToStartingExe, RuntimeEnvironment.MachineName), - Properties = new Dictionary - { - {"Machine", RuntimeEnvironment.MachineName}, - {"ProcessID",Process.GetCurrentProcess().Id.ToString()}, - {"WorkingDirectory",Environment.CurrentDirectory}, - {"UserName",Environment.UserName}, - {"CommandLine",Environment.CommandLine}, - {"InDebugMode",Debugger.IsAttached.ToString()}, - - } + HostId = DeterministicGuid.Create(fullPathToStartingExe,Environment.MachineName), //todo is this what we need? + DisplayName = string.Format("{0}", fullPathToStartingExe) + }; } } @@ -57,7 +59,7 @@ public void Run() { var hostInformation = SettingsHolder.Get(typeof(HostInformation).FullName); - Configure.Component(() => hostInformation, DependencyLifecycle.InstancePerCall); + Configure.Component(() => hostInformation, DependencyLifecycle.SingleInstance); } } From 3a66ab16aaf54c54967f71ae7f883aeb4b3b596e Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 23 Jan 2014 14:17:07 +1100 Subject: [PATCH 115/146] Exposed HostInformation from UnicastBus --- src/NServiceBus.Core/Hosting/GenericHost.cs | 3 - .../Hosting/HostInformation.cs | 55 +++++++------------ .../Settings/SettingsHolder.cs | 2 - src/NServiceBus.Core/Unicast/UnicastBus.cs | 16 ++++++ 4 files changed, 37 insertions(+), 39 deletions(-) diff --git a/src/NServiceBus.Core/Hosting/GenericHost.cs b/src/NServiceBus.Core/Hosting/GenericHost.cs index c4416d667dd..1ce49229a02 100644 --- a/src/NServiceBus.Core/Hosting/GenericHost.cs +++ b/src/NServiceBus.Core/Hosting/GenericHost.cs @@ -66,9 +66,6 @@ public void Start() { PerformConfiguration(); - //do it here - //SettingsHolder.SetDefault<>(); - bus = Configure.Instance.CreateBus(); if (bus != null && !SettingsHolder.Get("Endpoint.SendOnly")) { diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index e04d11ae184..f75b70e7e0b 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -3,65 +3,52 @@ namespace NServiceBus.Hosting using System; using System.Collections.Generic; using System.Diagnostics; - using System.Linq; - using System.Reflection; - using Settings; - using Support; using Utils; public class HostInformation { + readonly Guid hostId; + readonly string displayName; + public HostInformation() { Properties = new Dictionary { {"Machine", Environment.MachineName}, {"ProcessID", Process.GetCurrentProcess().Id.ToString()}, - {"UserName", Environment.UserName}, //check this + {"UserName", Environment.UserName}, {"CommandLine", Environment.CommandLine} }; } - public Guid HostId { get; set; } - - public string DisplayName { get; set; } - - public Dictionary Properties { get; set; } - } - - class DefaultHostInformation - { - public static HostInformation GetCurrent() + public static HostInformation CreateDefault() { + var commandLine = Environment.CommandLine; var fullPathToStartingExe = commandLine.Split('"')[1]; - return new HostInformation - { - HostId = DeterministicGuid.Create(fullPathToStartingExe,Environment.MachineName), //todo is this what we need? - DisplayName = string.Format("{0}", fullPathToStartingExe) - - }; + var hostId = DeterministicGuid.Create(fullPathToStartingExe, Environment.MachineName); + + return new HostInformation(hostId, String.Format("{0}", fullPathToStartingExe)); } - } - class Defaults : ISetDefaultSettings - { - public Defaults() + + public HostInformation(Guid hostId, string displayName) { - SettingsHolder.SetDefault(DefaultHostInformation.GetCurrent()); + this.hostId = hostId; + this.displayName = displayName; } - } - class RegisterHostInformation:IWantToRunBeforeConfigurationIsFinalized - { - public void Run() + public Guid HostId { - var hostInformation = SettingsHolder.Get(typeof(HostInformation).FullName); + get { return hostId; } + } - Configure.Component(() => hostInformation, DependencyLifecycle.SingleInstance); + public string DisplayName + { + get { return displayName; } } - } - + public Dictionary Properties { get; set; } + } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Settings/SettingsHolder.cs b/src/NServiceBus.Core/Settings/SettingsHolder.cs index 9bbb3d0df45..bec610229c9 100644 --- a/src/NServiceBus.Core/Settings/SettingsHolder.cs +++ b/src/NServiceBus.Core/Settings/SettingsHolder.cs @@ -80,7 +80,6 @@ public static void SetProperty(Expression> property, object v Set(typeof(T).FullName + "." + prop.Name, value); } - /// /// Sets the default value of the given property /// @@ -91,7 +90,6 @@ public static void SetPropertyDefault(Expression> property, o SetDefault(typeof(T).FullName + "." + prop.Name, value); } - /// /// Sets the default setting value. /// diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index 217c2007cf3..5aaa62a8306 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -31,6 +31,22 @@ public class UnicastBus : IUnicastBus, IInMemoryOperations { bool messageHandlingDisabled; + HostInformation hostInformation = HostInformation.CreateDefault(); + + public HostInformation HostInformation + { + get { return hostInformation; } + set + { + if (value == null) + { + throw new ArgumentNullException(); + } + + hostInformation = value; + } + } + /// /// Should be used by programmer, not administrator. /// Disables the handling of incoming messages. From b0b735e2194c7491a07873ef435a2fb8a306a866 Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 23 Jan 2014 17:01:34 +1100 Subject: [PATCH 116/146] Replaced OriginatingMachine and ProcessingMachine headers with OriginatingHostId and ProcessingHostId --- .../When_sending_a_message_to_another_endpoint.cs | 2 -- .../When_message_fails_with_retries_set_to_0.cs | 1 - src/NServiceBus.Core/TransportMessage.cs | 4 ++-- src/NServiceBus.Core/Unicast/UnicastBus.cs | 12 ++++++++++-- src/NServiceBus/Headers.cs | 12 ++++++++++++ 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/BasicMessaging/When_sending_a_message_to_another_endpoint.cs b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_sending_a_message_to_another_endpoint.cs index beee319dbd7..b4eb710510a 100644 --- a/src/NServiceBus.AcceptanceTests/BasicMessaging/When_sending_a_message_to_another_endpoint.cs +++ b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_sending_a_message_to_another_endpoint.cs @@ -31,9 +31,7 @@ public void Should_receive_the_message() { Assert.True(c.WasCalled, "The message handler should be called"); Assert.AreEqual(1, c.TimesCalled, "The message handler should only be invoked once"); - Assert.AreEqual(Environment.MachineName, c.ReceivedHeaders[Headers.OriginatingMachine], "The sender should attach the machine name as a header"); Assert.True(c.ReceivedHeaders[Headers.OriginatingEndpoint].Contains("Sender"), "The sender should attach its endpoint name as a header"); - Assert.AreEqual(Environment.MachineName, c.ReceivedHeaders[Headers.ProcessingMachine], "The receiver should attach the machine name as a header"); Assert.True(c.ReceivedHeaders[Headers.ProcessingEndpoint].Contains("Receiver"), "The receiver should attach its endpoint name as a header"); Assert.AreEqual("StaticHeaderValue",c.ReceivedHeaders["MyStaticHeader"], "Static headers should be attached to outgoing messages"); Assert.AreEqual("MyHeaderValue", c.MyHeader, "Static headers should be attached to outgoing messages"); diff --git a/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs b/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs index 079921fa825..5441bb94c58 100644 --- a/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs +++ b/src/NServiceBus.AcceptanceTests/Retries/When_message_fails_with_retries_set_to_0.cs @@ -21,7 +21,6 @@ public void Should_not_retry_the_message_using_flr() .Run(); Assert.AreEqual(1, context.NumberOfTimesInvoked,"No FLR should be in use if MaxRetries is set to 0"); - Assert.AreEqual(Environment.MachineName, context.HeadersOfTheFailedMessage[Headers.ProcessingMachine], "The receiver should attach the machine name as a header"); Assert.True(context.HeadersOfTheFailedMessage[Headers.ProcessingEndpoint].Contains("RetryEndpoint"), "The receiver should attach its endpoint name as a header"); } diff --git a/src/NServiceBus.Core/TransportMessage.cs b/src/NServiceBus.Core/TransportMessage.cs index a4c7f4186c3..e47ed6d8f72 100644 --- a/src/NServiceBus.Core/TransportMessage.cs +++ b/src/NServiceBus.Core/TransportMessage.cs @@ -3,7 +3,7 @@ namespace NServiceBus using System; using System.Collections.Generic; using IdGeneration; - using Support; + using Unicast; /// /// An envelope used by NServiceBus to package messages for transmission. @@ -25,7 +25,7 @@ public TransportMessage() Headers[NServiceBus.Headers.MessageId] = id; CorrelationId = id; Headers.Add(NServiceBus.Headers.OriginatingEndpoint, Configure.EndpointName); - Headers.Add(NServiceBus.Headers.OriginatingMachine, RuntimeEnvironment.MachineName); + Headers.Add(NServiceBus.Headers.OriginatingHostId, UnicastBus.HostIdForTransportMessageBecauseEverythingIsStaticsInTheConstructor.ToString("N")); MessageIntent = MessageIntentEnum.Send; Headers[NServiceBus.Headers.NServiceBusVersion] = NServiceBusVersion.Version; Headers[NServiceBus.Headers.TimeSent] = DateTimeExtensions.ToWireFormattedString(DateTime.UtcNow); diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index 5aaa62a8306..37702b4c42e 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -20,7 +20,6 @@ namespace NServiceBus.Unicast using Serialization; using Subscriptions; using Subscriptions.MessageDrivenSubscriptions.SubcriberSideFiltering; - using Support; using Transport; using Transports; @@ -33,6 +32,14 @@ public class UnicastBus : IUnicastBus, IInMemoryOperations HostInformation hostInformation = HostInformation.CreateDefault(); + // HACK: Statics are bad, remove + internal static Guid HostIdForTransportMessageBecauseEverythingIsStaticsInTheConstructor; + + public UnicastBus() + { + HostIdForTransportMessageBecauseEverythingIsStaticsInTheConstructor = hostInformation.HostId; + } + public HostInformation HostInformation { get { return hostInformation; } @@ -43,6 +50,7 @@ public HostInformation HostInformation throw new ArgumentNullException(); } + HostIdForTransportMessageBecauseEverythingIsStaticsInTheConstructor = value.HostId; hostInformation = value; } } @@ -1030,7 +1038,7 @@ void TransportStartedMessageProcessing(object sender, StartedMessageProcessingEv var incomingMessage = e.Message; incomingMessage.Headers[Headers.ProcessingEndpoint] = Configure.EndpointName; - incomingMessage.Headers[Headers.ProcessingMachine] = RuntimeEnvironment.MachineName; + incomingMessage.Headers[Headers.ProcessingHostId] = HostInformation.HostId.ToString("N"); PipelineFactory.PreparePhysicalMessagePipelineContext(incomingMessage, messageHandlingDisabled); diff --git a/src/NServiceBus/Headers.cs b/src/NServiceBus/Headers.cs index 7729398c213..705ab4ba74b 100644 --- a/src/NServiceBus/Headers.cs +++ b/src/NServiceBus/Headers.cs @@ -193,8 +193,14 @@ public static class Headers /// /// Machine name of the endpoint where the given message originated /// + [ObsoleteEx(Message = "The OriginatingMachine headers is replaced by the OriginatingHostId to be more environment agnostic", RemoveInVersion = "5.0")] public const string OriginatingMachine = "NServiceBus.OriginatingMachine"; + /// + /// HostId of the endpoint where the given message originated + /// + public const string OriginatingHostId = "NServiceBus.OriginatingHostId"; + /// /// Name of the endpoint where the given message was processed(success or failure) /// @@ -203,8 +209,14 @@ public static class Headers /// /// Machine name of the endpoint where the given message was processed(success or failure) /// + [ObsoleteEx(Message = "The ProcessingMachine headers is replaced by the ProcessingHostId to be more environment agnostic", RemoveInVersion = "5.0")] public const string ProcessingMachine = "NServiceBus.ProcessingMachine"; + /// + /// HostId of the endpoint where the given message was processed(success or failure) + /// + public const string ProcessingHostId = "NServiceBus.ProcessingHostId"; + /// /// The original reply to address for successfully processed messages /// From 4de9efaaba356d012efcfeaad812ac50c8eb4e80 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 23 Jan 2014 18:33:53 +1100 Subject: [PATCH 117/146] update gitflow --- .../Build/GitFlowVersionTask.targets | 7 ++++++- .../GitFlowVersion/GitFlowVersion.exe | Bin 36352 -> 47104 bytes .../GitFlowVersion/GitFlowVersion.pdb | Bin 77312 -> 114176 bytes .../GitFlowVersion/GitFlowVersionTask.dll | Bin 10752 -> 15872 bytes .../GitFlowVersion/GitFlowVersionTask.pdb | Bin 17920 -> 26112 bytes 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/buildsupport/GitFlowVersion/Build/GitFlowVersionTask.targets b/buildsupport/GitFlowVersion/Build/GitFlowVersionTask.targets index a86a24af6b2..368f84e44fb 100644 --- a/buildsupport/GitFlowVersion/Build/GitFlowVersionTask.targets +++ b/buildsupport/GitFlowVersion/Build/GitFlowVersionTask.targets @@ -11,7 +11,8 @@ @@ -32,6 +33,10 @@ + + + + diff --git a/buildsupport/GitFlowVersion/GitFlowVersion.exe b/buildsupport/GitFlowVersion/GitFlowVersion.exe index 67eb8d6f030e06b176b99deb2394d17c3d206fb8..df38c906a4150f44b53f51108465cf2635b69cd1 100644 GIT binary patch literal 47104 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 literal 36352 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 XejRwTg*#E`t~Z-fQ~JDNHSqrdN0G|3 diff --git a/buildsupport/GitFlowVersion/GitFlowVersionTask.dll b/buildsupport/GitFlowVersion/GitFlowVersionTask.dll index b66b7b812fcfda07322154190a52a35b35485d14..ac2dc5bbdf176679e9449e0e823a0c7bf9e1777b 100644 GIT binary patch literal 15872 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 T{~3L1-JhIi|L@R6MBsk`qy-j% literal 10752 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 E0Iu}mN&o-= diff --git a/buildsupport/GitFlowVersion/GitFlowVersionTask.pdb b/buildsupport/GitFlowVersion/GitFlowVersionTask.pdb index 2f1e3143d02922e43813fb57acb87232b7e74bfe..34b0222bccbb75667cddb7edc091e151859e838d 100644 GIT binary patch literal 26112 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 literal 17920 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 Date: Thu, 23 Jan 2014 20:12:55 +1100 Subject: [PATCH 118/146] extract version info from git fixes #1806 --- .../GitFlowVersionTests.cs | 18 +++++++++++++++++ .../Licensing/NServiceBusVersionTests.cs | 19 ------------------ .../Licensing/TrialLicenseReaderTests.cs | 4 ++-- .../NServiceBus.Core.Tests.csproj | 2 +- .../Licensing/LicenseManager.cs | 6 +++--- .../Licensing/NServiceBusVersion.cs | 18 ----------------- .../Licensing/TrialLicenseReader.cs | 4 ++-- src/NServiceBus.Core/NServiceBus.Core.csproj | 4 +++- src/NServiceBus.Core/TransportMessage.cs | 2 +- src/NServiceBus/GitFlowVersion.cs | 20 +++++++++++++++++++ src/NServiceBus/NServiceBus.csproj | 1 + src/NServiceBus/NServiceBusVersion.cs | 3 ++- 12 files changed, 53 insertions(+), 48 deletions(-) create mode 100644 src/NServiceBus.Core.Tests/GitFlowVersionTests.cs delete mode 100644 src/NServiceBus.Core.Tests/Licensing/NServiceBusVersionTests.cs delete mode 100644 src/NServiceBus.Core/Licensing/NServiceBusVersion.cs create mode 100644 src/NServiceBus/GitFlowVersion.cs diff --git a/src/NServiceBus.Core.Tests/GitFlowVersionTests.cs b/src/NServiceBus.Core.Tests/GitFlowVersionTests.cs new file mode 100644 index 00000000000..221cf1eba13 --- /dev/null +++ b/src/NServiceBus.Core.Tests/GitFlowVersionTests.cs @@ -0,0 +1,18 @@ +namespace NServiceBus +{ + using System; + using NUnit.Framework; + + [TestFixture] + public class GitFlowVersionTests + { + [Test] + public void Verify_has_a_version_and_can_be_parsed() + { + Assert.IsNotNullOrEmpty(GitFlowVersion.MajorMinor); + Version.Parse(GitFlowVersion.MajorMinor); + Assert.IsNotNullOrEmpty(GitFlowVersion.MajorMinorPatch); + Version.Parse(GitFlowVersion.MajorMinorPatch); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Licensing/NServiceBusVersionTests.cs b/src/NServiceBus.Core.Tests/Licensing/NServiceBusVersionTests.cs deleted file mode 100644 index f7e50811efa..00000000000 --- a/src/NServiceBus.Core.Tests/Licensing/NServiceBusVersionTests.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace NServiceBus.Core.Tests.Licensing -{ - using System; - using NServiceBus.Licensing; - using NUnit.Framework; - - [TestFixture] - public class NServiceBusVersionTests - { - - [Test] - public void Verify_has_a_version_and_can_be_parsed() - { - Assert.IsNotNullOrEmpty(NServiceBusVersion.MajorAndMinor); - Version version; - Assert.IsTrue(Version.TryParse(NServiceBusVersion.MajorAndMinor, out version)); - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/Licensing/TrialLicenseReaderTests.cs b/src/NServiceBus.Core.Tests/Licensing/TrialLicenseReaderTests.cs index 025590e1b2f..b59d8ae1b0a 100644 --- a/src/NServiceBus.Core.Tests/Licensing/TrialLicenseReaderTests.cs +++ b/src/NServiceBus.Core.Tests/Licensing/TrialLicenseReaderTests.cs @@ -12,7 +12,7 @@ public class TrialLicenseReaderTests [Test] public void When_no_sub_key_exists_one_is_created() { - var subKeyPath = String.Format(@"SOFTWARE\NServiceBus\{0}", NServiceBusVersion.MajorAndMinor); + var subKeyPath = String.Format(@"SOFTWARE\NServiceBus\{0}", GitFlowVersion.MajorMinor); Registry.CurrentUser.DeleteSubKey(subKeyPath,false); var expirationFromRegistry = TrialLicenseReader.GetTrialExpirationFromRegistry(); @@ -23,7 +23,7 @@ public void When_no_sub_key_exists_one_is_created() [Test] public void When_sub_key_exists_one_is_created_the_value_is_read_from_it() { - var subKeyPath = String.Format(@"SOFTWARE\NServiceBus\{0}", NServiceBusVersion.MajorAndMinor); + var subKeyPath = String.Format(@"SOFTWARE\NServiceBus\{0}", GitFlowVersion.MajorMinor); //once to create key TrialLicenseReader.GetTrialExpirationFromRegistry(); //again to read from to create key diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 6d5cae59e80..09cef0603b7 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -129,13 +129,13 @@ + - diff --git a/src/NServiceBus.Core/Licensing/LicenseManager.cs b/src/NServiceBus.Core/Licensing/LicenseManager.cs index afa7b1f6574..fbea09a54c1 100644 --- a/src/NServiceBus.Core/Licensing/LicenseManager.cs +++ b/src/NServiceBus.Core/Licensing/LicenseManager.cs @@ -21,7 +21,7 @@ internal static void PromptUserForLicenseIfTrialHasExpired() } bool createdNew; - using (new Mutex(true, string.Format("NServiceBus-{0}", NServiceBusVersion.MajorAndMinor), out createdNew)) + using (new Mutex(true, string.Format("NServiceBus-{0}", GitFlowVersion.MajorMinor), out createdNew)) { if (!createdNew) { @@ -72,13 +72,13 @@ static void ConfigureNServiceBusToRunInTrialMode() //Check trial is still valid if (ExpiryChecker.IsExpired(trialExpirationDate)) { - Logger.WarnFormat("Trial for NServiceBus v{0} has expired. Falling back to run in Basic1 license mode.", NServiceBusVersion.MajorAndMinor); + Logger.WarnFormat("Trial for NServiceBus v{0} has expired. Falling back to run in Basic1 license mode.", GitFlowVersion.MajorMinor); license = LicenseDeserializer.GetBasicLicense(); } else { - var message = string.Format("Trial for NServiceBus v{0} is still active, trial expires on {1}. Configuring NServiceBus to run in trial mode.", NServiceBusVersion.MajorAndMinor, trialExpirationDate.ToLocalTime().ToShortDateString()); + var message = string.Format("Trial for NServiceBus v{0} is still active, trial expires on {1}. Configuring NServiceBus to run in trial mode.", GitFlowVersion.MajorMinor, trialExpirationDate.ToLocalTime().ToShortDateString()); Logger.Info(message); //Run in unlimited mode during trial period diff --git a/src/NServiceBus.Core/Licensing/NServiceBusVersion.cs b/src/NServiceBus.Core/Licensing/NServiceBusVersion.cs deleted file mode 100644 index 5071b0bfacf..00000000000 --- a/src/NServiceBus.Core/Licensing/NServiceBusVersion.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace NServiceBus.Licensing -{ - using System; - using System.Reflection; - - static class NServiceBusVersion - { - static NServiceBusVersion() - { - - var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; - - MajorAndMinor = new Version(assemblyVersion.Major, assemblyVersion.Minor).ToString(2); - } - - public static string MajorAndMinor; - } -} \ No newline at end of file diff --git a/src/NServiceBus.Core/Licensing/TrialLicenseReader.cs b/src/NServiceBus.Core/Licensing/TrialLicenseReader.cs index e9c9ea7c576..14c6097ea1e 100644 --- a/src/NServiceBus.Core/Licensing/TrialLicenseReader.cs +++ b/src/NServiceBus.Core/Licensing/TrialLicenseReader.cs @@ -15,7 +15,7 @@ public static DateTime GetTrialExpirationFromRegistry() //If first time run, configure expire date try { - var subKeyPath = String.Format(@"SOFTWARE\NServiceBus\{0}", NServiceBusVersion.MajorAndMinor); + var subKeyPath = String.Format(@"SOFTWARE\NServiceBus\{0}", GitFlowVersion.MajorMinor); using (var registryKey = Registry.CurrentUser.CreateSubKey(subKeyPath)) { //CreateSubKey does not return null http://stackoverflow.com/questions/19849870/under-what-circumstances-will-registrykey-createsubkeystring-return-null @@ -27,7 +27,7 @@ public static DateTime GetTrialExpirationFromRegistry() trialStartDateString = trialStart.ToString("yyyy-MM-dd"); registryKey.SetValue("TrialStart", trialStartDateString, RegistryValueKind.String); - Logger.DebugFormat("First time running NServiceBus v{0}, setting trial license start.", NServiceBusVersion.MajorAndMinor); + Logger.DebugFormat("First time running NServiceBus v{0}, setting trial license start.", GitFlowVersion.MajorMinor); return trialStart.AddDays(TRIAL_DAYS); } else diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 79f2ddcd235..5fcd0c31e9f 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -88,6 +88,9 @@ + + GitFlowVersion.cs + @@ -132,7 +135,6 @@ - diff --git a/src/NServiceBus.Core/TransportMessage.cs b/src/NServiceBus.Core/TransportMessage.cs index a4c7f4186c3..6e75ab9cbb4 100644 --- a/src/NServiceBus.Core/TransportMessage.cs +++ b/src/NServiceBus.Core/TransportMessage.cs @@ -27,7 +27,7 @@ public TransportMessage() Headers.Add(NServiceBus.Headers.OriginatingEndpoint, Configure.EndpointName); Headers.Add(NServiceBus.Headers.OriginatingMachine, RuntimeEnvironment.MachineName); MessageIntent = MessageIntentEnum.Send; - Headers[NServiceBus.Headers.NServiceBusVersion] = NServiceBusVersion.Version; + Headers[NServiceBus.Headers.NServiceBusVersion] = GitFlowVersion.MajorMinorPatch; Headers[NServiceBus.Headers.TimeSent] = DateTimeExtensions.ToWireFormattedString(DateTime.UtcNow); } diff --git a/src/NServiceBus/GitFlowVersion.cs b/src/NServiceBus/GitFlowVersion.cs new file mode 100644 index 00000000000..b1fe9ae4227 --- /dev/null +++ b/src/NServiceBus/GitFlowVersion.cs @@ -0,0 +1,20 @@ +namespace NServiceBus +{ + using System; + + static class GitFlowVersion + { + static GitFlowVersion() + { + var assembly = typeof(GitFlowVersion).Assembly; + var gitFlowVersionInformationType = assembly.GetType("NServiceBus.GitFlowVersionInformation", true); + var fieldInfo = gitFlowVersionInformationType.GetField("AssemblyFileVersion"); + var assemblyFileVersion = Version.Parse((string)fieldInfo.GetValue(null)); + MajorMinor = assemblyFileVersion.ToString(2); + MajorMinorPatch = assemblyFileVersion.ToString(3); + } + + public static string MajorMinor; + public static string MajorMinorPatch; + } +} \ No newline at end of file diff --git a/src/NServiceBus/NServiceBus.csproj b/src/NServiceBus/NServiceBus.csproj index ecfda8996c1..1831256865f 100644 --- a/src/NServiceBus/NServiceBus.csproj +++ b/src/NServiceBus/NServiceBus.csproj @@ -61,6 +61,7 @@ + diff --git a/src/NServiceBus/NServiceBusVersion.cs b/src/NServiceBus/NServiceBusVersion.cs index 7e549231fc1..83f1102d5ac 100644 --- a/src/NServiceBus/NServiceBusVersion.cs +++ b/src/NServiceBus/NServiceBusVersion.cs @@ -3,11 +3,12 @@ namespace NServiceBus /// /// The semver version of NServiceBus /// + [ObsoleteEx(RemoveInVersion = "5.0")] public static class NServiceBusVersion { /// /// The semver version of NServiceBus /// - public const string Version = "4.3.3"; + public string Version = GitFlowVersion.MajorMinorPatch; } } From cf38eaacb4e98eaf2d263eabfdf83149bdcb1b09 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 23 Jan 2014 20:14:08 +1100 Subject: [PATCH 119/146] field has to be static --- src/NServiceBus/NServiceBusVersion.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus/NServiceBusVersion.cs b/src/NServiceBus/NServiceBusVersion.cs index 83f1102d5ac..f20557f6a64 100644 --- a/src/NServiceBus/NServiceBusVersion.cs +++ b/src/NServiceBus/NServiceBusVersion.cs @@ -9,6 +9,6 @@ public static class NServiceBusVersion /// /// The semver version of NServiceBus /// - public string Version = GitFlowVersion.MajorMinorPatch; + public static string Version = GitFlowVersion.MajorMinorPatch; } } From 98ef921037f88c1c5d03543c0f6fe0e820e7ec07 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 23 Jan 2014 20:19:18 +1100 Subject: [PATCH 120/146] cleanup --- .../EndpointTemplates/ConfigureExtensions.cs | 1 - src/NServiceBus.Core.Tests/FuncBuilder.cs | 2 +- .../Gateway/Persistence/Sql/SqlPersistence.cs | 3 +-- .../Persistence/InMemory/Gateway/InMemoryDeduplication.cs | 2 +- src/NServiceBus.Hosting.Windows/Options.cs | 6 ++---- src/ObjectBuilder.Tests/When_releasing_components.cs | 1 + src/licenseinstaller/Options.cs | 6 ++---- 7 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs b/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs index ccc61446885..959d31edeb4 100644 --- a/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs +++ b/src/NServiceBus.AcceptanceTests/EndpointTemplates/ConfigureExtensions.cs @@ -2,7 +2,6 @@ { using System; using System.Collections.Generic; - using AcceptanceTesting; using ObjectBuilder.Common; using ObjectBuilder.Common.Config; using ScenarioDescriptors; diff --git a/src/NServiceBus.Core.Tests/FuncBuilder.cs b/src/NServiceBus.Core.Tests/FuncBuilder.cs index 551406cf37b..4be4b7ecbf6 100644 --- a/src/NServiceBus.Core.Tests/FuncBuilder.cs +++ b/src/NServiceBus.Core.Tests/FuncBuilder.cs @@ -47,7 +47,7 @@ public object Build(Type typeToBuild) } } - object result = null; + object result; if (fn != null) { diff --git a/src/NServiceBus.Core/Gateway/Persistence/Sql/SqlPersistence.cs b/src/NServiceBus.Core/Gateway/Persistence/Sql/SqlPersistence.cs index 7e00603ca6b..95144997637 100644 --- a/src/NServiceBus.Core/Gateway/Persistence/Sql/SqlPersistence.cs +++ b/src/NServiceBus.Core/Gateway/Persistence/Sql/SqlPersistence.cs @@ -125,11 +125,10 @@ public void UpdateHeader(string clientId, string headerKey, string newValue) public int DeleteDeliveredMessages(DateTime until) { - int result; - using (var cn = new SqlConnection(ConnectionString)) { cn.Open(); + int result; using (var tx = cn.BeginTransaction()) { var command = cn.CreateCommand(); diff --git a/src/NServiceBus.Core/Persistence/InMemory/Gateway/InMemoryDeduplication.cs b/src/NServiceBus.Core/Persistence/InMemory/Gateway/InMemoryDeduplication.cs index 3aa3728e7f8..7e79c26c844 100644 --- a/src/NServiceBus.Core/Persistence/InMemory/Gateway/InMemoryDeduplication.cs +++ b/src/NServiceBus.Core/Persistence/InMemory/Gateway/InMemoryDeduplication.cs @@ -35,7 +35,7 @@ public int GetHashCode(GatewayMessage obj) public int DeleteDeliveredMessages(DateTime until) { - var count = 0; + int count; lock (persistence) { var items = persistence.Where(msg => msg.TimeReceived <= until).ToList(); diff --git a/src/NServiceBus.Hosting.Windows/Options.cs b/src/NServiceBus.Hosting.Windows/Options.cs index 65418409a37..a74bbf0f646 100644 --- a/src/NServiceBus.Hosting.Windows/Options.cs +++ b/src/NServiceBus.Hosting.Windows/Options.cs @@ -812,10 +812,9 @@ protected virtual bool Parse(string argument, OptionContext c) if (!GetOptionParts(argument, out f, out n, out s, out v)) return false; - Option p; if (Contains(n)) { - p = this[n]; + var p = this[n]; c.OptionName = f + n; c.Option = p; switch (p.OptionValueType) @@ -864,12 +863,11 @@ private void ParseValue(string option, OptionContext c) private bool ParseBool(string option, string n, OptionContext c) { - Option p; string rn; if (n.Length >= 1 && (n[n.Length - 1] == '+' || n[n.Length - 1] == '-') && Contains((rn = n.Substring(0, n.Length - 1)))) { - p = this[rn]; + var p = this[rn]; var v = n[n.Length - 1] == '+' ? option : null; c.OptionName = option; c.Option = p; diff --git a/src/ObjectBuilder.Tests/When_releasing_components.cs b/src/ObjectBuilder.Tests/When_releasing_components.cs index c3e4aa8382a..efc952e4485 100644 --- a/src/ObjectBuilder.Tests/When_releasing_components.cs +++ b/src/ObjectBuilder.Tests/When_releasing_components.cs @@ -22,6 +22,7 @@ public void Transient_component_should_be_destructed_called() builder.Release(comp); + // ReSharper disable once RedundantAssignment comp = null; GC.Collect(); diff --git a/src/licenseinstaller/Options.cs b/src/licenseinstaller/Options.cs index a1a7ac74a4f..a1032930125 100644 --- a/src/licenseinstaller/Options.cs +++ b/src/licenseinstaller/Options.cs @@ -811,10 +811,9 @@ protected virtual bool Parse(string argument, OptionContext c) if (!GetOptionParts(argument, out f, out n, out s, out v)) return false; - Option p; if (Contains(n)) { - p = this[n]; + var p = this[n]; c.OptionName = f + n; c.Option = p; switch (p.OptionValueType) @@ -863,12 +862,11 @@ private void ParseValue(string option, OptionContext c) private bool ParseBool(string option, string n, OptionContext c) { - Option p; string rn; if (n.Length >= 1 && (n[n.Length - 1] == '+' || n[n.Length - 1] == '-') && Contains((rn = n.Substring(0, n.Length - 1)))) { - p = this[rn]; + var p = this[rn]; var v = n[n.Length - 1] == '+' ? option : null; c.OptionName = option; c.Option = p; From d6235de14b5f8320ab4a858a312d4aec4ce5792b Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 23 Jan 2014 20:32:13 +1100 Subject: [PATCH 121/146] add tests for NSBVersion --- .../NServiceBus.Core.Tests.csproj | 1 + .../NServiceBusVersionTests.cs | 14 ++++++++++++++ .../GitFlowVersion.cs | 2 +- src/NServiceBus.Core/NServiceBus.Core.csproj | 4 +--- src/NServiceBus/NServiceBus.csproj | 1 - src/NServiceBus/NServiceBusVersion.cs | 16 +++++++++++----- 6 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 src/NServiceBus.Core.Tests/NServiceBusVersionTests.cs rename src/{NServiceBus => NServiceBus.Core}/GitFlowVersion.cs (92%) diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 09cef0603b7..619ca76f5c9 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -130,6 +130,7 @@ + diff --git a/src/NServiceBus.Core.Tests/NServiceBusVersionTests.cs b/src/NServiceBus.Core.Tests/NServiceBusVersionTests.cs new file mode 100644 index 00000000000..158dcc13af3 --- /dev/null +++ b/src/NServiceBus.Core.Tests/NServiceBusVersionTests.cs @@ -0,0 +1,14 @@ +namespace NServiceBus +{ + using NUnit.Framework; + + [TestFixture] + public class NServiceBusVersionTests + { + [Test] + public void Verify_has_a_version_and_can_be_parsed() + { + Assert.IsNotNullOrEmpty(NServiceBusVersion.Version); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus/GitFlowVersion.cs b/src/NServiceBus.Core/GitFlowVersion.cs similarity index 92% rename from src/NServiceBus/GitFlowVersion.cs rename to src/NServiceBus.Core/GitFlowVersion.cs index b1fe9ae4227..bcb3c026e07 100644 --- a/src/NServiceBus/GitFlowVersion.cs +++ b/src/NServiceBus.Core/GitFlowVersion.cs @@ -7,7 +7,7 @@ static class GitFlowVersion static GitFlowVersion() { var assembly = typeof(GitFlowVersion).Assembly; - var gitFlowVersionInformationType = assembly.GetType("NServiceBus.GitFlowVersionInformation", true); + var gitFlowVersionInformationType = assembly.GetType("NServiceBus.Core.GitFlowVersionInformation", true); var fieldInfo = gitFlowVersionInformationType.GetField("AssemblyFileVersion"); var assemblyFileVersion = Version.Parse((string)fieldInfo.GetValue(null)); MajorMinor = assemblyFileVersion.ToString(2); diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 5fcd0c31e9f..de50d65ace7 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -88,9 +88,6 @@ - - GitFlowVersion.cs - @@ -124,6 +121,7 @@ + diff --git a/src/NServiceBus/NServiceBus.csproj b/src/NServiceBus/NServiceBus.csproj index 1831256865f..ecfda8996c1 100644 --- a/src/NServiceBus/NServiceBus.csproj +++ b/src/NServiceBus/NServiceBus.csproj @@ -61,7 +61,6 @@ - diff --git a/src/NServiceBus/NServiceBusVersion.cs b/src/NServiceBus/NServiceBusVersion.cs index f20557f6a64..3336d88d890 100644 --- a/src/NServiceBus/NServiceBusVersion.cs +++ b/src/NServiceBus/NServiceBusVersion.cs @@ -3,12 +3,18 @@ namespace NServiceBus /// /// The semver version of NServiceBus /// - [ObsoleteEx(RemoveInVersion = "5.0")] + [ObsoleteEx(RemoveInVersion = "5.0", TreatAsErrorFromVersion = "5.0")] public static class NServiceBusVersion { - /// - /// The semver version of NServiceBus - /// - public static string Version = GitFlowVersion.MajorMinorPatch; + static NServiceBusVersion() + { + var assembly = typeof(NServiceBusVersion).Assembly; + var gitFlowVersionInformationType = assembly.GetType("NServiceBus.GitFlowVersionInformation", true); + var fieldInfo = gitFlowVersionInformationType.GetField("AssemblyFileVersion"); + var assemblyFileVersion = System.Version.Parse((string)fieldInfo.GetValue(null)); + Version = assemblyFileVersion.ToString(3); + } + + public static readonly string Version; } } From 3e337327e3c3fab85e0a4eb536f2b4064a94513c Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 23 Jan 2014 11:11:05 +0100 Subject: [PATCH 122/146] looks like the magic number for msmq max queue lenght is only 114 --- src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs index 91902845a8f..eed9a8ab8fe 100644 --- a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs +++ b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs @@ -109,9 +109,9 @@ public static string GetFullPathWithoutPrefix(Address address) var queueName = address.Queue; var msmqTotalQueueName = address.Machine + MsmqUtilities.PRIVATE + queueName; - if (msmqTotalQueueName.Length >= 124) + if (msmqTotalQueueName.Length >= 114) //Setpermission is limiting us here, docs say it should be 380 + 124 { - msmqTotalQueueName = address.Machine + MsmqUtilities.PRIVATE + DeterministicGuidBuilder(queueName).ToString(); + msmqTotalQueueName = address.Machine + MsmqUtilities.PRIVATE + DeterministicGuidBuilder(queueName); } return msmqTotalQueueName; @@ -130,4 +130,4 @@ private static Guid DeterministicGuidBuilder(string input) } } -} \ No newline at end of file +} From da55986a9a379ef073a30c2a9f07d6ff011a816a Mon Sep 17 00:00:00 2001 From: Yves Goeleven Date: Thu, 23 Jan 2014 11:27:55 +0100 Subject: [PATCH 123/146] Added a unittest for deterministic guid queuename replacement --- .../NServiceBus.Core.Tests.csproj | 1 + ...ate_identifier_exceeding_114_characters.cs | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/NServiceBus.Core.Tests/Transport/When_specifying_a_queu_name_for_msmq_with_total_length_including_machine_name_and_private_identifier_exceeding_114_characters.cs diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 619ca76f5c9..f09b585105e 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -263,6 +263,7 @@ + diff --git a/src/NServiceBus.Core.Tests/Transport/When_specifying_a_queu_name_for_msmq_with_total_length_including_machine_name_and_private_identifier_exceeding_114_characters.cs b/src/NServiceBus.Core.Tests/Transport/When_specifying_a_queu_name_for_msmq_with_total_length_including_machine_name_and_private_identifier_exceeding_114_characters.cs new file mode 100644 index 00000000000..3105d2b198b --- /dev/null +++ b/src/NServiceBus.Core.Tests/Transport/When_specifying_a_queu_name_for_msmq_with_total_length_including_machine_name_and_private_identifier_exceeding_114_characters.cs @@ -0,0 +1,25 @@ +namespace NServiceBus.Core.Tests.Transport +{ + using System; + using NUnit.Framework; + using Transports.Msmq; + + [TestFixture] + public class When_specifying_a_queu_name_for_msmq_with_total_length_including_machine_name_and_private_identifier_exceeding_114_characters + { + [Test] + public void Should_be_replaced_by_a_deterministic_guid () + { + var address = Address.Parse("WhenSpecifyingAQueuNameWithTotalLengthIncludingMachineNameAndPrivateIdentifierExceeding114Chars@MyMachine"); + + var path = MsmqQueueCreator.GetFullPathWithoutPrefix(address); + var queueName = path.Replace(@"MyMachine\private$\", ""); + + var secondPath = MsmqQueueCreator.GetFullPathWithoutPrefix(address); + + Guid isAGuid; + Assert.IsTrue(Guid.TryParse(queueName, out isAGuid)); + Assert.AreEqual(path, secondPath); + } + } +} \ No newline at end of file From 303a66f1553f2a6da45293314a75858b26dce0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 23 Jan 2014 14:03:40 +0100 Subject: [PATCH 124/146] Updates after simons code review part 1 --- .../When_an_endpoint_is_started.cs | 13 ++++--- .../Hosting/HostInformation.cs | 38 +++++++------------ src/NServiceBus.Core/Unicast/UnicastBus.cs | 2 + src/NServiceBus/Headers.cs | 1 - 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs b/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs index 2171dc1d286..fc6a9d37198 100644 --- a/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs +++ b/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs @@ -1,4 +1,4 @@ -namespace NServiceBus.AcceptanceTests.Sagas +namespace NServiceBus.AcceptanceTests.HostInformation { using System; using System.Collections.Generic; @@ -7,6 +7,7 @@ using AcceptanceTesting; using Hosting; using NUnit.Framework; + using Unicast; public class When_an_endpoint_is_started : NServiceBusAcceptanceTest { @@ -22,6 +23,8 @@ public void Host_information_should_be_available_through_DI() Console.Out.WriteLine(context.HostDisplayName); Console.Out.WriteLine(string.Join(Environment.NewLine,context.HostProperties.Select(kvp => string.Format("{0}:{1}", kvp.Key, kvp.Value)).ToList())); + + Assert.True(context.HostDisplayName.Contains(".exe")); } public class Context : ScenarioContext @@ -41,14 +44,14 @@ public MyEndpoint() class MyStartUpTask:IWantToRunWhenBusStartsAndStops { - public HostInformation HostInformation { get; set; } + public UnicastBus UnicastBus { get; set; } public Context Context { get; set; } public void Start() { - Context.HostId = HostInformation.HostId; - Context.HostDisplayName = HostInformation.DisplayName; - Context.HostProperties = HostInformation.Properties; + Context.HostId = UnicastBus.HostInformation.HostId; + Context.HostDisplayName = UnicastBus.HostInformation.DisplayName; + Context.HostProperties = UnicastBus.HostInformation.Properties; } public void Stop() diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index f75b70e7e0b..a12a491d303 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -7,20 +7,6 @@ namespace NServiceBus.Hosting public class HostInformation { - readonly Guid hostId; - readonly string displayName; - - public HostInformation() - { - Properties = new Dictionary - { - {"Machine", Environment.MachineName}, - {"ProcessID", Process.GetCurrentProcess().Id.ToString()}, - {"UserName", Environment.UserName}, - {"CommandLine", Environment.CommandLine} - }; - } - public static HostInformation CreateDefault() { @@ -35,20 +21,22 @@ public static HostInformation CreateDefault() public HostInformation(Guid hostId, string displayName) { - this.hostId = hostId; - this.displayName = displayName; - } + HostId = hostId; + DisplayName = displayName; - public Guid HostId - { - get { return hostId; } + Properties = new Dictionary + { + {"Machine", Environment.MachineName}, + {"ProcessID", Process.GetCurrentProcess().Id.ToString()}, + {"UserName", Environment.UserName}, + {"CommandLine", Environment.CommandLine} + }; } - public string DisplayName - { - get { return displayName; } - } + public Guid HostId { get; private set; } + + public string DisplayName { get; private set; } - public Dictionary Properties { get; set; } + public Dictionary Properties { get; private set; } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index 37702b4c42e..f2addda52a4 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -20,6 +20,7 @@ namespace NServiceBus.Unicast using Serialization; using Subscriptions; using Subscriptions.MessageDrivenSubscriptions.SubcriberSideFiltering; + using Support; using Transport; using Transports; @@ -1039,6 +1040,7 @@ void TransportStartedMessageProcessing(object sender, StartedMessageProcessingEv incomingMessage.Headers[Headers.ProcessingEndpoint] = Configure.EndpointName; incomingMessage.Headers[Headers.ProcessingHostId] = HostInformation.HostId.ToString("N"); + incomingMessage.Headers[Headers.ProcessingMachine] = RuntimeEnvironment.MachineName; PipelineFactory.PreparePhysicalMessagePipelineContext(incomingMessage, messageHandlingDisabled); diff --git a/src/NServiceBus/Headers.cs b/src/NServiceBus/Headers.cs index 705ab4ba74b..38d04892531 100644 --- a/src/NServiceBus/Headers.cs +++ b/src/NServiceBus/Headers.cs @@ -209,7 +209,6 @@ public static class Headers /// /// Machine name of the endpoint where the given message was processed(success or failure) /// - [ObsoleteEx(Message = "The ProcessingMachine headers is replaced by the ProcessingHostId to be more environment agnostic", RemoveInVersion = "5.0")] public const string ProcessingMachine = "NServiceBus.ProcessingMachine"; /// From d70eafc90a884e9cfb3391e1fb4ae54f56ec5ac2 Mon Sep 17 00:00:00 2001 From: John Simons Date: Fri, 24 Jan 2014 10:03:10 +1100 Subject: [PATCH 125/146] Adding headers back to ensure backwards compatibility --- .../HostInformation/When_an_endpoint_is_started.cs | 1 - src/NServiceBus.Core/TransportMessage.cs | 9 +++++++++ src/NServiceBus.Core/Unicast/UnicastBus.cs | 9 +++++++-- src/NServiceBus/Headers.cs | 3 ++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs b/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs index fc6a9d37198..aafb54b8dba 100644 --- a/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs +++ b/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs @@ -5,7 +5,6 @@ using System.Linq; using EndpointTemplates; using AcceptanceTesting; - using Hosting; using NUnit.Framework; using Unicast; diff --git a/src/NServiceBus.Core/TransportMessage.cs b/src/NServiceBus.Core/TransportMessage.cs index 047a535b425..c8485d055d8 100644 --- a/src/NServiceBus.Core/TransportMessage.cs +++ b/src/NServiceBus.Core/TransportMessage.cs @@ -3,6 +3,7 @@ namespace NServiceBus using System; using System.Collections.Generic; using IdGeneration; + using Support; using Unicast; /// @@ -29,6 +30,14 @@ public TransportMessage() MessageIntent = MessageIntentEnum.Send; Headers[NServiceBus.Headers.NServiceBusVersion] = GitFlowVersion.MajorMinorPatch; Headers[NServiceBus.Headers.TimeSent] = DateTimeExtensions.ToWireFormattedString(DateTime.UtcNow); + + AddBackwardsCompatibilityHeaders(); + } + + [ObsoleteEx(RemoveInVersion = "5.0")] + void AddBackwardsCompatibilityHeaders() + { + Headers.Add("NServiceBus.OriginatingMachine", RuntimeEnvironment.MachineName); } /// diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index f2addda52a4..bdbdd23316f 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -1034,14 +1034,19 @@ void EnsureMessageIsRegistered(Type messageType) registry.RegisterMessageType(messageType); } + [ObsoleteEx(RemoveInVersion = "5.0")] + void AddBackwardsCompatibilityHeaders(TransportMessage incomingMessage) + { + incomingMessage.Headers["NServiceBus.ProcessingMachine"] = RuntimeEnvironment.MachineName; + } + void TransportStartedMessageProcessing(object sender, StartedMessageProcessingEventArgs e) { var incomingMessage = e.Message; incomingMessage.Headers[Headers.ProcessingEndpoint] = Configure.EndpointName; incomingMessage.Headers[Headers.ProcessingHostId] = HostInformation.HostId.ToString("N"); - incomingMessage.Headers[Headers.ProcessingMachine] = RuntimeEnvironment.MachineName; - + AddBackwardsCompatibilityHeaders(incomingMessage); PipelineFactory.PreparePhysicalMessagePipelineContext(incomingMessage, messageHandlingDisabled); #pragma warning disable 0618 diff --git a/src/NServiceBus/Headers.cs b/src/NServiceBus/Headers.cs index 38d04892531..b7148e6e2d6 100644 --- a/src/NServiceBus/Headers.cs +++ b/src/NServiceBus/Headers.cs @@ -193,7 +193,7 @@ public static class Headers /// /// Machine name of the endpoint where the given message originated /// - [ObsoleteEx(Message = "The OriginatingMachine headers is replaced by the OriginatingHostId to be more environment agnostic", RemoveInVersion = "5.0")] + [ObsoleteEx(Message = "The OriginatingMachine header is replaced by the OriginatingHostId to be more environment agnostic", RemoveInVersion = "5.0")] public const string OriginatingMachine = "NServiceBus.OriginatingMachine"; /// @@ -209,6 +209,7 @@ public static class Headers /// /// Machine name of the endpoint where the given message was processed(success or failure) /// + [ObsoleteEx(Message = "The ProcessingMachine header is replaced by the ProcessingHostId to be more environment agnostic", RemoveInVersion = "5.0")] public const string ProcessingMachine = "NServiceBus.ProcessingMachine"; /// From 703c716d91cbc26cca3f2eeea83da8740d4f797c Mon Sep 17 00:00:00 2001 From: John Simons Date: Fri, 24 Jan 2014 10:26:53 +1100 Subject: [PATCH 126/146] Removing similar code to create DeterministicGuid --- .../Raven/RavenPersistenceConstants.cs | 18 +--------- .../Raven/SagaPersister/RavenSagaPersister.cs | 36 +++++++------------ .../Raven/SubscriptionStorage/Subscription.cs | 16 +++------ .../Transports/Msmq/MsmqQueueCreator.cs | 16 +-------- .../Utils/DeterministicGuid.cs | 6 ++-- 5 files changed, 22 insertions(+), 70 deletions(-) diff --git a/src/NServiceBus.Core/Persistence/Raven/RavenPersistenceConstants.cs b/src/NServiceBus.Core/Persistence/Raven/RavenPersistenceConstants.cs index 9ac73dd2163..16cf67b9be0 100644 --- a/src/NServiceBus.Core/Persistence/Raven/RavenPersistenceConstants.cs +++ b/src/NServiceBus.Core/Persistence/Raven/RavenPersistenceConstants.cs @@ -1,8 +1,6 @@ namespace NServiceBus.Persistence.Raven { using System; - using System.Security.Cryptography; - using System.Text; using Utils; public static class RavenPersistenceConstants @@ -33,21 +31,7 @@ public static Guid DefaultResourceManagerId { get { - var resourceManagerId = Address.Local + "-" + Configure.DefineEndpointVersionRetriever() ; - - return DeterministicGuidBuilder(resourceManagerId); - } - } - - static Guid DeterministicGuidBuilder(string input) - { - // use MD5 hash to get a 16-byte hash of the string - using (var provider = new MD5CryptoServiceProvider()) - { - var inputBytes = Encoding.Default.GetBytes(input); - var hashBytes = provider.ComputeHash(inputBytes); - // generate a guid from the hash: - return new Guid(hashBytes); + return DeterministicGuid.Create(Address.Local, "-", Configure.DefineEndpointVersionRetriever()); } } } diff --git a/src/NServiceBus.Core/Persistence/Raven/SagaPersister/RavenSagaPersister.cs b/src/NServiceBus.Core/Persistence/Raven/SagaPersister/RavenSagaPersister.cs index e6f66b1ea4e..ff86235529c 100644 --- a/src/NServiceBus.Core/Persistence/Raven/SagaPersister/RavenSagaPersister.cs +++ b/src/NServiceBus.Core/Persistence/Raven/SagaPersister/RavenSagaPersister.cs @@ -4,8 +4,6 @@ namespace NServiceBus.Persistence.Raven.SagaPersister using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; - using System.Security.Cryptography; - using System.Text; using global::Raven.Abstractions.Commands; using global::Raven.Client; using Saga; @@ -174,32 +172,24 @@ public class SagaUniqueIdentity public static string FormatId(Type sagaType, KeyValuePair uniqueProperty) { if (uniqueProperty.Value == null) - throw new ArgumentNullException("uniqueProperty", string.Format("Property {0} is marked with the [Unique] attribute on {1} but contains a null value. Please make sure that all unique properties are set on your SagaData and/or that you have marked the correct properties as unique.", uniqueProperty.Key, sagaType.Name)); - - // use MD5 hash to get a 16-byte hash of the string - using (var provider = new MD5CryptoServiceProvider()) { - var inputBytes = Encoding.Default.GetBytes(uniqueProperty.Value.ToString()); - var hashBytes = provider.ComputeHash(inputBytes); - - // generate a guid from the hash: - var value = new Guid(hashBytes); - - var id = string.Format("{0}/{1}/{2}", sagaType.FullName.Replace('+', '-'), uniqueProperty.Key, value); + throw new ArgumentNullException("uniqueProperty", string.Format("Property {0} is marked with the [Unique] attribute on {1} but contains a null value. Please make sure that all unique properties are set on your SagaData and/or that you have marked the correct properties as unique.", uniqueProperty.Key, sagaType.Name)); + } - // raven has a size limit of 255 bytes == 127 unicode chars - if (id.Length > 127) - { - // generate a guid from the hash: - var key = - new Guid( - provider.ComputeHash(Encoding.Default.GetBytes(sagaType.FullName + uniqueProperty.Key))); + var value = Utils.DeterministicGuid.Create(uniqueProperty.Value.ToString()); - id = string.Format("MoreThan127/{0}/{1}", key, value); - } + var id = string.Format("{0}/{1}/{2}", sagaType.FullName.Replace('+', '-'), uniqueProperty.Key, value); - return id; + // raven has a size limit of 255 bytes == 127 unicode chars + if (id.Length > 127) + { + // generate a guid from the hash: + var key = Utils.DeterministicGuid.Create(sagaType.FullName, uniqueProperty.Key); + + id = string.Format("MoreThan127/{0}/{1}", key, value); } + + return id; } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Persistence/Raven/SubscriptionStorage/Subscription.cs b/src/NServiceBus.Core/Persistence/Raven/SubscriptionStorage/Subscription.cs index c116b9a5a52..221bfdb84cc 100644 --- a/src/NServiceBus.Core/Persistence/Raven/SubscriptionStorage/Subscription.cs +++ b/src/NServiceBus.Core/Persistence/Raven/SubscriptionStorage/Subscription.cs @@ -2,10 +2,9 @@ namespace NServiceBus.Persistence.Raven.SubscriptionStorage { using System; using System.Collections.Generic; - using System.Security.Cryptography; - using System.Text; using global::Raven.Imports.Newtonsoft.Json; using Unicast.Subscriptions; + using Utils; public class Subscription { @@ -18,16 +17,9 @@ public class Subscription public static string FormatId(MessageType messageType) { - // use MD5 hash to get a 16-byte hash of the string - using (var provider = new MD5CryptoServiceProvider()) - { - var inputBytes = Encoding.Default.GetBytes(messageType.TypeName + "/" + messageType.Version.Major); - var hashBytes = provider.ComputeHash(inputBytes); - // generate a guid from the hash: - var id = new Guid(hashBytes); - - return string.Format("Subscriptions/{0}", id); - } + var id = DeterministicGuid.Create(messageType.TypeName, "/", messageType.Version.Major); + + return string.Format("Subscriptions/{0}", id); } } diff --git a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs index eed9a8ab8fe..17e2e4f4eb5 100644 --- a/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs +++ b/src/NServiceBus.Core/Transports/Msmq/MsmqQueueCreator.cs @@ -2,9 +2,7 @@ namespace NServiceBus.Transports.Msmq { using System; using System.Messaging; - using System.Security.Cryptography; using System.Security.Principal; - using System.Text; using Config; using Logging; using Support; @@ -111,23 +109,11 @@ public static string GetFullPathWithoutPrefix(Address address) if (msmqTotalQueueName.Length >= 114) //Setpermission is limiting us here, docs say it should be 380 + 124 { - msmqTotalQueueName = address.Machine + MsmqUtilities.PRIVATE + DeterministicGuidBuilder(queueName); + msmqTotalQueueName = address.Machine + MsmqUtilities.PRIVATE + Utils.DeterministicGuid.Create(queueName); } return msmqTotalQueueName; } - - private static Guid DeterministicGuidBuilder(string input) - { - // use MD5 hash to get a 16-byte hash of the string - using (var provider = new MD5CryptoServiceProvider()) - { - var inputBytes = Encoding.Default.GetBytes(input); - var hashBytes = provider.ComputeHash(inputBytes); - // generate a guid from the hash: - return new Guid(hashBytes); - } - } } } diff --git a/src/NServiceBus.Core/Utils/DeterministicGuid.cs b/src/NServiceBus.Core/Utils/DeterministicGuid.cs index f43a35ce286..e062b2b9a17 100644 --- a/src/NServiceBus.Core/Utils/DeterministicGuid.cs +++ b/src/NServiceBus.Core/Utils/DeterministicGuid.cs @@ -4,14 +4,14 @@ using System.Security.Cryptography; using System.Text; - public class DeterministicGuid + static class DeterministicGuid { - public static Guid Create(params string[] data) + public static Guid Create(params object[] data) { // use MD5 hash to get a 16-byte hash of the string using (var provider = new MD5CryptoServiceProvider()) { - var inputBytes = Encoding.Default.GetBytes(string.Concat(data)); + var inputBytes = Encoding.Default.GetBytes(String.Concat(data)); var hashBytes = provider.ComputeHash(inputBytes); // generate a guid from the hash: return new Guid(hashBytes); From fbc05d98c3c0d1f991d56addc5c31b5e079bee1f Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 11:57:28 +1100 Subject: [PATCH 127/146] suppress some inspection errors --- src/ConventionBasedHandlers/ConventionBasedHandler.cs | 5 ++--- .../Encryption/WireEncryptedStringSpecs.cs | 4 ++-- .../Encryption/EncryptionTestMessage.cs | 3 +++ src/NServiceBus.PerformanceTests/Program.cs | 4 ++-- src/NServiceBus.PerformanceTests/PubSub/TestCase.cs | 3 ++- src/NServiceBus.sln.DotSettings | 2 ++ 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ConventionBasedHandlers/ConventionBasedHandler.cs b/src/ConventionBasedHandlers/ConventionBasedHandler.cs index 4f4c60f27e9..9c346ee8bd8 100644 --- a/src/ConventionBasedHandlers/ConventionBasedHandler.cs +++ b/src/ConventionBasedHandlers/ConventionBasedHandler.cs @@ -1,7 +1,6 @@ -using System; - -namespace ConventionBasedHandlers +namespace ConventionBasedHandlers { + using System; using ConventionBasedMessages; using NServiceBus; diff --git a/src/NServiceBus.Core.Tests/Encryption/WireEncryptedStringSpecs.cs b/src/NServiceBus.Core.Tests/Encryption/WireEncryptedStringSpecs.cs index fe419c16e96..1a9919c1440 100644 --- a/src/NServiceBus.Core.Tests/Encryption/WireEncryptedStringSpecs.cs +++ b/src/NServiceBus.Core.Tests/Encryption/WireEncryptedStringSpecs.cs @@ -350,8 +350,8 @@ public class WireEncryptedStringContext { protected EncryptionMessageMutator mutator; - public const string EncryptedBase64Value = "encrypted value"; - public const string MySecretMessage = "A secret"; + protected string EncryptedBase64Value = "encrypted value"; + protected string MySecretMessage = "A secret"; [SetUp] public void BaseSetUp() diff --git a/src/NServiceBus.PerformanceTests/Encryption/EncryptionTestMessage.cs b/src/NServiceBus.PerformanceTests/Encryption/EncryptionTestMessage.cs index 5a2dc270587..4e33b02ac8a 100644 --- a/src/NServiceBus.PerformanceTests/Encryption/EncryptionTestMessage.cs +++ b/src/NServiceBus.PerformanceTests/Encryption/EncryptionTestMessage.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using NServiceBus; +// ReSharper disable UnusedAutoPropertyAccessor.Global namespace Runner.Encryption { public class EncryptionTestMessage : MessageBase @@ -17,3 +18,5 @@ public class EncryptionTestMessage : MessageBase public byte[] LargeByteArray { get; set; } } } + +// ReSharper restore UnusedAutoPropertyAccessor.Global \ No newline at end of file diff --git a/src/NServiceBus.PerformanceTests/Program.cs b/src/NServiceBus.PerformanceTests/Program.cs index 49eab7a7dd1..383da37b973 100644 --- a/src/NServiceBus.PerformanceTests/Program.cs +++ b/src/NServiceBus.PerformanceTests/Program.cs @@ -212,9 +212,9 @@ static TimeSpan SeedInputQueue(int numberOfMessages, string inputQueue, int numb } public const string EncryptedBase64Value = "encrypted value"; - public const string MySecretMessage = "A secret"; + const string MySecretMessage = "A secret"; - private static MessageBase CreateMessage(bool encryption) + static MessageBase CreateMessage(bool encryption) { if (encryption) { diff --git a/src/NServiceBus.PerformanceTests/PubSub/TestCase.cs b/src/NServiceBus.PerformanceTests/PubSub/TestCase.cs index 3239b069c1f..91fc5532027 100644 --- a/src/NServiceBus.PerformanceTests/PubSub/TestCase.cs +++ b/src/NServiceBus.PerformanceTests/PubSub/TestCase.cs @@ -51,7 +51,8 @@ protected string GetParameterValue(string key) protected Dictionary parameters = new Dictionary(); - public void WithParameters(Dictionary testCaseParameters) + + void WithParameters(Dictionary testCaseParameters) { parameters = testCaseParameters; } diff --git a/src/NServiceBus.sln.DotSettings b/src/NServiceBus.sln.DotSettings index 1a34c021dbc..df8a075f273 100644 --- a/src/NServiceBus.sln.DotSettings +++ b/src/NServiceBus.sln.DotSettings @@ -16,6 +16,7 @@ ERROR WARNING ERROR + DO_NOT_SHOW ERROR ERROR ERROR @@ -29,6 +30,7 @@ DO_NOT_SHOW DO_NOT_SHOW DO_NOT_SHOW + WARNING ERROR WARNING ERROR From 4a44e624f0e2726ac8d8d1c97bedafb50d8db352 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 12:08:26 +1100 Subject: [PATCH 128/146] more inspection errors --- .../PubSub/PubSubTestCase.cs | 43 +++++++------------ src/NServiceBus.sln.DotSettings | 2 +- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs index 2d07f8052cb..61142b42ef9 100644 --- a/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs +++ b/src/NServiceBus.PerformanceTests/PubSub/PubSubTestCase.cs @@ -14,43 +14,30 @@ public class PubSubTestCase : TestCase { - protected int NumberOfSubscribers + int GetNumberOfSubscribers() { - get + int value; + if (!int.TryParse(GetParameterValue("numberofsubscribers"), out value)) { - int value; - - if (!int.TryParse(GetParameterValue("numberofsubscribers"), out value)) - { - return 10; - } - - return value; + return 10; } + return value; } - protected string StorageType + string GetStorageType() { - get - { - var value = GetParameterValue("storage"); + var value = GetParameterValue("storage"); - if (string.IsNullOrEmpty(value)) - { - return "raven"; - } - return value.ToLower(); + if (string.IsNullOrEmpty(value)) + { + return "raven"; } + return value.ToLower(); } public override void Run() { - var endpointName = "PubSubPerformanceTest"; - - - - TransportConfigOverride.MaximumConcurrencyLevel = NumberOfThreads; Feature.Disable(); @@ -58,12 +45,12 @@ public override void Run() Configure.Transactions.Enable(); var config = Configure.With() - .DefineEndpointName(endpointName) + .DefineEndpointName("PubSubPerformanceTest") .DefaultBuilder() .UseTransport() .InMemoryFaultManagement(); - switch (StorageType) + switch (GetStorageType()) { case "raven": config.RavenSubscriptionStorage(); @@ -96,9 +83,9 @@ public override void Run() Settings = new MsmqSettings { UseTransactionalQueues = true } }; - for (var i = 0; i < NumberOfSubscribers; i++) + for (var i = 0; i < GetNumberOfSubscribers(); i++) { - var subscriberAddress = Address.Parse(endpointName + ".Subscriber" + i); + var subscriberAddress = Address.Parse("PubSubPerformanceTest.Subscriber" + i); creator.CreateQueueIfNecessary(subscriberAddress, null); using (var tx = new TransactionScope()) diff --git a/src/NServiceBus.sln.DotSettings b/src/NServiceBus.sln.DotSettings index df8a075f273..e9db2f36e14 100644 --- a/src/NServiceBus.sln.DotSettings +++ b/src/NServiceBus.sln.DotSettings @@ -30,7 +30,7 @@ DO_NOT_SHOW DO_NOT_SHOW DO_NOT_SHOW - WARNING + SUGGESTION ERROR WARNING ERROR From 87f5bd84945fb7c98cc169eab52c447a8b48f572 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 12:18:40 +1100 Subject: [PATCH 129/146] fix dodgy solution folder naming --- src/ConventionBasedHandlers/ConventionBasedHandlers.csproj | 2 +- .../NServiceBus.AcceptanceTesting.csproj | 4 ++-- .../NServiceBus.AcceptanceTests.csproj | 4 ++-- src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj | 2 +- src/NServiceBus.Core/NServiceBus.Core.csproj | 2 +- .../NServiceBus.Hosting.Tests.csproj | 2 +- .../NServiceBus.Hosting.Windows.csproj | 2 +- .../NServiceBus.Logging.Tests.csproj | 2 +- .../NServiceBus.PerformanceTests.csproj | 2 +- .../NServiceBus.SagaPersisters.InMemory.Tests.csproj | 2 +- .../NServiceBus.Serializers.XML.XsdGenerator.csproj | 2 +- .../NServiceBus.Testing.Tests.csproj | 2 +- src/NServiceBus.Testing/NServiceBus.Testing.csproj | 2 +- src/NServiceBus.sln | 2 +- src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj | 2 +- .../ObjectBuilder.CastleWindsor.csproj | 2 +- src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj | 2 +- src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj | 2 +- .../ObjectBuilder.StructureMap.csproj | 2 +- src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj | 2 +- src/ReturnToSourceQueue/ReturnToSourceQueue.csproj | 2 +- 21 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj index 6b99d2a5a05..b346d30d6ff 100644 --- a/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj +++ b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj @@ -49,7 +49,7 @@ {73867D40-8CBB-48E9-BFFA-12BBDD48A341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj b/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj index 45fb80013af..d39420836b5 100644 --- a/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj +++ b/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj @@ -68,9 +68,9 @@ {dd48b2d0-e996-412d-9157-821ed8b17a9d} NServiceBus.Core - + {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index ee9a949a6b4..e1ad5fcdb27 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -210,9 +210,9 @@ {dd48b2d0-e996-412d-9157-821ed8b17a9d} NServiceBus.Core - + {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus {758357f6-cd31-4337-80c4-ba377fc257af} diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index f09b585105e..8c45b31bdf4 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -319,7 +319,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 9d65c21679f..8e96419e274 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -638,7 +638,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj b/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj index c4e45ea997e..a4da3bc4c09 100644 --- a/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj +++ b/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj @@ -73,7 +73,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus {85E813C0-4A94-4946-8B1F-DE1E39AA7D11} diff --git a/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj b/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj index 56bb7c5cce8..f1591ebb299 100644 --- a/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj +++ b/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj @@ -151,7 +151,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj b/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj index 84ee9e5afc1..361b5e7271c 100644 --- a/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj +++ b/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj @@ -64,7 +64,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus {dd48b2d0-e996-412d-9157-821ed8b17a9d} diff --git a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj index 9ab5b4afa3c..c872c1a31cf 100644 --- a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj +++ b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj @@ -102,7 +102,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj b/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj index 021e93ecd79..705795b86d4 100644 --- a/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj +++ b/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj @@ -69,7 +69,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj b/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj index f1344b6f416..ecd5145629b 100644 --- a/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj +++ b/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj @@ -79,7 +79,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj b/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj index 1cb1feb3dc6..567a1697b71 100644 --- a/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj +++ b/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj @@ -59,7 +59,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.Testing/NServiceBus.Testing.csproj b/src/NServiceBus.Testing/NServiceBus.Testing.csproj index e474bf452ef..1ffa30501e5 100644 --- a/src/NServiceBus.Testing/NServiceBus.Testing.csproj +++ b/src/NServiceBus.Testing/NServiceBus.Testing.csproj @@ -91,7 +91,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/NServiceBus.sln b/src/NServiceBus.sln index 1529289a7f5..a0722573646 100644 --- a/src/NServiceBus.sln +++ b/src/NServiceBus.sln @@ -24,7 +24,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NServiceBus.Logging.Tests", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LicenseInstaller", "licenseinstaller\LicenseInstaller.csproj", "{857C5E77-1946-4C83-BC8D-EFF8E1611A0D}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NServiceBus", "NServiceBus", "{258A3F0E-FAFA-4C13-9D5A-9E46661B22D2}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{258A3F0E-FAFA-4C13-9D5A-9E46661B22D2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ObjectBuilders", "ObjectBuilders", "{A650DE92-3B6D-4228-A1A2-FB06E74C1BD2}" EndProject diff --git a/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj b/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj index 9205c899942..6f0f99798b8 100644 --- a/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj +++ b/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj @@ -79,7 +79,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus False diff --git a/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj b/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj index 631bf4aecb7..83c3fce6bb5 100644 --- a/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj +++ b/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj @@ -85,7 +85,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus False diff --git a/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj b/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj index cf942fce7f0..b5a568db8f8 100644 --- a/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj +++ b/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj @@ -75,7 +75,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus False diff --git a/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj b/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj index fc89abcb481..5adf1e21bdd 100644 --- a/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj +++ b/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj @@ -69,7 +69,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus False diff --git a/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj b/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj index dc6524da4ab..5a0ebd5e2a3 100644 --- a/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj +++ b/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj @@ -84,7 +84,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus False diff --git a/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj b/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj index 6ad1dbd6d18..3db13a34797 100644 --- a/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj +++ b/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj @@ -92,7 +92,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus diff --git a/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj b/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj index 1c77e92b8fa..ae6b1ae984f 100644 --- a/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj +++ b/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj @@ -81,7 +81,7 @@ {73867d40-8cbb-48e9-bffa-12bbdd48a341} - NServiceBus %28NServiceBus\NServiceBus%29 + NServiceBus From 208413fe622ba864f9563767224d39138662d1cd Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 12:29:52 +1100 Subject: [PATCH 130/146] fix case of project guids --- .../NServiceBus.PerformanceTests.csproj | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj index c872c1a31cf..52d77e1794a 100644 --- a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj +++ b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj @@ -95,20 +95,19 @@ + + + - {dd48b2d0-e996-412d-9157-821ed8b17a9d} + {DD48B2D0-E996-412D-9157-821ED8B17A9D} NServiceBus.Core - {73867d40-8cbb-48e9-bffa-12bbdd48a341} + {73867D40-8CBB-48E9-BFFA-12BBDD48A341} NServiceBus - - - - \ No newline at end of file From a68ea3e3b319196cd038f5453d07d5355bdaa5a4 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 12:42:55 +1100 Subject: [PATCH 131/146] try fix build error for perf tests --- .../NServiceBus.PerformanceTests.csproj | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj index 52d77e1794a..0a6a4387d9d 100644 --- a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj +++ b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj @@ -1,6 +1,5 @@  - Debug AnyCPU @@ -11,7 +10,6 @@ Runner v4.0 512 - ..\ AnyCPU @@ -50,7 +48,6 @@ - From 5cb9236efcd808ed8a35421057bb80dadf83df3f Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 12:54:58 +1100 Subject: [PATCH 132/146] fix dodgy import in convention handlers --- .gitignore | 4 +++- src/ConventionBasedHandlers/ConventionBasedHandlers.csproj | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6e225451119..c4cdf00b240 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,6 @@ csx *.ncrunchsolution _NCrunch_NServiceBus/* logs -run-git.cmd \ No newline at end of file +run-git.cmd + +*.jtconfig \ No newline at end of file diff --git a/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj index b346d30d6ff..dedc5fa1a3e 100644 --- a/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj +++ b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj @@ -1,6 +1,5 @@  - Debug AnyCPU From 045b0c8c48a962cd85b87fa4e237b3579b5b3b73 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 15:20:10 +1100 Subject: [PATCH 133/146] remove convention handlers for now since we are not using them --- .../Config/When_using_convention_based_messages.cs | 10 ++++------ .../NServiceBus.Core.Tests.csproj | 4 ---- src/NServiceBus.sln | 13 ------------- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/src/NServiceBus.Core.Tests/Config/When_using_convention_based_messages.cs b/src/NServiceBus.Core.Tests/Config/When_using_convention_based_messages.cs index 82c76741d0d..8b9744a0bfe 100644 --- a/src/NServiceBus.Core.Tests/Config/When_using_convention_based_messages.cs +++ b/src/NServiceBus.Core.Tests/Config/When_using_convention_based_messages.cs @@ -1,7 +1,5 @@ namespace NServiceBus.Core.Tests.Config { - using System.Linq; - using ConventionBasedHandlers; using NUnit.Framework; [TestFixture] @@ -11,13 +9,13 @@ public class When_using_convention_based_messages [Explicit("//TODO: re-enable when we make message scanning lazy #1617")] public void Should_include_messages_of_a_handler() { - Configure.With(new[] { typeof(ConventionBasedHandler) }); + //Configure.With(new[] { typeof(ConventionBasedHandler) }); - var typesToScan = Configure.TypesToScan; + //var typesToScan = Configure.TypesToScan; - var foundType = typesToScan.FirstOrDefault(type => type.FullName == "ConventionBasedMessages.MyMessage"); + //var foundType = typesToScan.FirstOrDefault(type => type.FullName == "ConventionBasedMessages.MyMessage"); - Assert.NotNull(foundType); + //Assert.NotNull(foundType); } } } \ No newline at end of file diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 8c45b31bdf4..2fb17244f41 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -309,10 +309,6 @@ - - {2311CBF3-5381-4151-B2D0-EE14A89F870B} - ConventionBasedHandlers - {dd48b2d0-e996-412d-9157-821ed8b17a9d} NServiceBus.Core diff --git a/src/NServiceBus.sln b/src/NServiceBus.sln index a0722573646..047d0c6df80 100644 --- a/src/NServiceBus.sln +++ b/src/NServiceBus.sln @@ -60,8 +60,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NServiceBus.PerformanceTest EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NServiceBus.Distributor.MSMQ", "NServiceBus.Distributor.MSMQ\NServiceBus.Distributor.MSMQ.csproj", "{5A2F57E3-4D2B-439C-9481-1DE2DD101789}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConventionBasedHandlers", "ConventionBasedHandlers\ConventionBasedHandlers.csproj", "{2311CBF3-5381-4151-B2D0-EE14A89F870B}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -316,16 +314,6 @@ Global {5A2F57E3-4D2B-439C-9481-1DE2DD101789}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {5A2F57E3-4D2B-439C-9481-1DE2DD101789}.Release|Mixed Platforms.Build.0 = Release|Any CPU {5A2F57E3-4D2B-439C-9481-1DE2DD101789}.Release|x86.ActiveCfg = Release|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Debug|x86.ActiveCfg = Debug|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Any CPU.Build.0 = Release|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {2311CBF3-5381-4151-B2D0-EE14A89F870B}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -338,7 +326,6 @@ Global {2C8F181B-9BAF-4858-968B-1C16F5DDCFA7} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} {389628F6-2FB4-4AFF-BACC-16726C44FFA4} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} {5A2F57E3-4D2B-439C-9481-1DE2DD101789} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} - {2311CBF3-5381-4151-B2D0-EE14A89F870B} = {258A3F0E-FAFA-4C13-9D5A-9E46661B22D2} {C05E5B87-EB74-4A3F-B4FC-AFDD28570850} = {A650DE92-3B6D-4228-A1A2-FB06E74C1BD2} {73EC4EBE-826D-4A0A-8837-51D3458FC2A8} = {A650DE92-3B6D-4228-A1A2-FB06E74C1BD2} {343B2E7A-E228-4B31-ABB5-F5437B2E7A4C} = {A650DE92-3B6D-4228-A1A2-FB06E74C1BD2} From f66835b7f1cc763726f9bec9e5287d47f313b7d4 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 26 Jan 2014 15:43:47 +1100 Subject: [PATCH 134/146] help msbuild resolve solutiondir --- src/ConventionBasedHandlers/ConventionBasedHandlers.csproj | 1 + .../NServiceBus.AcceptanceTesting.csproj | 1 + .../NServiceBus.AcceptanceTests.csproj | 1 + .../NServiceBus.Core.x86.Tests.csproj | 1 + src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj | 1 + src/NServiceBus.Core/NServiceBus.Core.csproj | 1 + .../NServiceBus.Distributor.MSMQ.csproj | 1 + src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj | 2 +- .../NServiceBus.Hosting.Windows.csproj | 1 + src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj | 1 + .../NServiceBus.PerformanceTests.csproj | 1 + .../NServiceBus.SagaPersisters.InMemory.Tests.csproj | 1 + .../NServiceBus.Serializers.XML.XsdGenerator.csproj | 1 + src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj | 1 + src/NServiceBus.Testing/NServiceBus.Testing.csproj | 1 + src/NServiceBus/NServiceBus.csproj | 1 + src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj | 1 + .../ObjectBuilder.CastleWindsor.csproj | 1 + src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj | 1 + src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj | 1 + .../ObjectBuilder.StructureMap.csproj | 1 + src/ObjectBuilder.Tests/ObjectBuilder.Tests.csproj | 1 + src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj | 1 + src/ReturnToSourceQueue/ReturnToSourceQueue.csproj | 1 + src/licenseinstaller/LicenseInstaller.csproj | 1 + 25 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj index dedc5fa1a3e..7bffd676d7b 100644 --- a/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj +++ b/src/ConventionBasedHandlers/ConventionBasedHandlers.csproj @@ -12,6 +12,7 @@ 512 true ..\NServiceBus.snk + ..\ true diff --git a/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj b/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj index d39420836b5..91064ee4c76 100644 --- a/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj +++ b/src/NServiceBus.AcceptanceTesting/NServiceBus.AcceptanceTesting.csproj @@ -11,6 +11,7 @@ NServiceBus.AcceptanceTesting v4.0 512 + ..\ true diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index e1ad5fcdb27..623efd662e6 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -11,6 +11,7 @@ NServiceBus.AcceptanceTests v4.0 512 + ..\ true diff --git a/src/NServiceBus.Core.Tests.x86/NServiceBus.Core.x86.Tests.csproj b/src/NServiceBus.Core.Tests.x86/NServiceBus.Core.x86.Tests.csproj index 90949b8fe89..8ecdeb2c4ff 100644 --- a/src/NServiceBus.Core.Tests.x86/NServiceBus.Core.x86.Tests.csproj +++ b/src/NServiceBus.Core.Tests.x86/NServiceBus.Core.x86.Tests.csproj @@ -11,6 +11,7 @@ NServiceBus.Core.Tests.x32 v4.0 512 + ..\ true diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 2fb17244f41..807e51de2bc 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -13,6 +13,7 @@ 512 true ..\NServiceBus.snk + ..\ true diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index 8e96419e274..8285ea61427 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -14,6 +14,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/NServiceBus.Distributor.MSMQ/NServiceBus.Distributor.MSMQ.csproj b/src/NServiceBus.Distributor.MSMQ/NServiceBus.Distributor.MSMQ.csproj index f62034c44ca..b5a65bc63da 100644 --- a/src/NServiceBus.Distributor.MSMQ/NServiceBus.Distributor.MSMQ.csproj +++ b/src/NServiceBus.Distributor.MSMQ/NServiceBus.Distributor.MSMQ.csproj @@ -13,6 +13,7 @@ 512 true ..\NServiceBus.snk + ..\ true diff --git a/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj b/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj index a4da3bc4c09..0c2669054b4 100644 --- a/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj +++ b/src/NServiceBus.Hosting.Tests/NServiceBus.Hosting.Tests.csproj @@ -12,7 +12,7 @@ NServiceBus.Hosting.Tests v4.0 512 - + ..\ true ..\NServiceBus.snk diff --git a/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj b/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj index f1591ebb299..2e142ffdde0 100644 --- a/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj +++ b/src/NServiceBus.Hosting.Windows/NServiceBus.Hosting.Windows.csproj @@ -14,6 +14,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ NServiceBus.Host diff --git a/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj b/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj index 361b5e7271c..a62f2ea6991 100644 --- a/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj +++ b/src/NServiceBus.Logging.Tests/NServiceBus.Logging.Tests.csproj @@ -12,6 +12,7 @@ NServiceBus.Logging.Tests v4.0 512 + ..\ true diff --git a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj index 0a6a4387d9d..6dcced2fb5c 100644 --- a/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj +++ b/src/NServiceBus.PerformanceTests/NServiceBus.PerformanceTests.csproj @@ -10,6 +10,7 @@ Runner v4.0 512 + ..\ AnyCPU diff --git a/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj b/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj index 705795b86d4..34735f0c390 100644 --- a/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj +++ b/src/NServiceBus.SagaPersisters.InMemory.Tests/NServiceBus.SagaPersisters.InMemory.Tests.csproj @@ -12,6 +12,7 @@ NServiceBus.SagaPersisters.InMemory.Tests v4.0 512 + ..\ true diff --git a/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj b/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj index ecd5145629b..dcae3f3b1cd 100644 --- a/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj +++ b/src/NServiceBus.Serializers.XML.XsdGenerator/NServiceBus.Serializers.XML.XsdGenerator.csproj @@ -13,6 +13,7 @@ v4.0 true ..\NServiceBus.snk + ..\ true diff --git a/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj b/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj index 567a1697b71..51ad90c0f44 100644 --- a/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj +++ b/src/NServiceBus.Testing.Tests/NServiceBus.Testing.Tests.csproj @@ -12,6 +12,7 @@ NServiceBus.Testing.Tests v4.0 512 + ..\ true diff --git a/src/NServiceBus.Testing/NServiceBus.Testing.csproj b/src/NServiceBus.Testing/NServiceBus.Testing.csproj index 1ffa30501e5..a83f8f2a19e 100644 --- a/src/NServiceBus.Testing/NServiceBus.Testing.csproj +++ b/src/NServiceBus.Testing/NServiceBus.Testing.csproj @@ -14,6 +14,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/NServiceBus/NServiceBus.csproj b/src/NServiceBus/NServiceBus.csproj index ecfda8996c1..5042772d6d7 100644 --- a/src/NServiceBus/NServiceBus.csproj +++ b/src/NServiceBus/NServiceBus.csproj @@ -14,6 +14,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj b/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj index 6f0f99798b8..032b484c054 100644 --- a/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj +++ b/src/ObjectBuilder.Autofac/ObjectBuilder.Autofac.csproj @@ -15,6 +15,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj b/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj index 83c3fce6bb5..81668a8bd21 100644 --- a/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj +++ b/src/ObjectBuilder.CastleWindsor/ObjectBuilder.CastleWindsor.csproj @@ -15,6 +15,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj b/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj index b5a568db8f8..f220990f50d 100644 --- a/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj +++ b/src/ObjectBuilder.Ninject/ObjectBuilder.Ninject.csproj @@ -14,6 +14,7 @@ 512 true ..\NServiceBus.snk + ..\ ..\packages\Fody diff --git a/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj b/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj index 5adf1e21bdd..1ec3a76a819 100644 --- a/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj +++ b/src/ObjectBuilder.Spring/ObjectBuilder.Spring.csproj @@ -15,6 +15,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj b/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj index 5a0ebd5e2a3..0c44623717f 100644 --- a/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj +++ b/src/ObjectBuilder.StructureMap/ObjectBuilder.StructureMap.csproj @@ -15,6 +15,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/ObjectBuilder.Tests/ObjectBuilder.Tests.csproj b/src/ObjectBuilder.Tests/ObjectBuilder.Tests.csproj index 5a04edeaa79..5bfb484f95a 100644 --- a/src/ObjectBuilder.Tests/ObjectBuilder.Tests.csproj +++ b/src/ObjectBuilder.Tests/ObjectBuilder.Tests.csproj @@ -14,6 +14,7 @@ 512 false ..\NServiceBus.snk + ..\ true diff --git a/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj b/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj index 3db13a34797..df28e9ae9d7 100644 --- a/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj +++ b/src/ObjectBuilder.Unity/ObjectBuilder.Unity.csproj @@ -15,6 +15,7 @@ true ..\NServiceBus.snk ..\packages\Fody + ..\ true diff --git a/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj b/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj index ae6b1ae984f..e20567e08f9 100644 --- a/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj +++ b/src/ReturnToSourceQueue/ReturnToSourceQueue.csproj @@ -12,6 +12,7 @@ ReturnToSourceQueue true ..\NServiceBus.snk + ..\ true diff --git a/src/licenseinstaller/LicenseInstaller.csproj b/src/licenseinstaller/LicenseInstaller.csproj index f7594e69fbc..eb966f9d263 100644 --- a/src/licenseinstaller/LicenseInstaller.csproj +++ b/src/licenseinstaller/LicenseInstaller.csproj @@ -15,6 +15,7 @@ 512 true ..\NServiceBus.snk + ..\ true From 6baa56bcb97d9fdab7efb2eeffee2ba12ba24310 Mon Sep 17 00:00:00 2001 From: indualagarsamy Date: Mon, 27 Jan 2014 18:24:37 -0800 Subject: [PATCH 135/146] Only one worker should subscribe to the event from the distributor. Fixes #1925 relates to #1925. Reverted changes to ReturnAddressRewriter. Injecting the distributor data address directly to the MessageDrivenSubscriptionManager. --- .../MessageDrivenSubscriptionManager.cs | 13 +++++++++++-- .../MessageDrivenSubscriptions.cs | 7 ++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptionManager.cs b/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptionManager.cs index 77cc2df0da2..ef3bab6922e 100644 --- a/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptionManager.cs +++ b/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptionManager.cs @@ -10,7 +10,7 @@ using Queuing; using Transport; using Transports; - + /// /// Implements message driven subscriptions for transports that doesn't have native support for it (MSMQ , SqlServer, Azure Queues etc) /// @@ -23,6 +23,7 @@ public class MessageDrivenSubscriptionManager : IManageSubscriptions, public IBuilder Builder { get; set; } public ISubscriptionStorage SubscriptionStorage { get; set; } public IAuthorizeSubscriptions SubscriptionAuthorizer { get { return subscriptionAuthorizer ?? (subscriptionAuthorizer = new NoopSubscriptionAuthorizer()); } set { subscriptionAuthorizer = value; } } + public Address DistributorDataAddress { get; set; } public void Subscribe(Type eventType, Address publisherAddress) { @@ -33,6 +34,10 @@ public void Subscribe(Type eventType, Address publisherAddress) var subscriptionMessage = CreateControlMessage(eventType); subscriptionMessage.MessageIntent = MessageIntentEnum.Subscribe; + if (DistributorDataAddress != null) + { + subscriptionMessage.ReplyToAddress = DistributorDataAddress; + } ThreadPool.QueueUserWorkItem(state => SendSubscribeMessageWithRetries(publisherAddress, subscriptionMessage, eventType.AssemblyQualifiedName)); @@ -49,6 +54,11 @@ public void Unsubscribe(Type eventType, Address publisherAddress) var subscriptionMessage = CreateControlMessage(eventType); subscriptionMessage.MessageIntent = MessageIntentEnum.Unsubscribe; + if (DistributorDataAddress != null) + { + subscriptionMessage.ReplyToAddress = DistributorDataAddress; + } + MessageSender.Send(subscriptionMessage, publisherAddress); } @@ -144,7 +154,6 @@ void SendSubscribeMessageWithRetries(Address destination, TransportMessage subsc { try { - MessageSender.Send(subscriptionMessage, destination); } catch (QueueNotFoundException ex) diff --git a/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptions.cs b/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptions.cs index 1bb9e556fc3..ade798c3341 100644 --- a/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptions.cs +++ b/src/NServiceBus.Core/Unicast/Subscriptions/MessageDrivenSubscriptions/MessageDrivenSubscriptions.cs @@ -7,9 +7,14 @@ public class MessageDrivenSubscriptions : Feature { public override void Initialize() { - Configure.Component(DependencyLifecycle.SingleInstance); Configure.Component(DependencyLifecycle.InstancePerCall); Configure.Component(DependencyLifecycle.SingleInstance); + + var masterNodeAddress = Configure.Instance.GetMasterNodeAddress(); + Configure.Component( + DependencyLifecycle.SingleInstance) + .ConfigureProperty(r => r.DistributorDataAddress, masterNodeAddress); + } } } \ No newline at end of file From f959e8cdd6f23eb03f2dd6ca865b83dadfcb660e Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 29 Jan 2014 18:37:25 +1100 Subject: [PATCH 136/146] Added HostDisplayName header --- src/NServiceBus.Core/Hosting/HostInformation.cs | 1 - src/NServiceBus.Core/Unicast/UnicastBus.cs | 4 +++- src/NServiceBus/Headers.cs | 15 ++++++++++----- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index a12a491d303..fe161fbedd0 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -9,7 +9,6 @@ public class HostInformation { public static HostInformation CreateDefault() { - var commandLine = Environment.CommandLine; var fullPathToStartingExe = commandLine.Split('"')[1]; diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index bdbdd23316f..ae011c4f775 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -1045,7 +1045,9 @@ void TransportStartedMessageProcessing(object sender, StartedMessageProcessingEv var incomingMessage = e.Message; incomingMessage.Headers[Headers.ProcessingEndpoint] = Configure.EndpointName; - incomingMessage.Headers[Headers.ProcessingHostId] = HostInformation.HostId.ToString("N"); + incomingMessage.Headers[Headers.HostId] = HostInformation.HostId.ToString("N"); + incomingMessage.Headers[Headers.HostDisplayName] = RuntimeEnvironment.MachineName; + AddBackwardsCompatibilityHeaders(incomingMessage); PipelineFactory.PreparePhysicalMessagePipelineContext(incomingMessage, messageHandlingDisabled); diff --git a/src/NServiceBus/Headers.cs b/src/NServiceBus/Headers.cs index b7148e6e2d6..e43cc223140 100644 --- a/src/NServiceBus/Headers.cs +++ b/src/NServiceBus/Headers.cs @@ -202,20 +202,25 @@ public static class Headers public const string OriginatingHostId = "NServiceBus.OriginatingHostId"; /// - /// Name of the endpoint where the given message was processed(success or failure) + /// Name of the endpoint where the given message was processed (success or failure) /// public const string ProcessingEndpoint = "NServiceBus.ProcessingEndpoint"; /// - /// Machine name of the endpoint where the given message was processed(success or failure) + /// Machine name of the endpoint where the given message was processed (success or failure) /// - [ObsoleteEx(Message = "The ProcessingMachine header is replaced by the ProcessingHostId to be more environment agnostic", RemoveInVersion = "5.0")] + [ObsoleteEx(Message = "The ProcessingMachine header is replaced by the HostDisplayName to be more environment agnostic", RemoveInVersion = "5.0")] public const string ProcessingMachine = "NServiceBus.ProcessingMachine"; /// - /// HostId of the endpoint where the given message was processed(success or failure) + /// The display name of the host where the given message was processed (success or failure), eg the MachineName. /// - public const string ProcessingHostId = "NServiceBus.ProcessingHostId"; + public const string HostDisplayName = "NServiceBus.HostDisplayName"; + + /// + /// HostId of the endpoint where the given message was processed (success or failure) + /// + public const string HostId = "NServiceBus.HostId"; /// /// The original reply to address for successfully processed messages From 3477533f73c76c54326de12cf842110a43a0c41b Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 30 Jan 2014 15:00:44 +1100 Subject: [PATCH 137/146] extend timeout for dodgy test --- ...n_a_saga_is_started_by_an_event_published_by_another_saga.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs index 4d2f990e196..657ba4e1bb6 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs @@ -82,7 +82,7 @@ public void Should_start_the_saga_when_set_up_to_start_for_the_base_event() .Done(c => c.DidSagaComplete) .Repeat(r => r.For(Transports.Default)) .Should(c => Assert.True(c.DidSagaComplete)) - .Run(); + .Run(TimeSpan.FromMinutes(3)); } public class SagaContext : ScenarioContext From 4cf4b90121d1e7b5bbbeff6f310e3da30393b325 Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 30 Jan 2014 17:30:10 +1100 Subject: [PATCH 138/146] Added DisplayInstanceIdentifier to HostInformation and we are now initialising by default DisplayName to be the MachineName --- .../When_a_message_is_received.cs | 72 +++++++++++++++++++ .../When_an_endpoint_is_started.cs | 64 ----------------- .../NServiceBus.AcceptanceTests.csproj | 2 +- .../Hosting/HostInformation.cs | 8 +-- src/NServiceBus.Core/Unicast/UnicastBus.cs | 2 +- 5 files changed, 78 insertions(+), 70 deletions(-) create mode 100644 src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs delete mode 100644 src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs diff --git a/src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs b/src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs new file mode 100644 index 00000000000..235aa397fde --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs @@ -0,0 +1,72 @@ +namespace NServiceBus.AcceptanceTests.HostInformation +{ + using System; + using Config; + using EndpointTemplates; + using AcceptanceTesting; + using NUnit.Framework; + using Unicast; + + public class When_a_message_is_received : NServiceBusAcceptanceTest + { + static Guid hostId = new Guid("39365055-daf2-439e-b84d-acbef8fd803d"); + const string displayName = "FooBar"; + const string displayInstanceIdentifier = "FooBar is great!"; + + [Test] + public void Host_information_should_be_available_in_headers() + { + var context = new Context(); + + Scenario.Define(context) + .WithEndpoint(e => e.Given(b => b.SendLocal(new MyMessage()))) + .Done(c => c.HostId != Guid.Empty) + .Run(); + + Assert.AreEqual(hostId, context.HostId); + Assert.AreEqual(displayName, context.HostDisplayName); + } + + public class Context : ScenarioContext + { + public Guid HostId { get; set; } + public string HostDisplayName { get; set; } + } + + [Serializable] + public class MyMessage : ICommand + { + } + + public class MyMessageHandler : IHandleMessages + { + public Context Context { get; set; } + + public void Handle(MyMessage message) + { + Context.HostId = new Guid(message.GetHeader(Headers.HostId)); + Context.HostDisplayName = message.GetHeader(Headers.HostDisplayName); + } + } + + public class MyEndpoint : EndpointConfigurationBuilder + { + public MyEndpoint() + { + EndpointSetup(); + } + } + + class OverrideHostInformation : IWantToRunWhenConfigurationIsComplete + { + public UnicastBus UnicastBus { get; set; } + + public void Run() + { + var hostInformation = new Hosting.HostInformation(hostId, displayName, displayInstanceIdentifier); + + UnicastBus.HostInformation = hostInformation; + } + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs b/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs deleted file mode 100644 index aafb54b8dba..00000000000 --- a/src/NServiceBus.AcceptanceTests/HostInformation/When_an_endpoint_is_started.cs +++ /dev/null @@ -1,64 +0,0 @@ -namespace NServiceBus.AcceptanceTests.HostInformation -{ - using System; - using System.Collections.Generic; - using System.Linq; - using EndpointTemplates; - using AcceptanceTesting; - using NUnit.Framework; - using Unicast; - - public class When_an_endpoint_is_started : NServiceBusAcceptanceTest - { - [Test] - public void Host_information_should_be_available_through_DI() - { - var context = new Context(); - - Scenario.Define(context) - .WithEndpoint() - .Done(c => c.HostId != Guid.Empty) - .Run(); - - Console.Out.WriteLine(context.HostDisplayName); - Console.Out.WriteLine(string.Join(Environment.NewLine,context.HostProperties.Select(kvp => string.Format("{0}:{1}", kvp.Key, kvp.Value)).ToList())); - - Assert.True(context.HostDisplayName.Contains(".exe")); - } - - public class Context : ScenarioContext - { - public Guid HostId { get; set; } - public string HostDisplayName { get; set; } - - public Dictionary HostProperties { get; set; } - } - - public class MyEndpoint : EndpointConfigurationBuilder - { - public MyEndpoint() - { - EndpointSetup(); - } - - class MyStartUpTask:IWantToRunWhenBusStartsAndStops - { - public UnicastBus UnicastBus { get; set; } - - public Context Context { get; set; } - public void Start() - { - Context.HostId = UnicastBus.HostInformation.HostId; - Context.HostDisplayName = UnicastBus.HostInformation.DisplayName; - Context.HostProperties = UnicastBus.HostInformation.Properties; - } - - public void Stop() - { - - } - } - - } - } -} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 623efd662e6..68f68630dfc 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -101,7 +101,7 @@ - + diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index fe161fbedd0..15208e12a2b 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -15,13 +15,14 @@ public static HostInformation CreateDefault() var hostId = DeterministicGuid.Create(fullPathToStartingExe, Environment.MachineName); - return new HostInformation(hostId, String.Format("{0}", fullPathToStartingExe)); + return new HostInformation(hostId, Environment.MachineName, String.Format("{0}", fullPathToStartingExe)); } - public HostInformation(Guid hostId, string displayName) + public HostInformation(Guid hostId, string displayName, string displayInstanceIdentifier) { HostId = hostId; DisplayName = displayName; + DisplayInstanceIdentifier = displayInstanceIdentifier; Properties = new Dictionary { @@ -33,9 +34,8 @@ public HostInformation(Guid hostId, string displayName) } public Guid HostId { get; private set; } - public string DisplayName { get; private set; } - + public string DisplayInstanceIdentifier { get; private set; } public Dictionary Properties { get; private set; } } } \ No newline at end of file diff --git a/src/NServiceBus.Core/Unicast/UnicastBus.cs b/src/NServiceBus.Core/Unicast/UnicastBus.cs index ae011c4f775..efbb739c6b0 100644 --- a/src/NServiceBus.Core/Unicast/UnicastBus.cs +++ b/src/NServiceBus.Core/Unicast/UnicastBus.cs @@ -1046,7 +1046,7 @@ void TransportStartedMessageProcessing(object sender, StartedMessageProcessingEv incomingMessage.Headers[Headers.ProcessingEndpoint] = Configure.EndpointName; incomingMessage.Headers[Headers.HostId] = HostInformation.HostId.ToString("N"); - incomingMessage.Headers[Headers.HostDisplayName] = RuntimeEnvironment.MachineName; + incomingMessage.Headers[Headers.HostDisplayName] = HostInformation.DisplayName; AddBackwardsCompatibilityHeaders(incomingMessage); PipelineFactory.PreparePhysicalMessagePipelineContext(incomingMessage, messageHandlingDisabled); From f28956368a1bd76503a60e56182b64cd0891b2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 30 Jan 2014 09:23:14 +0100 Subject: [PATCH 139/146] Renamed the new headers to our new convention. Also marked the host info as a unsuported api --- .../HostInformation/When_a_message_is_received.cs | 2 ++ src/NServiceBus.Core/Hosting/HostInformation.cs | 3 +++ src/NServiceBus/Headers.cs | 4 ++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs b/src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs index 235aa397fde..17658cbbac5 100644 --- a/src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs +++ b/src/NServiceBus.AcceptanceTests/HostInformation/When_a_message_is_received.cs @@ -63,7 +63,9 @@ class OverrideHostInformation : IWantToRunWhenConfigurationIsComplete public void Run() { +#pragma warning disable 618 var hostInformation = new Hosting.HostInformation(hostId, displayName, displayInstanceIdentifier); +#pragma warning restore 618 UnicastBus.HostInformation = hostInformation; } diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index 15208e12a2b..34b992e7c6d 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -2,9 +2,12 @@ namespace NServiceBus.Hosting { using System; using System.Collections.Generic; + using System.ComponentModel; using System.Diagnostics; using Utils; + [Obsolete("This is a prototype API. May change in minor version releases.")] + [EditorBrowsable(EditorBrowsableState.Never)] public class HostInformation { public static HostInformation CreateDefault() diff --git a/src/NServiceBus/Headers.cs b/src/NServiceBus/Headers.cs index e43cc223140..23db72820cd 100644 --- a/src/NServiceBus/Headers.cs +++ b/src/NServiceBus/Headers.cs @@ -215,12 +215,12 @@ public static class Headers /// /// The display name of the host where the given message was processed (success or failure), eg the MachineName. /// - public const string HostDisplayName = "NServiceBus.HostDisplayName"; + public const string HostDisplayName = "$.diagnostics.hostdisplayname"; /// /// HostId of the endpoint where the given message was processed (success or failure) /// - public const string HostId = "NServiceBus.HostId"; + public const string HostId = "$.diagnostics.hostid"; /// /// The original reply to address for successfully processed messages From fedfdd8af4f8afca2c0cf455c5b24ff426accddc Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 30 Jan 2014 20:45:22 +1100 Subject: [PATCH 140/146] Making it work even thought it doesn't make sense --- .../SendOnlyEndpoint.Custom/App.config | 3 -- .../SendOnlyEndpoint.Custom/Program.cs | 3 +- .../SendOnlyEndpoint.Custom.csproj | 25 --------------- .../EndpointConfig.cs | 31 ++++++++++++++++--- .../MessageSender.cs | 18 ----------- .../SendOnlyEndpoint.NServiceBusHost.csproj | 1 - 6 files changed, 28 insertions(+), 53 deletions(-) delete mode 100644 IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/App.config delete mode 100644 IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/MessageSender.cs diff --git a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/App.config b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/App.config deleted file mode 100644 index 49cc43e1d8f..00000000000 --- a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/App.config +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/Program.cs b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/Program.cs index 3e55bd39b07..eeda06c6fff 100644 --- a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/Program.cs +++ b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/Program.cs @@ -8,7 +8,7 @@ public class Program static void Main() { var bus = Configure.With() - .UnityBuilder() + .DefaultBuilder() .UseTransport() .UnicastBus() .SendOnly(); @@ -21,5 +21,6 @@ static void Main() Console.ReadKey(); } } + public class TestMessage : IMessage{} } diff --git a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/SendOnlyEndpoint.Custom.csproj b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/SendOnlyEndpoint.Custom.csproj index f1063087680..3f9fb568125 100644 --- a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/SendOnlyEndpoint.Custom.csproj +++ b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.Custom/SendOnlyEndpoint.Custom.csproj @@ -35,33 +35,12 @@ 4 - - ..\..\..\binaries\log4net.dll - - - ..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll - - - ..\packages\Unity.2.1.505.0\lib\NET35\Microsoft.Practices.Unity.dll - - - ..\packages\Unity.2.1.505.0\lib\NET35\Microsoft.Practices.Unity.Configuration.dll - - - ..\packages\Unity.Interception.2.1.505.0\lib\NET35\Microsoft.Practices.Unity.Interception.dll - - - ..\packages\Unity.Interception.2.1.505.0\lib\NET35\Microsoft.Practices.Unity.Interception.Configuration.dll - ..\..\..\binaries\NServiceBus.dll ..\..\..\binaries\NServiceBus.Core.dll - - ..\..\..\binaries\containers\unity\NServiceBus.ObjectBuilder.Unity.dll - @@ -69,10 +48,6 @@ - - - - \ No newline at end of file diff --git a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/EndpointConfig.cs b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/EndpointConfig.cs index 4f8b36c3380..edd2fe74872 100644 --- a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/EndpointConfig.cs +++ b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/EndpointConfig.cs @@ -1,9 +1,13 @@ -namespace SendOnlyEndpoint.NServiceBusHost +using NServiceBus.Hosting.Roles; +using NServiceBus.Unicast.Config; + +namespace SendOnlyEndpoint.NServiceBusHost { - using System.Threading; + + using System; using NServiceBus; - public class EndpointConfig : IConfigureThisEndpoint, IWantCustomInitialization + public class EndpointConfig : IConfigureThisEndpoint, IWantCustomInitialization, SendOnly { /// /// Perform initialization logic. @@ -16,8 +20,25 @@ public void Init() .UnicastBus() .SendOnly(); - var messageSender = new Thread(MessageSender.SendMessage); - messageSender.Start(bus); + Console.Out.WriteLine("Press any key to send a message."); + Console.ReadKey(); + bus.Send("SendOnlyDestination@someserver", new TestMessage()); + Console.WriteLine("Message sent to remote endpoint, you can verify this by looking at the outgoing queues in you msmq MMC-snapin"); + } + } + + public class TestMessage : IMessage { } + + public interface SendOnly : IRole + { + + } + + public class RoleSendOnly : IConfigureRole + { + public ConfigUnicastBus ConfigureRole(IConfigureThisEndpoint specifier) + { + return null; } } } diff --git a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/MessageSender.cs b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/MessageSender.cs deleted file mode 100644 index 4a8a5ced211..00000000000 --- a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/MessageSender.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace SendOnlyEndpoint.NServiceBusHost -{ - using System; - using NServiceBus; - - public static class MessageSender - { - public static void SendMessage(object bus) - { - Console.Out.WriteLine("Press any key to send a message."); - Console.ReadKey(); - if ((bus as IBus) != null) - (bus as IBus).Send("SendOnlyDestination@someserver", new TestMessage()); - Console.WriteLine("Message sent to remote endpoint, you can verify this by looking at the outgoing queues in you msmq MMC-snapin"); - } - } - public class TestMessage : IMessage{} -} diff --git a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/SendOnlyEndpoint.NServiceBusHost.csproj b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/SendOnlyEndpoint.NServiceBusHost.csproj index 1119f278101..86cbe7bf5a8 100644 --- a/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/SendOnlyEndpoint.NServiceBusHost.csproj +++ b/IntegrationTests/SendOnlyEndpoint/SendOnlyEndpoint.NServiceBusHost/SendOnlyEndpoint.NServiceBusHost.csproj @@ -50,7 +50,6 @@ - From 69789a1c574d0c0036688bf8ecdd046ca2038c2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Thu, 30 Jan 2014 21:20:26 +0100 Subject: [PATCH 141/146] Fixed a bug in ripple where circular deps could be generated for nugets --- buildsupport/FubuCore.dll | Bin 278528 -> 284160 bytes buildsupport/FubuCore.pdb | Bin 1084928 -> 1111552 bytes buildsupport/ripple.exe | Bin 252416 -> 257536 bytes buildsupport/ripple.pdb | Bin 916992 -> 929280 bytes ripple.config | 6 +++--- 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/buildsupport/FubuCore.dll b/buildsupport/FubuCore.dll index bc83892c3833761764f824eb280223b4c9fac295..19712e0f5962606ff7dd1e839f907ae09bfada22 100644 GIT binary patch literal 284160 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 G4E(>LMwagY literal 278528 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 delta 223833 zcma&P3s@D^8vj4Hy}7tWK)fL;ctJ!nR8%rlFf%eQXj*1wXx=I^GdqXO1UsBEGet9& zm6;kEnHgR&kH@ggLuQJX%v*+L<}ougE9;Q`KJV;3F#7xdp65T$^I>Ms`<*pw)~s2V zcdZ%nF5H&4q)$OY*d4)|meF3bm%hQJ5$8g8>+6kRQ?GnQH-1~_jS49-{`$+pZkFy? zsOE1n$Jw_cm8=j(~z7JpQ(Y=~xsCO^u-AgZgA0Do&b3f`iYTQMAv5Gw(o~E+T zqbxZe-ddIYq$exi58-JcKXc3#_(je7A-s`V@;8jqt7+!}rU^__^;F|$O%3{8@725!`KUQeMfoI5gQuW3`_go^^mo07C!gQ{RQmt)rist9`2x&_ z7hw*(1jmujW&JYDgZUvU{tvxlpY{f^gg4l?1m1+D@D?nC<**9-3f6B!5v-Jb@D3D* zsQ$;oqgBBldQ{k2c6{D&Uj@KX-{9QMEgI1S$#>g*qS^W2ZoeF8h-Q`iNK zO-=g`>vH%E+VDFbcC-CCv}Jn_>n~t0?1Ku}4++>(-~ihP;ShWYx3TXq>#yJl9ED>c zS{Lm&8{;vaVEr{rVf!TOZ=e!R!7TQjX8kRk2~m6hr#J6c$-WEx{t

`y%U~pb9R* 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 J=RaSY{|8I|nC$=n diff --git a/buildsupport/ripple.exe b/buildsupport/ripple.exe index 6daed2576b297ac5c6f40997be5191e87c225739..7d6d4f7df94b27457746fad4605db25ab50a37ba 100644 GIT binary patch literal 257536 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

{QFi`tNjl*eVp|&?D5x9 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 diff --git a/buildsupport/ripple.pdb b/buildsupport/ripple.pdb index 25d4f108c56c8d34040280ca03b5cc8f4e404f33..4276c35908bb6e8ae77e71ea8039af442729aa6a 100644 GIT binary patch literal 929280 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

_tp(+Co~O{mT%|{{b(Mf3=Eq*&)&?>q&2E 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 F{{m&lU~2#X delta 252783 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�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 KR^h+L9RCO8*UC=- diff --git a/ripple.config b/ripple.config index 2a56f3d26a0..4e7928207c9 100644 --- a/ripple.config +++ b/ripple.config @@ -1,5 +1,5 @@ - + NServiceBus packaging/nuget src @@ -8,8 +8,8 @@ Current Current,NextMajor - - + + From b7bb9f170cc3cd9cd1d32b9b16621019487b1017 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Fri, 31 Jan 2014 09:10:44 +1100 Subject: [PATCH 142/146] make failing test explicit for #1935 --- ...en_a_saga_is_started_by_an_event_published_by_another_saga.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs b/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs index 657ba4e1bb6..262aa2c7665 100644 --- a/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs +++ b/src/NServiceBus.AcceptanceTests/Sagas/When_a_saga_is_started_by_an_event_published_by_another_saga.cs @@ -54,6 +54,7 @@ public class Context : ScenarioContext [Test] + [Explicit] public void Should_start_the_saga_when_set_up_to_start_for_the_base_event() { Scenario.Define() From 63d99fa2d406d59253f894378d2a141e4be289c2 Mon Sep 17 00:00:00 2001 From: John Simons Date: Fri, 31 Jan 2014 10:25:21 +1100 Subject: [PATCH 143/146] Removed cmd line args as it could contain sensitive information --- src/NServiceBus.Core/Hosting/HostInformation.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/NServiceBus.Core/Hosting/HostInformation.cs b/src/NServiceBus.Core/Hosting/HostInformation.cs index 34b992e7c6d..4726971ec6f 100644 --- a/src/NServiceBus.Core/Hosting/HostInformation.cs +++ b/src/NServiceBus.Core/Hosting/HostInformation.cs @@ -32,7 +32,6 @@ public HostInformation(Guid hostId, string displayName, string displayInstanceId {"Machine", Environment.MachineName}, {"ProcessID", Process.GetCurrentProcess().Id.ToString()}, {"UserName", Environment.UserName}, - {"CommandLine", Environment.CommandLine} }; } From 63f08f5b2d25a2a7bcebe95e3d84bf07f92e758b Mon Sep 17 00:00:00 2001 From: John Simons Date: Sun, 2 Feb 2014 16:19:47 +1100 Subject: [PATCH 144/146] Header should be a diagnostics one. --- src/NServiceBus/Headers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus/Headers.cs b/src/NServiceBus/Headers.cs index 23db72820cd..81afc306afd 100644 --- a/src/NServiceBus/Headers.cs +++ b/src/NServiceBus/Headers.cs @@ -199,7 +199,7 @@ public static class Headers ///

    /// HostId of the endpoint where the given message originated /// - public const string OriginatingHostId = "NServiceBus.OriginatingHostId"; + public const string OriginatingHostId = "$.diagnostics.originating.hostid"; /// /// Name of the endpoint where the given message was processed (success or failure) From 9b4a76d06b5bf430b8449664d44be244973a0379 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 4 Feb 2014 13:38:57 +1100 Subject: [PATCH 145/146] add acceptance test for defer basically a smoke test --- .../When_Deferring_a_message.cs | 52 +++++++++++++++++++ .../NServiceBus.AcceptanceTests.csproj | 1 + 2 files changed, 53 insertions(+) create mode 100644 src/NServiceBus.AcceptanceTests/BasicMessaging/When_Deferring_a_message.cs diff --git a/src/NServiceBus.AcceptanceTests/BasicMessaging/When_Deferring_a_message.cs b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_Deferring_a_message.cs new file mode 100644 index 00000000000..172e1bf167e --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_Deferring_a_message.cs @@ -0,0 +1,52 @@ +namespace NServiceBus.AcceptanceTests.BasicMessaging +{ + using System; + using EndpointTemplates; + using AcceptanceTesting; + using NUnit.Framework; + + public class When_Deferring_a_message : NServiceBusAcceptanceTest + { + [Test] + public void Message_should_be_received() + { + var context = new Context(); + + Scenario.Define(context) + .WithEndpoint(b => b.Given((bus, c) => bus.Defer(TimeSpan.FromSeconds(3), new MyMessage()))) + .Done(c => c.WasCalled) + .Run(); + + Assert.IsTrue(context.WasCalled); + } + + public class Context : ScenarioContext + { + public bool WasCalled { get; set; } + } + + public class Endpoint : EndpointConfigurationBuilder + { + public Endpoint() + { + EndpointSetup(); + } + public class MyMessageHandler : IHandleMessages + { + public Context Context { get; set; } + + public IBus Bus { get; set; } + + public void Handle(MyMessage message) + { + Context.WasCalled = true; + } + } + } + + [Serializable] + public class MyMessage : IMessage + { + } + } +} diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 68f68630dfc..f3a338f5561 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -100,6 +100,7 @@ + From 089cbd4c1f5ed0bb8ee4269bd4d93d93099a19b6 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 4 Feb 2014 14:15:37 +1100 Subject: [PATCH 146/146] add tests for TimeToBeReceived --- ...ssage_with_TimeToBeReceived_has_expired.cs | 62 +++++++++++++++++++ ...e_with_TimeToBeReceived_has_not_expired.cs | 53 ++++++++++++++++ .../NServiceBus.AcceptanceTests.csproj | 2 + 3 files changed, 117 insertions(+) create mode 100644 src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_expired.cs create mode 100644 src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_not_expired.cs diff --git a/src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_expired.cs b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_expired.cs new file mode 100644 index 00000000000..a2ffe5b215d --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_expired.cs @@ -0,0 +1,62 @@ +namespace NServiceBus.AcceptanceTests.BasicMessaging +{ + using System; + using System.Threading; + using EndpointTemplates; + using AcceptanceTesting; + using NUnit.Framework; + + public class When_using_a_message_with_TimeToBeReceived_has_expired : NServiceBusAcceptanceTest + { + [Test] + public void Message_should_not_be_received() + { + var context = new Context(); + + var timeToWaitFor = DateTime.Now.AddSeconds(10); + Scenario.Define(context) + .WithEndpoint(b => b.Given((bus, c) => bus.SendLocal(new MyMessage()))) + .Done(c => DateTime.Now > timeToWaitFor ) + .Run(); + Assert.IsFalse(context.WasCalled); + } + + public class Context : ScenarioContext + { + public bool WasCalled { get; set; } + } + + public class Endpoint : EndpointConfigurationBuilder + { + public Endpoint() + { + EndpointSetup(); + } + public class MyMessageHandler : IHandleMessages + { + static bool hasSkipped; + public Context Context { get; set; } + + public IBus Bus { get; set; } + + public void Handle(MyMessage message) + { + if (!hasSkipped) + { + hasSkipped = true; + Thread.Sleep(TimeSpan.FromSeconds(2)); + Bus.HandleCurrentMessageLater(); + return; + } + Context.WasCalled = true; + } + } + } + + [Serializable] + [TimeToBeReceived("00:00:01")] + public class MyMessage : IMessage + { + } + } +} diff --git a/src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_not_expired.cs b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_not_expired.cs new file mode 100644 index 00000000000..a516e51daa8 --- /dev/null +++ b/src/NServiceBus.AcceptanceTests/BasicMessaging/When_using_a_message_with_TimeToBeReceived_has_not_expired.cs @@ -0,0 +1,53 @@ +namespace NServiceBus.AcceptanceTests.BasicMessaging +{ + using System; + using EndpointTemplates; + using AcceptanceTesting; + using NUnit.Framework; + + public class When_using_a_message_with_TimeToBeReceived_has_not_expired : NServiceBusAcceptanceTest + { + [Test] + public void Message_should_be_received() + { + var context = new Context(); + + Scenario.Define(context) + .WithEndpoint(b => b.Given((bus, c) => bus.SendLocal(new MyMessage()))) + .Done(c => c.WasCalled) + .Run(); + + Assert.IsTrue(context.WasCalled); + } + + public class Context : ScenarioContext + { + public bool WasCalled { get; set; } + } + + public class Endpoint : EndpointConfigurationBuilder + { + public Endpoint() + { + EndpointSetup(); + } + public class MyMessageHandler : IHandleMessages + { + public Context Context { get; set; } + + public IBus Bus { get; set; } + + public void Handle(MyMessage message) + { + Context.WasCalled = true; + } + } + } + + [Serializable] + [TimeToBeReceived("00:00:10")] + public class MyMessage : IMessage + { + } + } +} diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index f3a338f5561..dc3276c7b1c 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -100,6 +100,8 @@ + +