コード例 #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 MutipleRequestHandler_ShouldResponseForPipeline_ReturnFirst()
        {
            var eventBus = new InProcessServiceBus();

            eventBus.AddRequestHandler <TestRequestData>((eventData, context) =>
            {
                return(Task.Run(() =>
                {
                    context.Response = eventData.Msg + "1";
                    context.IsEnd = true;
                }));
            });

            eventBus.AddRequestHandler <TestRequestData>((eventData, context) =>
            {
                return(Task.Run(() =>
                {
                    context.Response = context.Response + "2";
                }));
            });

            var testRequestData = new TestRequestData()
            {
                Msg = "success"
            };
            var result = eventBus.Send <string>(testRequestData);

            Assert.AreEqual(testRequestData.Msg + "1", result);
        }
コード例 #4
0
        public void MutipleGenericRequestHandler_ByDifferentNameSpace_ShouldResponse()
        {
            var eventBus = new InProcessServiceBus();

            eventBus.AddRequestHandler <TestRequestDataT <TestEventData> >((eventData, context) =>
            {
                return(Task.Run(() =>
                {
                    context.Response = eventData.Msg + "1";
                }));
            });

            eventBus.AddRequestHandler <TestRequestDataT <TestDemo.TestEventData> >((eventData, context) =>
            {
                return(Task.Run(() =>
                {
                    context.Response = context.Response + "2";
                }));
            });

            var testRequestData = new TestRequestDataT <TestEventData>(new TestEventData())
            {
                Msg = "success"
            };
            var result = eventBus.Send <string>(testRequestData);


            Assert.AreEqual(testRequestData.Msg + "12", result);
        }
コード例 #5
0
        public void MutipleGenericSubscription_ByDifferentNameSpace_ShouldTrigger()
        {
            var eventBus = new InProcessServiceBus();
            var result   = "error";
            var result2  = "error";

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

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

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

            eventBus.PublishSync(testEventData);


            Assert.AreEqual(testEventData.Msg, result);
            Assert.AreEqual(testEventData.Msg, result2);
        }
コード例 #6
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);
        }
コード例 #7
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);
        }
コード例 #8
0
 public SagaTests()
 {
     saga       = new SagaToTest(serviceBus, inMemorySagaRepository);
     serviceBus = new InProcessServiceBus(typeof(FakeStartingCommand), new Dictionary <Type, Event>()
     {
         { typeof(FakeStep2Command), new FakeResponse(new MyDomainId(Guid.NewGuid()), correlationId, "zxc", "user") }
     });
 }
コード例 #9
0
        public async Task ShouldRaiseException_WhenSendSetOption()
        {
            var eventBus = new InProcessServiceBus();

            eventBus.AddDynamicRequestHandler(typeof(TestRequestData).Name, (requestData, requetContext) =>
            {
                return(Task.Run(() =>
                {
                    throw new Exception("Test Exception");
                }));
            });

            var testRequestData = new TestRequestData()
            {
                Msg = "success"
            };
            await eventBus.SendAsync <string>(testRequestData, new TriggerOption(false));
        }
コード例 #10
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));
        }
コード例 #11
0
        public void Request_ShouldResponse()
        {
            var eventBus = new InProcessServiceBus();

            eventBus.AddRequestHandler <TestRequestData>((eventData, context) =>
            {
                return(Task.Run(() =>
                {
                    context.Response = eventData.Msg;
                }));
            });

            var testRequestData = new TestRequestData()
            {
                Msg = "success"
            };
            var result = eventBus.Send <string>(testRequestData);

            Assert.AreEqual(testRequestData.Msg, result);
        }
コード例 #12
0
        public void SubscriptionEventDataWithParam_ShouldTrigger()
        {
            var eventBus = new InProcessServiceBus();
            var result   = "error";

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

            var testEventData = new TestEventDataWithParam("success");

            eventBus.PublishSync(testEventData);


            Assert.AreEqual(testEventData.Msg, result);
        }
コード例 #13
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);
        }
コード例 #14
0
        public void DynamicRequest_ShouldNotResponse_AfterRemove()
        {
            var eventBus = new InProcessServiceBus();
            Func <dynamic, IRequestHandlerContext, Task> delateFunc = (eventData, context) =>
            {
                return(Task.Run(() =>
                {
                    context.Response = (string)eventData.Msg;
                }));
            };

            eventBus.AddDynamicRequestHandler(typeof(TestRequestData).Name, delateFunc);
            eventBus.RemoveDynamicRequestHandler(typeof(TestRequestData).Name, delateFunc);

            var testRequestData = new TestRequestData()
            {
                Msg = "success"
            };
            var result = eventBus.Send <string>(testRequestData);

            Assert.AreEqual(null, result);
        }