github.com/cilium/cilium@v1.16.2/pkg/maps/ctmap/ctmap_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package ctmap 5 6 import ( 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/require" 11 12 "github.com/cilium/cilium/pkg/defaults" 13 "github.com/cilium/cilium/pkg/option" 14 ) 15 16 func init() { 17 InitMapInfo(true, true, true) 18 } 19 20 func TestCalculateInterval(t *testing.T) { 21 cachedGCInterval = time.Duration(0) 22 23 require.Equal(t, time.Minute, calculateInterval(time.Minute, 0.1)) // no change 24 require.Equal(t, time.Minute, calculateInterval(time.Minute, 0.2)) // no change 25 require.Equal(t, time.Minute, calculateInterval(time.Minute, 0.25)) // no change 26 27 require.Equal(t, 36*time.Second, calculateInterval(time.Minute, 0.40)) 28 require.Equal(t, 24*time.Second, calculateInterval(time.Minute, 0.60)) 29 30 require.Equal(t, 15*time.Second, calculateInterval(10*time.Second, 0.01)) 31 require.Equal(t, 15*time.Second, calculateInterval(10*time.Second, 0.04)) 32 33 require.Equal(t, defaults.ConntrackGCMinInterval, calculateInterval(1*time.Second, 0.9)) 34 35 require.Equal(t, defaults.ConntrackGCMaxLRUInterval, calculateInterval(24*time.Hour, 0.01)) 36 } 37 38 func TestGetInterval(t *testing.T) { 39 cachedGCInterval = time.Minute 40 require.Equal(t, time.Minute, GetInterval(cachedGCInterval, 0.1)) 41 42 // Setting ConntrackGCInterval overrides the calculation 43 oldInterval := option.Config.ConntrackGCInterval 44 option.Config.ConntrackGCInterval = 10 * time.Second 45 require.Equal(t, 10*time.Second, GetInterval(cachedGCInterval, 0.1)) 46 option.Config.ConntrackGCInterval = oldInterval 47 require.Equal(t, time.Minute, GetInterval(cachedGCInterval, 0.1)) 48 49 // Setting ConntrackGCMaxInterval limits the maximum interval 50 oldMaxInterval := option.Config.ConntrackGCMaxInterval 51 option.Config.ConntrackGCMaxInterval = 20 * time.Second 52 require.Equal(t, 20*time.Second, GetInterval(cachedGCInterval, 0.1)) 53 option.Config.ConntrackGCMaxInterval = oldMaxInterval 54 require.Equal(t, time.Minute, GetInterval(cachedGCInterval, 0.1)) 55 56 cachedGCInterval = time.Duration(0) 57 } 58 59 func TestFilterMapsByProto(t *testing.T) { 60 maps := []*Map{ 61 newMap("tcp4", mapTypeIPv4TCPGlobal), 62 newMap("any4", mapTypeIPv4AnyGlobal), 63 newMap("tcp6", mapTypeIPv6TCPGlobal), 64 newMap("any6", mapTypeIPv6AnyGlobal), 65 } 66 67 ctMapTCP, ctMapAny := FilterMapsByProto(maps, CTMapIPv4) 68 require.Equal(t, mapTypeIPv4TCPGlobal, ctMapTCP.mapType) 69 require.Equal(t, mapTypeIPv4AnyGlobal, ctMapAny.mapType) 70 71 ctMapTCP, ctMapAny = FilterMapsByProto(maps, CTMapIPv6) 72 require.Equal(t, mapTypeIPv6TCPGlobal, ctMapTCP.mapType) 73 require.Equal(t, mapTypeIPv6AnyGlobal, ctMapAny.mapType) 74 75 maps = maps[0:2] // remove ipv6 maps 76 ctMapTCP, ctMapAny = FilterMapsByProto(maps, CTMapIPv6) 77 require.Nil(t, ctMapTCP) 78 require.Nil(t, ctMapAny) 79 }