From 1b87f97bbe663e56f02834af2a0b2496eec2d5f2 Mon Sep 17 00:00:00 2001 From: George Robinson Date: Wed, 5 Jun 2024 15:33:31 +0100 Subject: [PATCH] Fix silence tests This commit fixes the silence tests, using the exact same tests in prometheus/alertmanager to avoid regressions due to modules, but using the New function in pkg/alertmanager/alertmanager.go to ensure the correct limits are set. It bumps go.mod to commit 2410524 which is a no-op as Mimir does not vendor tests, but its meant to indicate we are using the fix from prometheus/alertmanager#3866. --- go.mod | 2 +- go.sum | 4 ++-- pkg/alertmanager/alertmanager_test.go | 21 ++++++++++++++------- vendor/modules.txt | 4 ++-- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 213d549dffc..fb0529d6958 100644 --- a/go.mod +++ b/go.mod @@ -284,4 +284,4 @@ replace github.com/opentracing-contrib/go-stdlib => github.com/grafana/opentraci replace github.com/opentracing-contrib/go-grpc => github.com/charleskorn/go-grpc v0.0.0-20231024023642-e9298576254f // Replacing prometheus/alertmanager with our fork. -replace github.com/prometheus/alertmanager => github.com/grafana/prometheus-alertmanager v0.25.1-0.20240603081606-9f1bbb0feb0c +replace github.com/prometheus/alertmanager => github.com/grafana/prometheus-alertmanager v0.25.1-0.20240605140724-241052410551 diff --git a/go.sum b/go.sum index 0febb58ad78..f1afb946a0d 100644 --- a/go.sum +++ b/go.sum @@ -521,8 +521,8 @@ github.com/grafana/mimir-prometheus v0.0.0-20240515135245-e5b85c151ba8 h1:XmqfG3 github.com/grafana/mimir-prometheus v0.0.0-20240515135245-e5b85c151ba8/go.mod h1:ZlD3SoAHSwXK5VGLHv78Jh5kOpgSLaQAzt9gxq76fLM= github.com/grafana/opentracing-contrib-go-stdlib v0.0.0-20230509071955-f410e79da956 h1:em1oddjXL8c1tL0iFdtVtPloq2hRPen2MJQKoAWpxu0= github.com/grafana/opentracing-contrib-go-stdlib v0.0.0-20230509071955-f410e79da956/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= -github.com/grafana/prometheus-alertmanager v0.25.1-0.20240603081606-9f1bbb0feb0c h1:Zgf0KrZy6of/6MQTRvzCVvKni/wWxEMWnipeqbo+0ek= -github.com/grafana/prometheus-alertmanager v0.25.1-0.20240603081606-9f1bbb0feb0c/go.mod h1:01sXtHoRwI8W324IPAzuxDFOmALqYLCOhvSC2fUHWXc= +github.com/grafana/prometheus-alertmanager v0.25.1-0.20240605140724-241052410551 h1:nj+Z280xVVSxeW9bbgEs2gxd//gRIwCxQFuSv4oh5MQ= +github.com/grafana/prometheus-alertmanager v0.25.1-0.20240605140724-241052410551/go.mod h1:01sXtHoRwI8W324IPAzuxDFOmALqYLCOhvSC2fUHWXc= github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= github.com/grafana/regexp v0.0.0-20240531075221-3685f1377d7b h1:oMAq12GxTpwo9jxbnG/M4F/HdpwbibTaVoxNA0NZprY= diff --git a/pkg/alertmanager/alertmanager_test.go b/pkg/alertmanager/alertmanager_test.go index ac91c55684d..05fde67bb0d 100644 --- a/pkg/alertmanager/alertmanager_test.go +++ b/pkg/alertmanager/alertmanager_test.go @@ -326,9 +326,7 @@ func testLimiter(t *testing.T, limits Limits, ops []callbackOp) { } func TestSilenceLimits(t *testing.T) { - t.Skip() - - user := "test" + user := "foo" r := prometheus.NewPedanticRegistry() am, err := New(&Config{ @@ -345,13 +343,14 @@ func TestSilenceLimits(t *testing.T) { Store: prepareInMemoryAlertStore(), Replicator: &stubReplicator{}, ReplicationFactor: 1, - // Set the interval to 1s as this test can trigger multiple broadcasts - // creating and expiring silences. - PersisterConfig: PersisterConfig{Interval: time.Second}, + PersisterConfig: PersisterConfig{Interval: time.Hour}, }, r) require.NoError(t, err) defer am.StopAndWait() + // Override SetBroadcast as we just want to test limits. + am.silences.SetBroadcast(func(_ []byte) {}) + // Insert sil1 should succeed without error. sil1 := &silencepb.Silence{ Matchers: []*silencepb.Matcher{{Name: "a", Pattern: "b"}}, @@ -373,8 +372,13 @@ func TestSilenceLimits(t *testing.T) { require.EqualError(t, err, "exceeded maximum number of silences: 1 (limit: 1)") require.Equal(t, "", id2) - // Expire sil1. This should allow sil2 to be inserted. + // Expire sil1 and run the GC. This should allow sil2 to be + // inserted. require.NoError(t, am.silences.Expire(id1)) + n, err := am.silences.GC() + require.NoError(t, err) + require.Equal(t, 1, n) + id2, err = am.silences.Set(sil2) require.NoError(t, err) require.NotEqual(t, "", id2) @@ -385,6 +389,9 @@ func TestSilenceLimits(t *testing.T) { // Expire sil2. require.NoError(t, am.silences.Expire(id2)) + n, err = am.silences.GC() + require.NoError(t, err) + require.Equal(t, 1, n) // Insert sil3 should fail because it exceeds maximum size. sil3 := &silencepb.Silence{ diff --git a/vendor/modules.txt b/vendor/modules.txt index 830df11be00..2adc7ab3fd5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -852,7 +852,7 @@ github.com/pkg/errors # github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 ## explicit github.com/pmezard/go-difflib/difflib -# github.com/prometheus/alertmanager v0.27.0 => github.com/grafana/prometheus-alertmanager v0.25.1-0.20240603081606-9f1bbb0feb0c +# github.com/prometheus/alertmanager v0.27.0 => github.com/grafana/prometheus-alertmanager v0.25.1-0.20240605140724-241052410551 ## explicit; go 1.21 github.com/prometheus/alertmanager/api github.com/prometheus/alertmanager/api/metrics @@ -1557,4 +1557,4 @@ sigs.k8s.io/yaml/goyaml.v3 # github.com/munnerz/goautoneg => github.com/grafana/goautoneg v0.0.0-20231010094147-47ce5e72a9ae # github.com/opentracing-contrib/go-stdlib => github.com/grafana/opentracing-contrib-go-stdlib v0.0.0-20230509071955-f410e79da956 # github.com/opentracing-contrib/go-grpc => github.com/charleskorn/go-grpc v0.0.0-20231024023642-e9298576254f -# github.com/prometheus/alertmanager => github.com/grafana/prometheus-alertmanager v0.25.1-0.20240603081606-9f1bbb0feb0c +# github.com/prometheus/alertmanager => github.com/grafana/prometheus-alertmanager v0.25.1-0.20240605140724-241052410551