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