Skip to content

Commit ed6c3ba

Browse files
committed
server_test: add Serve()/Shutdown() race test.
Signed-off-by: Krisztian Litkey <[email protected]>
1 parent 3f02183 commit ed6c3ba

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

server_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,36 @@ func TestServerClose(t *testing.T) {
298298
checkServerShutdown(t, server)
299299
}
300300

301+
func TestImmediateServerShutdown(t *testing.T) {
302+
var (
303+
ctx = context.Background()
304+
server = mustServer(t)(NewServer())
305+
addr, listener = newTestListener(t)
306+
errs = make(chan error, 1)
307+
_, cleanup = newTestClient(t, addr)
308+
)
309+
defer cleanup()
310+
defer listener.Close()
311+
go func() {
312+
time.Sleep(1 * time.Millisecond)
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(2 * time.Second):
327+
t.Fatal("retreiving error from server.Shutdown() timed out")
328+
}
329+
}
330+
301331
func TestOversizeCall(t *testing.T) {
302332
var (
303333
ctx = context.Background()

0 commit comments

Comments
 (0)