public void The_pipeline_should_be_happy() { IndiscriminantConsumer <PingMessage> consumer = new IndiscriminantConsumer <PingMessage>(); _pipeline.Subscribe(consumer); _pipeline.Dispatch(new PingMessage()); Assert.IsNotNull(consumer.Consumed); }
public void How_many_messages_can_the_pipe_send_per_second() { long count = 0; long count2 = 0; long limit = 2500000; var messageSink = new InstanceMessageSink <ClaimModified>(m => msg => { count++; }); var messageSink2 = new InstanceMessageSink <ClaimModified>(m => msg => { count2++; }); var router = new MessageRouter <ClaimModified>(); router.Connect(messageSink); router.Connect(messageSink2); var translater = new MessageTranslator <object, ClaimModified>(router); var objectRouter = new MessageRouter <object>(); objectRouter.Connect(translater); var pipeline = new MessagePipeline(objectRouter, MockRepository.GenerateMock <IPipelineConfigurator>()); var message = new ClaimModified(); for (int i = 0; i < 100; i++) { pipeline.Dispatch(message); } count = 0; count2 = 0; Stopwatch timer = Stopwatch.StartNew(); for (int i = 0; i < limit; i++) { pipeline.Dispatch(message); } timer.Stop(); Trace.WriteLine("Received: " + (count + count2) + ", expected " + limit * 2); Trace.WriteLine("Elapsed Time: " + timer.ElapsedMilliseconds + "ms"); Trace.WriteLine("Messages Per Second: " + limit * 1000 / timer.ElapsedMilliseconds); }
public void A_filter_should_be_nameable() { var consumer = new TestMessageConsumer <PingMessage>(); _pipeline.Filter <PingMessage>("Message Blocker", x => false); _pipeline.Subscribe(consumer); var message = new PingMessage(); _pipeline.Dispatch(message); consumer.ShouldNotHaveReceivedMessage(message); PipelineViewer.Trace(_pipeline); }
public void The_appropriate_handler_should_be_added() { IndiscriminantConsumer <PingMessage> consumer = new IndiscriminantConsumer <PingMessage>(); _pipeline.Subscribe(consumer); PingMessage message = new PingMessage(); _pipeline.Dispatch(message, x => true); Assert.AreEqual(message, consumer.Consumed); }
public void The_endpoint_consumer_should_be_returned() { IEndpoint endpoint = MockRepository.GenerateMock <IEndpoint>(); endpoint.Stub(x => x.Uri).Return(new Uri("msmq://localhost/queue_name")); _pipeline.Subscribe <PingMessage>(endpoint); PipelineViewer.Trace(_pipeline); PingMessage message = new PingMessage(); endpoint.Expect(x => x.Send(message)); _pipeline.Dispatch(message); endpoint.VerifyAllExpectations(); }
public void A_bunch_of_mixed_subscriber_types_should_work() { IndiscriminantConsumer <PingMessage> consumer = new IndiscriminantConsumer <PingMessage>(); ParticularConsumer consumerYes = new ParticularConsumer(true); ParticularConsumer consumerNo = new ParticularConsumer(false); Stopwatch firstTime = Stopwatch.StartNew(); var unsubscribeToken = _pipeline.Subscribe(consumer); firstTime.Stop(); Stopwatch secondTime = Stopwatch.StartNew(); unsubscribeToken += _pipeline.Subscribe(consumerYes); secondTime.Stop(); unsubscribeToken += _pipeline.Subscribe(consumerNo); Trace.WriteLine(string.Format("First time: {0}, Second Time: {1}", firstTime.Elapsed, secondTime.Elapsed)); PipelineViewer.Trace(_pipeline); PingMessage message = new PingMessage(); _pipeline.Dispatch(message); Assert.AreEqual(message, consumer.Consumed); Assert.AreEqual(message, consumerYes.Consumed); Assert.AreEqual(null, consumerNo.Consumed); unsubscribeToken(); PingMessage nextMessage = new PingMessage(); _pipeline.Dispatch(nextMessage); Assert.AreEqual(message, consumer.Consumed); Assert.AreEqual(message, consumerYes.Consumed); }