github.com/cilium/cilium@v1.16.2/pkg/envoy/resources_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package envoy 5 6 import ( 7 "testing" 8 9 envoyAPI "github.com/cilium/proxy/go/cilium/api" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestHandleIPUpsert(t *testing.T) { 14 cache := newNPHDSCache(nil) 15 16 msg, err := cache.Lookup(NetworkPolicyHostsTypeURL, "123") 17 require.NoError(t, err) 18 require.Nil(t, msg) 19 20 err = cache.handleIPUpsert(nil, "123", "1.2.3.0/32", 123) 21 require.NoError(t, err) 22 23 msg, err = cache.Lookup(NetworkPolicyHostsTypeURL, "123") 24 require.NoError(t, err) 25 require.NotNil(t, msg) 26 npHost := msg.(*envoyAPI.NetworkPolicyHosts) 27 require.NotNil(t, npHost) 28 require.Equal(t, uint64(123), npHost.Policy) 29 require.Equal(t, 1, len(npHost.HostAddresses)) 30 require.Equal(t, "1.2.3.0/32", npHost.HostAddresses[0]) 31 32 // Another address 33 err = cache.handleIPUpsert(npHost, "123", "::1/128", 123) 34 require.NoError(t, err) 35 36 msg, err = cache.Lookup(NetworkPolicyHostsTypeURL, "123") 37 require.NoError(t, err) 38 require.NotNil(t, msg) 39 npHost = msg.(*envoyAPI.NetworkPolicyHosts) 40 require.NotNil(t, npHost) 41 require.Equal(t, uint64(123), npHost.Policy) 42 require.Equal(t, 2, len(npHost.HostAddresses)) 43 require.Equal(t, "1.2.3.0/32", npHost.HostAddresses[0]) 44 require.Equal(t, "::1/128", npHost.HostAddresses[1]) 45 46 // Check that duplicates are not added, and not erroring out 47 err = cache.handleIPUpsert(npHost, "123", "1.2.3.0/32", 123) 48 require.NoError(t, err) 49 50 msg, err = cache.Lookup(NetworkPolicyHostsTypeURL, "123") 51 require.NoError(t, err) 52 require.NotNil(t, msg) 53 npHost = msg.(*envoyAPI.NetworkPolicyHosts) 54 require.NotNil(t, npHost) 55 require.Equal(t, uint64(123), npHost.Policy) 56 require.Equal(t, 2, len(npHost.HostAddresses)) 57 require.Equal(t, "1.2.3.0/32", npHost.HostAddresses[0]) 58 require.Equal(t, "::1/128", npHost.HostAddresses[1]) 59 }