Esempio n. 1
0
 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");
     }
 }
Esempio n. 2
0
 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>());
        }
Esempio n. 6
0
        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());
        }