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  }