public void Backward()
        {
            var log = new OpDataPersister(Cfg4Mb);

            log.Append(ToBytes(1));
            log.Append(ToBytes(2));
            log.Append(ToBytes(3));
            log.Append(ToBytes(4));
            log.Append(ToBytes(5));

            var iter = log.Backward().GetEnumerator(); ;

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(5));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(4));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(3));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(2));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(1));
        }
        public void append_1_mln()
        {
            const int ops = 1000000;
            //const int ops = 100;

            var wl = new OpDataPersister("a");
            var wlWatch = Stopwatch.StartNew();

            for (int i = 0; i < ops; i++)
                wl.Append(Encoding.Unicode.GetBytes(i.ToString()));

            wlWatch.Stop();
            wl.Dispose();

            var rl = new OpDataPersister("a");

            var rlWatch = Stopwatch.StartNew();
            var reads = rl.Forward().Count();
            rlWatch.Stop();

            Console.WriteLine("");

            Console.WriteLine("Writes            : " + ops);
            Console.WriteLine("Write Timespan    : " + TimeSpan.FromMilliseconds(wlWatch.ElapsedMilliseconds));
            Console.WriteLine("Write Duraton     : " + (((float)wlWatch.ElapsedMilliseconds / 1000000)));

            Console.WriteLine("");

            Console.WriteLine("Reads             : " + reads);
            Console.WriteLine("Reads Timespan    : " + TimeSpan.FromMilliseconds(rlWatch.ElapsedMilliseconds));
            Console.WriteLine("Read Duraton      : " + (((float)rlWatch.ElapsedMilliseconds / 1000000)));
        }
        public void Append()
        {
            var log = new OpDataPersister(Cfg4Mb);

            log.Append(ToBytes(1));

            Assert.That(log.CurrentSegment.RecordsCount(), Is.EqualTo(1));
        }
        public void AppendTest()
        {
            var log = new OpDataPersister(Cfg4Mb);
             log.Append(Guid.NewGuid().ToByteArray());

             Assert.That(FileExists("000000000000.sf"), Is.True);

             Assert.That(log.Segments.Count, Is.EqualTo(1));
             Assert.That(log.Segments[0].FetchForward().Count(), Is.EqualTo(1));
        }
        public void Backward_a_slice()
        {
            var log = new OpDataPersister(Cfg4Mb);

            log.Append(ToBytes(1));
            log.Append(ToBytes(2));
            log.Append(ToBytes(3));
            log.Append(ToBytes(4));
            log.Append(ToBytes(5));

            var items = new List<int>();

            foreach (var v in log.Backward(int.MaxValue, 2))
                items.Add(BitConverter.ToInt32(v.Payload, 0));

            Assert.That(items[0], Is.EqualTo(5));
            Assert.That(items[1], Is.EqualTo(4));

            Assert.That(items.Count, Is.EqualTo(2));
        }
        public void Backward_from_position()
        {
            var log = new OpDataPersister(Cfg4Mb);
            log.Append(ToBytes(14));
            log.Append(ToBytes(2));
            var idx = log.Append(ToBytes(34));
            log.Append(ToBytes(234));
            log.Append(ToBytes(455));

            var iter = log.Backward(idx).GetEnumerator(); ;

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(34));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(2));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(14));

            Assert.That(iter.MoveNext(), Is.False);
        }
        public void DefaultSizeMultiAppendReadCountsTest()
        {
            var wr = new OpDataPersister(Cfg4Mb);

            for (int i = 0; i < 100; i++)
                wr.Append(Guid.NewGuid().ToByteArray());

            wr.Dispose();

            Assert.That(wr.Segments[0].FetchForward().Count(), Is.EqualTo(2));
            Assert.That(wr.CurrentSegment.Blocks.Count, Is.EqualTo(2));
            Assert.That(wr.CurrentSegment.Blocks.Select(x => x.Records().Count).Sum(), Is.EqualTo(100));

            var rd = new OpDataPersister(Cfg4Mb);
            var ops = rd.Forward().ToList();

            foreach (var op in ops)
                new Guid(op.Payload);

            Assert.That(rd.Segments[0].FetchForward().Count(), Is.EqualTo(2));
            Assert.That(rd.CurrentSegment.Blocks.Count, Is.EqualTo(2));
            Assert.That(rd.CurrentSegment.Blocks.Select(x => x.Records().Count).Sum(), Is.EqualTo(100));
        }
        public void ListBackwardTest()
        {
            var wr = new OpDataPersister(Cfg4K);

             for (int i = 0; i < 100; i++)
                 wr.Append(BitConverter.GetBytes(i));

             wr.Dispose();

             var rd = new OpDataPersister(Cfg4K);

             long prev = long.MaxValue;

             foreach (var op in rd.Backward())
             {
                 var position = op.Position;

                 Assert.That(position, Is.LessThan(prev));

                 Console.WriteLine(op.Position + " " + BitConverter.ToInt32(op.Payload, 0));

                 prev = position;
             }
        }
 public void HeadEmptyLog()
 {
     var wr = new OpDataPersister(Cfg4K);
     Assert.That(wr.Head(), Is.Null);
 }
 public void TailEmptyLog()
 {
     var wr = new OpDataPersister(Cfg4K);
     Assert.That(wr.Tail(), Is.Null);
 }
        public void ReopenLastSegmentTest()
        {
            var wr = new OpDataPersister(Cfg4K);

             for (int i = 0; i < 100; i++)
                 wr.Append(Guid.NewGuid().ToByteArray());

             wr.Dispose();

             var rd = new OpDataPersister(Cfg4K);
                rd.Append(Guid.NewGuid().ToByteArray());

             Assert.That(rd.CurrentSegment.Position, Is.EqualTo(4096));
             Assert.That(rd.Segments.Count, Is.EqualTo(wr.Segments.Count));

             var rdBlocks = rd.Segments[1].FetchForward();
             var wrBlocks = wr.Segments[1].FetchForward();

             Assert.That(rdBlocks.Count(), Is.EqualTo(wrBlocks.Count()));

             var rdRecords = rdBlocks.Select(x => x.Records().Count).Sum();
             var wrRecords = wrBlocks.Select(x => x.Records().Count).Sum();

             Assert.That(rdRecords, Is.EqualTo(wrRecords + 1));
        }
        public void ReopenEmptyLog()
        {
            var wr = new OpDataPersister(Cfg4K);
            wr.Dispose();

            var rd = new OpDataPersister(Cfg4K);
            var ops = rd.Forward().ToList();

            Assert.That(ops.Count, Is.EqualTo(0));
        }
Example #13
0
 public Oplog(OplogConfig config)
 {
     Advanced = new OpDataPersister(config);
 }
Example #14
0
 public Oplog(string name = "")
 {
     Advanced = new OpDataPersister(name);
 }
        public void Tail()
        {
            var log = new OpDataPersister(Cfg4Mb);

            log.Append(ToBytes(1));
            log.Append(ToBytes(2));
            log.Append(ToBytes(3));
            log.Append(ToBytes(4));
            log.Append(ToBytes(5));

            var v = log.Tail();

            Assert.That(BitConverter.ToInt32(v.Payload, 0), Is.EqualTo(1));
        }
        public void ListForwardTest()
        {
            var wr = new OpDataPersister(Cfg4K);

             for (int i = 0; i < 100; i++)
                 wr.Append(Guid.NewGuid().ToByteArray());

             wr.Dispose();

             var rd = new OpDataPersister(Cfg4K);

             long prev = -1;

             foreach (var op in rd.Forward())
             {
                 var position = op.Position;

                 Assert.That(position, Is.GreaterThan(prev));

                 prev = position;
             }
        }
        public void MultiAppendReadCountsTest()
        {
            var wr = new OpDataPersister(Cfg4K);

             for (int i = 0; i < 100; i++)
                 wr.Append(Guid.NewGuid().ToByteArray());

             wr.Dispose();

             Assert.That(FileExists("000000000000.sf"), Is.True);
             Assert.That(FileExists("000000004096.sf"), Is.True);

             var rd = new OpDataPersister(Cfg4K);
             var ops = rd.Forward().ToList();

             foreach (var op in ops)
                 new Guid(op.Payload);

             Assert.That(ops.Count(), Is.EqualTo(100));
        }