summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2023-01-05 14:00:25 -0500
committerGopher Robot <gobot@golang.org>2023-03-01 18:01:03 +0000
commit230765a11a9be0aa72a6dc1a8a02bad246514535 (patch)
tree3c5845170a3ea721bd9a890f4ebdcdf2fb0b93dc
parentbdd86bda09050bdeaf4e812eef69ba13ff57dfee (diff)
downloadgo-git-230765a11a9be0aa72a6dc1a8a02bad246514535.tar.gz
[release-branch.go1.20] net: delete TestTCPSelfConnect
This test is flaky, apparently due to a typo'd operator in CL 21447 that causes it to compare “same port OR IP” instead of “same port AND IP”. If we merely fixed the comparison, the test would hopefully stop being flaky itself, but we would still be left with another problem: repeatedly dialing a port that we believe to be unused can interfere with other tests, which may open the previously-unused port and then attempt a single Dial and expect it to succeed. Arbitrary other Dial calls for that port may cause the wrong connection to be accepted, leading to spurious test failures. Moreover, the test can be extremely expensive for the amount of data we hope to get from it, depending on the system's port-reuse algorithms and dial implementations. It is already scaled back by up to 1000x on a huge number of platforms due to latency, and may even be ineffective on those platforms because of the arbitrary 1ms Dial timeout. And the incremental value from it is quite low, too: it tests the workaround for what is arguably a bug in the Linux kernel, which ought to be fixed (and tested) upstream instead of worked around in every open-source project that dials local ports. Instead of trying to deflake this test, let's just get rid of it. Updates #18290. Fixes #58717. Change-Id: I8a58b93d67916a33741c9ab29ef99c49c46b32c4 Reviewed-on: https://go-review.googlesource.com/c/go/+/460657 TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Bryan Mills <bcmills@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> (cherry picked from commit e08642cae18460778ba3f7808c91cbf6d9ee9f67) Reviewed-on: https://go-review.googlesource.com/c/go/+/471155 Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Damien Neil <dneil@google.com> Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
-rw-r--r--src/net/tcpsock_test.go44
1 files changed, 0 insertions, 44 deletions
diff --git a/src/net/tcpsock_test.go b/src/net/tcpsock_test.go
index 990d34706f..35a93d1f38 100644
--- a/src/net/tcpsock_test.go
+++ b/src/net/tcpsock_test.go
@@ -617,50 +617,6 @@ func TestTCPStress(t *testing.T) {
<-done
}
-func TestTCPSelfConnect(t *testing.T) {
- if runtime.GOOS == "windows" {
- // TODO(brainman): do not know why it hangs.
- t.Skip("known-broken test on windows")
- }
-
- ln := newLocalListener(t, "tcp")
- var d Dialer
- c, err := d.Dial(ln.Addr().Network(), ln.Addr().String())
- if err != nil {
- ln.Close()
- t.Fatal(err)
- }
- network := c.LocalAddr().Network()
- laddr := *c.LocalAddr().(*TCPAddr)
- c.Close()
- ln.Close()
-
- // Try to connect to that address repeatedly.
- n := 100000
- if testing.Short() {
- n = 1000
- }
- switch runtime.GOOS {
- case "darwin", "ios", "dragonfly", "freebsd", "netbsd", "openbsd", "plan9", "illumos", "solaris", "windows":
- // Non-Linux systems take a long time to figure
- // out that there is nothing listening on localhost.
- n = 100
- }
- for i := 0; i < n; i++ {
- d.Timeout = time.Millisecond
- c, err := d.Dial(network, laddr.String())
- if err == nil {
- addr := c.LocalAddr().(*TCPAddr)
- if addr.Port == laddr.Port || addr.IP.Equal(laddr.IP) {
- t.Errorf("Dial %v should fail", addr)
- } else {
- t.Logf("Dial %v succeeded - possibly racing with other listener", addr)
- }
- c.Close()
- }
- }
-}
-
// Test that >32-bit reads work on 64-bit systems.
// On 32-bit systems this tests that maxint reads work.
func TestTCPBig(t *testing.T) {