Skip to content

Commit

Permalink
checkpoint deletion tests
Browse files Browse the repository at this point in the history
Signed-off-by: David Martin <[email protected]>
  • Loading branch information
david-martin committed Feb 10, 2025
1 parent 4cd99b1 commit 58a878f
Show file tree
Hide file tree
Showing 3 changed files with 231 additions and 132 deletions.
189 changes: 130 additions & 59 deletions tests/bare_k8s/observability_reconciler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
})

Expand All @@ -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)
})
})
90 changes: 52 additions & 38 deletions tests/envoygateway/observability_reconciler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand All @@ -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)
})
})
Loading

0 comments on commit 58a878f

Please sign in to comment.