Anfernee Yongkun Gui | b3f38b4 | 2013-12-18 08:26:36 -0800 | [diff] [blame] | 1 | // Copyright 2013 The Go Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
Mikio Hara | ace8bc3 | 2014-04-30 23:26:07 +0900 | [diff] [blame] | 5 | // +build darwin dragonfly freebsd linux netbsd openbsd solaris |
Anfernee Yongkun Gui | b3f38b4 | 2013-12-18 08:26:36 -0800 | [diff] [blame] | 6 | |
| 7 | package net |
| 8 | |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 9 | import ( |
Alex A Skinner | f390135 | 2015-04-25 20:50:21 -0400 | [diff] [blame] | 10 | "os" |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 11 | "reflect" |
| 12 | "testing" |
| 13 | ) |
| 14 | |
| 15 | var dnsReadConfigTests = []struct { |
| 16 | name string |
Brad Fitzpatrick | 4a0ba7a | 2015-04-16 14:33:25 -0700 | [diff] [blame] | 17 | want *dnsConfig |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 18 | }{ |
| 19 | { |
| 20 | name: "testdata/resolv.conf", |
Brad Fitzpatrick | 4a0ba7a | 2015-04-16 14:33:25 -0700 | [diff] [blame] | 21 | want: &dnsConfig{ |
| 22 | servers: []string{"8.8.8.8", "2001:4860:4860::8888", "fe80::1%lo0"}, |
| 23 | search: []string{"localdomain"}, |
| 24 | ndots: 5, |
| 25 | timeout: 10, |
| 26 | attempts: 3, |
| 27 | rotate: true, |
| 28 | unknownOpt: true, // the "options attempts 3" line |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 29 | }, |
| 30 | }, |
| 31 | { |
| 32 | name: "testdata/domain-resolv.conf", |
Brad Fitzpatrick | 4a0ba7a | 2015-04-16 14:33:25 -0700 | [diff] [blame] | 33 | want: &dnsConfig{ |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 34 | servers: []string{"8.8.8.8"}, |
| 35 | search: []string{"localdomain"}, |
| 36 | ndots: 1, |
| 37 | timeout: 5, |
| 38 | attempts: 2, |
| 39 | }, |
| 40 | }, |
| 41 | { |
| 42 | name: "testdata/search-resolv.conf", |
Brad Fitzpatrick | 4a0ba7a | 2015-04-16 14:33:25 -0700 | [diff] [blame] | 43 | want: &dnsConfig{ |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 44 | servers: []string{"8.8.8.8"}, |
| 45 | search: []string{"test", "invalid"}, |
| 46 | ndots: 1, |
| 47 | timeout: 5, |
| 48 | attempts: 2, |
| 49 | }, |
| 50 | }, |
| 51 | { |
| 52 | name: "testdata/empty-resolv.conf", |
Brad Fitzpatrick | 4a0ba7a | 2015-04-16 14:33:25 -0700 | [diff] [blame] | 53 | want: &dnsConfig{ |
Alex A Skinner | f390135 | 2015-04-25 20:50:21 -0400 | [diff] [blame] | 54 | servers: defaultNS, |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 55 | ndots: 1, |
| 56 | timeout: 5, |
| 57 | attempts: 2, |
| 58 | }, |
| 59 | }, |
Brad Fitzpatrick | 4a0ba7a | 2015-04-16 14:33:25 -0700 | [diff] [blame] | 60 | { |
| 61 | name: "testdata/openbsd-resolv.conf", |
| 62 | want: &dnsConfig{ |
| 63 | ndots: 1, |
| 64 | timeout: 5, |
| 65 | attempts: 2, |
| 66 | lookup: []string{"file", "bind"}, |
| 67 | servers: []string{"169.254.169.254", "10.240.0.1"}, |
| 68 | search: []string{"c.symbolic-datum-552.internal."}, |
| 69 | }, |
| 70 | }, |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 71 | } |
Anfernee Yongkun Gui | b3f38b4 | 2013-12-18 08:26:36 -0800 | [diff] [blame] | 72 | |
Mikio Hara | efd1d05 | 2013-12-19 13:02:06 +0900 | [diff] [blame] | 73 | func TestDNSReadConfig(t *testing.T) { |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 74 | for _, tt := range dnsReadConfigTests { |
Alex A Skinner | f390135 | 2015-04-25 20:50:21 -0400 | [diff] [blame] | 75 | conf := dnsReadConfig(tt.name) |
| 76 | if conf.err != nil { |
| 77 | t.Fatal(conf.err) |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 78 | } |
Brad Fitzpatrick | 4a0ba7a | 2015-04-16 14:33:25 -0700 | [diff] [blame] | 79 | if !reflect.DeepEqual(conf, tt.want) { |
Mikio Hara | f77e10f | 2015-05-01 12:38:42 +0900 | [diff] [blame] | 80 | t.Errorf("%s:\ngot: %+v\nwant: %+v", tt.name, conf, tt.want) |
Mikio Hara | ced0ba5 | 2014-09-04 10:00:30 +0900 | [diff] [blame] | 81 | } |
Anfernee Yongkun Gui | b3f38b4 | 2013-12-18 08:26:36 -0800 | [diff] [blame] | 82 | } |
| 83 | } |
Alex A Skinner | f390135 | 2015-04-25 20:50:21 -0400 | [diff] [blame] | 84 | |
| 85 | func TestDNSReadMissingFile(t *testing.T) { |
| 86 | conf := dnsReadConfig("a-nonexistent-file") |
| 87 | if !os.IsNotExist(conf.err) { |
Mikio Hara | f77e10f | 2015-05-01 12:38:42 +0900 | [diff] [blame] | 88 | t.Errorf("missing resolv.conf:\ngot: %v\nwant: %v", conf.err, os.ErrNotExist) |
Alex A Skinner | f390135 | 2015-04-25 20:50:21 -0400 | [diff] [blame] | 89 | } |
| 90 | conf.err = nil |
| 91 | want := &dnsConfig{ |
| 92 | servers: defaultNS, |
| 93 | ndots: 1, |
| 94 | timeout: 5, |
| 95 | attempts: 2, |
| 96 | } |
| 97 | if !reflect.DeepEqual(conf, want) { |
Mikio Hara | f77e10f | 2015-05-01 12:38:42 +0900 | [diff] [blame] | 98 | t.Errorf("missing resolv.conf:\ngot: %+v\nwant: %+v", conf, want) |
Alex A Skinner | f390135 | 2015-04-25 20:50:21 -0400 | [diff] [blame] | 99 | } |
| 100 | } |