From 58a878ff8b735b5b69d549bbf1c2c67399628ff9 Mon Sep 17 00:00:00 2001 From: David Martin Date: Mon, 10 Feb 2025 10:15:19 +0000 Subject: [PATCH] checkpoint deletion tests Signed-off-by: David Martin --- .../bare_k8s/observability_reconciler_test.go | 189 ++++++++++++------ .../observability_reconciler_test.go | 90 +++++---- tests/istio/observability_reconciler_test.go | 84 ++++---- 3 files changed, 231 insertions(+), 132 deletions(-) diff --git a/tests/bare_k8s/observability_reconciler_test.go b/tests/bare_k8s/observability_reconciler_test.go index f66789eba..3a4dcd974 100644 --- a/tests/bare_k8s/observability_reconciler_test.go +++ b/tests/bare_k8s/observability_reconciler_test.go @@ -43,25 +43,71 @@ var _ = Describe("Observabiltity monitors for kuadrant components", func() { Namespace: testNamespace, }, } + kuadrantMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "kuadrant-operator-monitor", + Namespace: testNamespace, + }, + } + authorinoMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "authorino-operator-monitor", + Namespace: testNamespace, + }, + } + limitadorMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "limitador-operator-monitor", + Namespace: testNamespace, + }, + } + dnsMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "dns-operator-monitor", + Namespace: testNamespace, + }, + } + + // Create Kuadrant CR with observability not enabled Expect(testClient().Create(ctx, kuadrantCR)).ToNot(HaveOccurred()) + // Verify monitors not created Eventually(func(g Gomega) { - g.Expect(testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantCR), kuadrantCR)).To(Succeed()) - - kuadrantMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "kuadrant-operator-monitor", - Namespace: testNamespace, - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantMonitor), kuadrantMonitor) g.Expect(err).To(HaveOccurred()) g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(authorinoMonitor), authorinoMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(limitadorMonitor), limitadorMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(dnsMonitor), dnsMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) }, testTimeOut) }) @@ -82,75 +128,100 @@ var _ = Describe("Observabiltity monitors for kuadrant components", func() { }, }, } - Expect(testClient().Create(ctx, kuadrantCR)).ToNot(HaveOccurred()) + kuadrantMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "kuadrant-operator-monitor", + Namespace: testNamespace, + }, + } + authorinoMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "authorino-operator-monitor", + Namespace: testNamespace, + }, + } + limitadorMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "limitador-operator-monitor", + Namespace: testNamespace, + }, + } + dnsMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "dns-operator-monitor", + Namespace: testNamespace, + }, + } - Eventually(func(g Gomega) { - g.Expect(testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantCR), kuadrantCR)).To(Succeed()) - }).WithContext(ctx).Should(Succeed()) + // Create Kuadrant CR with observability eanbled + Expect(testClient().Create(ctx, kuadrantCR)).ToNot(HaveOccurred()) + // Verify monitors created Eventually(func(g Gomega) { - kuadrantMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "kuadrant-operator-monitor", - Namespace: testNamespace, - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantMonitor), kuadrantMonitor) g.Expect(err).ToNot(HaveOccurred()) g.Expect(kuadrantMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) }).WithContext(ctx).Should(Succeed()) - Eventually(func(g Gomega) { - authorinoMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "authorino-operator-monitor", - Namespace: testNamespace, - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(authorinoMonitor), authorinoMonitor) g.Expect(err).ToNot(HaveOccurred()) g.Expect(authorinoMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) }).WithContext(ctx).Should(Succeed()) - Eventually(func(g Gomega) { - limitadorMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "limitador-operator-monitor", - Namespace: testNamespace, - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(limitadorMonitor), limitadorMonitor) g.Expect(err).ToNot(HaveOccurred()) g.Expect(limitadorMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) }).WithContext(ctx).Should(Succeed()) - Eventually(func(g Gomega) { - dnsMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "dns-operator-monitor", - Namespace: testNamespace, - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(dnsMonitor), dnsMonitor) g.Expect(err).ToNot(HaveOccurred()) g.Expect(dnsMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) }).WithContext(ctx).Should(Succeed()) + + // Disable observability feature + err := testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantCR), kuadrantCR) + Expect(err).NotTo(HaveOccurred()) + kuadrantCR.Spec.Observability.Enable = false + err = testClient().Update(ctx, kuadrantCR) + Expect(err).NotTo(HaveOccurred()) + + // Verify monitors deleted + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantMonitor), kuadrantMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(authorinoMonitor), authorinoMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(limitadorMonitor), limitadorMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(dnsMonitor), dnsMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) }, testTimeOut) }) }) diff --git a/tests/envoygateway/observability_reconciler_test.go b/tests/envoygateway/observability_reconciler_test.go index 52a5b4487..77ea07747 100644 --- a/tests/envoygateway/observability_reconciler_test.go +++ b/tests/envoygateway/observability_reconciler_test.go @@ -68,22 +68,41 @@ var _ = Describe("Observabiltity monitors for envoy gateway", func() { Context("when default kuadrant CR is created", func() { It("monitors are not created at first", func(ctx SpecContext) { + envoyGatewayMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "envoy-gateway-monitor", + Namespace: "envoy-gateway-system", + }, + } + + envoyStatsMonitor := &monitoringv1.PodMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.PodMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "envoy-stats-monitor", + Namespace: "gateway-system", + }, + } + + // Verify monitors don't exists yet Eventually(func(g Gomega) { - envoyGatewayMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "envoy-gateway-monitor", - Namespace: "envoy-gateway-system", - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(envoyGatewayMonitor), envoyGatewayMonitor) g.Expect(err).To(HaveOccurred()) g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) - }) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(envoyStatsMonitor), envoyStatsMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + // Fetch current CR & set observability flag to enable the feature kuadrantNS := getKuadrantNamespace(ctx, testClient()) kuadrantCR := &kuadrantv1beta1.Kuadrant{ TypeMeta: metav1.TypeMeta{ @@ -95,47 +114,42 @@ var _ = Describe("Observabiltity monitors for envoy gateway", func() { Namespace: kuadrantNS, }, } - - // Fetch current CR err := testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantCR), kuadrantCR) Expect(err).NotTo(HaveOccurred()) - - // Update the CR kuadrantCR.Spec.Observability.Enable = true err = testClient().Update(ctx, kuadrantCR) Expect(err).NotTo(HaveOccurred()) + // Verify all monitors are created Eventually(func(g Gomega) { - envoyGatewayMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "envoy-gateway-monitor", - Namespace: "envoy-gateway-system", - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(envoyGatewayMonitor), envoyGatewayMonitor) g.Expect(err).NotTo(HaveOccurred()) g.Expect(envoyGatewayMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) - }) - + }).WithContext(ctx).Should(Succeed()) Eventually(func(g Gomega) { - envoyStatsMonitor := &monitoringv1.PodMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.PodMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "envoy-stats-monitor", - Namespace: "gateway-system", - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(envoyStatsMonitor), envoyStatsMonitor) g.Expect(err).NotTo(HaveOccurred()) g.Expect(envoyStatsMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) - }) + }).WithContext(ctx).Should(Succeed()) + + // Unset observability flag to disable the feature + err = testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantCR), kuadrantCR) + Expect(err).NotTo(HaveOccurred()) + kuadrantCR.Spec.Observability.Enable = false + err = testClient().Update(ctx, kuadrantCR) + Expect(err).NotTo(HaveOccurred()) + + // Verify monitors were deleted + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(envoyGatewayMonitor), envoyGatewayMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(envoyStatsMonitor), envoyStatsMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) }, testTimeOut) }) }) diff --git a/tests/istio/observability_reconciler_test.go b/tests/istio/observability_reconciler_test.go index ee05f7553..9a1959d9f 100644 --- a/tests/istio/observability_reconciler_test.go +++ b/tests/istio/observability_reconciler_test.go @@ -68,22 +68,40 @@ var _ = Describe("Observabiltity monitors for istio gateway", func() { Context("when default kuadrant CR is created", func() { It("monitors are not created at first", func(ctx SpecContext) { + istiodMonitor := &monitoringv1.ServiceMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.ServiceMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "istiod-monitor", + Namespace: "istio-system", + }, + } + istioPodMonitor := &monitoringv1.PodMonitor{ + TypeMeta: metav1.TypeMeta{ + Kind: monitoringv1.PodMonitorsKind, + APIVersion: monitoringv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "istio-pod-monitor", + Namespace: "gateway-system", + }, + } + + // Verify monitors don't exists yet Eventually(func(g Gomega) { - istiodMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "istiod-monitor", - Namespace: "istio-system", - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(istiodMonitor), istiodMonitor) g.Expect(err).To(HaveOccurred()) g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(istioPodMonitor), istioPodMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + // Fetch current CR & set observability flag to enable the feature kuadrantNS := getKuadrantNamespace(ctx, testClient()) kuadrantCR := &kuadrantv1beta1.Kuadrant{ TypeMeta: metav1.TypeMeta{ @@ -95,47 +113,43 @@ var _ = Describe("Observabiltity monitors for istio gateway", func() { Namespace: kuadrantNS, }, } - - // Fetch current CR err := testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantCR), kuadrantCR) Expect(err).NotTo(HaveOccurred()) - - // Update the CR kuadrantCR.Spec.Observability.Enable = true err = testClient().Update(ctx, kuadrantCR) Expect(err).NotTo(HaveOccurred()) + // Verify all monitors are created Eventually(func(g Gomega) { - istiodMonitor := &monitoringv1.ServiceMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.ServiceMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "istiod-monitor", - Namespace: "istio-system", - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(istiodMonitor), istiodMonitor) g.Expect(err).NotTo(HaveOccurred()) g.Expect(istiodMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) }).WithContext(ctx).Should(Succeed()) - Eventually(func(g Gomega) { - istioPodMonitor := &monitoringv1.PodMonitor{ - TypeMeta: metav1.TypeMeta{ - Kind: monitoringv1.PodMonitorsKind, - APIVersion: monitoringv1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "istio-pod-monitor", - Namespace: "gateway-system", - }, - } err := testClient().Get(ctx, client.ObjectKeyFromObject(istioPodMonitor), istioPodMonitor) g.Expect(err).NotTo(HaveOccurred()) g.Expect(istioPodMonitor.Labels).To(HaveKeyWithValue("kuadrant-observability", "true")) }).WithContext(ctx).Should(Succeed()) + + // Unset observability flag to disable the feature + err = testClient().Get(ctx, client.ObjectKeyFromObject(kuadrantCR), kuadrantCR) + Expect(err).NotTo(HaveOccurred()) + kuadrantCR.Spec.Observability.Enable = false + err = testClient().Update(ctx, kuadrantCR) + Expect(err).NotTo(HaveOccurred()) + + // Verify monitors were deleted + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(istiodMonitor), istiodMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + Eventually(func(g Gomega) { + err := testClient().Get(ctx, client.ObjectKeyFromObject(istioPodMonitor), istioPodMonitor) + g.Expect(err).To(HaveOccurred()) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue()) + }).WithContext(ctx).Should(Succeed()) + }, testTimeOut) }) })