File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -298,6 +298,37 @@ func TestServerClose(t *testing.T) {
298298 checkServerShutdown (t , server )
299299}
300300
301+ func TestImmediateServerShutdown (t * testing.T ) {
302+ for i := 0 ; i < 1024 ; i ++ {
303+ var (
304+ ctx = context .Background ()
305+ server = mustServer (t )(NewServer ())
306+ addr , listener = newTestListener (t )
307+ errs = make (chan error , 1 )
308+ _ , cleanup = newTestClient (t , addr )
309+ )
310+ defer cleanup ()
311+ defer listener .Close ()
312+ go func () {
313+ errs <- server .Serve (ctx , listener )
314+ }()
315+
316+ registerTestingService (server , & testingServer {})
317+
318+ if err := server .Shutdown (ctx ); err != nil {
319+ t .Fatal (err )
320+ }
321+ select {
322+ case err := <- errs :
323+ if err != ErrServerClosed {
324+ t .Fatal (err )
325+ }
326+ case <- time .After (time .Second ):
327+ t .Fatal ("retreiving error from server.Shutdown() timed out" )
328+ }
329+ }
330+ }
331+
301332func TestOversizeCall (t * testing.T ) {
302333 var (
303334 ctx = context .Background ()
You can’t perform that action at this time.
0 commit comments