mirror of
https://github.com/coreos/prometheus-operator.git
synced 2026-02-05 06:45:27 +01:00
Add end-to-end tests for Alertmanager and ThanosRuler
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
This commit is contained in:
@@ -2729,3 +2729,34 @@ func testAlertManagerServiceName(t *testing.T) {
|
||||
require.Len(t, svcList.Items, 1)
|
||||
require.Equal(t, svcList.Items[0].Name, svc.Name)
|
||||
}
|
||||
|
||||
func testAMScaleUpWithoutLabels(t *testing.T) {
|
||||
// Don't run Alertmanager tests in parallel. See
|
||||
// https://github.com/prometheus/alertmanager/issues/1835 for details.
|
||||
ctx := context.Background()
|
||||
testCtx := framework.NewTestCtx(t)
|
||||
defer testCtx.Cleanup(t)
|
||||
ns := framework.CreateNamespace(ctx, t, testCtx)
|
||||
framework.SetupPrometheusRBAC(ctx, t, testCtx, ns)
|
||||
|
||||
name := "test"
|
||||
|
||||
// Create an Alertmanager resource with 1 replica
|
||||
am, err := framework.CreateAlertmanagerAndWaitUntilReady(ctx, framework.MakeBasicAlertmanager(ns, name, 1))
|
||||
require.NoError(t, err)
|
||||
|
||||
// Remove all labels on the StatefulSet using Patch
|
||||
stsName := fmt.Sprintf("alertmanager-%s", name)
|
||||
err = framework.RemoveAllLabelsFromStatefulSet(ctx, stsName, ns)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Scale up the Alertmanager resource to 2 replicas
|
||||
_, err = framework.UpdateAlertmanagerReplicasAndWaitUntilReady(ctx, am.Name, ns, 2)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Verify the StatefulSet now has labels again (restored by the operator)
|
||||
stsClient := framework.KubeClient.AppsV1().StatefulSets(ns)
|
||||
sts, err := stsClient.Get(ctx, stsName, metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, sts.GetLabels(), "expected labels to be restored on the StatefulSet by the operator")
|
||||
}
|
||||
|
||||
@@ -251,6 +251,7 @@ func testAllNSAlertmanager(t *testing.T) {
|
||||
"AMTemplateReloadConfig": testAMTmplateReloadConfig,
|
||||
"AMStatusScale": testAlertmanagerStatusScale,
|
||||
"AMServiceName": testAlertManagerServiceName,
|
||||
"AMScaleUpWithoutLabels": testAMScaleUpWithoutLabels,
|
||||
}
|
||||
|
||||
for name, f := range testFuncs {
|
||||
@@ -342,6 +343,7 @@ func testAllNSThanosRuler(t *testing.T) {
|
||||
"ThanosRulerCheckStorageClass": testTRCheckStorageClass,
|
||||
"ThanosRulerServiceName": testThanosRulerServiceName,
|
||||
"ThanosRulerStateless": testThanosRulerStateless,
|
||||
"ThanosRulerScaleUpWithoutLabels": testThanosRulerScaleUpWithoutLabels,
|
||||
}
|
||||
for name, f := range testFuncs {
|
||||
t.Run(name, f)
|
||||
|
||||
@@ -636,3 +636,33 @@ func testThanosRulerStateless(t *testing.T) {
|
||||
err = framework.WaitForPrometheusFiringAlert(context.Background(), ns, promSVC.Name, testAlert)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func testThanosRulerScaleUpWithoutLabels(t *testing.T) {
|
||||
t.Parallel()
|
||||
ctx := context.Background()
|
||||
testCtx := framework.NewTestCtx(t)
|
||||
defer testCtx.Cleanup(t)
|
||||
ns := framework.CreateNamespace(ctx, t, testCtx)
|
||||
framework.SetupPrometheusRBAC(ctx, t, testCtx, ns)
|
||||
|
||||
name := "test"
|
||||
|
||||
// Create a ThanosRuler resource with 1 replica
|
||||
tr, err := framework.CreateThanosRulerAndWaitUntilReady(ctx, ns, framework.MakeBasicThanosRuler(name, 1, "http://test.example.com"))
|
||||
require.NoError(t, err)
|
||||
|
||||
// Remove all labels on the StatefulSet using Patch
|
||||
stsName := fmt.Sprintf("thanos-ruler-%s", name)
|
||||
err = framework.RemoveAllLabelsFromStatefulSet(ctx, stsName, ns)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Scale up the ThanosRuler resource to 2 replicas
|
||||
_, err = framework.UpdateThanosRulerReplicasAndWaitUntilReady(ctx, tr.Name, ns, 2)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Verify the StatefulSet now has labels again (restored by the operator)
|
||||
stsClient := framework.KubeClient.AppsV1().StatefulSets(ns)
|
||||
sts, err := stsClient.Get(ctx, stsName, metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, sts.GetLabels(), "expected labels to be restored on the StatefulSet by the operator")
|
||||
}
|
||||
|
||||
@@ -108,6 +108,17 @@ func (f *Framework) PatchThanosRuler(ctx context.Context, name, ns string, spec
|
||||
return tr, nil
|
||||
}
|
||||
|
||||
func (f *Framework) UpdateThanosRulerReplicasAndWaitUntilReady(ctx context.Context, name, ns string, replicas int32) (*monitoringv1.ThanosRuler, error) {
|
||||
return f.PatchThanosRulerAndWaitUntilReady(
|
||||
ctx,
|
||||
name,
|
||||
ns,
|
||||
monitoringv1.ThanosRulerSpec{
|
||||
Replicas: ptr.To(replicas),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func (f *Framework) WaitForThanosRulerReady(ctx context.Context, ns string, tr *monitoringv1.ThanosRuler, timeout time.Duration) error {
|
||||
expected := *tr.Spec.Replicas
|
||||
|
||||
|
||||
Reference in New Issue
Block a user