public async Task ShouldPublishEvent2() { // arange string topic = Guid.NewGuid().ToString(); var processor = new TestMessageProcessor(); host.RegisterMessageProcessor(topic + "TestEvent", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>()); var correlationId = Guid.NewGuid().ToString(); // act var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.PublishAsync(@event, correlationId).ConfigureAwait(false); // assert Assert.Single(processor.Messages); var message = processor.Messages[0]; Assert.Equal(@event.IntValue, JsonConvert.DeserializeObject <TestEvent>(message.GetBody <string>()).IntValue); Assert.Equal(@event.StringValue, JsonConvert.DeserializeObject <TestEvent>(message.GetBody <string>()).StringValue); Assert.Equal(@event.GetType().FullName, message.ApplicationProperties[Constants.MESSAGE_TYPE_KEY]); Assert.Equal(correlationId, message.Properties.CorrelationId); }
public async Task ShouldPublishWithUsing() { // arrange string topic = Guid.NewGuid().ToString(); List <Message> messages = new List <Message>(); var processor = new TestMessageProcessor(50, messages); host.RegisterMessageProcessor(topic + "TestEvent", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; var count = 10; // act using (var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>())) { publisher.Connect(); for (int i = 0; i < count; i++) { var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.PublishAsync(@event).ConfigureAwait(false); } } // assert Assert.Equal(count, processor.Messages.Count); }
public async Task ShouldScheduleEvent4() { // arrange string topic = Guid.NewGuid().ToString(); var processor = new TestMessageProcessor(); host.RegisterMessageProcessor("barbaz", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>()); var correlationId = Guid.NewGuid().ToString(); var scheduleDate = DateTime.UtcNow.AddDays(1); // act var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.ScheduleAsync <TestEvent>(@event, scheduleDate, new EventProperties() { EventType = "foo", Topic = "bar", RoutingKey = "baz", CorrelationId = correlationId }).ConfigureAwait(false); // assert Assert.Single(processor.Messages); var message = processor.Messages[0]; Assert.Equal(@event.IntValue, JsonConvert.DeserializeObject <TestEvent>(message.GetBody <string>()).IntValue); Assert.Equal(@event.StringValue, JsonConvert.DeserializeObject <TestEvent>(message.GetBody <string>()).StringValue); Assert.Equal("foo", message.ApplicationProperties[Constants.MESSAGE_TYPE_KEY]); Assert.Equal(correlationId, message.Properties.CorrelationId); ((DateTime)message.MessageAnnotations[new Symbol(Constants.SCHEDULED_ENQUEUE_TIME_UTC)]).Should().BeCloseTo(scheduleDate); }
public void ContainerHostMessageProcessorTest() { string name = "ContainerHostMessageProcessorTest"; var processor = new TestMessageProcessor(); host.RegisterMessageProcessor(name, processor); int count = 500; var connection = new Connection(Address); var session = new Session(connection); var sender = new SenderLink(session, "send-link", name); for (int i = 0; i < count; i++) { var message = new Message("msg" + i); message.Properties = new Properties() { GroupId = name }; sender.Send(message, Timeout); } sender.Close(); session.Close(); connection.Close(); Assert.Equal(count, processor.Messages.Count); for (int i = 0; i < count; i++) { var message = processor.Messages[i]; Assert.Equal("msg" + i, message.GetBody <string>()); } }
public void ContainerHostProcessorOrderTest() { string name = "ContainerHostProcessorOrderTest"; List <Message> messages = new List <Message>(); var processor = new TestMessageProcessor(50, messages); host.RegisterMessageProcessor(name, processor); linkProcessor = new TestLinkProcessor(); host.RegisterLinkProcessor(linkProcessor); int count = 80; var connection = new Connection(Address); var session = new Session(connection); var sender = new SenderLink(session, "send-link", name); for (int i = 0; i < count; i++) { var message = new Message("msg" + i); message.Properties = new Properties() { GroupId = name }; sender.Send(message, Timeout); } sender.Close(); Assert.Equal(count, messages.Count); host.RegisterMessageSource(name, new TestMessageSource(new Queue <Message>(messages))); var receiver = new ReceiverLink(session, "recv-link", name); for (int i = 0; i < count; i++) { var message = receiver.Receive(); receiver.Accept(message); } receiver.Close(); sender = new SenderLink(session, "send-link", "any"); for (int i = 0; i < count; i++) { var message = new Message("msg" + i); message.Properties = new Properties() { GroupId = name }; sender.Send(message, Timeout); } sender.Close(); session.Close(); connection.Close(); }
public async Task ShouldPublishEvent1WithSerializationSettings() { // arrange string topic = Guid.NewGuid().ToString(); var processor = new TestMessageProcessor(); host.RegisterMessageProcessor(topic + "TestEvent", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; settings.SerializerSettings = new JsonSerializerSettings() { Converters = new List <JsonConverter> { new StringEnumConverter(new CamelCaseNamingStrategy()) } }; var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>()); // act var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString(), Status = StatusEnum.PendingWork }; await publisher.PublishAsync(@event).ConfigureAwait(false); // assert Assert.Single(processor.Messages); var message = processor.Messages[0]; var body = message.GetBody <string>(); Assert.Contains("\"Status\":\"pendingWork\"", body); Assert.Equal(@event.IntValue, JsonConvert.DeserializeObject <TestEvent>(body).IntValue); Assert.Equal(@event.StringValue, JsonConvert.DeserializeObject <TestEvent>(body).StringValue); Assert.Equal(@event.Status, JsonConvert.DeserializeObject <TestEvent>(body).Status); Assert.Equal(@event.GetType().FullName, message.ApplicationProperties[Constants.MESSAGE_TYPE_KEY]); }