Exemplo n.º 1
0
        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 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 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 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));
        }
        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));
        }
        public void Forward_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.Forward(idx).GetEnumerator(); ;

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

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

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

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

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

            var items = new List<int>();

            foreach (var v in log.Forward(idx, 2))
                items.Add(BitConverter.ToInt32(v.Payload, 0));

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

            Assert.That(items.Count, Is.EqualTo(2));
        }
        public void Forward()
        {
            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.Forward().GetEnumerator();

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

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

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

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

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