github.com/cilium/cilium@v1.16.2/operator/pkg/ciliumendpointslice/manager_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package ciliumendpointslice 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 11 capi_v2a1 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2alpha1" 12 ) 13 14 func getCEP(name string, id int64) *capi_v2a1.CoreCiliumEndpoint { 15 return &capi_v2a1.CoreCiliumEndpoint{ 16 Name: name, 17 IdentityID: id, 18 } 19 } 20 21 func TestFCFSManager(t *testing.T) { 22 t.Run("Test adding new CEP to map", func(*testing.T) { 23 m := newCESManagerFcfs(2, log).(*cesManagerFcfs) 24 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 25 assert.Equal(t, 1, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 26 assert.Equal(t, 1, m.mapping.countCEPs(), "Total number of CEPs inserted is 1") 27 }) 28 t.Run("Test creating enough CESs", func(*testing.T) { 29 m := newCESManagerFcfs(2, log).(*cesManagerFcfs) 30 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 31 m.UpdateCEPMapping(getCEP("c2", 0), "ns") 32 m.UpdateCEPMapping(getCEP("c3", 0), "ns") 33 m.UpdateCEPMapping(getCEP("c4", 0), "ns") 34 m.UpdateCEPMapping(getCEP("c5", 0), "ns") 35 assert.Equal(t, 3, m.mapping.getCESCount(), "Total number of CESs allocated is 3") 36 assert.Equal(t, 5, m.mapping.countCEPs(), "Total number of CEPs inserted is 5") 37 }) 38 t.Run("Test keeping the CEPs from different namespaces in different CESs", func(*testing.T) { 39 m := newCESManagerFcfs(5, log).(*cesManagerFcfs) 40 m.UpdateCEPMapping(getCEP("c1", 0), "ns1") 41 m.UpdateCEPMapping(getCEP("c2", 0), "ns2") 42 m.UpdateCEPMapping(getCEP("c3", 0), "ns3") 43 m.UpdateCEPMapping(getCEP("c4", 0), "ns4") 44 m.UpdateCEPMapping(getCEP("c5", 0), "ns5") 45 assert.Equal(t, 5, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 46 assert.Equal(t, 5, m.mapping.countCEPs(), "Total number of CEPs inserted is 1") 47 }) 48 t.Run("Test keeping the same mapping", func(*testing.T) { 49 m := newCESManagerFcfs(2, log).(*cesManagerFcfs) 50 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 51 m.UpdateCEPMapping(getCEP("c1", 5), "ns") 52 assert.Equal(t, 1, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 53 assert.Equal(t, 1, m.mapping.countCEPs(), "Total number of CEPs inserted is 1") 54 }) 55 t.Run("Test reusing CES", func(*testing.T) { 56 m := newCESManagerFcfs(2, log).(*cesManagerFcfs) 57 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 58 m.UpdateCEPMapping(getCEP("c2", 0), "ns") 59 m.RemoveCEPMapping(getCEP("c1", 0), "ns") 60 m.UpdateCEPMapping(getCEP("c3", 0), "ns") 61 m.RemoveCEPMapping(getCEP("c2", 0), "ns") 62 m.UpdateCEPMapping(getCEP("c4", 0), "ns") 63 m.RemoveCEPMapping(getCEP("c3", 0), "ns") 64 m.UpdateCEPMapping(getCEP("c5", 0), "ns") 65 assert.Equal(t, 1, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 66 assert.Equal(t, 2, m.mapping.countCEPs(), "Total number of CEPs inserted is 2") 67 }) 68 } 69 70 func TestIdentityManager(t *testing.T) { 71 t.Run("Test adding new CEP to map", func(*testing.T) { 72 m := newCESManagerIdentity(2, log).(*cesManagerIdentity) 73 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 74 assert.Equal(t, 1, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 75 assert.Equal(t, 1, m.mapping.countCEPs(), "Total number of CEPs inserted is 1") 76 }) 77 t.Run("Test creating enough CESs", func(*testing.T) { 78 m := newCESManagerIdentity(2, log).(*cesManagerIdentity) 79 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 80 m.UpdateCEPMapping(getCEP("c2", 0), "ns") 81 m.UpdateCEPMapping(getCEP("c3", 0), "ns") 82 m.UpdateCEPMapping(getCEP("c4", 0), "ns") 83 m.UpdateCEPMapping(getCEP("c5", 0), "ns") 84 assert.Equal(t, 3, m.mapping.getCESCount(), "Total number of CESs allocated is 3") 85 assert.Equal(t, 5, m.mapping.countCEPs(), "Total number of CEPs inserted is 5") 86 }) 87 t.Run("Test keeping the CEPs from different namespaces in different CESs", func(*testing.T) { 88 m := newCESManagerIdentity(5, log).(*cesManagerIdentity) 89 m.UpdateCEPMapping(getCEP("c1", 0), "ns1") 90 m.UpdateCEPMapping(getCEP("c2", 0), "ns2") 91 m.UpdateCEPMapping(getCEP("c3", 0), "ns3") 92 m.UpdateCEPMapping(getCEP("c4", 0), "ns4") 93 m.UpdateCEPMapping(getCEP("c5", 0), "ns5") 94 assert.Equal(t, 5, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 95 assert.Equal(t, 5, m.mapping.countCEPs(), "Total number of CEPs inserted is 1") 96 }) 97 t.Run("Test grouping by id", func(*testing.T) { 98 m := newCESManagerIdentity(2, log).(*cesManagerIdentity) 99 m.UpdateCEPMapping(getCEP("c1", 1), "ns") 100 m.UpdateCEPMapping(getCEP("c2", 2), "ns") 101 m.UpdateCEPMapping(getCEP("c3", 3), "ns") 102 m.UpdateCEPMapping(getCEP("c4", 4), "ns") 103 m.UpdateCEPMapping(getCEP("c5", 4), "ns") 104 assert.Equal(t, 4, m.mapping.getCESCount(), "Total number of CESs allocated is 4") 105 assert.Equal(t, 5, m.mapping.countCEPs(), "Total number of CEPs inserted is 5") 106 }) 107 t.Run("Test keeping the same mapping", func(*testing.T) { 108 m := newCESManagerIdentity(2, log).(*cesManagerIdentity) 109 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 110 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 111 assert.Equal(t, 1, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 112 assert.Equal(t, 1, m.mapping.countCEPs(), "Total number of CEPs inserted is 1") 113 }) 114 t.Run("Test moving CEP when ID changed", func(*testing.T) { 115 m := newCESManagerIdentity(2, log).(*cesManagerIdentity) 116 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 117 m.UpdateCEPMapping(getCEP("c1", 1), "ns") 118 assert.Equal(t, 2, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 119 assert.Equal(t, 1, m.mapping.countCEPs(), "Total number of CEPs inserted is 1") 120 }) 121 t.Run("Test reusing CES", func(*testing.T) { 122 m := newCESManagerIdentity(2, log).(*cesManagerIdentity) 123 m.UpdateCEPMapping(getCEP("c1", 0), "ns") 124 m.UpdateCEPMapping(getCEP("c2", 0), "ns") 125 m.RemoveCEPMapping(getCEP("c1", 0), "ns") 126 m.UpdateCEPMapping(getCEP("c3", 0), "ns") 127 m.RemoveCEPMapping(getCEP("c2", 0), "ns") 128 m.UpdateCEPMapping(getCEP("c4", 0), "ns") 129 m.RemoveCEPMapping(getCEP("c3", 0), "ns") 130 m.UpdateCEPMapping(getCEP("c5", 0), "ns") 131 assert.Equal(t, 1, m.mapping.getCESCount(), "Total number of CESs allocated is 1") 132 assert.Equal(t, 2, m.mapping.countCEPs(), "Total number of CEPs inserted is 2") 133 }) 134 }