public void Should_catch_all_exception() { // Arrange var newChannel = Substitute.For<IModel>(); newChannel.IsOpen.Returns(true); newChannel.When(x => x.QueueDeclarePassive(Arg.Any<string>())) .Do(callInfo => { throw new Exception("Some errors happen");}); var routeFinder = Substitute.For<IRouteFinder>(); var durableConnection = Substitute.For<IDurableConnection>(); durableConnection.IsConnected.Returns(true); //durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action var count = tunnel.GetMessageCount(new PrioritySubscriptionOption<Customer> { SubscriptionName = "subscriptionName", MaxPriorityLevel = 4 }); // Assert Assert.AreEqual(0, count); newChannel.Received(1).QueueDeclarePassive(Arg.Any<string>()); }
public static RabbitTunnelWithPriorityQueuesSupport CreateTunnel(IModel channel, out IDurableConnection durableConnection, bool isChannelOpen = true) { if (channel != null) { channel.IsOpen.Returns(isChannelOpen); } var routeFinder = Substitute.For <IRouteFinder>(); routeFinder.FindQueueName <Customer>(null).ReturnsForAnyArgs("Queue"); durableConnection = Substitute.For <IDurableConnection>(); //durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); var conn = durableConnection; durableConnection.When(x => x.Connect()).Do(callInfo => // Because this is a mock objectd { //Rase connected event conn.Connected += Raise.Event <Action>(); conn.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(channel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); tunnel.OnOpened += () => { }; tunnel.OnClosed += () => { }; return(tunnel); }
public void Should_catch_all_exception() { // Arrange var newChannel = Substitute.For <IModel>(); newChannel.IsOpen.Returns(true); newChannel.When(x => x.QueueDeclarePassive(Arg.Any <string>())) .Do(callInfo => { throw new Exception("Some errors happen"); }); var routeFinder = Substitute.For <IRouteFinder>(); var durableConnection = Substitute.For <IDurableConnection>(); durableConnection.IsConnected.Returns(true); durableConnection.ConnectionFactory.Returns(Substitute.For <ConnectionFactory>()); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action var count = tunnel.GetMessageCount(new PrioritySubscriptionOption <Customer> { SubscriptionName = "subscriptionName", MaxPriorityLevel = 4 }); // Assert Assert.AreEqual((uint)0, count); newChannel.Received(1).QueueDeclarePassive(Arg.Any <string>()); }
public void Should_not_overwrite_the_priority_if_customer_headers_has_Priority_value_set() { // Arrange var newChannel = Substitute.For <IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For <IRouteFinder>(); var durableConnection = Substitute.For <IDurableConnection>(); durableConnection.ConnectionFactory.Returns(Substitute.For <ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event <Action>(); durableConnection.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10, new Dictionary <string, object> { { "Priority", "100" }, { "AnotherHeaderKey", "something" } }); // Assert routeFinder.Received(1).FindRoutingKey <string>(); newChannel.Received(1).BasicPublish(Arg.Any <string>(), Arg.Any <string>(), Arg.Is <IBasicProperties>(arg => arg.Headers["Priority"].ToString() == "10" && arg.Headers["AnotherHeaderKey"].ToString() == "something"), Arg.Any <byte[]>()); }
public void Should_not_overwrite_the_priority_if_customer_headers_has_Priority_value_set() { // Arrange var newChannel = Substitute.For<IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For<IRouteFinder>(); var durableConnection = Substitute.For<IDurableConnection>(); //durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event<Action>(); durableConnection.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10, new Dictionary<string, object> { { "Priority", "100" }, { "AnotherHeaderKey", "something" } }); // Assert routeFinder.Received(1).FindRoutingKey<string>(); newChannel.Received(1).BasicPublish(Arg.Any<string>(), Arg.Any<string>(), Arg.Is<IBasicProperties>(arg => arg.Headers["Priority"].ToString() == "10" && arg.Headers["AnotherHeaderKey"].ToString() == "something"), Arg.Any<byte[]>()); }
public void Should_return_the_messagecount() { // Arrange var newChannel = Substitute.For <IModel>(); newChannel.QueueDeclarePassive(Arg.Any <string>()).Returns(new QueueDeclareOk("", 100, 0)); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For <IRouteFinder>(); var durableConnection = Substitute.For <IDurableConnection>(); durableConnection.IsConnected.Returns(true); durableConnection.ConnectionFactory.Returns(Substitute.For <ConnectionFactory>()); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action var count = tunnel.GetMessageCount(new PrioritySubscriptionOption <Customer> { SubscriptionName = "subscriptionName", MaxPriorityLevel = 4 }); // Assert Assert.AreEqual((uint)500, count); }
public void Should_use_route_finder_to_find_routing_key_then_publish_serialized_msg() { // Arrange var newChannel = Substitute.For<IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For<IRouteFinder>(); var durableConnection = Substitute.For<IDurableConnection>(); //durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event<Action>(); durableConnection.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10); // Assert routeFinder.Received().FindRoutingKey<string>(); newChannel.Received().BasicPublish(Arg.Any<string>(), Arg.Any<string>(), Arg.Is<IBasicProperties>(arg => arg.Headers["Priority"].ToString() == "10"), Arg.Any<byte[]>()); }
public void Should_use_route_finder_to_find_routing_key_then_publish_serialized_msg() { // Arrange var newChannel = Substitute.For <IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For <IRouteFinder>(); var durableConnection = Substitute.For <IDurableConnection>(); durableConnection.ConnectionFactory.Returns(Substitute.For <ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event <Action>(); durableConnection.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10); // Assert routeFinder.Received().FindRoutingKey <string>(); newChannel.Received().BasicPublish(Arg.Any <string>(), Arg.Any <string>(), Arg.Is <IBasicProperties>(arg => arg.Headers["Priority"].ToString() == "10"), Arg.Any <byte[]>()); }
public static RabbitTunnelWithPriorityQueuesSupport CreateTunnel(IModel channel, out IDurableConnection durableConnection, bool isChannelOpen = true) { if (channel != null) { channel.IsOpen.Returns(isChannelOpen); } var routeFinder = Substitute.For<IRouteFinder>(); routeFinder.FindQueueName<Customer>(null).ReturnsForAnyArgs("Queue"); durableConnection = Substitute.For<IDurableConnection>(); durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); var conn = durableConnection; durableConnection.When(x => x.Connect()).Do(callInfo => // Because this is a mock objectd { //Rase connected event conn.Connected += Raise.Event<Action>(); conn.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(channel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); tunnel.OnOpened += () => { }; tunnel.OnClosed += () => { }; return tunnel; }
public void Can_construct_with_provided_route_finder_and_durable_connection() { // Arrange var routeFinder = Substitute.For <IRouteFinder>(); var durableConnection = Substitute.For <IDurableConnection>(); ////durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); // Action var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Assert Assert.IsNotNull(tunnel); }
public void Can_construct_with_provided_route_finder_and_durable_connection() { // Arrange var routeFinder = Substitute.For<IRouteFinder>(); var durableConnection = Substitute.For<IDurableConnection>(); durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); // Action var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Assert Assert.IsNotNull(tunnel); }
private ITunnel Create(DurableConnection durableConnection, IRabbitWatcher rabbitWatcher) { var errorHandler = new ConsumerErrorHandler(() => durableConnection.ConnectionFactory, Global.DefaultSerializer, rabbitWatcher); var msgHandlerFactory = new PriorityMessageHandlerFactory(errorHandler, Global.DefaultSerializer, rabbitWatcher); var consumerManager = new ConsumerManager(rabbitWatcher, msgHandlerFactory, Global.DefaultSerializer); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(consumerManager, rabbitWatcher, new DefaultRouteFinder(), durableConnection, Global.DefaultSerializer, Global.DefaultCorrelationIdGenerator, Global.DefaultPersistentMode); tunnel.AddSerializerObserver(errorHandler); tunnel.AddSerializerObserver(msgHandlerFactory); tunnel.AddSerializerObserver(consumerManager); return tunnel; }
public void Should_throw_exception_if_dedicated_publish_channel_is_not_created_properly() { // Arrange var newChannel = Substitute.For<IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For<IRouteFinder>(); var durableConnection = Substitute.For<IDurableConnection>(); //durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event<Action>(); durableConnection.IsConnected.Returns(true); }); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10); }
public void Should_throw_exception_if_dedicated_publish_channel_is_not_created_properly() { // Arrange var newChannel = Substitute.For <IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For <IRouteFinder>(); var durableConnection = Substitute.For <IDurableConnection>(); durableConnection.ConnectionFactory.Returns(Substitute.For <ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event <Action>(); durableConnection.IsConnected.Returns(true); }); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10); }
public void Should_return_the_messagecount() { // Arrange var newChannel = Substitute.For<IModel>(); newChannel.QueueDeclarePassive(Arg.Any<string>()).Returns(new QueueDeclareOk("", 100, 0)); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For<IRouteFinder>(); var durableConnection = Substitute.For<IDurableConnection>(); durableConnection.IsConnected.Returns(true); //durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action var count = tunnel.GetMessageCount(new PrioritySubscriptionOption<Customer> { SubscriptionName = "subscriptionName", MaxPriorityLevel = 4 }); // Assert Assert.AreEqual(500, count); }
public void Should_throw_exception_if_publish_failed() { // Arrange var newChannel = Substitute.For <IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For <IRouteFinder>(); routeFinder.When(x => x.FindExchangeName <string>()).Do(callInfo => { throw new Exception("Test message"); }); var durableConnection = Substitute.For <IDurableConnection>(); durableConnection.ConnectionFactory.Returns(Substitute.For <ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event <Action>(); durableConnection.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10); }
public void Should_throw_exception_if_publish_failed() { // Arrange var newChannel = Substitute.For<IModel>(); newChannel.IsOpen.Returns(true); var routeFinder = Substitute.For<IRouteFinder>(); routeFinder.When(x =>x.FindExchangeName<string>()).Do(callInfo => { throw new Exception("Test message");}); var durableConnection = Substitute.For<IDurableConnection>(); //durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>()); durableConnection.When(x => x.Connect()).Do(callInfo => { durableConnection.Connected += Raise.Event<Action>(); durableConnection.IsConnected.Returns(true); }); durableConnection.CreateChannel().Returns(newChannel); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(routeFinder, durableConnection); // Action tunnel.Publish("Muahaha", 10); }