@@ -3736,8 +3736,8 @@ func (s) TestClientStreaming_ReturnErrorAfterSendAndClose(t *testing.T) {
37363736 }
37373737}
37383738
3739- // Tests for a successful RPC, client will continue to receive io.EOF for successive calls to CloseAndRecv ().
3740- func (s ) TestClientStreaming_ClientCallCloseAndRecvAfterCloseAndRecv (t * testing.T ) {
3739+ // Tests for a successful RPC, client will receive io.EOF for second call to RecvMsg ().
3740+ func (s ) TestClientStreaming_ClientCallRecvMsgTwice (t * testing.T ) {
37413741 ss := stubserver.StubServer {
37423742 StreamingInputCallF : func (stream testgrpc.TestService_StreamingInputCallServer ) error {
37433743 if err := stream .SendAndClose (& testpb.StreamingInputCallResponse {}); err != nil {
@@ -3760,11 +3760,15 @@ func (s) TestClientStreaming_ClientCallCloseAndRecvAfterCloseAndRecv(t *testing.
37603760 if err := stream .Send (& testpb.StreamingInputCallRequest {}); err != nil {
37613761 t .Fatalf ("stream.Send(_) = %v, want <nil>" , err )
37623762 }
3763- if _ , err := stream .CloseAndRecv (); err != nil {
3764- t .Fatalf ("stream.CloseAndRecv() = %v , want <nil>" , err )
3763+ if err := stream .CloseSend (); err != nil {
3764+ t .Fatalf ("stream.CloseSend() = %v, want <nil>" , err )
3765+ }
3766+ resp := new (testpb.StreamingInputCallResponse )
3767+ if err := stream .RecvMsg (resp ); err != nil {
3768+ t .Fatalf ("stream.RecvMsg() = %v , want <nil>" , err )
37653769 }
3766- if _ , err := stream .CloseAndRecv ( ); err != io .EOF {
3767- t .Fatalf ("stream.CloseAndRecv () = %v, want error %s" , err , io .EOF )
3770+ if err := stream .RecvMsg ( resp ); err != io .EOF {
3771+ t .Fatalf ("stream.RecvMsg () = %v, want error %s" , err , io .EOF )
37683772 }
37693773}
37703774
@@ -3812,6 +3816,42 @@ func (s) TestUnaryRPC_ServerSendsOnlyTrailersWithOK(t *testing.T) {
38123816 }
38133817}
38143818
3819+ // Tests for a successful unary RPC, client will receive io.EOF for second call to RecvMsg().
3820+ func (s ) TestUnaryCall_ClientCallRecvMsgTwice (t * testing.T ) {
3821+ e := tcpTLSEnv
3822+ te := newTest (t , e )
3823+ defer te .tearDown ()
3824+
3825+ te .startServer (& testServer {security : e .security })
3826+
3827+ cc := te .clientConn ()
3828+ ctx , cancel := context .WithTimeout (context .Background (), defaultTestTimeout )
3829+ defer cancel ()
3830+
3831+ desc := & grpc.StreamDesc {
3832+ StreamName : "UnaryCall" ,
3833+ ServerStreams : false ,
3834+ ClientStreams : false ,
3835+ }
3836+ stream , err := cc .NewStream (ctx , desc , "/grpc.testing.TestService/UnaryCall" )
3837+ if err != nil {
3838+ t .Fatalf ("cc.NewStream() failed unexpectedly: %v" , err )
3839+ }
3840+
3841+ if err := stream .SendMsg (& testpb.SimpleRequest {}); err != nil {
3842+ t .Fatalf ("stream.SendMsg(_) = %v, want <nil>" , err )
3843+ }
3844+
3845+ resp := & testpb.SimpleResponse {}
3846+ if err := stream .RecvMsg (resp ); err != nil {
3847+ t .Fatalf ("stream.RecvMsg() = %v , want <nil>" , err )
3848+ }
3849+
3850+ if err = stream .RecvMsg (resp ); err != io .EOF {
3851+ t .Fatalf ("stream.RecvMsg() = %v, want error %s" , err , io .EOF )
3852+ }
3853+ }
3854+
38153855func (s ) TestExceedMaxStreamsLimit (t * testing.T ) {
38163856 for _ , e := range listTestEnv () {
38173857 testExceedMaxStreamsLimit (t , e )
0 commit comments