public void WriteAfterCancelNotificationFails()
        {
            var finishedTask   = asyncCallServer.ServerSideCallAsync();
            var requestStream  = new ServerRequestStream <string, string>(asyncCallServer);
            var responseStream = new ServerResponseStream <string, string>(asyncCallServer);

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);

            // TODO(jtattermusch): should we throw a different exception type instead?
            Assert.Throws(typeof(InvalidOperationException), () => responseStream.WriteAsync("request1"));
            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }
        public void CancelNotificationAfterStartDisposesAfterPendingReadFinishes()
        {
            var finishedTask  = asyncCallServer.ServerSideCallAsync();
            var requestStream = new ServerRequestStream <string, string>(asyncCallServer);

            var moveNextTask = requestStream.MoveNext();

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
            fakeCall.ReceivedMessageHandler(true, null);
            Assert.IsFalse(moveNextTask.Result);

            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }
        public void ReadAfterCancelNotificationCanSucceed()
        {
            var finishedTask  = asyncCallServer.ServerSideCallAsync();
            var requestStream = new ServerRequestStream <string, string>(asyncCallServer);

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);

            // Check that starting a read after cancel notification has been processed is legal.
            var moveNextTask = requestStream.MoveNext();

            Assert.IsFalse(moveNextTask.Result);

            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }
        public void ReadCompletionFailureClosesRequestStream()
        {
            var finishedTask  = asyncCallServer.ServerSideCallAsync();
            var requestStream = new ServerRequestStream <string, string>(asyncCallServer);

            // if a read completion's success==false, the request stream will silently finish
            // and we rely on C core cancelling the call.
            var moveNextTask = requestStream.MoveNext();

            fakeCall.ReceivedMessageHandler(false, null);
            Assert.IsFalse(moveNextTask.Result);

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }
        public void CancelNotificationAfterStartDisposesAfterPendingReadFinishes()
        {
            var finishedTask = asyncCallServer.ServerSideCallAsync();
            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);

            var moveNextTask = requestStream.MoveNext();

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
            fakeCall.ReceivedMessageHandler(true, null);
            Assert.IsFalse(moveNextTask.Result);

            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }
        public void ReadCompletionFailureClosesRequestStream()
        {
            var finishedTask = asyncCallServer.ServerSideCallAsync();
            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);

            // if a read completion's success==false, the request stream will silently finish
            // and we rely on C core cancelling the call.
            var moveNextTask = requestStream.MoveNext();
            fakeCall.ReceivedMessageHandler(false, null);
            Assert.IsFalse(moveNextTask.Result);

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }
        public void ReadAfterCancelNotificationCanSucceed()
        {
            var finishedTask = asyncCallServer.ServerSideCallAsync();
            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);

            // Check that starting a read after cancel notification has been processed is legal.
            var moveNextTask = requestStream.MoveNext();
            Assert.IsFalse(moveNextTask.Result);

            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }
Esempio n. 8
0
        public void WriteAfterCancelNotificationFails()
        {
            var finishedTask = asyncCallServer.ServerSideCallAsync();
            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);

            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);

            // TODO(jtattermusch): should we throw a different exception type instead?
            Assert.Throws(typeof(InvalidOperationException), () => responseStream.WriteAsync("request1"));
            AssertFinished(asyncCallServer, fakeCall, finishedTask);
        }