Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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));
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
 protected override void OnEventWritten(EventWrittenEventArgs eventData) =>
 EventPayloads.Add(eventData);