public async Task smoke_test_able_to_fetch_a_page_of_events() { var list = new List<MembersJoined>(); for (int i = 0; i < 500; i++) { list.Add(new MembersJoined {Day = i, Location = Guid.NewGuid().ToString(), Members = new string[] {Guid.NewGuid().ToString()}}); } using (var session = theStore.LightweightSession()) { session.Events.Append(Guid.NewGuid(), list.ToArray()); await session.SaveChangesAsync().ConfigureAwait(false); } var options = new AsyncOptions(); var settings = new DaemonSettings { LeadingEdgeBuffer = 0.Seconds() }; using (var data = new Fetcher(theStore, settings, options, Substitute.For<IDaemonLogger>(), new StubErrorHandler(), new Type[] {typeof(MembersJoined)})) { var page = await data.FetchNextPage(0).ConfigureAwait(false); page.From.ShouldBe(0); page.To.ShouldBe(options.PageSize); page.Streams.SelectMany(x => x.Events).Count().ShouldBe(100); } }
public Fetcher(IDocumentStore store, DaemonSettings settings, AsyncOptions options, IDaemonLogger logger, IDaemonErrorHandler errorHandler, IEnumerable<Type> eventTypes) { _settings = settings; _options = options; _logger = logger; _errorHandler = errorHandler; State = FetcherState.Waiting; _connectionFactory = store.Advanced.Options.ConnectionFactory(); _selector = new EventSelector(store.Schema.Events, store.Advanced.Serializer); _map = new NulloIdentityMap(store.Advanced.Serializer); EventTypeNames = eventTypes.Select(x => store.Schema.Events.EventMappingFor(x).Alias).ToArray(); }