public async Task successfully_subscribes_to_a_single_stream_by_id_from_start(int eventCount) { var streamId = "test-" + Guid.NewGuid().ToString("N"); await _eventStoreRunningInDocker.AppendRandomEvents(streamId, eventCount); var anotherStreamId = "test-" + Guid.NewGuid().ToString("N"); await _eventStoreRunningInDocker.AppendRandomEvents(anotherStreamId, eventCount); var tcs = new TaskCompletionSource <bool>(); var count = 0; var subscription = new Subscriber(_eventStoreRunningInDocker.Connection, LoggingAdaptor.Empty, RetryPolicy.None); subscription.Subscribe(new StreamId(streamId), () => Checkpoint.Start, CatchUpSubscriptionSettings.Default, (s, e) => { count++; _output.WriteLine($"Processing Event {e.Event.EventNumber}"); if (count >= eventCount) { tcs.SetResult(true); } return(Task.CompletedTask); }); await Task.WhenAny(tcs.Task, Task.Delay(5000)); Assert.Equal(eventCount, count); }
public async Task successfully_resubscribes_to_a_single_stream_by_id(int retryCount) { var streamId = "test-" + Guid.NewGuid().ToString("N"); await _eventStoreRunningInDocker.AppendRandomEvents(streamId, 1); var tcs = new TaskCompletionSource <bool>(); var count = -1; var calledDropped = false; var subscriber = new Subscriber(_eventStoreRunningInDocker.Connection, LoggingAdaptor.Empty, new RetryPolicy(a => TimeSpan.Zero, retryCount)); subscriber.Subscribe(new StreamId(streamId), () => Checkpoint.Start, CatchUpSubscriptionSettings.Default, (s, e) => { _output.WriteLine($"Processing Event {e.Event.EventNumber}"); count++; throw new Exception(); }, subscriptionDropped: (r, e) => { calledDropped = true; tcs.SetResult(true); }); await Task.WhenAny(tcs.Task, Task.Delay(5000)); Assert.Equal(retryCount, count); Assert.True(calledDropped); }