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 }