@@ -99,10 +99,11 @@ func (s *assertingService) PingStream(stream pb.TestService_PingStreamServer) er
9999type ProxyHappySuite struct {
100100 suite.Suite
101101
102- serverListener net.Listener
103- server * grpc.Server
104- proxyListener net.Listener
105- proxy * grpc.Server
102+ serverListener net.Listener
103+ server * grpc.Server
104+ proxyListener net.Listener
105+ proxy * grpc.Server
106+ serverClientConn * grpc.ClientConn
106107
107108 client * grpc.ClientConn
108109 testClient pb.TestServiceClient
@@ -121,6 +122,12 @@ func (s *ProxyHappySuite) TestPingEmptyCarriesClientMetadata() {
121122 require .Equal (s .T (), & pb.PingResponse {Value : pingDefaultValue , Counter : 42 }, out )
122123}
123124
125+ func (s * ProxyHappySuite ) TestPingEmpty_StressTest () {
126+ for i := 0 ; i < 50 ; i ++ {
127+ s .TestPingEmptyCarriesClientMetadata ()
128+ }
129+ }
130+
124131func (s * ProxyHappySuite ) TestPingCarriesServerHeadersAndTrailers () {
125132 headerMd := make (metadata.MD )
126133 trailerMd := make (metadata.MD )
@@ -175,6 +182,12 @@ func (s *ProxyHappySuite) TestPingStream_FullDuplexWorks() {
175182 assert .Len (s .T (), trailerMd , 1 , "PingList trailer headers user contain metadata" )
176183}
177184
185+ func (s * ProxyHappySuite ) TestPingStream_StressTest () {
186+ for i := 0 ; i < 50 ; i ++ {
187+ s .TestPingStream_FullDuplexWorks ()
188+ }
189+ }
190+
178191func (s * ProxyHappySuite ) SetupSuite () {
179192 var err error
180193
@@ -189,7 +202,7 @@ func (s *ProxyHappySuite) SetupSuite() {
189202 pb .RegisterTestServiceServer (s .server , & assertingService {t : s .T ()})
190203
191204 // Setup of the proxy's Director.
192- proxyClientConn , err : = grpc .Dial (s .serverListener .Addr ().String (), grpc .WithInsecure (), grpc .WithCodec (proxy .Codec ()))
205+ s . serverClientConn , err = grpc .Dial (s .serverListener .Addr ().String (), grpc .WithInsecure (), grpc .WithCodec (proxy .Codec ()))
193206 require .NoError (s .T (), err , "must not error on deferred client Dial" )
194207 director := func (ctx context.Context , fullName string ) (* grpc.ClientConn , error ) {
195208 md , ok := metadata .FromContext (ctx )
@@ -198,7 +211,7 @@ func (s *ProxyHappySuite) SetupSuite() {
198211 return nil , grpc .Errorf (codes .PermissionDenied , "testing rejection" )
199212 }
200213 }
201- return proxyClientConn , nil
214+ return s . serverClientConn , nil
202215 }
203216 s .proxy = grpc .NewServer (
204217 grpc .CustomCodec (proxy .Codec ()),
@@ -225,6 +238,14 @@ func (s *ProxyHappySuite) SetupSuite() {
225238}
226239
227240func (s * ProxyHappySuite ) TearDownSuite () {
241+ if s .client != nil {
242+ s .client .Close ()
243+ }
244+ if s .serverClientConn != nil {
245+ s .serverClientConn .Close ()
246+ }
247+ // Close all transports so the logs don't get spammy.
248+ time .Sleep (10 * time .Millisecond )
228249 if s .proxy != nil {
229250 s .proxy .Stop ()
230251 s .proxyListener .Close ()
@@ -233,9 +254,6 @@ func (s *ProxyHappySuite) TearDownSuite() {
233254 s .server .Stop ()
234255 s .serverListener .Close ()
235256 }
236- if s .client != nil {
237- s .client .Close ()
238- }
239257}
240258
241259func TestProxyHappySuite (t * testing.T ) {
0 commit comments