Ejemplo n.º 1
0
        public void The_pipeline_should_be_happy()
        {
            IndiscriminantConsumer <PingMessage> consumer = new IndiscriminantConsumer <PingMessage>();

            _pipeline.Subscribe(consumer);

            _pipeline.Dispatch(new PingMessage());

            Assert.IsNotNull(consumer.Consumed);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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);
        }