github.com/moby/docker@v26.1.3+incompatible/libnetwork/sandbox_dns_unix_test.go (about) 1 //go:build !windows 2 3 package libnetwork 4 5 import ( 6 "runtime" 7 "testing" 8 9 "github.com/docker/docker/libnetwork/resolvconf" 10 "gotest.tools/v3/assert" 11 is "gotest.tools/v3/assert/cmp" 12 "gotest.tools/v3/skip" 13 ) 14 15 func TestDNSOptions(t *testing.T) { 16 skip.If(t, runtime.GOOS == "windows", "test only works on linux") 17 18 c, err := New(OptionBoltdbWithRandomDBFile(t)) 19 assert.NilError(t, err) 20 21 sb, err := c.NewSandbox("cnt1", nil) 22 assert.NilError(t, err) 23 24 cleanup := func(s *Sandbox) { 25 if err := s.Delete(); err != nil { 26 t.Error(err) 27 } 28 } 29 30 defer cleanup(sb) 31 sb.startResolver(false) 32 33 err = sb.setupDNS() 34 assert.NilError(t, err) 35 err = sb.rebuildDNS() 36 assert.NilError(t, err) 37 currRC, err := resolvconf.GetSpecific(sb.config.resolvConfPath) 38 assert.NilError(t, err) 39 dnsOptionsList := resolvconf.GetOptions(currRC.Content) 40 assert.Check(t, is.Len(dnsOptionsList, 1)) 41 assert.Check(t, is.Equal("ndots:0", dnsOptionsList[0])) 42 43 sb.config.dnsOptionsList = []string{"ndots:5"} 44 err = sb.setupDNS() 45 assert.NilError(t, err) 46 currRC, err = resolvconf.GetSpecific(sb.config.resolvConfPath) 47 assert.NilError(t, err) 48 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 49 assert.Check(t, is.Len(dnsOptionsList, 1)) 50 assert.Check(t, is.Equal("ndots:5", dnsOptionsList[0])) 51 52 err = sb.rebuildDNS() 53 assert.NilError(t, err) 54 currRC, err = resolvconf.GetSpecific(sb.config.resolvConfPath) 55 assert.NilError(t, err) 56 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 57 assert.Check(t, is.Len(dnsOptionsList, 1)) 58 assert.Check(t, is.Equal("ndots:5", dnsOptionsList[0])) 59 60 sb2, err := c.NewSandbox("cnt2", nil) 61 assert.NilError(t, err) 62 defer cleanup(sb2) 63 sb2.startResolver(false) 64 65 sb2.config.dnsOptionsList = []string{"ndots:0"} 66 err = sb2.setupDNS() 67 assert.NilError(t, err) 68 err = sb2.rebuildDNS() 69 assert.NilError(t, err) 70 currRC, err = resolvconf.GetSpecific(sb2.config.resolvConfPath) 71 assert.NilError(t, err) 72 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 73 assert.Check(t, is.Len(dnsOptionsList, 1)) 74 assert.Check(t, is.Equal("ndots:0", dnsOptionsList[0])) 75 76 sb2.config.dnsOptionsList = []string{"ndots:foobar"} 77 err = sb2.setupDNS() 78 assert.NilError(t, err) 79 err = sb2.rebuildDNS() 80 assert.NilError(t, err) 81 currRC, err = resolvconf.GetSpecific(sb2.config.resolvConfPath) 82 assert.NilError(t, err) 83 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 84 assert.Check(t, is.DeepEqual([]string{"ndots:0"}, dnsOptionsList)) 85 86 sb2.config.dnsOptionsList = []string{"ndots:-1"} 87 err = sb2.setupDNS() 88 assert.NilError(t, err) 89 err = sb2.rebuildDNS() 90 assert.NilError(t, err) 91 currRC, err = resolvconf.GetSpecific(sb2.config.resolvConfPath) 92 assert.NilError(t, err) 93 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 94 assert.Check(t, is.DeepEqual([]string{"ndots:0"}, dnsOptionsList)) 95 }