From 7ecef2e3448db347901826c2b58049e73391d631 Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Sat, 10 Feb 2024 18:52:27 +0000 Subject: [PATCH] net: move go/cgo resolver forcing functions to one file 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 Reviewed-by: Ian Lance Taylor Commit-Queue: Ian Lance Taylor LUCI-TryBot-Result: Go LUCI Auto-Submit: Ian Lance Taylor --- src/net/lookup_test.go | 16 ------------- src/net/main_conf_test.go | 48 +++++++++++++++++++++++++++++++++---- src/net/main_noconf_test.go | 22 ----------------- 3 files changed, 43 insertions(+), 43 deletions(-) delete mode 100644 src/net/main_noconf_test.go diff --git a/src/net/lookup_test.go b/src/net/lookup_test.go index 57ac9a933a..b32591a718 100644 --- a/src/net/lookup_test.go +++ b/src/net/lookup_test.go @@ -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) diff --git a/src/net/main_conf_test.go b/src/net/main_conf_test.go index 307ff5dd8c..bb140240ed 100644 --- a/src/net/main_conf_test.go +++ b/src/net/main_conf_test.go @@ -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 index cdd7c54805..0000000000 --- a/src/net/main_noconf_test.go +++ /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 } -- 2.48.1