public async Task Should_insert_and_retrieve_parallel_with_waits() { var expectedEvents = 10 * 1000; var consumer = new MyEventConsumer(expectedEvents); var consumerGrain = new MyEventConsumerGrain(_ => consumer, grainState, _.EventStore, eventDataFormatter, log); await consumerGrain.ActivateAsync(consumer.Name); await consumerGrain.ActivateAsync(); Parallel.For(0, 10, x => { for (var j = 0; j < 10; j++) { for (var i = 0; i < 100; i++) { var commitId = Guid.NewGuid(); var data = eventDataFormatter.ToEventData(Envelope.Create <IEvent>(new MyEvent()), commitId); _.EventStore.AppendAsync(commitId, commitId.ToString(), new[] { data }).Wait(); } Thread.Sleep(1000); } }); await AssertConsumerAsync(expectedEvents, consumer); }
public async Task Should_insert_and_retrieve_parallel_with_stops_and_starts() { var expectedEvents = 10 * 1000; var consumer = new MyEventConsumer(expectedEvents); var consumerGrain = new MyEventConsumerGrain(_ => consumer, grainState, _.EventStore, eventDataFormatter, log); var scheduler = consumerGrain.Scheduler; consumer.EventReceived = count => { if (count % 1000 == 0) { Task.Factory.StartNew(async() => { await consumerGrain.StopAsync(); await consumerGrain.StartAsync(); }, default, default, scheduler).Forget();