1
0
mirror of https://github.com/golang/go synced 2024-09-30 16:18:35 -06:00

net: convert many Close tests to use parallel subtests

Also set a deadline in TestCloseWrite so that we can more easily
determine which kind of connection is getting stuck on the
darwin-arm64-corellium builder (#34837).

Change-Id: I8ccacbf436e8e493fb2298a79b17e0af8fc6eb81
Reviewed-on: https://go-review.googlesource.com/c/go/+/227588
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Bryan C. Mills 2020-04-08 12:51:50 -04:00
parent 98b6c6aca6
commit c1f0edae04

View File

@ -23,12 +23,15 @@ func TestCloseRead(t *testing.T) {
case "plan9":
t.Skipf("not supported on %s", runtime.GOOS)
}
t.Parallel()
for _, network := range []string{"tcp", "unix", "unixpacket"} {
network := network
t.Run(network, func(t *testing.T) {
if !testableNetwork(network) {
t.Logf("skipping %s test", network)
continue
t.Skipf("network %s is not testable on the current platform", network)
}
t.Parallel()
ln, err := newLocalListener(network)
if err != nil {
@ -67,6 +70,7 @@ func TestCloseRead(t *testing.T) {
if n != 0 || err == nil {
t.Fatalf("got (%d, %v); want (0, error)", n, err)
}
})
}
}
@ -76,12 +80,30 @@ func TestCloseWrite(t *testing.T) {
t.Skipf("not supported on %s", runtime.GOOS)
}
t.Parallel()
deadline, _ := t.Deadline()
if !deadline.IsZero() {
// Leave 10% headroom on the deadline to report errors and clean up.
deadline = deadline.Add(-time.Until(deadline) / 10)
}
for _, network := range []string{"tcp", "unix", "unixpacket"} {
network := network
t.Run(network, func(t *testing.T) {
if !testableNetwork(network) {
t.Skipf("network %s is not testable on the current platform", network)
}
t.Parallel()
handler := func(ls *localServer, ln Listener) {
c, err := ln.Accept()
if err != nil {
t.Error(err)
return
}
if !deadline.IsZero() {
c.SetDeadline(deadline)
}
defer c.Close()
var b [1]byte
@ -110,12 +132,6 @@ func TestCloseWrite(t *testing.T) {
}
}
for _, network := range []string{"tcp", "unix", "unixpacket"} {
if !testableNetwork(network) {
t.Logf("skipping %s test", network)
continue
}
ls, err := newLocalServer(network)
if err != nil {
t.Fatal(err)
@ -129,6 +145,9 @@ func TestCloseWrite(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if !deadline.IsZero() {
c.SetDeadline(deadline)
}
switch network {
case "unix", "unixpacket":
defer os.Remove(c.LocalAddr().String())
@ -156,15 +175,19 @@ func TestCloseWrite(t *testing.T) {
if err == nil {
t.Fatalf("got (%d, %v); want (any, error)", n, err)
}
})
}
}
func TestConnClose(t *testing.T) {
t.Parallel()
for _, network := range []string{"tcp", "unix", "unixpacket"} {
network := network
t.Run(network, func(t *testing.T) {
if !testableNetwork(network) {
t.Logf("skipping %s test", network)
continue
t.Skipf("network %s is not testable on the current platform", network)
}
t.Parallel()
ln, err := newLocalListener(network)
if err != nil {
@ -197,15 +220,19 @@ func TestConnClose(t *testing.T) {
if n != 0 || err == nil {
t.Fatalf("got (%d, %v); want (0, error)", n, err)
}
})
}
}
func TestListenerClose(t *testing.T) {
t.Parallel()
for _, network := range []string{"tcp", "unix", "unixpacket"} {
network := network
t.Run(network, func(t *testing.T) {
if !testableNetwork(network) {
t.Logf("skipping %s test", network)
continue
t.Skipf("network %s is not testable on the current platform", network)
}
t.Parallel()
ln, err := newLocalListener(network)
if err != nil {
@ -251,15 +278,19 @@ func TestListenerClose(t *testing.T) {
cc.Close()
}
}
})
}
}
func TestPacketConnClose(t *testing.T) {
t.Parallel()
for _, network := range []string{"udp", "unixgram"} {
network := network
t.Run(network, func(t *testing.T) {
if !testableNetwork(network) {
t.Logf("skipping %s test", network)
continue
t.Skipf("network %s is not testable on the current platform", network)
}
t.Parallel()
c, err := newLocalPacketListener(network)
if err != nil {
@ -282,6 +313,7 @@ func TestPacketConnClose(t *testing.T) {
if n != 0 || err == nil {
t.Fatalf("got (%d, %v); want (0, error)", n, err)
}
})
}
}
@ -366,11 +398,14 @@ func TestAcceptIgnoreAbortedConnRequest(t *testing.T) {
}
func TestZeroByteRead(t *testing.T) {
t.Parallel()
for _, network := range []string{"tcp", "unix", "unixpacket"} {
network := network
t.Run(network, func(t *testing.T) {
if !testableNetwork(network) {
t.Logf("skipping %s test", network)
continue
t.Skipf("network %s is not testable on the current platform", network)
}
t.Parallel()
ln, err := newLocalListener(network)
if err != nil {
@ -392,7 +427,7 @@ func TestZeroByteRead(t *testing.T) {
defer c.Close()
sc := <-connc
if sc == nil {
continue
return
}
defer sc.Close()
@ -416,6 +451,7 @@ func TestZeroByteRead(t *testing.T) {
if n != 0 || err != nil {
t.Errorf("%s: zero byte server read = %v, %v; want 0, nil", network, n, err)
}
})
}
}