public async Task When_receives_a_message_sends_it_to_the_mom() { try { var momRepositoryFake = new MomRepositoryFake(); var forwarderFactory = new MessageForwarderFactory( momRepositoryFake, ServiceEvents.Instance.Value, new QuotaFactory(HostConfiguration.Instance.Value) ); var messageForwardingService = new MessageForwardingService(new JsonSerializer(), ServiceEvents.Instance.Value, forwarderFactory); using (HostService host = new HostService(messageForwardingService, new IncommingMessageRepository())) { host.Start(); await MessageRequestHelper.DoRequest(_validMessage, HostConfiguration.Instance.Value.WebListenerPort); Thread.Sleep(1000); Assert.True(momRepositoryFake.ReceivedSendMessages.ContainsKey(_validMessage.Topic)); Assert.Equal(momRepositoryFake.ReceivedSendMessages[_validMessage.Topic].Count, 1); Assert.Equal(momRepositoryFake.ReceivedSendMessages[_validMessage.Topic].First(), _serializer.Serialize<BaseEvent>(_validMessage)); } } finally { File.Delete("PendingMessages"); } }
public HostService(MessageForwardingService messageForwardingService, IncommingMessageRepository messageRepository) { _messagesRepository = messageRepository; _messageForwardingService = messageForwardingService; new MessageCleanerService(ServiceEvents.Instance.Value, _messagesRepository); _webApiHost = new WebAPISelfHost(HostConfiguration.Instance.Value.WebListenerPort); }
public void It_wont_process_any_incomming_message_until_we_call_StartListening() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); serviceEvents.SavedIncommingMessage(GenerateMessages(1, "ATopic").Value.ElementAt(0)); Assert.False(forwarderFactory.Forwarders.ContainsKey("ATopic")); }
public void when_called_StartListening_it_will_process_every_incommingEvent() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); sut.StartListening(); serviceEvents.SavedIncommingMessage(GenerateMessages(1, "ATopic").Value.ElementAt(0)); Assert.NotNull(forwarderFactory.Forwarders["ATopic"]); forwarderFactory.Forwarders["ATopic"].Received(1).AddMessage(Arg.Any<string>()); }
public void It_can_process_pending_messages() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); var messages = GenerateMessages(8, "oneTopic"); sut.ProcessPendingMessages(messages); Assert.NotNull(forwarderFactory.Forwarders["oneTopic"]); forwarderFactory.Forwarders["oneTopic"].Received(messages.Value.Count()).AddMessage(Arg.Any<string>()); }
public HostService() { var kafkaProducerFactory = new KafkaProducerFactory(KafkaConfiguration.FromLocalFile("KafkaConfiguration.json")); var forwarderFactory = new MessageForwarderFactory( new MomRepository(kafkaProducerFactory), ServiceEvents.Instance.Value, new QuotaFactory(HostConfiguration.Instance.Value) ); _messagesRepository = new IncommingMessageRepository(); _messageForwardingService = new MessageForwardingService(new JsonSerializer(), ServiceEvents.Instance.Value, forwarderFactory); new MessageCleanerService(ServiceEvents.Instance.Value, _messagesRepository); _webApiHost = new WebAPISelfHost(HostConfiguration.Instance.Value.WebListenerPort); }
public void It_routes_each_message_by_topic() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); var messages = GenerateMessages(8); sut.ProcessPendingMessages(messages); var groupedTopics = messages.Value .GroupBy(m => serializer.Value.Deserialize<BaseEvent>(m).Topic) .Select(g => new { Name = g.Key, Count = g.Count() }); Assert.NotEmpty(groupedTopics); groupedTopics.ToList().ForEach(topicCount => { Assert.NotNull(forwarderFactory.Forwarders[topicCount.Name]); forwarderFactory.Forwarders[topicCount.Name].Received(topicCount.Count).AddMessage(Arg.Any<string>()); }); }
public void StopSendingMessages_stops_every_awakened_forwarder() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); var messages = GenerateMessages(8); sut.ProcessPendingMessages(messages); sut.StopSendingMessages(); Assert.True(forwarderFactory.Forwarders.Any()); forwarderFactory.Forwarders.ToList().ForEach(item => item.Value.Received().StopForwarding()); }