public void PsiStoreStreamReaderLargeStream() { var count = 10; var name = nameof(this.PsiStoreStreamReaderLargeStream); var size = 10240; var bytes = new byte[size]; using (var p = Pipeline.Create("write")) { var writeStore = PsiStore.Create(p, name, this.path); var seq = Generators.Sequence(p, 0, i => i + 1, count, TimeSpan.FromTicks(1)); var big = seq.Select(i => bytes.Select(_ => i).ToArray()); seq.Write("seq", writeStore); big.Write("big", writeStore, largeMessages: true); p.Run(); } // now replay the contents and verify we get something var index = new List <Func <IStreamReader, int[]> >(); // now read using the store stream reader using (var reader = new PsiStoreStreamReader(name, this.path)) { reader.OpenStreamIndex <int[]>("big", (ie, e) => index.Add(ie)); reader.ReadAll(ReplayDescriptor.ReplayAll); Assert.AreEqual(count, index.Count()); var probe = count / 2; var entry = index[probe]; var result = entry(reader); Assert.AreEqual(result.Sum(x => x), probe * size); } }
public void PsiStoreStreamReader() { var count = 100; var before = new Envelope[count]; var after = new Envelope[count]; var name = nameof(this.PsiStoreStreamReader); using (var p = Pipeline.Create("write")) { var writeStore = PsiStore.Create(p, name, this.path); var seq = Generators.Sequence(p, 0, i => i + 1, count, TimeSpan.FromTicks(1)); seq.Write("seq", writeStore); seq.Do((m, e) => before[m] = e); p.Run(); } // now read using the store stream reader using (var reader = new PsiStoreStreamReader(name, this.path)) { reader.OpenStream <int>("seq", (s, e) => after[s] = e); reader.ReadAll(ReplayDescriptor.ReplayAll); } for (int i = 0; i < count; i++) { Assert.AreEqual(before[i], after[i]); } }