• Ian Lance Taylor's avatar
    net/http: deflake TestCloseNotifierPipelined · 54b4b946
    Ian Lance Taylor authored
    The test sends two HTTP/1.1 pipelined requests.  The first is
    completedly by the second, and as such triggers an immediate call to the
    CloseNotify channel.  The second calls the CloseNotify channel after the
    overall connection is closed.
    
    The test was passing fine on gc because the code would enter the select
    loop before running the handler, so the send on gotReq would always be
    seen first.  On gccgo the code would sometimes enter the select loop
    after the handler had already finished, meaning that the select could
    choose between gotReq and sawClose.  If it picked sawClose, it would
    never close the overall connection, and the httptest server would hang.
    The same hang could be induced with gc by adding a time.Sleep
    immediately before the select loop.
    
    Deflake the test by 1) don't close the overall connection until both
    requests have been seen; 2) don't exit the loop until both closes have
    been seen.
    
    Fixes #14231.
    
    Change-Id: I9d20c309125422ce60ac545f78bcfa337aec1c7d
    Reviewed-on: https://go-review.googlesource.com/19281Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Ian Lance Taylor <iant@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    54b4b946
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...
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...
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 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...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc 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...