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);
}