|
|
|
@ -73,7 +73,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
public void AsyncUnary_Success() |
|
|
|
|
{ |
|
|
|
|
var resultTask = asyncCall.UnaryCallAsync("request1"); |
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(Status.DefaultSuccess, new Metadata()), |
|
|
|
|
CreateResponsePayload(), |
|
|
|
|
new Metadata()); |
|
|
|
@ -85,7 +85,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
public void AsyncUnary_NonSuccessStatusCode() |
|
|
|
|
{ |
|
|
|
|
var resultTask = asyncCall.UnaryCallAsync("request1"); |
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
CreateClientSideStatus(StatusCode.InvalidArgument), |
|
|
|
|
null, |
|
|
|
|
new Metadata()); |
|
|
|
@ -97,7 +97,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
public void AsyncUnary_NullResponsePayload() |
|
|
|
|
{ |
|
|
|
|
var resultTask = asyncCall.UnaryCallAsync("request1"); |
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(Status.DefaultSuccess, new Metadata()), |
|
|
|
|
null, |
|
|
|
|
new Metadata()); |
|
|
|
@ -118,7 +118,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
public void ClientStreaming_NoRequest_Success() |
|
|
|
|
{ |
|
|
|
|
var resultTask = asyncCall.ClientStreamingCallAsync(); |
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(Status.DefaultSuccess, new Metadata()), |
|
|
|
|
CreateResponsePayload(), |
|
|
|
|
new Metadata()); |
|
|
|
@ -130,7 +130,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
public void ClientStreaming_NoRequest_NonSuccessStatusCode() |
|
|
|
|
{ |
|
|
|
|
var resultTask = asyncCall.ClientStreamingCallAsync(); |
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
CreateClientSideStatus(StatusCode.InvalidArgument), |
|
|
|
|
null, |
|
|
|
|
new Metadata()); |
|
|
|
@ -145,18 +145,18 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var requestStream = new ClientRequestStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var writeTask = requestStream.WriteAsync("request1"); |
|
|
|
|
fakeCall.SendCompletionHandler(true); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(true); |
|
|
|
|
writeTask.Wait(); |
|
|
|
|
|
|
|
|
|
var writeTask2 = requestStream.WriteAsync("request2"); |
|
|
|
|
fakeCall.SendCompletionHandler(true); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(true); |
|
|
|
|
writeTask2.Wait(); |
|
|
|
|
|
|
|
|
|
var completeTask = requestStream.CompleteAsync(); |
|
|
|
|
fakeCall.SendCompletionHandler(true); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(true); |
|
|
|
|
completeTask.Wait(); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(Status.DefaultSuccess, new Metadata()), |
|
|
|
|
CreateResponsePayload(), |
|
|
|
|
new Metadata()); |
|
|
|
@ -171,12 +171,12 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var requestStream = new ClientRequestStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var writeTask = requestStream.WriteAsync("request1"); |
|
|
|
|
fakeCall.SendCompletionHandler(false); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(false); |
|
|
|
|
|
|
|
|
|
// The write will wait for call to finish to receive the status code. |
|
|
|
|
Assert.IsFalse(writeTask.IsCompleted); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
CreateClientSideStatus(StatusCode.Internal), |
|
|
|
|
null, |
|
|
|
|
new Metadata()); |
|
|
|
@ -195,12 +195,12 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
|
|
|
|
|
var writeTask = requestStream.WriteAsync("request1"); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
CreateClientSideStatus(StatusCode.Internal), |
|
|
|
|
null, |
|
|
|
|
new Metadata()); |
|
|
|
|
|
|
|
|
|
fakeCall.SendCompletionHandler(false); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(false); |
|
|
|
|
|
|
|
|
|
var ex = Assert.ThrowsAsync<RpcException>(async () => await writeTask); |
|
|
|
|
Assert.AreEqual(StatusCode.Internal, ex.Status.StatusCode); |
|
|
|
@ -215,13 +215,13 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var requestStream = new ClientRequestStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var writeTask = requestStream.WriteAsync("request1"); |
|
|
|
|
fakeCall.SendCompletionHandler(false); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(false); |
|
|
|
|
|
|
|
|
|
// Until the delayed write completion has been triggered, |
|
|
|
|
// we still act as if there was an active write. |
|
|
|
|
Assert.Throws(typeof(InvalidOperationException), () => requestStream.WriteAsync("request2")); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
CreateClientSideStatus(StatusCode.Internal), |
|
|
|
|
null, |
|
|
|
|
new Metadata()); |
|
|
|
@ -242,7 +242,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var resultTask = asyncCall.ClientStreamingCallAsync(); |
|
|
|
|
var requestStream = new ClientRequestStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(Status.DefaultSuccess, new Metadata()), |
|
|
|
|
CreateResponsePayload(), |
|
|
|
|
new Metadata()); |
|
|
|
@ -260,7 +260,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var resultTask = asyncCall.ClientStreamingCallAsync(); |
|
|
|
|
var requestStream = new ClientRequestStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(new Status(StatusCode.OutOfRange, ""), new Metadata()), |
|
|
|
|
CreateResponsePayload(), |
|
|
|
|
new Metadata()); |
|
|
|
@ -282,9 +282,9 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
|
|
|
|
|
Assert.Throws(typeof(InvalidOperationException), () => requestStream.WriteAsync("request1")); |
|
|
|
|
|
|
|
|
|
fakeCall.SendCompletionHandler(true); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(true); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(Status.DefaultSuccess, new Metadata()), |
|
|
|
|
CreateResponsePayload(), |
|
|
|
|
new Metadata()); |
|
|
|
@ -298,7 +298,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var resultTask = asyncCall.ClientStreamingCallAsync(); |
|
|
|
|
var requestStream = new ClientRequestStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
new ClientSideStatus(Status.DefaultSuccess, new Metadata()), |
|
|
|
|
CreateResponsePayload(), |
|
|
|
|
new Metadata()); |
|
|
|
@ -319,7 +319,7 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var writeTask = requestStream.WriteAsync("request1"); |
|
|
|
|
Assert.ThrowsAsync(typeof(TaskCanceledException), async () => await writeTask); |
|
|
|
|
|
|
|
|
|
fakeCall.UnaryResponseClientHandler(true, |
|
|
|
|
fakeCall.UnaryResponseClientCallback.OnUnaryResponseClient(true, |
|
|
|
|
CreateClientSideStatus(StatusCode.Cancelled), |
|
|
|
|
null, |
|
|
|
|
new Metadata()); |
|
|
|
@ -342,11 +342,11 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var responseStream = new ClientResponseStream<string, string>(asyncCall); |
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
|
|
|
|
|
fakeCall.ReceivedResponseHeadersHandler(true, new Metadata()); |
|
|
|
|
fakeCall.ReceivedResponseHeadersCallback.OnReceivedResponseHeaders(true, new Metadata()); |
|
|
|
|
Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count); |
|
|
|
|
|
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask); |
|
|
|
|
} |
|
|
|
@ -359,8 +359,8 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
|
|
|
|
|
// try alternative order of completions |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask); |
|
|
|
|
} |
|
|
|
@ -372,8 +372,8 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var responseStream = new ClientResponseStream<string, string>(asyncCall); |
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
|
|
|
|
|
fakeCall.ReceivedMessageHandler(false, null); // after a failed read, we rely on C core to deliver appropriate status code. |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Internal)); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(false, null); // after a failed read, we rely on C core to deliver appropriate status code. |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, CreateClientSideStatus(StatusCode.Internal)); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseError(asyncCall, fakeCall, readTask, StatusCode.Internal); |
|
|
|
|
} |
|
|
|
@ -385,18 +385,18 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var responseStream = new ClientResponseStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var readTask1 = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, CreateResponsePayload()); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, CreateResponsePayload()); |
|
|
|
|
Assert.IsTrue(readTask1.Result); |
|
|
|
|
Assert.AreEqual("response1", responseStream.Current); |
|
|
|
|
|
|
|
|
|
var readTask2 = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, CreateResponsePayload()); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, CreateResponsePayload()); |
|
|
|
|
Assert.IsTrue(readTask2.Result); |
|
|
|
|
Assert.AreEqual("response1", responseStream.Current); |
|
|
|
|
|
|
|
|
|
var readTask3 = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask3); |
|
|
|
|
} |
|
|
|
@ -409,12 +409,12 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var responseStream = new ClientResponseStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var writeTask1 = requestStream.CompleteAsync(); |
|
|
|
|
fakeCall.SendCompletionHandler(true); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(true); |
|
|
|
|
Assert.DoesNotThrowAsync(async () => await writeTask1); |
|
|
|
|
|
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask); |
|
|
|
|
} |
|
|
|
@ -427,8 +427,8 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var responseStream = new ClientResponseStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask); |
|
|
|
|
|
|
|
|
@ -445,8 +445,8 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var responseStream = new ClientResponseStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata())); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask); |
|
|
|
|
|
|
|
|
@ -461,14 +461,14 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var responseStream = new ClientResponseStream<string, string>(asyncCall); |
|
|
|
|
|
|
|
|
|
var writeTask = requestStream.WriteAsync("request1"); |
|
|
|
|
fakeCall.SendCompletionHandler(false); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(false); |
|
|
|
|
|
|
|
|
|
// The write will wait for call to finish to receive the status code. |
|
|
|
|
Assert.IsFalse(writeTask.IsCompleted); |
|
|
|
|
|
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.PermissionDenied)); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, CreateClientSideStatus(StatusCode.PermissionDenied)); |
|
|
|
|
|
|
|
|
|
var ex = Assert.ThrowsAsync<RpcException>(async () => await writeTask); |
|
|
|
|
Assert.AreEqual(StatusCode.PermissionDenied, ex.Status.StatusCode); |
|
|
|
@ -486,9 +486,9 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
var writeTask = requestStream.WriteAsync("request1"); |
|
|
|
|
|
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.PermissionDenied)); |
|
|
|
|
fakeCall.SendCompletionHandler(false); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, CreateClientSideStatus(StatusCode.PermissionDenied)); |
|
|
|
|
fakeCall.SendCompletionCallback.OnSendCompletion(false); |
|
|
|
|
|
|
|
|
|
var ex = Assert.ThrowsAsync<RpcException>(async () => await writeTask); |
|
|
|
|
Assert.AreEqual(StatusCode.PermissionDenied, ex.Status.StatusCode); |
|
|
|
@ -510,8 +510,8 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
Assert.ThrowsAsync(typeof(TaskCanceledException), async () => await writeTask); |
|
|
|
|
|
|
|
|
|
var readTask = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled)); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, CreateClientSideStatus(StatusCode.Cancelled)); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseError(asyncCall, fakeCall, readTask, StatusCode.Cancelled); |
|
|
|
|
} |
|
|
|
@ -526,13 +526,13 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
Assert.IsTrue(fakeCall.IsCancelled); |
|
|
|
|
|
|
|
|
|
var readTask1 = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, CreateResponsePayload()); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, CreateResponsePayload()); |
|
|
|
|
Assert.IsTrue(readTask1.Result); |
|
|
|
|
Assert.AreEqual("response1", responseStream.Current); |
|
|
|
|
|
|
|
|
|
var readTask2 = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled)); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, CreateClientSideStatus(StatusCode.Cancelled)); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseError(asyncCall, fakeCall, readTask2, StatusCode.Cancelled); |
|
|
|
|
} |
|
|
|
@ -547,13 +547,13 @@ namespace Grpc.Core.Internal.Tests |
|
|
|
|
asyncCall.Cancel(); |
|
|
|
|
Assert.IsTrue(fakeCall.IsCancelled); |
|
|
|
|
|
|
|
|
|
fakeCall.ReceivedMessageHandler(true, CreateResponsePayload()); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, CreateResponsePayload()); |
|
|
|
|
Assert.IsTrue(readTask1.Result); |
|
|
|
|
Assert.AreEqual("response1", responseStream.Current); |
|
|
|
|
|
|
|
|
|
var readTask2 = responseStream.MoveNext(); |
|
|
|
|
fakeCall.ReceivedMessageHandler(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled)); |
|
|
|
|
fakeCall.ReceivedMessageCallback.OnReceivedMessage(true, null); |
|
|
|
|
fakeCall.ReceivedStatusOnClientCallback.OnReceivedStatusOnClient(true, CreateClientSideStatus(StatusCode.Cancelled)); |
|
|
|
|
|
|
|
|
|
AssertStreamingResponseError(asyncCall, fakeCall, readTask2, StatusCode.Cancelled); |
|
|
|
|
} |
|
|
|
|