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: 4072ad4a05
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>
This commit is contained in:
Mateusz Poliwczak 2024-02-10 18:52:27 +00:00 committed by Gopher Robot
parent 968b71bce4
commit 7ecef2e344
3 changed files with 43 additions and 43 deletions

View 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)

View 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")
}
}

View file

@ -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 }