github.com/cilium/cilium@v1.16.2/operator/pkg/ciliumendpointslice/ceptocesmap_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  
    12  func TestCepToCESCounts(t *testing.T) {
    13  	testCases := []struct {
    14  		name    string
    15  		cepName CEPName
    16  		cesName CESName
    17  		count   int
    18  	}{
    19  		{
    20  			name:    "Insert CEPs - 1",
    21  			cepName: NewCEPName("cilium-adf8-kube-system", "ns"),
    22  			cesName: NewCESName("ces-dfbkjswert-twis"),
    23  			count:   1,
    24  		},
    25  		{
    26  			name:    "Insert CEPs - 2",
    27  			cepName: NewCEPName("cilium-dtyr-kube-system", "ns"),
    28  			cesName: NewCESName("ces-dfbkjswert-twis"),
    29  			count:   2,
    30  		},
    31  		{
    32  			name:    "Insert CEPs - 3",
    33  			cepName: NewCEPName("cilium-fgh8-kube-system", "ns"),
    34  			cesName: NewCESName("ces-dfbkjswert-twis"),
    35  			count:   3,
    36  		},
    37  		{
    38  			name:    "Insert CEPs - 4",
    39  			cepName: NewCEPName("cilium-cspn-kube-system", "ns"),
    40  			cesName: NewCESName("ces-dfbkjswert-twis"),
    41  			count:   4,
    42  		},
    43  		{
    44  			name:    "Check same CEP-name with CES name",
    45  			cepName: NewCEPName("cilium-cspn-kube-system", "ns"),
    46  			cesName: NewCESName("ces-dfbkjswert-0wis"),
    47  			count:   4,
    48  		},
    49  	}
    50  	cmap := newCESToCEPMapping()
    51  
    52  	// Insert new CEPs in cepCache map and check its total count
    53  	for _, tc := range testCases {
    54  		t.Run(tc.name, func(*testing.T) {
    55  			cmap.insertCES(CESName(tc.cesName), "ns")
    56  			cmap.insertCEP(CEPName(tc.cepName), CESName(tc.cesName))
    57  			assert.Equal(t, cmap.countCEPs(), tc.count, "Number of CEP entries in cmap should match with Count")
    58  			assert.Equal(t, cmap.hasCEP(tc.cepName), true, "CEP name should present in cmap")
    59  			assert.Equal(t, cmap.hasCEP(NewCEPName("not-really-cep", "ns")), false, "Random string should NOT present in cmap as Key")
    60  		})
    61  	}
    62  
    63  	// Insert and remove CEPs in cepCache and check for any stale entries present in cepCache.
    64  	for _, tc := range testCases {
    65  		t.Run(tc.name, func(*testing.T) {
    66  			cmap.insertCES(CESName(tc.cesName), "ns")
    67  			cmap.insertCEP(tc.cepName, tc.cesName)
    68  			cesName, ok := cmap.getCESName(tc.cepName)
    69  			assert.Equal(t, ok, true, "CEP name should be there in map")
    70  			assert.Equal(t, cesName, tc.cesName, "CEP name should match with cesName")
    71  			cmap.deleteCEP(tc.cepName)
    72  			assert.Equal(t, cmap.hasCEP(tc.cepName), false, "CEP name is removed from cache, so it shouldn't be in cache")
    73  		})
    74  	}
    75  
    76  }