public void when_sending_multiple_events_then_calls_all_handlers()
        {
            var processor = new EventProcessor(new SubscriptionReceiver(Settings, Topic, Subscription), new JsonTextSerializer());
            var bus       = new EventBus(new TopicSender(Settings, Topic), new StandardMetadataProvider(), new JsonTextSerializer());

            var fooEvent   = new ManualResetEventSlim();
            var fooHandler = new FooEventHandler(fooEvent);

            var barEvent   = new ManualResetEventSlim();
            var barHandler = new BarEventHandler(barEvent);

            processor.Register(fooHandler);
            processor.Register(barHandler);

            processor.Start();

            try {
                bus.Publish(new IEvent[] { new FooEvent(), new BarEvent() });

                fooEvent.Wait(TimeoutPeriod);
                barEvent.Wait(TimeoutPeriod);

                Assert.True(fooHandler.Called);
                Assert.True(barHandler.Called);
            } finally {
                processor.Stop();
            }
        }
        public void when_receiving_not_registered_event_then_ignores()
        {
            var receiverMock = new Mock <SubscriptionReceiver>(Settings, Topic, Subscription, false);
            var processor    = new EventProcessor(receiverMock.Object, new JsonTextSerializer());
            var bus          = new EventBus(new TopicSender(Settings, Topic), new StandardMetadataProvider(), new JsonTextSerializer());

            var e       = new ManualResetEventSlim();
            var handler = new FooEventHandler(e);

            receiverMock.Protected().Setup("InvokeMessageHandler", ItExpr.IsAny <BrokeredMessage>()).Callback(() => e.Set());

            processor.Register(handler);

            processor.Start();

            try {
                bus.Publish(new BarEvent());

                e.Wait(TimeoutPeriod);
                // Give the other event handler some time.
                Thread.Sleep(100);

                Assert.False(handler.Called);
            } finally {
                processor.Stop();
            }
        }
        public void when_receiving_event_then_calls_handler()
        {
            var processor = new EventProcessor(new SubscriptionReceiver(this.Settings, this.Topic, this.Subscription), new JsonTextSerializer());
            var bus       = new EventBus(new TopicSender(this.Settings, this.Topic), new StandardMetadataProvider(), new JsonTextSerializer());

            var e       = new ManualResetEventSlim();
            var handler = new FooEventHandler(e);

            processor.Register(handler);

            processor.Start();

            try
            {
                bus.Publish(new FooEvent());

                e.Wait(TimeoutPeriod);

                Assert.True(handler.Called);
            }
            finally
            {
                processor.Stop();
            }
        }
示例#4
0
        public void when_receiving_not_registered_event_then_ignores()
        {
            var receiver  = new SubscriptionReceiver(this.Settings, this.Topic, this.Subscription);
            var processor = new EventProcessor(receiver, new BinarySerializer());
            var bus       = new EventBus(new TopicSender(this.Settings, this.Topic), new MetadataProvider(), new BinarySerializer());

            var e       = new ManualResetEventSlim();
            var handler = new FooEventHandler(e);

            receiver.MessageReceived += (sender, args) => e.Set();

            processor.Register(handler);

            processor.Start();

            try
            {
                bus.Publish(new BarEvent());

                e.Wait();
                // Give the other event handler some time.
                Thread.Sleep(100);

                Assert.False(handler.Called);
            }
            finally
            {
                processor.Stop();
            }
        }
示例#5
0
        public void CanRegisterHandlerWithInheritedEvents()
        {
            var objHandler = new GenericObjectHandler();
            Events.RegisterHandler(objHandler);
            var fooHandler = new FooEventHandler();
            Events.RegisterHandler(fooHandler);
            var childHandler = new FooChildEventHandler();
            Events.RegisterHandler(childHandler);

            Events.Publish(new FooEvent());
            Events.Publish(new FooChildEvent());
            Events.Publish(new BarEvent());

            Assert.Equal(3, objHandler.NumberOfEvents);
            Assert.Equal(2, fooHandler.NumberOfEvents);
            Assert.Equal(1, childHandler.NumberOfEvents);
        }