Пример #1
0
 void ThrowIfStreamWasDeleted(string stream, EventReadResult result)
 {
     if (result.Status == EventReadStatus.StreamDeleted)
     {
         throw new CorruptedEventStore($"Stream '{stream}' was deleted");
     }
 }
        private void Repeat(int position)
        {
            EventReadResult result = EventStoreLoader.Connection.ReadEventAsync(
                _streamName,
                position,
                false).Result;


            if (result.Status != EventReadStatus.Success || result.Event == null)
            {
                _view.ErrorMsg = "Event not found to repeat";
                return;
            }
            var evt = result.Event.Value.Event;

            EventStoreLoader.Connection.AppendToStreamAsync(
                evt.EventStreamId,
                ExpectedVersion.Any,
                new EventData(
                    Guid.NewGuid(),
                    evt.EventType,
                    evt.IsJson,
                    evt.Data,
                    evt.Metadata));
        }
Пример #3
0
        async Task <TResult> ReadQueryCheckpoint <TResult>(FlowKey key, Func <TResult> getDefault, Func <ResolvedEvent, TResult> getCheckpoint)
        {
            var             stream = key.GetCheckpointStream();
            EventReadResult result = default(EventReadResult);

            try
            {
                result = await _context.Connection.ReadEventAsync(stream, StreamPosition.End, resolveLinkTos : false);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            switch (result.Status)
            {
            case EventReadStatus.NoStream:
            case EventReadStatus.NotFound:
                return(getDefault());

            case EventReadStatus.Success:
                return(getCheckpoint(result.Event.Value));

            default:
                throw new Exception($"Unexpected result when reading {stream}: {result.Status}");
            }
        }
        public async Task AdHocInvokeAsync_IfEventCannotBeRead_ReturnAppropriateResult()
        {
            var result = new EventReadResult(EventReadStatus.NotFound, null);

            _eventStoreHttpConnectionMock.Setup(x => x.ReadEventAsync(It.IsAny <string>(), It.IsAny <int>())).Returns(async() => result);
            var invocationResult = await _subscriber.AdHocInvokeAsync(StreamName, 123);

            invocationResult.ResultCode.Should().Be(AdHocInvocationResult.AdHocInvocationResultCode.CouldNotFindEvent);
        }
        public async Task AdHocInvokeAsync_ShouldAttemptToRetrieveCorrectEvent()
        {
            var result = new EventReadResult(EventReadStatus.NotFound, null);

            _eventStoreHttpConnectionMock.Setup(x => x.ReadEventAsync(It.IsAny <string>(), It.IsAny <int>())).Returns(async() => result);
            await _subscriber.AdHocInvokeAsync(StreamName, 123);

            _eventStoreHttpConnectionMock.Verify(x => x.ReadEventAsync(It.Is <string>(s => s == StreamName), It.Is <int>(i => i == 123)));
        }
        public async Task AdHocInvokeAsync_IfEventHasNoHandlers_ReturnAppropriateResult()
        {
            var result = new EventReadResult(EventReadStatus.Success, new EventInfo
            {
                EventType = typeof(SomeHandlerForACustomSubscriberId).FullName
            });

            _eventStoreHttpConnectionMock.Setup(x => x.ReadEventAsync(It.IsAny <string>(), It.IsAny <int>())).Returns(async() => result);
            var invocationResult = await _subscriber.AdHocInvokeAsync(StreamName, 123);

            invocationResult.ResultCode.Should().Be(AdHocInvocationResult.AdHocInvocationResultCode.NoHandlersFound);
        }
        public async Task AdHocInvokeAsync_IfEventHasHandlers_AndHandlerThrowsAnException_Return_AppropriateResult()
        {
            _eventTypeResolverMock.Setup(x => x.Resolve(It.IsAny <string>())).Returns(typeof(EventANoBaseOrInterface));
            _eventHandlerResolverMock.Setup(x => x.GetHandlersOf(It.IsAny <Type>())).Returns(new[] { new HandlerThatThrowsAnException() });

            var result = new EventReadResult(EventReadStatus.Success, new EventInfo
            {
                EventType = typeof(EventANoBaseOrInterface).FullName
            });

            _eventStoreHttpConnectionMock.Setup(x => x.ReadEventAsync(It.IsAny <string>(), It.IsAny <int>())).Returns(async() => result);
            var invocationResult = await _subscriber.AdHocInvokeAsync(StreamName, 123);

            invocationResult.ResultCode.Should().Be(AdHocInvocationResult.AdHocInvocationResultCode.HandlerThrewException);
        }
        public async Task AdHocInvokeAsync_IfEventHasHandlers_AndHandlerThrowsAnException_ExceptionShouldBeRecorded()
        {
            _eventTypeResolverMock.Setup(x => x.Resolve(It.IsAny <string>())).Returns(typeof(EventANoBaseOrInterface));
            _eventHandlerResolverMock.Setup(x => x.GetHandlersOf(It.IsAny <Type>())).Returns(new[] { new HandlerThatThrowsAnException() });

            var result = new EventReadResult(EventReadStatus.Success, new EventInfo
            {
                EventType = typeof(EventANoBaseOrInterface).FullName
            });

            _eventStoreHttpConnectionMock.Setup(x => x.ReadEventAsync(It.IsAny <string>(), It.IsAny <int>())).Returns(async() => result);
            var invocationResult = await _subscriber.AdHocInvokeAsync(StreamName, 123);

            invocationResult.Errors.Should().NotBeNull();
            invocationResult.Errors.Should().NotBeEmpty();
            invocationResult.Errors[typeof(HandlerThatThrowsAnException)].Message.Should().Be(HandlerThatThrowsAnException.SomeException.Message);
        }
Пример #9
0
        private Maybe <StoredEvent> GetEventFrom(EventReadResult result)
        {
            switch (result.Status)
            {
            case ReadStatus.Success:
                return(ToStoredEvent(result.Event));

            case ReadStatus.NotFound:
            case ReadStatus.NoStream:
                return(new Maybe <StoredEvent>());

            case ReadStatus.StreamDeleted:
                throw new InvalidOperationException($"Stream {Id} has been deleted.");

            default:
                throw new NotSupportedException(result.Status.ToString());
            }
        }
Пример #10
0
 protected override async Task When()
 {
     _read = await _conn.ReadEventAsync(LinkedStreamName, 0, true);
 }
 private static bool ResultHasNoEvent(EventReadResult result)
 {
     return(!result.Event.HasValue);
 }
 protected override void When()
 {
     _read = _conn.ReadEventAsync(LinkedStreamName, 0, true).Result;
 }
 private static bool AnySnapshotExists(EventReadResult lastSnapshot)
 {
     return(lastSnapshot.Event.HasValue);
 }
Пример #14
0
        public async void Retrieve()
        {
            EventReadResult event1 = await Connection.ReadEventAsync(OrderCreatedStreamName, 4);

            EventReadResult event2 = await Connection.ReadEventAsync(OrderCreatedStreamName, 6);
        }
 private static bool NotAnySnapshotExists(EventReadResult snapshot)
 {
     return(!snapshot.Event.HasValue);
 }