예제 #1
0
        public void uses_correct_interval()
        {
            Assert.False(_sut.GetOrReserve("eventTypeA", out var eventTypeNumberA, out var newNumberA, out var newNameA));
            Assert.Equal("eventTypeA", newNameA);
            Assert.Equal(LogV3SystemEventTypes.FirstRealEventTypeNumber, eventTypeNumberA);
            Assert.Equal(LogV3SystemEventTypes.FirstRealEventTypeNumber, newNumberA);

            Assert.False(_sut.GetOrReserve("eventTypeB", out var eventTypeNumberB, out var newNumberB, out var newNameB));
            Assert.Equal("eventTypeB", newNameB);
            Assert.Equal(LogV3SystemEventTypes.FirstRealEventTypeNumber + 1, eventTypeNumberB);
            Assert.Equal(LogV3SystemEventTypes.FirstRealEventTypeNumber + 1, newNumberB);
        }
예제 #2
0
        public void can_reserve_and_confirm()
        {
            // reserve streamA
            Assert.False(_sut.GetOrReserve("streamA", out var streamNumber, out var newNumber, out var newName));
            Assert.Equal("streamA", newName);
            Assert.Equal(LogV3SystemStreams.FirstRealStream, streamNumber);
            Assert.Equal(LogV3SystemStreams.FirstRealStream, newNumber);

            // can be found by writer
            Assert.True(_sut.GetOrReserve("streamA", out streamNumber, out _, out _));
            Assert.Equal(LogV3SystemStreams.FirstRealStream, streamNumber);

            // cannot be found by reader
            Assert.False(_persistence.TryGetValue("streamA", out _));

            // confirm (i.e. it has now has been replicated)
            _sut.Confirm("streamA", streamNumber);

            // can be found by writer and reader
            Assert.True(_sut.GetOrReserve("streamA", out streamNumber, out _, out _));
            Assert.Equal(LogV3SystemStreams.FirstRealStream, streamNumber);
            Assert.True(_persistence.TryGetValue("streamA", out streamNumber));
            Assert.Equal(LogV3SystemStreams.FirstRealStream, streamNumber);
        }