1
0
mirror of https://github.com/golang/go synced 2024-11-17 00:14:50 -07:00

net: move 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
support go resolver there (Dial field required).
This commit is contained in:
Mateusz Poliwczak 2023-10-14 15:43:57 +02:00
parent 4a7f3ac8eb
commit 4072ad4a05
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 }