@@ -82,14 +82,12 @@ func TestSimpleStreamForwarder(t *testing.T) {
8282 },
8383 )
8484
85+ incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes ()
8586 gomock .InOrder (
86- incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes (),
8787 newStreamCall ,
88- incomingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (
89- newForwardingStreamRecvMsgStub ("beep" )),
88+ incomingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (newForwardingStreamRecvMsgStub ("beep" )),
9089 outgoingStream .EXPECT ().SendMsg (newEqProtoStringValueMatcher (t , "beep" )).Return (nil ),
91- incomingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (
92- newForwardingStreamRecvMsgStub ("boop" )),
90+ incomingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (newForwardingStreamRecvMsgStub ("boop" )),
9391 outgoingStream .EXPECT ().SendMsg (newEqProtoStringValueMatcher (t , "boop" )).Return (nil ),
9492 incomingStream .EXPECT ().RecvMsg (gomock .Any ()).Return (io .EOF ),
9593 outgoingStream .EXPECT ().CloseSend ().DoAndReturn (func () error {
@@ -101,7 +99,8 @@ func TestSimpleStreamForwarder(t *testing.T) {
10199 newStreamCall ,
102100 outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (func (msg any ) error {
103101 <- outgoingRecvBarrier
104- testutil .VerifyChannelIsBlocking (t , outgoingStreamCtx .Done ())
102+ synctest .Wait ()
103+ require .NoError (t , outgoingStreamCtx .Err ())
105104 return io .EOF
106105 }),
107106 )
@@ -122,8 +121,9 @@ func TestSimpleStreamForwarder(t *testing.T) {
122121 return outgoingStream , nil
123122 },
124123 )
124+
125+ incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes ()
125126 gomock .InOrder (
126- incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes (),
127127 newStreamCall ,
128128 incomingStream .EXPECT ().RecvMsg (gomock .Any ()).Return (errors .New ("incoming recv" )),
129129 )
@@ -152,11 +152,11 @@ func TestSimpleStreamForwarder(t *testing.T) {
152152 return outgoingStream , nil
153153 },
154154 )
155+
156+ incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes ()
155157 gomock .InOrder (
156- incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes (),
157158 newStreamCall ,
158- incomingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (
159- newForwardingStreamRecvMsgStub ("beep" )),
159+ incomingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (newForwardingStreamRecvMsgStub ("beep" )),
160160 outgoingStream .EXPECT ().SendMsg (newEqProtoStringValueMatcher (t , "beep" )).Return (errors .New ("outgoing send" )),
161161 )
162162 gomock .InOrder (
@@ -185,14 +185,13 @@ func TestSimpleStreamForwarder(t *testing.T) {
185185 return outgoingStream , nil
186186 },
187187 )
188+
189+ incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes ()
188190 gomock .InOrder (
189- incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes (),
190191 newStreamCall ,
191- outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (
192- newForwardingStreamRecvMsgStub ("beep" )),
192+ outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (newForwardingStreamRecvMsgStub ("beep" )),
193193 incomingStream .EXPECT ().SendMsg (newEqProtoStringValueMatcher (t , "beep" )).Return (nil ),
194- outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (
195- newForwardingStreamRecvMsgStub ("boop" )),
194+ outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (newForwardingStreamRecvMsgStub ("boop" )),
196195 incomingStream .EXPECT ().SendMsg (newEqProtoStringValueMatcher (t , "boop" )).Return (nil ),
197196 outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).Return (io .EOF ),
198197 )
@@ -224,8 +223,9 @@ func TestSimpleStreamForwarder(t *testing.T) {
224223 return outgoingStream , nil
225224 },
226225 )
226+
227+ incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes ()
227228 gomock .InOrder (
228- incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes (),
229229 newStreamCall ,
230230 outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).Return (errors .New ("outgoing recv" )),
231231 )
@@ -256,11 +256,11 @@ func TestSimpleStreamForwarder(t *testing.T) {
256256 return outgoingStream , nil
257257 },
258258 )
259+
260+ incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes ()
259261 gomock .InOrder (
260- incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes (),
261262 newStreamCall ,
262- outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (
263- newForwardingStreamRecvMsgStub ("beep" )),
263+ outgoingStream .EXPECT ().RecvMsg (gomock .Any ()).DoAndReturn (newForwardingStreamRecvMsgStub ("beep" )),
264264 incomingStream .EXPECT ().SendMsg (newEqProtoStringValueMatcher (t , "beep" )).Return (errors .New ("incoming send" )),
265265 )
266266 gomock .InOrder (
@@ -276,4 +276,15 @@ func TestSimpleStreamForwarder(t *testing.T) {
276276 require .EqualError (t , forwarder (nil , incomingStream ), "incoming send" )
277277 })
278278 })
279+
280+ t .Run ("NewStreamError" , func (t * testing.T ) {
281+ synctest .Test (t , func (t * testing.T ) {
282+ incomingStreamCtx := grpc .NewContextWithServerTransportStream (context .Background (), serverTransportStream )
283+
284+ incomingStream .EXPECT ().Context ().Return (incomingStreamCtx ).AnyTimes ()
285+ backend .EXPECT ().NewStream (gomock .Any (), gomock .Any (), "/serviceA/method1" ).Return (nil , errors .New ("no stream" ))
286+
287+ require .EqualError (t , forwarder (nil , incomingStream ), "no stream" )
288+ })
289+ })
279290}
0 commit comments