github.com/cilium/cilium@v1.16.2/pkg/maps/nodemap/node_map_privileged_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package nodemap 5 6 import ( 7 "net" 8 "testing" 9 10 "github.com/cilium/ebpf/rlimit" 11 "github.com/stretchr/testify/require" 12 13 "github.com/cilium/cilium/pkg/bpf" 14 "github.com/cilium/cilium/pkg/testutils" 15 ) 16 17 func setupNodeMapSuite(tb testing.TB) { 18 testutils.PrivilegedTest(tb) 19 20 bpf.CheckOrMountFS("") 21 err := rlimit.RemoveMemlock() 22 require.Nil(tb, err) 23 } 24 25 func TestNodeMap(t *testing.T) { 26 setupNodeMapSuite(t) 27 nodeMap := newMap("test_cilium_node_map", defaultConfig) 28 err := nodeMap.init() 29 require.Nil(t, err) 30 defer nodeMap.bpfMap.Unpin() 31 32 bpfNodeIDMap := map[uint16]string{} 33 toMap := func(key *NodeKey, val *NodeValue) { 34 address := key.IP.String() 35 if key.Family == bpf.EndpointKeyIPv4 { 36 address = net.IP(key.IP[:net.IPv4len]).String() 37 } 38 bpfNodeIDMap[val.NodeID] = address 39 } 40 41 err = nodeMap.IterateWithCallback(toMap) 42 require.Nil(t, err) 43 require.Equal(t, 0, len(bpfNodeIDMap)) 44 45 err = nodeMap.Update(net.ParseIP("10.1.0.0"), 10) 46 require.Nil(t, err) 47 err = nodeMap.Update(net.ParseIP("10.1.0.1"), 20) 48 require.Nil(t, err) 49 50 bpfNodeIDMap = map[uint16]string{} 51 err = nodeMap.IterateWithCallback(toMap) 52 require.Nil(t, err) 53 require.Equal(t, 2, len(bpfNodeIDMap)) 54 55 err = nodeMap.Delete(net.ParseIP("10.1.0.0")) 56 require.Nil(t, err) 57 58 bpfNodeIDMap = map[uint16]string{} 59 err = nodeMap.IterateWithCallback(toMap) 60 require.Nil(t, err) 61 require.Equal(t, 1, len(bpfNodeIDMap)) 62 }