• 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
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...