public Task SubscribeTwoConsumer_SendOneMessage_BothConsumerReceivesMessage() { return(TestHelper.TryTest(async() => { // arrange var cts = new CancellationTokenSource(30000); var eventDescription = new EventDescription( Guid.NewGuid().ToString()); // act IEventStream consumerOne = await _registry.SubscribeAsync(eventDescription); IAsyncEnumerator <IEventMessage> enumeratorOne = consumerOne.GetAsyncEnumerator(cts.Token); IEventStream consumerTwo = await _registry.SubscribeAsync(eventDescription); IAsyncEnumerator <IEventMessage> enumeratorTwo = consumerTwo.GetAsyncEnumerator(cts.Token); var outgoing = new EventMessage(eventDescription, "bar"); await _sender.SendAsync(outgoing); // assert Assert.True(await enumeratorOne.MoveNextAsync()); Assert.True(await enumeratorTwo.MoveNextAsync()); Assert.Equal(outgoing.Payload, enumeratorOne.Current.Payload); Assert.Equal(outgoing.Payload, enumeratorTwo.Current.Payload); })); }
public async Task Subscribe_ObjectValueArgument_Send_MessageReceived() { // arrange using var cts = new CancellationTokenSource(30000); var eventRegistry = new InMemoryEventRegistry(); var a = new EventDescription("event", new ArgumentNode("foo", new ObjectValueNode( new ObjectFieldNode("a", 123), new ObjectFieldNode("b", true), new ObjectFieldNode("c", "abc")))); var b = new EventDescription("event", new ArgumentNode("foo", new ObjectValueNode( new ObjectFieldNode("b", true), new ObjectFieldNode("a", 123), new ObjectFieldNode("c", "abc")))); // act IEventStream stream = await eventRegistry.SubscribeAsync(a); IAsyncEnumerator <IEventMessage> enumerator = stream.GetAsyncEnumerator(cts.Token); // assert var incoming = new EventMessage(b, "foo"); await eventRegistry.SendAsync(incoming); Assert.True(await enumerator.MoveNextAsync()); Assert.Equal(incoming, enumerator.Current); }
public Task SubscribeTwoConsumer_SendTwoMessage_BothConsumerReceivesIndependentMessage() { return(TestHelper.TryTest(async() => { // arrange var cts = new CancellationTokenSource(30000); string name = Guid.NewGuid().ToString(); var eventDescriptionOne = new EventDescription( name, new ArgumentNode("b", "x")); var eventDescriptionTwo = new EventDescription( name, new ArgumentNode("b", "y")); // act IEventStream consumerOne = await _registry.SubscribeAsync(eventDescriptionOne); IAsyncEnumerator <IEventMessage> enumeratorOne = consumerOne.GetAsyncEnumerator(cts.Token); var outgoingOne = new EventMessage(eventDescriptionOne, "foo"); await _sender.SendAsync(outgoingOne); IEventStream consumerTwo = await _registry.SubscribeAsync(eventDescriptionTwo); IAsyncEnumerator <IEventMessage> enumeratorTwo = consumerTwo.GetAsyncEnumerator(cts.Token); var outgoingTwo = new EventMessage(eventDescriptionTwo, "bar"); await _sender.SendAsync(outgoingTwo); // assert Assert.True(await enumeratorOne.MoveNextAsync()); Assert.True(await enumeratorTwo.MoveNextAsync()); Assert.Equal(outgoingOne.Payload, enumeratorOne.Current.Payload); Assert.Equal(outgoingTwo.Payload, enumeratorTwo.Current.Payload); Assert.NotEqual(enumeratorOne.Current.Event, enumeratorTwo.Current.Event); })); }
public Task SubscribeOneConsumer_Complete_StreamIsCompleted() { return(TestHelper.TryTest(async() => { // arrange var cts = new CancellationTokenSource(30000); var eventDescription = new EventDescription( Guid.NewGuid().ToString()); // act IEventStream consumer = await _registry.SubscribeAsync(eventDescription); IAsyncEnumerator <IEventMessage> enumerator = consumer.GetAsyncEnumerator(cts.Token); await consumer.CompleteAsync(); // assert Assert.False(await enumerator.MoveNextAsync()); })); }
public async Task Subscribe_Send_MessageReceived() { // arrange using var cts = new CancellationTokenSource(30000); var eventDescription = new EventDescription("foo"); var eventRegistry = new InMemoryEventRegistry(); // act IEventStream stream = await eventRegistry.SubscribeAsync(eventDescription); IAsyncEnumerator <IEventMessage> enumerator = stream.GetAsyncEnumerator(cts.Token); // assert var incoming = new EventMessage("foo"); await eventRegistry.SendAsync(incoming); Assert.True(await enumerator.MoveNextAsync()); Assert.Equal(incoming, enumerator.Current); }