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  }