github.com/cilium/cilium@v1.16.2/operator/pkg/ciliumenvoyconfig/envoy_config_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package ciliumenvoyconfig 5 6 import ( 7 "testing" 8 9 envoy_config_cluster_v3 "github.com/cilium/proxy/go/envoy/config/cluster/v3" 10 envoy_config_listener "github.com/cilium/proxy/go/envoy/config/listener/v3" 11 envoy_config_route_v3 "github.com/cilium/proxy/go/envoy/config/route/v3" 12 "github.com/stretchr/testify/require" 13 "google.golang.org/protobuf/proto" 14 corev1 "k8s.io/api/core/v1" 15 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 16 ) 17 18 func Test_getClusterResources(t *testing.T) { 19 r := &ciliumEnvoyConfigReconciler{} 20 res, err := r.getClusterResources(&corev1.Service{ 21 ObjectMeta: metav1.ObjectMeta{ 22 Name: "dummy-service", 23 Namespace: "dummy-namespace", 24 }, 25 }) 26 require.NoError(t, err) 27 28 require.Len(t, res, 1) 29 30 cluster := &envoy_config_cluster_v3.Cluster{} 31 err = proto.Unmarshal(res[0].Value, cluster) 32 require.NoError(t, err) 33 34 require.Equal(t, "dummy-namespace/dummy-service", cluster.Name) 35 require.Equal(t, envoy_config_cluster_v3.Cluster_ROUND_ROBIN, cluster.LbPolicy) 36 require.Equal(t, &envoy_config_cluster_v3.Cluster_Type{ 37 Type: envoy_config_cluster_v3.Cluster_EDS, 38 }, cluster.ClusterDiscoveryType) 39 } 40 41 func Test_getRouteConfigurationResource(t *testing.T) { 42 r := &ciliumEnvoyConfigReconciler{} 43 res, err := r.getRouteConfigurationResource(&corev1.Service{ 44 ObjectMeta: metav1.ObjectMeta{ 45 Name: "dummy-service", 46 Namespace: "dummy-namespace", 47 }, 48 }) 49 50 require.NoError(t, err) 51 routeConfig := &envoy_config_route_v3.RouteConfiguration{} 52 err = proto.Unmarshal(res.Value, routeConfig) 53 require.NoError(t, err) 54 55 require.Len(t, routeConfig.VirtualHosts, 1) 56 require.Equal(t, "dummy-namespace/dummy-service", routeConfig.VirtualHosts[0].Name) 57 require.Equal(t, []string{"*"}, routeConfig.VirtualHosts[0].Domains) 58 require.Len(t, routeConfig.VirtualHosts[0].Routes, 1) 59 } 60 61 func Test_getListenerResource(t *testing.T) { 62 r := &ciliumEnvoyConfigReconciler{} 63 res, err := r.getListenerResource(&corev1.Service{ 64 ObjectMeta: metav1.ObjectMeta{ 65 Name: "dummy-service", 66 Namespace: "dummy-namespace", 67 }, 68 }) 69 require.NoError(t, err) 70 71 listener := &envoy_config_listener.Listener{} 72 err = proto.Unmarshal(res.Value, listener) 73 require.NoError(t, err) 74 75 require.Len(t, listener.ListenerFilters, 1) 76 require.Len(t, listener.FilterChains, 1) 77 require.Len(t, listener.FilterChains[0].Filters, 1) 78 require.IsType(t, &envoy_config_listener.Filter_TypedConfig{}, listener.FilterChains[0].Filters[0].ConfigType) 79 }