public RoundRobinDispatcherConcurrentTest() { var services = new ServiceCollection(); services.AddSingleton <IMessageBuilderFactory, DefaultMessageBuilderFactory>(); provider = services.BuildServiceProvider(); dispatcher = new UnicastingDispatcher(provider); dispatcher.LoadBalancingStrategy = new RoundRobinLoadBalancingStrategy(); }
public void SingleMessage() { var dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); var latch = new CountdownEvent(1); var processor = new LatchedProcessor(latch); dispatcher.AddHandler(CreateConsumer(processor)); dispatcher.Dispatch(Message.Create("test")); Assert.True(latch.Wait(500)); }
public void SingleMessage() { var dispatcher = new UnicastingDispatcher(provider); var latch = new CountdownEvent(1); var processor = new LatchedProcessor(latch); dispatcher.AddHandler(CreateConsumer(processor)); dispatcher.Dispatch(new GenericMessage("test")); Assert.True(latch.Wait(500)); }
public RoundRobinDispatcherConcurrentTest() { var services = new ServiceCollection(); var config = new ConfigurationBuilder().Build(); services.AddSingleton <IConfiguration>(config); services.AddSingleton <IApplicationContext, GenericApplicationContext>(); services.AddSingleton <IMessageBuilderFactory, DefaultMessageBuilderFactory>(); provider = services.BuildServiceProvider(); dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); dispatcher.LoadBalancingStrategy = new RoundRobinLoadBalancingStrategy(); }
public void PointToPoint() { var dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); var latch = new CountdownEvent(1); var processor1 = new LatchedProcessor(latch); var processor2 = new LatchedProcessor(latch); dispatcher.AddHandler(CreateConsumer(processor1)); dispatcher.AddHandler(CreateConsumer(processor2)); dispatcher.Dispatch(Message.Create("test")); Assert.True(latch.Wait(3000)); Assert.Equal(1, processor1.Counter + processor2.Counter); }
public void MiddleHandlerReturnsTrue() { var dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); var target1 = new CountingTestEndpoint(false); var target2 = new CountingTestEndpoint(true); var target3 = new CountingTestEndpoint(false); dispatcher.AddHandler(target1); dispatcher.AddHandler(target2); dispatcher.AddHandler(target3); Assert.True(dispatcher.Dispatch(Message.Create("test"))); Assert.Equal(2, target1.Counter + target2.Counter + target3.Counter); }
public void MiddleHandlerReturnsTrue() { var dispatcher = new UnicastingDispatcher(provider); var target1 = new CountingTestEndpoint(false); var target2 = new CountingTestEndpoint(true); var target3 = new CountingTestEndpoint(false); dispatcher.AddHandler(target1); dispatcher.AddHandler(target2); dispatcher.AddHandler(target3); Assert.True(dispatcher.Dispatch(new GenericMessage("test"))); Assert.Equal(2, target1.Counter + target2.Counter + target3.Counter); }
public void NoDuplicateSubscriptions() { var dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); var target = new CountingTestEndpoint(false); dispatcher.AddHandler(target); dispatcher.AddHandler(target); try { dispatcher.Dispatch(Message.Create("test")); } catch (Exception) { // ignore } Assert.Equal(1, target.Counter); }
public void NoDuplicateSubscriptions() { var dispatcher = new UnicastingDispatcher(provider); var target = new CountingTestEndpoint(false); dispatcher.AddHandler(target); dispatcher.AddHandler(target); try { dispatcher.Dispatch(new GenericMessage("test")); } catch (Exception) { // ignore } Assert.Equal(1, target.Counter); }
public void RemoveConsumerLastTargetCausesDeliveryException() { var dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); var target1 = new CountingTestEndpoint(false); dispatcher.AddHandler(target1); try { dispatcher.Dispatch(Message.Create("test1")); } catch (Exception) { // ignore } Assert.Equal(1, target1.Counter); dispatcher.RemoveHandler(target1); Assert.Throws <MessageDispatchingException>(() => dispatcher.Dispatch(Message.Create("test2"))); }
public void RemoveConsumerBetweenSends() { var dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); var target1 = new CountingTestEndpoint(false); var target2 = new CountingTestEndpoint(false); var target3 = new CountingTestEndpoint(false); dispatcher.AddHandler(target1); dispatcher.AddHandler(target2); dispatcher.AddHandler(target3); try { dispatcher.Dispatch(Message.Create("test1")); } catch (Exception) { // ignore } Assert.Equal(3, target1.Counter + target2.Counter + target3.Counter); dispatcher.RemoveHandler(target2); try { dispatcher.Dispatch(Message.Create("test2")); } catch (Exception) { // ignore } Assert.Equal(5, target1.Counter + target2.Counter + target3.Counter); dispatcher.RemoveHandler(target1); try { dispatcher.Dispatch(Message.Create("test3")); } catch (Exception) { // ignore } Assert.Equal(6, target1.Counter + target2.Counter + target3.Counter); }
public void AllHandlersReturnFalse() { var dispatcher = new UnicastingDispatcher(provider.GetService <IApplicationContext>()); var target1 = new CountingTestEndpoint(false); var target2 = new CountingTestEndpoint(false); var target3 = new CountingTestEndpoint(false); dispatcher.AddHandler(target1); dispatcher.AddHandler(target2); dispatcher.AddHandler(target3); try { Assert.False(dispatcher.Dispatch(Message.Create("test"))); } catch (Exception) { } Assert.Equal(3, target1.Counter + target2.Counter + target3.Counter); }
public void RemoveConsumerBeforeSend() { var dispatcher = new UnicastingDispatcher(provider); var target1 = new CountingTestEndpoint(false); var target2 = new CountingTestEndpoint(false); var target3 = new CountingTestEndpoint(false); dispatcher.AddHandler(target1); dispatcher.AddHandler(target2); dispatcher.AddHandler(target3); dispatcher.RemoveHandler(target2); try { dispatcher.Dispatch(new GenericMessage("test")); } catch (Exception) { // ignore } Assert.Equal(2, target1.Counter + target2.Counter + target3.Counter); }