mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net: deflake TestDialerDualStack
Fixes #15316. Fixes #15574. Change-Id: I3ec8bffd35b9e5123de4be983a53fc0b8c2a0895 Reviewed-on: https://go-review.googlesource.com/23242 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
086d7b0e9e
commit
1ab9428eec
2 changed files with 22 additions and 40 deletions
|
|
@ -151,10 +151,7 @@ func TestDialerDualStackFDLeak(t *testing.T) {
|
||||||
c.Close()
|
c.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dss, err := newDualStackServer([]streamListener{
|
dss, err := newDualStackServer()
|
||||||
{network: "tcp4", address: "127.0.0.1"},
|
|
||||||
{network: "tcp6", address: "::1"},
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
@ -329,10 +326,7 @@ func TestDialParallel(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, tt := range testCases {
|
for i, tt := range testCases {
|
||||||
dss, err := newDualStackServer([]streamListener{
|
dss, err := newDualStackServer()
|
||||||
{network: "tcp4", address: "127.0.0.1"},
|
|
||||||
{network: "tcp6", address: "::1"},
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
@ -449,9 +443,7 @@ func TestDialerFallbackDelay(t *testing.T) {
|
||||||
c.Close()
|
c.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dss, err := newDualStackServer([]streamListener{
|
dss, err := newDualStackServer()
|
||||||
{network: "tcp", address: "127.0.0.1"},
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
@ -504,10 +496,7 @@ func TestDialParallelSpuriousConnection(t *testing.T) {
|
||||||
c.Close()
|
c.Close()
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}
|
}
|
||||||
dss, err := newDualStackServer([]streamListener{
|
dss, err := newDualStackServer()
|
||||||
{network: "tcp4", address: "127.0.0.1"},
|
|
||||||
{network: "tcp6", address: "::1"},
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
@ -733,10 +722,7 @@ func TestDialerDualStack(t *testing.T) {
|
||||||
|
|
||||||
var timeout = 150*time.Millisecond + closedPortDelay
|
var timeout = 150*time.Millisecond + closedPortDelay
|
||||||
for _, dualstack := range []bool{false, true} {
|
for _, dualstack := range []bool{false, true} {
|
||||||
dss, err := newDualStackServer([]streamListener{
|
dss, err := newDualStackServer()
|
||||||
{network: "tcp4", address: "127.0.0.1"},
|
|
||||||
{network: "tcp6", address: "::1"},
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -184,28 +184,24 @@ func (dss *dualStackServer) teardown() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newDualStackServer(lns []streamListener) (*dualStackServer, error) {
|
func newDualStackServer() (*dualStackServer, error) {
|
||||||
dss := &dualStackServer{lns: lns, port: "0"}
|
lns, err := newDualStackListener()
|
||||||
for i := range dss.lns {
|
if err != nil {
|
||||||
ln, err := Listen(dss.lns[i].network, JoinHostPort(dss.lns[i].address, dss.port))
|
return nil, err
|
||||||
if err != nil {
|
|
||||||
for _, ln := range dss.lns[:i] {
|
|
||||||
ln.Listener.Close()
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
dss.lns[i].Listener = ln
|
|
||||||
dss.lns[i].done = make(chan bool)
|
|
||||||
if dss.port == "0" {
|
|
||||||
if _, dss.port, err = SplitHostPort(ln.Addr().String()); err != nil {
|
|
||||||
for _, ln := range dss.lns {
|
|
||||||
ln.Listener.Close()
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return dss, nil
|
_, port, err := SplitHostPort(lns[0].Addr().String())
|
||||||
|
if err != nil {
|
||||||
|
lns[0].Close()
|
||||||
|
lns[1].Close()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &dualStackServer{
|
||||||
|
lns: []streamListener{
|
||||||
|
{network: "tcp4", address: lns[0].Addr().String(), Listener: lns[0], done: make(chan bool)},
|
||||||
|
{network: "tcp6", address: lns[1].Addr().String(), Listener: lns[1], done: make(chan bool)},
|
||||||
|
},
|
||||||
|
port: port,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func transponder(ln Listener, ch chan<- error) {
|
func transponder(ln Listener, ch chan<- error) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue