github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/libnetwork/ipamutils/utils_test.go (about)

     1  package ipamutils
     2  
     3  import (
     4  	"net"
     5  	"testing"
     6  
     7  	"gotest.tools/v3/assert"
     8  	is "gotest.tools/v3/assert/cmp"
     9  )
    10  
    11  func initBroadPredefinedNetworks() []*net.IPNet {
    12  	pl := make([]*net.IPNet, 0, 31)
    13  	mask := []byte{255, 255, 0, 0}
    14  	for i := 17; i < 32; i++ {
    15  		pl = append(pl, &net.IPNet{IP: []byte{172, byte(i), 0, 0}, Mask: mask})
    16  	}
    17  	mask20 := []byte{255, 255, 240, 0}
    18  	for i := 0; i < 16; i++ {
    19  		pl = append(pl, &net.IPNet{IP: []byte{192, 168, byte(i << 4), 0}, Mask: mask20})
    20  	}
    21  	return pl
    22  }
    23  
    24  func initGranularPredefinedNetworks() []*net.IPNet {
    25  	pl := make([]*net.IPNet, 0, 256*256)
    26  	mask := []byte{255, 255, 255, 0}
    27  	for i := 0; i < 256; i++ {
    28  		for j := 0; j < 256; j++ {
    29  			pl = append(pl, &net.IPNet{IP: []byte{10, byte(i), byte(j), 0}, Mask: mask})
    30  		}
    31  	}
    32  	return pl
    33  }
    34  
    35  func initGlobalScopeNetworks() []*net.IPNet {
    36  	pl := make([]*net.IPNet, 0, 256*256)
    37  	mask := []byte{255, 255, 255, 0}
    38  	for i := 0; i < 256; i++ {
    39  		for j := 0; j < 256; j++ {
    40  			pl = append(pl, &net.IPNet{IP: []byte{30, byte(i), byte(j), 0}, Mask: mask})
    41  		}
    42  	}
    43  	return pl
    44  }
    45  
    46  func TestDefaultNetwork(t *testing.T) {
    47  	for _, nw := range GetGlobalScopeDefaultNetworks() {
    48  		if ones, bits := nw.Mask.Size(); bits != 32 || ones != 24 {
    49  			t.Fatalf("Unexpected size for network in granular list: %v", nw)
    50  		}
    51  	}
    52  
    53  	for _, nw := range GetLocalScopeDefaultNetworks() {
    54  		if ones, bits := nw.Mask.Size(); bits != 32 || (ones != 20 && ones != 16) {
    55  			t.Fatalf("Unexpected size for network in broad list: %v", nw)
    56  		}
    57  	}
    58  
    59  	originalBroadNets := initBroadPredefinedNetworks()
    60  	m := make(map[string]bool)
    61  	for _, v := range originalBroadNets {
    62  		m[v.String()] = true
    63  	}
    64  	for _, nw := range GetLocalScopeDefaultNetworks() {
    65  		_, ok := m[nw.String()]
    66  		assert.Check(t, ok)
    67  		delete(m, nw.String())
    68  	}
    69  
    70  	assert.Check(t, is.Len(m, 0))
    71  
    72  	originalGranularNets := initGranularPredefinedNetworks()
    73  
    74  	m = make(map[string]bool)
    75  	for _, v := range originalGranularNets {
    76  		m[v.String()] = true
    77  	}
    78  	for _, nw := range GetGlobalScopeDefaultNetworks() {
    79  		_, ok := m[nw.String()]
    80  		assert.Check(t, ok)
    81  		delete(m, nw.String())
    82  	}
    83  
    84  	assert.Check(t, is.Len(m, 0))
    85  }
    86  
    87  func TestConfigGlobalScopeDefaultNetworks(t *testing.T) {
    88  	err := ConfigGlobalScopeDefaultNetworks([]*NetworkToSplit{{"30.0.0.0/8", 24}})
    89  	assert.NilError(t, err)
    90  
    91  	originalGlobalScopeNetworks := initGlobalScopeNetworks()
    92  	m := make(map[string]bool)
    93  	for _, v := range originalGlobalScopeNetworks {
    94  		m[v.String()] = true
    95  	}
    96  	for _, nw := range GetGlobalScopeDefaultNetworks() {
    97  		_, ok := m[nw.String()]
    98  		assert.Check(t, ok)
    99  		delete(m, nw.String())
   100  	}
   101  
   102  	assert.Check(t, is.Len(m, 0))
   103  }