Exemplo n.º 1
0
        public void can_cancel_long_read()
        {
            foreach (var conn in _stores)
            {
                _count = 0;
                var reader         = new StreamReader("TestReader", conn, _streamNameBuilder, _serializer);
                var longStreamName = _streamNameBuilder.GenerateForAggregate(typeof(TestAggregate), Guid.NewGuid());

                const int ManyEvents = 1000;

                AppendEventArray(ManyEvents, conn, longStreamName);
                reader.EventStream.Subscribe <Event>(this);
                _gotEvent = e =>
                {
                    if (_count == 100)
                    {
                        reader.Cancel();
                    }
                    Thread.Sleep(10);
                };

                // forward
                reader.Read(longStreamName);

                _toh.WriteLine($"Read events: {_count} out of {ManyEvents}, cancelled >= #100");
                Assert.Equal(101, _count); // counter increased after cancellation  - expected 101

                // reset
                _count = 0;
                // backward
                reader.Read(longStreamName, readBackwards: true);

                _toh.WriteLine($"Read events: {_count} out of {ManyEvents}, cancelled >= #100");
                Assert.Equal(101, _count);
            }
        }