public static void Test(ITransport t, IQueueStrategy strategy, Endpoint queueEndpoint, Action<Message> send, Func<MessageEnumerator> enumer) { Guid id = Guid.NewGuid(); var serializer = new XmlMessageSerializer(new DefaultReflection(), new DefaultKernel()); var subscriptionStorage = new MsmqSubscriptionStorage(new DefaultReflection(), serializer, queueEndpoint.Uri, new EndpointRouter(), strategy); subscriptionStorage.Initialize(); var wait = new ManualResetEvent(false); subscriptionStorage.SubscriptionChanged += () => wait.Set(); t.AdministrativeMessageArrived += subscriptionStorage.HandleAdministrativeMessage; Message msg = new MessageBuilder (serializer).GenerateMsmqMessageFromMessageBatch(new AddInstanceSubscription { Endpoint = queueEndpoint.Uri.ToString(), InstanceSubscriptionKey = id, Type = typeof (TestMessage2).FullName, }); send(msg); wait.WaitOne(); msg = new MessageBuilder (serializer).GenerateMsmqMessageFromMessageBatch(new RemoveInstanceSubscription { Endpoint = queueEndpoint.Uri.ToString(), InstanceSubscriptionKey = id, Type = typeof (TestMessage2).FullName, }); wait.Reset(); send(msg); wait.WaitOne(); IEnumerable<Uri> uris = subscriptionStorage .GetSubscriptionsFor(typeof (TestMessage2)); Assert.Equal(0, uris.Count()); int count = 0; MessageEnumerator copy = enumer(); while (copy.MoveNext()) count++; Assert.Equal(0, count); }
public void Adding_then_removing_will_result_in_no_subscriptions() { var serializer = new XmlMessageSerializer(new DefaultReflection(), new CastleServiceLocator(new WindsorContainer())); var msg = new Message(); serializer.Serialize(new object[]{new AddSubscription { Endpoint = transactionalTestQueueEndpoint, Type = typeof(TestMessage).FullName, }}, msg.BodyStream); msg.Extension = Guid.NewGuid().ToByteArray(); queue.OpenSiblngQueue(SubQueue.Subscriptions, QueueAccessMode.Send).Send(msg); var subscriptionStorage = new MsmqSubscriptionStorage(new DefaultReflection(), serializer, testQueueEndPoint.Uri, new EndpointRouter(), new FlatQueueStrategy(new EndpointRouter(),testQueueEndPoint.Uri)); subscriptionStorage.Initialize(); subscriptionStorage.RemoveSubscription(typeof(TestMessage).FullName, transactionalTestQueueEndpoint.Uri.ToString()); var uris = subscriptionStorage .GetSubscriptionsFor(typeof(TestMessage)); Assert.Equal(0, uris.Count()); }
public void Adding_then_removing_will_result_in_no_subscriptions() { var serializer = new XmlMessageSerializer(new DefaultReflection(), new DefaultKernel()); var msg = new Message(); serializer.Serialize(new object[]{new AddSubscription { Endpoint = TransactionalTestQueueUri.ToString(), Type = typeof(TestMessage).FullName, }}, msg.BodyStream); queue.Send(msg, MessageQueueTransactionType.None); msg = queue.Peek(); queue.MoveToSubQueue("subscriptions",msg); var subscriptionStorage = new MsmqSubscriptionStorage(new DefaultReflection(), serializer, TestQueueUri, new SubQueueStrategy()); subscriptionStorage.Initialize(); subscriptionStorage.RemoveSubscription(typeof(TestMessage).FullName, TransactionalTestQueueUri.ToString()); var uris = subscriptionStorage .GetSubscriptionsFor(typeof (TestMessage)); Assert.Equal(0, uris.Count()); }
public void Can_read_subscription_from_queue() { var serializer = new XmlMessageSerializer(new DefaultReflection(), new DefaultKernel()); var msg = new Message(); serializer.Serialize(new object[]{new AddSubscription { Endpoint = TransactionalTestQueueUri.ToString(), Type = typeof(TestMessage).FullName, }}, msg.BodyStream); queue.Send(msg, MessageQueueTransactionType.None); msg = queue.Peek(); queue.MoveToSubQueue("subscriptions", msg); var subscriptionStorage = new MsmqSubscriptionStorage(new DefaultReflection(), serializer, TestQueueUri, new SubQueueStrategy()); subscriptionStorage.Initialize(); var uri = subscriptionStorage .GetSubscriptionsFor(typeof(TestMessage)) .Single(); Assert.Equal(TransactionalTestQueueUri, uri); }
public void Adding_then_removing_will_result_in_no_subscriptions() { var serializer = new XmlMessageSerializer(new DefaultReflection(), new CastleServiceLocator(new WindsorContainer())); var msg = new Message(); serializer.Serialize(new object[]{new AddSubscription { Endpoint = TransactionalTestQueueUri, Type = typeof(TestMessage).FullName, }}, msg.BodyStream); msg.Extension = Guid.NewGuid().ToByteArray(); queue.Send(msg, MessageQueueTransactionType.None); msg = queue.Peek(TimeSpan.FromSeconds(30)); queue.MoveToSubQueue("subscriptions",msg); var subscriptionStorage = new MsmqSubscriptionStorage(new DefaultReflection(), serializer, TestQueueUri.Uri, new EndpointRouter(), new SubQueueStrategy()); subscriptionStorage.Initialize(); subscriptionStorage.RemoveSubscription(typeof(TestMessage).FullName, TransactionalTestQueueUri.Uri.ToString()); var uris = subscriptionStorage .GetSubscriptionsFor(typeof (TestMessage)); Assert.Equal(0, uris.Count()); }