github.com/Heebron/moby@v0.0.0-20221111184709-6eab4f55faf7/libnetwork/service_common_test.go (about) 1 package libnetwork 2 3 import ( 4 "net" 5 "runtime" 6 "testing" 7 8 "github.com/docker/docker/libnetwork/resolvconf" 9 "gotest.tools/v3/assert" 10 is "gotest.tools/v3/assert/cmp" 11 "gotest.tools/v3/skip" 12 ) 13 14 func TestCleanupServiceDiscovery(t *testing.T) { 15 skip.If(t, runtime.GOOS == "windows", "test only works on linux") 16 17 c, err := New() 18 assert.NilError(t, err) 19 defer c.Stop() 20 21 cleanup := func(n Network) { 22 if err := n.Delete(); err != nil { 23 t.Error(err) 24 } 25 } 26 n1, err := c.NewNetwork("bridge", "net1", "", nil) 27 assert.NilError(t, err) 28 defer cleanup(n1) 29 30 n2, err := c.NewNetwork("bridge", "net2", "", nil) 31 assert.NilError(t, err) 32 defer cleanup(n2) 33 34 n1.(*network).addSvcRecords("N1ep1", "service_test", "serviceID1", net.ParseIP("192.168.0.1"), net.IP{}, true, "test") 35 n1.(*network).addSvcRecords("N2ep2", "service_test", "serviceID2", net.ParseIP("192.168.0.2"), net.IP{}, true, "test") 36 37 n2.(*network).addSvcRecords("N2ep1", "service_test", "serviceID1", net.ParseIP("192.168.1.1"), net.IP{}, true, "test") 38 n2.(*network).addSvcRecords("N2ep2", "service_test", "serviceID2", net.ParseIP("192.168.1.2"), net.IP{}, true, "test") 39 40 if len(c.(*controller).svcRecords) != 2 { 41 t.Fatalf("Service record not added correctly:%v", c.(*controller).svcRecords) 42 } 43 44 // cleanup net1 45 c.(*controller).cleanupServiceDiscovery(n1.ID()) 46 47 if len(c.(*controller).svcRecords) != 1 { 48 t.Fatalf("Service record not cleaned correctly:%v", c.(*controller).svcRecords) 49 } 50 51 c.(*controller).cleanupServiceDiscovery("") 52 53 if len(c.(*controller).svcRecords) != 0 { 54 t.Fatalf("Service record not cleaned correctly:%v", c.(*controller).svcRecords) 55 } 56 } 57 58 func TestDNSOptions(t *testing.T) { 59 skip.If(t, runtime.GOOS == "windows", "test only works on linux") 60 61 c, err := New() 62 assert.NilError(t, err) 63 64 sb, err := c.(*controller).NewSandbox("cnt1", nil) 65 assert.NilError(t, err) 66 67 cleanup := func(s Sandbox) { 68 if err := s.Delete(); err != nil { 69 t.Error(err) 70 } 71 } 72 73 defer cleanup(sb) 74 sb.(*sandbox).startResolver(false) 75 76 err = sb.(*sandbox).setupDNS() 77 assert.NilError(t, err) 78 err = sb.(*sandbox).rebuildDNS() 79 assert.NilError(t, err) 80 currRC, err := resolvconf.GetSpecific(sb.(*sandbox).config.resolvConfPath) 81 assert.NilError(t, err) 82 dnsOptionsList := resolvconf.GetOptions(currRC.Content) 83 assert.Check(t, is.Len(dnsOptionsList, 1)) 84 assert.Check(t, is.Equal("ndots:0", dnsOptionsList[0])) 85 86 sb.(*sandbox).config.dnsOptionsList = []string{"ndots:5"} 87 err = sb.(*sandbox).setupDNS() 88 assert.NilError(t, err) 89 currRC, err = resolvconf.GetSpecific(sb.(*sandbox).config.resolvConfPath) 90 assert.NilError(t, err) 91 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 92 assert.Check(t, is.Len(dnsOptionsList, 1)) 93 assert.Check(t, is.Equal("ndots:5", dnsOptionsList[0])) 94 95 err = sb.(*sandbox).rebuildDNS() 96 assert.NilError(t, err) 97 currRC, err = resolvconf.GetSpecific(sb.(*sandbox).config.resolvConfPath) 98 assert.NilError(t, err) 99 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 100 assert.Check(t, is.Len(dnsOptionsList, 1)) 101 assert.Check(t, is.Equal("ndots:5", dnsOptionsList[0])) 102 103 sb2, err := c.(*controller).NewSandbox("cnt2", nil) 104 assert.NilError(t, err) 105 defer cleanup(sb2) 106 sb2.(*sandbox).startResolver(false) 107 108 sb2.(*sandbox).config.dnsOptionsList = []string{"ndots:0"} 109 err = sb2.(*sandbox).setupDNS() 110 assert.NilError(t, err) 111 err = sb2.(*sandbox).rebuildDNS() 112 assert.NilError(t, err) 113 currRC, err = resolvconf.GetSpecific(sb2.(*sandbox).config.resolvConfPath) 114 assert.NilError(t, err) 115 dnsOptionsList = resolvconf.GetOptions(currRC.Content) 116 assert.Check(t, is.Len(dnsOptionsList, 1)) 117 assert.Check(t, is.Equal("ndots:0", dnsOptionsList[0])) 118 119 sb2.(*sandbox).config.dnsOptionsList = []string{"ndots:foobar"} 120 err = sb2.(*sandbox).setupDNS() 121 assert.NilError(t, err) 122 err = sb2.(*sandbox).rebuildDNS() 123 assert.Error(t, err, "invalid number for ndots option: foobar") 124 125 sb2.(*sandbox).config.dnsOptionsList = []string{"ndots:-1"} 126 err = sb2.(*sandbox).setupDNS() 127 assert.NilError(t, err) 128 err = sb2.(*sandbox).rebuildDNS() 129 assert.Error(t, err, "invalid number for ndots option: -1") 130 }