in src/LibraryTest/Library/Inputs/GrpcInputTests.cs [136:171]
public async Task GrpcInputTests_StopsWhileWaitingForData()
{
// ARRANGE
int instancesReceived = 0;
InstanceMsg receivedInstance = null;
int port = Common.GetPort();
var input = new GrpcInput("localhost", port, instance =>
{
instancesReceived++;
receivedInstance = instance;
});
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"});
await grpcWriter.Write(request).ConfigureAwait(false);
Common.AssertIsTrueEventually(
() => input.GetStats().InstancesSucceeded == 1 && instancesReceived == 1 &&
receivedInstance.SourceName == "SourceName1", GrpcInputTests.DefaultTimeout);
// ACT
input.Stop();
// ASSERT
Common.AssertIsTrueEventually(
() => !input.IsRunning && input.GetStats().InstancesSucceeded == 1 && instancesReceived == 1 &&
receivedInstance.SourceName == "SourceName1", GrpcInputTests.DefaultTimeout);
}