public void WriteShould_ReturnTaskWhenSpaceAvailable() { var payloads = new EventPayloads { new ArraySegment <byte>(new byte[] { 0, 1, 2, 3, 4 }) }; var task = _log.Write(payloads); task.ShouldNotBe(null); }
public void WriteShould_ReturnNull() { var payloads = new EventPayloads() { new ArraySegment <byte>(new byte[] { 0, 1, 2, 3, 4 }) }; var task = _log.Write(payloads); task.ShouldBeNull(); }
public void WriteShould_ReturnNullWhenSpaceUnavailable() { using (var accessor = _file.CreateViewAccessor(0, 4, MemoryMappedFileAccess.CopyOnWrite)) { var log = new EventLogPage(0, false, accessor); var payloads = new EventPayloads { new ArraySegment <byte>(new byte[] { 0, 1, 2, 3, 4 }) }; var task = log.Write(payloads); task.ShouldBe(null); } }
public void FlushShould_CompletePreviousWriteTasks() { var payloads = new EventPayloads() { new ArraySegment <byte>(new byte[] { 0, 1, 2, 3, 4 }) }; var task = _log.Write(payloads); task.IsCompleted.ShouldBeFalse(); _log.Flush(); task.IsCompleted.ShouldBeTrue(); }
public async Task WriteShould_ReturnSequentialIds() { var payloads = new EventPayloads { new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }) }; var task = _log.Write(payloads); _log.Flush(); var result = await task; var ids = result.Select(e => e.Id).ToList(); ids.ShouldBe(Enumerable.Range((int)ids.Min(), payloads.Count).Select(id => (ulong)id)); }
public async Task WriteShould_ReturnContiguousIdsAcrossCalls() { var payloads = new EventPayloads { new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }) }; var a = _log.Write(payloads); var b = _log.Write(payloads); var c = _log.Write(payloads); _log.Flush(); var result = (await a).Concat(await b).Concat(await c); var ids = result.Select(e => e.Id).OrderBy(id => id).ToList(); ids.ShouldBe(Enumerable.Range((int)ids.Min(), payloads.Count * 3).Select(id => (ulong)id)); }
public async Task WriteShould_ReturnOrderedIdsAcrossFlushBoundries() { var payloads = new EventPayloads { new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }), new ArraySegment <byte>(new byte[] { 0, 1 }) }; var a = _log.Write(payloads); var b = _log.Write(payloads); _log.Flush(); var c = _log.Write(payloads); _log.Flush(); var firstMax = (await a).Concat(await b).Select(e => e.Id).Max(); var secondMin = (await c).Select(e => e.Id).Min(); firstMax.ShouldBeLessThan(secondMin); }
protected override void OnEventWritten(EventWrittenEventArgs eventData) => EventPayloads.Add(eventData);