From bf207b38b2a5f4a44cc596e4b9c60254d022215f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96hlund?= Date: Wed, 28 Sep 2016 16:01:57 +0200 Subject: [PATCH] Remove subscription versioning (#4172) * Add failing test for inmemory subscription storage * Add failing tests for msmq sub storage * Ignore contract version when publishing --- .../Msmq/MsmqSubscriptionStorageQueueTests.cs | 26 +++++++++++++++++ .../NServiceBus.Core.Tests.csproj | 1 + .../InMemorySubscriptionStorageTests.cs | 28 +++++++++++++++++++ .../MessageDrivenSubscriptions/MessageType.cs | 9 ++---- 4 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 src/NServiceBus.Core.Tests/Persistence/InMemory/InMemorySubscriptionStorageTests.cs diff --git a/src/NServiceBus.Core.Tests/Msmq/MsmqSubscriptionStorageQueueTests.cs b/src/NServiceBus.Core.Tests/Msmq/MsmqSubscriptionStorageQueueTests.cs index 9118790a84b..ba111bd3cc5 100644 --- a/src/NServiceBus.Core.Tests/Msmq/MsmqSubscriptionStorageQueueTests.cs +++ b/src/NServiceBus.Core.Tests/Msmq/MsmqSubscriptionStorageQueueTests.cs @@ -232,6 +232,32 @@ public void Messages_with_the_same_timestamp_have_repeatedly_same_order() Assert.AreEqual(queue1.Messages.Single(), queue2.Messages.Single()); } + [Test] + public async Task Should_ignore_message_version_on_subscriptions() + { + var subscriptionMessage = new MsmqSubscriptionMessage + { + ArrivedTime = DateTime.UtcNow, + Id = Guid.NewGuid().ToString(), + Body = "SomeMessage, Version=1.0.0", + Label = "subscriberA@server1|subscriberA" + }; + + var storageQueue = new FakeStorageQueue(); + var subscriptionStorage = new MsmqSubscriptionStorage(storageQueue); + + storageQueue.Messages.Add(subscriptionMessage); + + subscriptionStorage.Init(); + + var subscribers = await subscriptionStorage.GetSubscriberAddressesForMessage(new[] + { + new MessageType("SomeMessage", "2.0.0") + }, new ContextBag()); + + Assert.AreEqual("subscriberA", subscribers.Single().Endpoint); + } + static MsmqSubscriptionStorage CreateAndInit(FakeStorageQueue queue) { var storage = new MsmqSubscriptionStorage(queue); diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index f075ea61c4e..bcd28a14eab 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -140,6 +140,7 @@ + diff --git a/src/NServiceBus.Core.Tests/Persistence/InMemory/InMemorySubscriptionStorageTests.cs b/src/NServiceBus.Core.Tests/Persistence/InMemory/InMemorySubscriptionStorageTests.cs new file mode 100644 index 00000000000..ea0414e7b55 --- /dev/null +++ b/src/NServiceBus.Core.Tests/Persistence/InMemory/InMemorySubscriptionStorageTests.cs @@ -0,0 +1,28 @@ +namespace NServiceBus.Persistence.InMemory.Tests +{ + using System.Linq; + using System.Threading.Tasks; + using Extensibility; + using NUnit.Framework; + using Unicast.Subscriptions; + using Unicast.Subscriptions.MessageDrivenSubscriptions; + + [TestFixture] + class InMemorySubscriptionStorageTests + { + [Test] + public async Task Should_ignore_message_version_on_subscriptions() + { + var storage = new InMemorySubscriptionStorage(); + + await storage.Subscribe(new Subscriber("subscriberA@server1", "subscriberA"), new MessageType("SomeMessage", "1.0.0"), new ContextBag()); + + var subscribers = await storage.GetSubscriberAddressesForMessage(new[] + { + new MessageType("SomeMessage", "2.0.0") + }, new ContextBag()); + + Assert.AreEqual("subscriberA", subscribers.Single().Endpoint); + } + } +} \ No newline at end of file diff --git a/src/NServiceBus.Core/Routing/MessageDrivenSubscriptions/MessageType.cs b/src/NServiceBus.Core/Routing/MessageDrivenSubscriptions/MessageType.cs index ec773232aa6..8440eefb1da 100644 --- a/src/NServiceBus.Core/Routing/MessageDrivenSubscriptions/MessageType.cs +++ b/src/NServiceBus.Core/Routing/MessageDrivenSubscriptions/MessageType.cs @@ -96,7 +96,7 @@ public bool Equals(MessageType other) { return true; } - return Equals(other.TypeName, TypeName) && other.Version.Major == Version.Major; + return Equals(other.TypeName, TypeName); } /// @@ -116,7 +116,7 @@ public override bool Equals(object obj) { return false; } - return Equals((MessageType) obj); + return Equals((MessageType)obj); } /// @@ -124,10 +124,7 @@ public override bool Equals(object obj) /// public override int GetHashCode() { - unchecked - { - return (TypeName.GetHashCode()*397) ^ Version.GetHashCode(); - } + return TypeName.GetHashCode(); } ///