github.com/cilium/cilium@v1.16.2/pkg/maps/tunnel/tunnel_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package tunnel 5 6 import ( 7 "net" 8 "testing" 9 10 "github.com/cilium/ebpf/rlimit" 11 "github.com/stretchr/testify/require" 12 13 cmtypes "github.com/cilium/cilium/pkg/clustermesh/types" 14 "github.com/cilium/cilium/pkg/testutils" 15 ) 16 17 func setupTunnelMapTestSuite(tb testing.TB) { 18 testutils.PrivilegedTest(tb) 19 err := rlimit.RemoveMemlock() 20 require.Nil(tb, err) 21 } 22 23 func TestClusterAwareAddressing(t *testing.T) { 24 setupTunnelMapTestSuite(t) 25 m := NewTunnelMap("test_cilium_tunnel_map") 26 27 err := m.OpenOrCreate() 28 require.Nil(t, err) 29 30 prefix0 := cmtypes.MustParseAddrCluster("10.0.0.1") 31 prefix1 := cmtypes.MustParseAddrCluster("10.0.0.1@1") 32 endpoint0 := net.ParseIP("192.168.0.1") 33 endpoint1 := net.ParseIP("192.168.1.1") 34 35 // Test insertion with bare IP 36 err = m.SetTunnelEndpoint(0, prefix0, endpoint0) 37 require.Nil(t, err) 38 39 // Test insertion with AddrCluster 40 err = m.SetTunnelEndpoint(0, prefix1, endpoint1) 41 require.Nil(t, err) 42 43 // Test if tunnel map can distinguish prefix0 and prefix1 44 ip0, err := m.GetTunnelEndpoint(prefix0) 45 require.Nil(t, err) 46 require.Equal(t, true, ip0.Equal(endpoint0)) 47 48 ip1, err := m.GetTunnelEndpoint(prefix1) 49 require.Nil(t, err) 50 require.Equal(t, true, ip1.Equal(endpoint1)) 51 52 // Delete prefix0 and check it deletes prefix0 correctly 53 err = m.DeleteTunnelEndpoint(prefix0) 54 require.Nil(t, err) 55 56 _, err = m.GetTunnelEndpoint(prefix0) 57 require.Error(t, err) 58 59 _, err = m.GetTunnelEndpoint(prefix1) 60 require.Nil(t, err) 61 62 // Delete prefix0 and check it deletes prefix0 correctly 63 err = m.DeleteTunnelEndpoint(prefix1) 64 require.Nil(t, err) 65 66 _, err = m.GetTunnelEndpoint(prefix1) 67 require.Error(t, err) 68 69 err = m.Unpin() 70 require.Nil(t, err) 71 }