9
. "github.com/onsi/ginkgo/v2"
10
. "github.com/onsi/gomega"
12
"github.com/kumahq/kuma/pkg/config"
13
kuma_xds "github.com/kumahq/kuma/pkg/config/xds"
14
. "github.com/kumahq/kuma/pkg/test/matchers"
17
var _ = Describe("XdsServerConfig", func() {
18
It("should be loadable from configuration file", func() {
20
cfg := kuma_xds.XdsServerConfig{}
23
err := config.Load(filepath.Join("testdata", "valid-config.input.yaml"), &cfg)
26
Expect(err).ToNot(HaveOccurred())
29
Expect(cfg.DataplaneConfigurationRefreshInterval.Duration).To(Equal(3 * time.Second))
30
Expect(cfg.DataplaneStatusFlushInterval.Duration).To(Equal(5 * time.Second))
33
Context("with modified environment variables", func() {
34
var backupEnvVars []string
37
backupEnvVars = os.Environ()
42
for _, envVar := range backupEnvVars {
43
parts := strings.SplitN(envVar, "=", 2)
44
os.Setenv(parts[0], parts[1])
48
It("should be loadable from environment variables", func() {
50
env := map[string]string{
51
"KUMA_XDS_SERVER_DATAPLANE_CONFIGURATION_REFRESH_INTERVAL": "3s",
52
"KUMA_XDS_SERVER_DATAPLANE_STATUS_FLUSH_INTERVAL": "5s",
54
for key, value := range env {
59
cfg := kuma_xds.XdsServerConfig{}
62
err := config.Load("", &cfg)
65
Expect(err).ToNot(HaveOccurred())
68
Expect(cfg.DataplaneConfigurationRefreshInterval.Duration).To(Equal(3 * time.Second))
69
Expect(cfg.DataplaneStatusFlushInterval.Duration).To(Equal(5 * time.Second))
73
It("should have consistent defaults", func() {
75
cfg := kuma_xds.DefaultXdsServerConfig()
78
actual, err := config.ToYAML(cfg)
81
Expect(err).ToNot(HaveOccurred())
82
Expect(actual).To(MatchGoldenYAML(filepath.Join("testdata", "default-config.golden.yaml")))
85
It("should have validators", func() {
87
cfg := kuma_xds.XdsServerConfig{}
90
err := config.Load(filepath.Join("testdata", "invalid-config.input.yaml"), &cfg)
93
Expect(err).To(MatchError(`Invalid configuration: DataplaneConfigurationRefreshInterval must be positive`))