public async Task GrpcInputTests_HandlesExceptionsInProcessingHandler()

in src/LibraryTest/Library/Inputs/GrpcInputTests.cs [224:255]


        public async Task GrpcInputTests_HandlesExceptionsInProcessingHandler()
        {
            // ARRANGE
            int port = Common.GetPort();
            var input = new GrpcInput("localhost", port, instance => throw new InvalidOperationException());

            input.Start();

            Assert.IsTrue(SpinWait.SpinUntil(() => input.IsRunning, GrpcInputTests.DefaultTimeout));

            var grpcWriter = new GrpcWriter(port);

            var request = new HandleTraceSpanRequest();
            request.Instances.Add(new InstanceMsg() {SourceName = "SourceName1"});

            // ACT
            await grpcWriter.Write(request).ConfigureAwait(false);

            // ASSERT

            // must have handled the exception by logging it
            // should still be able to process items
            Common.AssertIsTrueEventually(
                () => input.IsRunning && input.GetStats().InstancesSucceeded == 0 && input.GetStats().InstancesFailed == 1,
                GrpcInputTests.DefaultTimeout);

            await grpcWriter.Write(request).ConfigureAwait(false);

            Common.AssertIsTrueEventually(
                () => input.IsRunning && input.GetStats().InstancesSucceeded == 0 && input.GetStats().InstancesFailed == 2,
                GrpcInputTests.DefaultTimeout);
        }