fix: flaky with shutdown tests
This commit is contained in:
parent
268d1edc8f
commit
0ba51d62fa
2 changed files with 27 additions and 27 deletions
|
@ -48,18 +48,13 @@ func TestShutdownTCP(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
|
||||
err = router.AddRoute("HostSNI(`*`)", 0, tcp.HandlerFunc(func(conn tcp.WriteCloser) {
|
||||
for {
|
||||
_, err := http.ReadRequest(bufio.NewReader(conn))
|
||||
|
||||
if errors.Is(err, io.EOF) || (err != nil && errors.Is(err, net.ErrClosed)) {
|
||||
return
|
||||
}
|
||||
require.NoError(t, err)
|
||||
|
||||
resp := http.Response{StatusCode: http.StatusOK}
|
||||
err = resp.Write(conn)
|
||||
require.NoError(t, err)
|
||||
_, err := http.ReadRequest(bufio.NewReader(conn))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
resp := http.Response{StatusCode: http.StatusOK}
|
||||
_ = resp.Write(conn)
|
||||
}))
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -89,6 +84,7 @@ func testShutdown(t *testing.T, router *tcprouter.Router) {
|
|||
|
||||
conn, err := startEntrypoint(entryPoint, router)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { _ = conn.Close() })
|
||||
|
||||
epAddr := entryPoint.listener.Addr().String()
|
||||
|
||||
|
@ -97,14 +93,14 @@ func testShutdown(t *testing.T, router *tcprouter.Router) {
|
|||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
// We need to do a write on the conn before the shutdown to make it "exist".
|
||||
// We need to do a write on conn before the shutdown to make it "exist".
|
||||
// Because the connection indeed exists as far as TCP is concerned,
|
||||
// but since we only pass it along to the HTTP server after at least one byte is peeked,
|
||||
// the HTTP server (and hence its shutdown) does not know about the connection until that first byte peeked.
|
||||
err = request.Write(conn)
|
||||
require.NoError(t, err)
|
||||
|
||||
reader := bufio.NewReader(conn)
|
||||
reader := bufio.NewReaderSize(conn, 1)
|
||||
// Wait for first byte in response.
|
||||
_, err = reader.Peek(1)
|
||||
require.NoError(t, err)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue