]> Cypherpunks repositories - gostls13.git/commitdiff
net: test dnsconfig_unix with sample resolv.conf
authorAnfernee Yongkun Gui <anfernee.gui@gmail.com>
Wed, 18 Dec 2013 16:26:36 +0000 (08:26 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 18 Dec 2013 16:26:36 +0000 (08:26 -0800)
R=golang-dev, adg, bradfitz, mikioh.mikioh
CC=golang-dev
https://golang.org/cl/21580043

src/pkg/net/dnsclient_unix.go
src/pkg/net/dnsconfig_unix.go
src/pkg/net/dnsconfig_unix_test.go [new file with mode: 0644]
src/pkg/net/testdata/resolv.conf [new file with mode: 0644]

index 16cf420dcdb87e2cd80914496b3b05eb35f9f642..a30c9a73d7e0e920f7a8a7ee33e79ff44b39b0a4 100644 (file)
@@ -159,7 +159,8 @@ func convertRR_AAAA(records []dnsRR) []IP {
 var cfg *dnsConfig
 var dnserr error
 
-func loadConfig() { cfg, dnserr = dnsReadConfig() }
+// Assume dns config file is /etc/resolv.conf here
+func loadConfig() { cfg, dnserr = dnsReadConfig("/etc/resolv.conf") }
 
 var onceLoadConfig sync.Once
 
index d10f099b1211545e89e0b8fde627d3611178cfaa..7856ebc80de5ca45bc70c63b389c86b8cc0b1152 100644 (file)
@@ -20,9 +20,8 @@ type dnsConfig struct {
 // See resolv.conf(5) on a Linux machine.
 // TODO(rsc): Supposed to call uname() and chop the beginning
 // of the host name to get the default search domain.
-// We assume it's in resolv.conf anyway.
-func dnsReadConfig() (*dnsConfig, error) {
-       file, err := open("/etc/resolv.conf")
+func dnsReadConfig(filename string) (*dnsConfig, error) {
+       file, err := open(filename)
        if err != nil {
                return nil, &DNSConfigError{err}
        }
diff --git a/src/pkg/net/dnsconfig_unix_test.go b/src/pkg/net/dnsconfig_unix_test.go
new file mode 100644 (file)
index 0000000..b24291c
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package net
+
+import (
+       "testing"
+)
+
+func TestReadConfig(t *testing.T) {
+       dnsConfig, err := dnsReadConfig("testdata/resolv.conf")
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if len(dnsConfig.servers) != 1 {
+               t.Errorf("len(dnsConfig.servers) = %d; want %d", len(dnsConfig.servers), 1)
+       }
+       if dnsConfig.servers[0] != "[192.168.1.1]" {
+               t.Errorf("dnsConfig.servers[0] = %s; want %s", dnsConfig.servers[0], "[192.168.1.1]")
+       }
+
+       if len(dnsConfig.search) != 1 {
+               t.Errorf("len(dnsConfig.search) = %d; want %d", len(dnsConfig.search), 1)
+       }
+       if dnsConfig.search[0] != "Home" {
+               t.Errorf("dnsConfig.search[0] = %s; want %s", dnsConfig.search[0], "Home")
+       }
+
+       if dnsConfig.ndots != 5 {
+               t.Errorf("dnsConfig.ndots = %d; want %d", dnsConfig.ndots, 5)
+       }
+
+       if dnsConfig.timeout != 10 {
+               t.Errorf("dnsConfig.timeout = %d; want %d", dnsConfig.timeout, 10)
+       }
+
+       if dnsConfig.attempts != 3 {
+               t.Errorf("dnsConfig.attempts = %d; want %d", dnsConfig.attempts, 3)
+       }
+
+       if dnsConfig.rotate != true {
+               t.Errorf("dnsConfig.rotate = %t; want %t", dnsConfig.rotate, true)
+       }
+}
diff --git a/src/pkg/net/testdata/resolv.conf b/src/pkg/net/testdata/resolv.conf
new file mode 100644 (file)
index 0000000..b5972e0
--- /dev/null
@@ -0,0 +1,5 @@
+# /etc/resolv.conf
+
+domain Home
+nameserver 192.168.1.1
+options ndots:5 timeout:10 attempts:3 rotate