• Daniel Martí's avatar
    net/http: deflake TestServerShutdownStateNew · 96186a58
    Daniel Martí authored
    This function tests that calling Shutdown on a Server that has a "new"
    connection yet to write any bytes, in which case it should wait for five
    seconds until considering the connection as "idle".
    
    However, the test was flaky. If Shutdown happened to run before the
    server accepted the connection, the connection would immediately be
    rejected as the server is already closed, as opposed to being accepted
    in the "new" state. Then, Shutdown would return almost immediately, as
    it had no connections to wait for:
    
    	--- FAIL: TestServerShutdownStateNew (2.00s)
    	    serve_test.go:5603: shutdown too soon after 49.41µs
    	    serve_test.go:5617: timeout waiting for Read to unblock
    
    Fix this by making sure that the connection has been accepted before
    calling Shutdown. Verified that the flake is gone after 50k concurrent
    runs of the test with no failures, whereas the test used to fail around
    10% of the time on my laptop:
    
    	go test -c && stress -p 256 ./http.test -test.run TestServerShutdownStateNew
    
    Fixes #26233.
    
    Change-Id: I819d7eedb67c48839313427675facb39d9c17257
    Reviewed-on: https://go-review.googlesource.com/122355
    Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    96186a58
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
context Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
plugin Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
vendor/golang_org/x Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...