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); }
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); }
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); }
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); }
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); }
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); } }
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)); }
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); }
public Task ProcessEvent(TestEventData eventData) { Semaphore.Release(); return(Task.CompletedTask); }