]> Cypherpunks repositories - gostls13.git/commitdiff
net: move go/cgo resolver forcing functions to one file
authorMateusz Poliwczak <mpoliwczak34@gmail.com>
Sat, 10 Feb 2024 18:52:27 +0000 (18:52 +0000)
committerGopher Robot <gobot@golang.org>
Mon, 19 Feb 2024 20:29:27 +0000 (20:29 +0000)
The forceGoDNS/forceCgoDNS functions currently return nil
or an empty func on plan9, but they don't have to, because
we already support go resolver there (Dial field required).

Change-Id: Iba6211ca0235874f39e5fcacb3932bb16768c702
GitHub-Last-Rev: 4072ad4a05366a03749e8cfcf27efb9f198aacec
GitHub-Pull-Request: golang/go#63545
Reviewed-on: https://go-review.googlesource.com/c/go/+/534938
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Commit-Queue: Ian Lance Taylor <iant@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>

src/net/lookup_test.go
src/net/main_conf_test.go
src/net/main_noconf_test.go [deleted file]

index 57ac9a933a0d3492e79276298ac5cc1ae3b9a383..b32591a718479d46a71c14c930329489bd03cc35 100644 (file)
@@ -1509,22 +1509,6 @@ func TestLookupPortIPNetworkString(t *testing.T) {
        })
 }
 
-func allResolvers(t *testing.T, f func(t *testing.T)) {
-       t.Run("default resolver", f)
-       t.Run("forced go resolver", func(t *testing.T) {
-               if fixup := forceGoDNS(); fixup != nil {
-                       defer fixup()
-                       f(t)
-               }
-       })
-       t.Run("forced cgo resolver", func(t *testing.T) {
-               if fixup := forceCgoDNS(); fixup != nil {
-                       defer fixup()
-                       f(t)
-               }
-       })
-}
-
 func TestLookupNoSuchHost(t *testing.T) {
        mustHaveExternalNetwork(t)
 
index 307ff5dd8c47cb2d38492210fa38ad4be67bed4a..bb140240ed92c4fb813e54bbe2343e5462d9f05c 100644 (file)
@@ -2,11 +2,28 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build !plan9
-
 package net
 
-import "testing"
+import (
+       "context"
+       "runtime"
+       "testing"
+)
+
+func allResolvers(t *testing.T, f func(t *testing.T)) {
+       t.Run("default resolver", f)
+       t.Run("forced go resolver", func(t *testing.T) {
+               // On plan9 the forceGoDNS might not force the go resolver, currently
+               // it is only forced when the Resolver.Dial field is populated.
+               // See conf.go mustUseGoResolver.
+               defer forceGoDNS()()
+               f(t)
+       })
+       t.Run("forced cgo resolver", func(t *testing.T) {
+               defer forceCgoDNS()()
+               f(t)
+       })
+}
 
 // forceGoDNS forces the resolver configuration to use the pure Go resolver
 // and returns a fixup function to restore the old settings.
@@ -25,7 +42,6 @@ func forceGoDNS() func() {
 
 // forceCgoDNS forces the resolver configuration to use the cgo resolver
 // and returns a fixup function to restore the old settings.
-// (On non-Unix systems forceCgoDNS returns nil.)
 func forceCgoDNS() func() {
        c := systemConf()
        oldGo := c.netGo
@@ -48,12 +64,34 @@ func TestForceCgoDNS(t *testing.T) {
        if order != hostLookupCgo {
                t.Fatalf("hostLookupOrder returned: %v, want cgo", order)
        }
+       order, _ = systemConf().addrLookupOrder(nil, "192.0.2.1")
+       if order != hostLookupCgo {
+               t.Fatalf("addrLookupOrder returned: %v, want cgo", order)
+       }
+       if systemConf().mustUseGoResolver(nil) {
+               t.Fatal("mustUseGoResolver = true, want false")
+       }
 }
 
 func TestForceGoDNS(t *testing.T) {
+       var resolver *Resolver
+       if runtime.GOOS == "plan9" {
+               resolver = &Resolver{
+                       Dial: func(_ context.Context, _, _ string) (Conn, error) {
+                               panic("unreachable")
+                       },
+               }
+       }
        defer forceGoDNS()()
-       order, _ := systemConf().hostLookupOrder(nil, "go.dev")
+       order, _ := systemConf().hostLookupOrder(resolver, "go.dev")
        if order == hostLookupCgo {
                t.Fatalf("hostLookupOrder returned: %v, want go resolver order", order)
        }
+       order, _ = systemConf().addrLookupOrder(resolver, "192.0.2.1")
+       if order == hostLookupCgo {
+               t.Fatalf("addrLookupOrder returned: %v, want go resolver order", order)
+       }
+       if !systemConf().mustUseGoResolver(resolver) {
+               t.Fatal("mustUseGoResolver = false, want true")
+       }
 }
diff --git a/src/net/main_noconf_test.go b/src/net/main_noconf_test.go
deleted file mode 100644 (file)
index cdd7c54..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build plan9
-
-package net
-
-import "runtime"
-
-// See main_conf_test.go for what these (don't) do.
-func forceGoDNS() func() {
-       switch runtime.GOOS {
-       case "plan9":
-               return func() {}
-       default:
-               return nil
-       }
-}
-
-// See main_conf_test.go for what these (don't) do.
-func forceCgoDNS() func() { return nil }