public void Establish() { _channel = new FakeChannel(); _commandProcessor = new SpyCommandProcessor(); var messageMapperRegistry = new MessageMapperRegistry(new SimpleMessageMapperFactory(() => new MyEventMessageMapper())); messageMapperRegistry.Register <MyEvent, MyEventMessageMapper>(); var connection = new Connection( name: new ConnectionName("test"), dataType: typeof(MyEvent), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_channel), channelName: new ChannelName("fakeChannel"), routingKey: "fakekey"); _dispatcher = new Dispatcher(_commandProcessor, messageMapperRegistry, new List <Connection> { connection }); var @event = new MyEvent(); var message = new MyEventMessageMapper().MapToMessage(@event); _channel.Add(message); Assert.AreEqual(DispatcherState.DS_AWAITING, _dispatcher.State); _dispatcher.Receive(); }
public MessageDispatcherRoutingTests() { _channel = new FakeChannel(); _commandProcessor = new SpyCommandProcessor(); var messageMapperRegistry = new MessageMapperRegistry(new SimpleMessageMapperFactory((_) => new MyEventMessageMapper())); messageMapperRegistry.Register <MyEvent, MyEventMessageMapper>(); var connection = new Subscription <MyEvent>( new SubscriptionName("test"), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_channel), channelName: new ChannelName("fakeChannel"), routingKey: new RoutingKey("fakekey")); _dispatcher = new Dispatcher(_commandProcessor, messageMapperRegistry, new List <Subscription> { connection }); var @event = new MyEvent(); var message = new MyEventMessageMapper().MapToMessage(@event); _channel.Enqueue(message); _dispatcher.State.Should().Be(DispatcherState.DS_AWAITING); _dispatcher.Receive(); }
public MessagePumpRetryEventConnectionFailureTests() { _commandProcessor = new SpyCommandProcessor(); var channel = new FailingChannel { NumberOfRetries = 1 }; var mapper = new MyEventMessageMapper(); _messagePump = new MessagePump <MyEvent>(_commandProcessor, mapper) { Channel = channel, TimeoutInMilliseconds = 500, RequeueCount = -1 }; var @event = new MyEvent(); //Two events will be received when channel fixed var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(@event))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(@event))); channel.Enqueue(message1); channel.Enqueue(message2); //Quit the message pump var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); channel.Enqueue(quitMessage); }
public MessagePumpRetryCommandOnConnectionFailureTests() { _commandProcessor = new SpyCommandProcessor(); var channel = new FailingChannel { NumberOfRetries = 1 }; var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePump <MyCommand>(_commandProcessor, mapper) { Channel = channel, TimeoutInMilliseconds = 500, RequeueCount = -1 }; var command = new MyCommand(); //two command, will be received when connection restored var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(command))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(command))); channel.Enqueue(message1); channel.Enqueue(message2); //end the pump var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); channel.Enqueue(quitMessage); }
public MessageDispatcherShutConnectionTests() { var channel = new FakeChannel(); IAmACommandProcessor commandProcessor = new SpyCommandProcessor(); var messageMapperRegistry = new MessageMapperRegistry(new SimpleMessageMapperFactory(() => new MyEventMessageMapper())); messageMapperRegistry.Register <MyEvent, MyEventMessageMapper>(); _connection = new Connection <MyEvent>(new ConnectionName("test"), noOfPerformers: 3, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(channel), channelName: new ChannelName("fakeChannel"), routingKey: new RoutingKey("fakekey")); _dispatcher = new Dispatcher(commandProcessor, messageMapperRegistry, new List <Connection> { _connection }); var @event = new MyEvent(); var message = new MyEventMessageMapper().MapToMessage(@event); for (var i = 0; i < 6; i++) { channel.Add(message); } _dispatcher.State.Should().Be(DispatcherState.DS_AWAITING); _dispatcher.Receive(); }
public PerformerCanStopTests() { _commandProcessor = new SpyCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyEventMessageMapper(); var messagePump = new MessagePumpBlocking <MyEvent>(_commandProcessor, mapper); messagePump.Channel = _channel; messagePump.TimeoutInMilliseconds = 5000; var @event = new MyEvent(); var message = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonSerializer.Serialize(@event, JsonSerialisationOptions.Options))); _channel.Enqueue(message); _performer = new Performer(_channel, messagePump); _performerTask = _performer.Run(); _performer.Stop(); }
public void Establish() { _commandProcessor = new SpyCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyEventMessageMapper(); var messagePump = new MessagePump <MyEvent>(_commandProcessor, mapper); messagePump.Channel = _channel; messagePump.TimeoutInMilliseconds = 5000; var @event = new MyEvent(); var message = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(@event))); _channel.Add(message); _performer = new Performer(_channel, messagePump); _performerTask = _performer.Run(); _performer.Stop(); }
public void Establish() { _commandProcessor = new SpyRequeueCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePump <MyCommand>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = -1 }; var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(_command))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(_command))); _channel.Add(message1); _channel.Add(message2); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Add(quitMessage); }
public MessagePumpToCommandProcessorTests() { _commandProcessor = new SpyCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyEventMessageMapper(); _messagePump = new MessagePump <MyEvent>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000 }; _event = new MyEvent(); var message = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonSerializer.Serialize(_event, JsonSerialisationOptions.Options))); _channel.Enqueue(message); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Enqueue(quitMessage); }
public MessagePumpCommandRequeueTests() { _commandProcessor = new SpyRequeueCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePumpBlocking <MyCommand>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = -1 }; var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonSerializer.Serialize(_command, JsonSerialisationOptions.Options))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonSerializer.Serialize(_command, JsonSerialisationOptions.Options))); _channel.Enqueue(message1); _channel.Enqueue(message2); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Enqueue(quitMessage); }
public void Establish() { _commandProcessor = new SpyCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyEventMessageMapper(); _messagePump = new MessagePump <MyEvent>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000 }; _event = new MyEvent(); var message = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(_event))); _channel.Add(message); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Add(quitMessage); }
public MessagePumpEventRequeueTests() { _commandProcessor = new SpyRequeueCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyEventMessageMapper(); _messagePump = new MessagePump <MyEvent>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = -1 }; _event = new MyEvent(); var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(_event))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(_event))); _channel.Enqueue(message1); _channel.Enqueue(message2); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Enqueue(quitMessage); }
public MessageDispatcherMultipleConnectionTests() { _eventChannel = new FakeChannel(); _commandChannel = new FakeChannel(); var commandProcessor = new SpyCommandProcessor(); var container = new ServiceCollection(); container.AddTransient <MyEventMessageMapper>(); container.AddTransient <MyCommandMessageMapper>(); var messageMapperRegistry = new MessageMapperRegistry(new ServiceProviderMapperFactory(container.BuildServiceProvider())); messageMapperRegistry.Register <MyEvent, MyEventMessageMapper>(); messageMapperRegistry.Register <MyCommand, MyCommandMessageMapper>(); var myEventConnection = new Subscription <MyEvent>(new SubscriptionName("test"), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_eventChannel), channelName: new ChannelName("fakeChannel"), routingKey: new RoutingKey("fakekey")); var myCommandConnection = new Subscription <MyCommand>(new SubscriptionName("anothertest"), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_commandChannel), channelName: new ChannelName("fakeChannel"), routingKey: new RoutingKey("fakekey")); _dispatcher = new Dispatcher(commandProcessor, messageMapperRegistry, new List <Subscription> { myEventConnection, myCommandConnection }); var @event = new MyEvent(); var eventMessage = new MyEventMessageMapper().MapToMessage(@event); _eventChannel.Enqueue(eventMessage); var command = new MyCommand(); var commandMessage = new MyCommandMessageMapper().MapToMessage(command); _commandChannel.Enqueue(commandMessage); _dispatcher.State.Should().Be(DispatcherState.DS_AWAITING); _dispatcher.Receive(); }
public MessagePumpRetryEventConnectionFailureTests() { _commandProcessor = new SpyCommandProcessor(); _channel = new FailingChannel { NumberOfRetries = 4 }; var mapper = new MyEventMessageMapper(); _messagePump = new MessagePump <MyEvent>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = -1 }; _event = new MyEvent(); var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(_event))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonConvert.SerializeObject(_event))); _channel.Add(message1); _channel.Add(message2); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Add(quitMessage); }