Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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]);
            }
        }