@@ -8,22 +8,68 @@ import (
88
99 envoy_config_bootstrap "github.com/envoyproxy/go-control-plane/envoy/config/bootstrap/v3"
1010 envoy_config_cluster "github.com/envoyproxy/go-control-plane/envoy/config/cluster/v3"
11+ corev3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
1112 "github.com/stretchr/testify/require"
13+
14+ "github.com/cilium/cilium/pkg/envoy/config"
1215)
1316
1417func TestAppendEmbeddedLocalityBootstrap (t * testing.T ) {
15- bs := & envoy_config_bootstrap.Bootstrap {
16- StaticResources : & envoy_config_bootstrap.Bootstrap_StaticResources {},
18+ tests := []struct {
19+ name string
20+ xdsMode string
21+ assertEDS func (t * testing.T , edsConfig * corev3.ConfigSource )
22+ }{
23+ {
24+ name : "split" ,
25+ xdsMode : config .EnvoyXDSModeSplit ,
26+ assertEDS : func (t * testing.T , edsConfig * corev3.ConfigSource ) {
27+ apiConfigSource := edsConfig .GetApiConfigSource ()
28+ require .NotNil (t , apiConfigSource )
29+ require .NotEmpty (t , apiConfigSource .GetGrpcServices ())
30+ require .Equal (t , CiliumXDSClusterName , apiConfigSource .GetGrpcServices ()[0 ].GetEnvoyGrpc ().GetClusterName ())
31+ require .Nil (t , edsConfig .GetAds ())
32+ },
33+ },
34+ {
35+ name : "ads" ,
36+ xdsMode : config .EnvoyXDSModeADS ,
37+ assertEDS : func (t * testing.T , edsConfig * corev3.ConfigSource ) {
38+ require .NotNil (t , edsConfig .GetAds ())
39+ require .Nil (t , edsConfig .GetApiConfigSource ())
40+ },
41+ },
42+ {
43+ name : "strict-ads" ,
44+ xdsMode : config .EnvoyXDSModeStrictADS ,
45+ assertEDS : func (t * testing.T , edsConfig * corev3.ConfigSource ) {
46+ require .NotNil (t , edsConfig .GetAds ())
47+ require .Nil (t , edsConfig .GetApiConfigSource ())
48+ },
49+ },
1750 }
1851
19- appendEmbeddedLocalityBootstrap (bs , 7 , "zone-a" )
52+ for _ , tt := range tests {
53+ t .Run (tt .name , func (t * testing.T ) {
54+ SetXDSMode (tt .xdsMode )
55+ t .Cleanup (func () { SetXDSMode ("" ) })
56+
57+ bs := & envoy_config_bootstrap.Bootstrap {
58+ StaticResources : & envoy_config_bootstrap.Bootstrap_StaticResources {},
59+ }
60+
61+ appendEmbeddedLocalityBootstrap (bs , 7 , "zone-a" )
2062
21- require .Equal (t , LocalityClusterName , bs .GetClusterManager ().GetLocalClusterName ())
22- require .Equal (t , "zone-a" , bs .GetNode ().GetLocality ().GetZone ())
23- require .Len (t , bs .GetStaticResources ().GetClusters (), 1 )
63+ require .Equal (t , LocalityClusterName , bs .GetClusterManager ().GetLocalClusterName ())
64+ require .Equal (t , "zone-a" , bs .GetNode ().GetLocality ().GetZone ())
65+ require .Len (t , bs .GetStaticResources ().GetClusters (), 1 )
2466
25- cluster := bs .GetStaticResources ().GetClusters ()[0 ]
26- require .Equal (t , LocalityClusterName , cluster .GetName ())
27- require .Equal (t , envoy_config_cluster .Cluster_EDS , cluster .GetType ())
28- require .Equal (t , CiliumXDSClusterName , cluster .GetEdsClusterConfig ().GetEdsConfig ().GetApiConfigSource ().GetGrpcServices ()[0 ].GetEnvoyGrpc ().GetClusterName ())
67+ cluster := bs .GetStaticResources ().GetClusters ()[0 ]
68+ require .Equal (t , LocalityClusterName , cluster .GetName ())
69+ require .Equal (t , envoy_config_cluster .Cluster_EDS , cluster .GetType ())
70+ require .Equal (t , LocalityClusterName , cluster .GetEdsClusterConfig ().GetServiceName ())
71+
72+ tt .assertEDS (t , cluster .GetEdsClusterConfig ().GetEdsConfig ())
73+ })
74+ }
2975}
0 commit comments