From 269ee842b3cd230287f6c44281443beddf3624f8 Mon Sep 17 00:00:00 2001 From: Nutmos Date: Mon, 1 Sep 2025 22:18:09 +0800 Subject: [PATCH] Merge pull request #7856 from nutmos/feat/add-eureka-sd-e2e-test-cases Chore: Update test cases and validation for Euraka SD --- bundle.yaml | 1 + .../monitoring.coreos.com_scrapeconfigs.yaml | 1 + .../monitoring.coreos.com_scrapeconfigs.yaml | 1 + .../scrapeconfigs-crd.json | 1 + .../monitoring/v1alpha1/scrapeconfig_types.go | 1 + test/e2e/scrapeconfig_test.go | 111 ++++++++++++++++++ 6 files changed, 116 insertions(+) diff --git a/bundle.yaml b/bundle.yaml index 3ea1a8149..b4e18fcbd 100644 --- a/bundle.yaml +++ b/bundle.yaml @@ -53510,6 +53510,7 @@ spec: server: description: The URL to connect to the Eureka server. minLength: 1 + pattern: ^http(s)?://.+$ type: string tlsConfig: description: TLS configuration applying to the target HTTP endpoint. diff --git a/example/prometheus-operator-crd-full/monitoring.coreos.com_scrapeconfigs.yaml b/example/prometheus-operator-crd-full/monitoring.coreos.com_scrapeconfigs.yaml index 593a1511e..d9d4b6451 100644 --- a/example/prometheus-operator-crd-full/monitoring.coreos.com_scrapeconfigs.yaml +++ b/example/prometheus-operator-crd-full/monitoring.coreos.com_scrapeconfigs.yaml @@ -4570,6 +4570,7 @@ spec: server: description: The URL to connect to the Eureka server. minLength: 1 + pattern: ^http(s)?://.+$ type: string tlsConfig: description: TLS configuration applying to the target HTTP endpoint. diff --git a/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml b/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml index acd68a01a..6f1a3d758 100644 --- a/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml +++ b/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml @@ -4571,6 +4571,7 @@ spec: server: description: The URL to connect to the Eureka server. minLength: 1 + pattern: ^http(s)?://.+$ type: string tlsConfig: description: TLS configuration applying to the target HTTP endpoint. diff --git a/jsonnet/prometheus-operator/scrapeconfigs-crd.json b/jsonnet/prometheus-operator/scrapeconfigs-crd.json index dfdefde04..8b0412e51 100644 --- a/jsonnet/prometheus-operator/scrapeconfigs-crd.json +++ b/jsonnet/prometheus-operator/scrapeconfigs-crd.json @@ -4316,6 +4316,7 @@ "server": { "description": "The URL to connect to the Eureka server.", "minLength": 1, + "pattern": "^http(s)?://.+$", "type": "string" }, "tlsConfig": { diff --git a/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go b/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go index 025a39ea0..12998476f 100644 --- a/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go +++ b/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go @@ -973,6 +973,7 @@ type KumaSDConfig struct { // +k8s:openapi-gen=true type EurekaSDConfig struct { // The URL to connect to the Eureka server. + // +kubebuilder:validation:Pattern:="^http(s)?://.+$" // +kubebuilder:validation:MinLength=1 // +required Server string `json:"server"` diff --git a/test/e2e/scrapeconfig_test.go b/test/e2e/scrapeconfig_test.go index 0602ed884..3156ec50d 100644 --- a/test/e2e/scrapeconfig_test.go +++ b/test/e2e/scrapeconfig_test.go @@ -647,6 +647,9 @@ func testScrapeConfigCRDValidations(t *testing.T) { t.Run("PuppetDBSD", func(t *testing.T) { runScrapeConfigCRDValidation(t, PuppetDBSDTestCases) }) + t.Run("EurekaSD", func(t *testing.T) { + runScrapeConfigCRDValidation(t, EurekaSDTestCases) + }) } func runScrapeConfigCRDValidation(t *testing.T, testCases []scrapeCRDTestCase) { @@ -4731,3 +4734,111 @@ var PuppetDBSDTestCases = []scrapeCRDTestCase{ expectedError: false, }, } + +var EurekaSDTestCases = []scrapeCRDTestCase{ + { + name: "Minimal Config", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "http://localhost:8761/eureka", + }, + }, + }, + expectedError: false, + }, + { + name: "Invalid Server", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "localhost:8761", + }, + }, + }, + expectedError: true, + }, + { + name: "Empty Server", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "", + }, + }, + }, + expectedError: true, + }, + { + name: "FollowRedirects True", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "http://localhost:8761/eureka", + FollowRedirects: ptr.To(true), + }, + }, + }, + expectedError: false, + }, + { + name: "FollowRedirects False", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "http://localhost:8761/eureka", + FollowRedirects: ptr.To(false), + }, + }, + }, + expectedError: false, + }, + { + name: "EnableHTTP2 True", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "http://localhost:8761/eureka", + EnableHTTP2: ptr.To(true), + }, + }, + }, + expectedError: false, + }, + { + name: "EnableHTTP2 False", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "http://localhost:8761/eureka", + EnableHTTP2: ptr.To(false), + }, + }, + }, + expectedError: false, + }, + { + name: "Valid RefreshInterval", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "http://localhost:8761/eureka", + RefreshInterval: ptr.To(monitoringv1.Duration("60s")), + }, + }, + }, + expectedError: false, + }, + { + name: "Invalid RefreshInterval", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + EurekaSDConfigs: []monitoringv1alpha1.EurekaSDConfig{ + { + Server: "http://localhost:8761/eureka", + RefreshInterval: ptr.To(monitoringv1.Duration("60g")), + }, + }, + }, + expectedError: true, + }, +}