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 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 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 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 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)); }