Пример #1
0
        public void DynamicSubscription_ShouldNotTrigger_AfterRemove()
        {
            var eventBus = new InProcessServiceBus();
            var result   = "error";

            Func <dynamic, Task> delateFunc = eventData =>
            {
                return(Task.Run(() =>
                {
                    result = eventData.Msg;
                }));
            };

            eventBus.AddDynamicSubscription(typeof(TestEventData).Name, delateFunc);

            var testEventData = new TestEventData()
            {
                Msg = "success"
            };

            eventBus.PublishSync(testEventData);

            Assert.AreEqual(testEventData.Msg, result);

            result = "error";
            eventBus.RemoveDynamicSubscription(typeof(TestEventData).Name, delateFunc);
            eventBus.PublishSync(testEventData);
            Assert.AreNotEqual(testEventData.Msg, result);
        }
Пример #2
0
        public async Task ShouldLogMessage_WhenSetLogDelate()
        {
            var       eventBus         = new InProcessServiceBus();
            var       logMsg           = "";
            var       testException    = new Exception("Test Exception");
            Exception catchedException = null;

            eventBus.OnLogBusMessage += (logLevel, msg, ex) =>
            {
                logMsg           = msg;
                catchedException = ex;
            };
            eventBus.AddDynamicSubscription(typeof(TestEventData).Name, eventData =>
            {
                return(Task.Run(() =>
                {
                    throw testException;
                }));
            });

            var testEventData = new TestEventData()
            {
                Msg = "success"
            };
            await eventBus.Publish(testEventData);

            Assert.AreNotEqual(0, logMsg.Length);
            Assert.AreEqual(testException, catchedException);
        }
Пример #3
0
        public void ShouldSupport_MutipleSameHandler()
        {
            var eventBus = new InProcessServiceBus();
            var result1  = "error";
            var result2  = "error";

            eventBus.AddSubscription <TestEventData>(eventData =>
            {
                return(Task.Run(() =>
                {
                    result1 = eventData.Msg;
                }));
            });

            eventBus.AddSubscription <TestEventData>(eventData =>
            {
                return(Task.Run(() =>
                {
                    result2 = eventData.Msg;
                }));
            });

            var testEventData = new TestEventData()
            {
                Msg = "success"
            };

            eventBus.PublishSync(testEventData);


            Assert.AreEqual(testEventData.Msg, result1);
            Assert.AreEqual(testEventData.Msg, result2);
        }
Пример #4
0
        public void MutipleSubscription_ShouldTrigger()
        {
            var eventBus = new InProcessServiceBus();
            var result   = "error";

            eventBus.AddSubscription <TestEventData>(eventData =>
            {
                return(Task.Run(() =>
                {
                    result = eventData.Msg + "1";
                }));
            });

            eventBus.AddSubscription <TestEventData>(eventData =>
            {
                return(Task.Run(() =>
                {
                    result = eventData.Msg + "2";
                }));
            });

            var testEventData = new TestEventData()
            {
                Msg = "success"
            };

            eventBus.PublishSync(testEventData);


            Assert.AreEqual(testEventData.Msg + "2", result);
        }
Пример #5
0
        private EventData MakeEventData(long sequenceNumber)
        {
            byte[] ignore    = { 12, 23 };
            var    now       = DateTime.UtcNow;
            var    eventData = new TestEventData(ignore,
                                                 offset: now.Ticks,
                                                 sequenceNumber: sequenceNumber,
                                                 enqueuedTime: now);

            return(eventData);
        }
            public void Publish_Invokes_OnEventHandler_Of_Every_EventHandler_For_Such_Event_Type()
            {
                var eventData = new TestEventData();
                var handlers = GetHandlers<TestEventData>(GetRand(5))
                    .ToArray(); // Get the final list

                CreateSubjectUnderTest(handlers)
                    .Publish(eventData);

                foreach (var handler in handlers)
                    Mock.Get(handler)
                        .Verify(h => h.OnEventHandler(eventData), Times.Once);
            }
Пример #7
0
            public void Publish_Invokes_OnEventHandler_Of_Every_EventHandler_For_Such_Event_Type()
            {
                var eventData = new TestEventData();
                var handlers  = GetHandlers <TestEventData>(GetRand(5))
                                .ToArray(); // Get the final list

                CreateSubjectUnderTest(handlers)
                .Publish(eventData);

                foreach (var handler in handlers)
                {
                    Mock.Get(handler)
                    .Verify(h => h.OnEventHandler(eventData), Times.Once);
                }
            }
Пример #8
0
        public async Task ShouldRaiseException_WhenPublishSetOption()
        {
            var eventBus = new InProcessServiceBus();

            eventBus.AddDynamicSubscription(typeof(TestEventData).Name, eventData =>
            {
                return(Task.Run(() =>
                {
                    throw new Exception("Test Exception");
                }));
            });

            var testEventData = new TestEventData()
            {
                Msg = "success"
            };
            await eventBus.Publish(testEventData, new TriggerOption(false));
        }
Пример #9
0
        public async Task DynamicSubscription_ShouldTrigger()
        {
            var eventBus = new InProcessServiceBus();
            var result   = "error";

            eventBus.AddDynamicSubscription(typeof(TestEventData).Name, eventData =>
            {
                return(Task.Run(() =>
                {
                    result = eventData.Msg;
                }));
            });

            var testEventData = new TestEventData()
            {
                Msg = "success"
            };
            await eventBus.Publish(testEventData);

            Assert.AreEqual(testEventData.Msg, result);
        }
Пример #10
0
 public Task ProcessEvent(TestEventData eventData)
 {
     Semaphore.Release();
     return(Task.CompletedTask);
 }