From cdbc9d801f39708a0022d7d3eed4a4f340625496 Mon Sep 17 00:00:00 2001 From: Santiago Date: Tue, 11 Jun 2024 11:06:07 +0200 Subject: [PATCH] Alerting: Use the internal Alertmanager to test templates and receivers (remote primary) (#88988) --- .../remote/forked_alertmanager_test.go | 22 ++++++++++--------- .../remote_primary_forked_alertmanager.go | 6 +++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/pkg/services/ngalert/remote/forked_alertmanager_test.go b/pkg/services/ngalert/remote/forked_alertmanager_test.go index 1d5914680ce..d7ae6429871 100644 --- a/pkg/services/ngalert/remote/forked_alertmanager_test.go +++ b/pkg/services/ngalert/remote/forked_alertmanager_test.go @@ -626,28 +626,30 @@ func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) { t.Run("TestReceivers", func(tt *testing.T) { // TestReceivers should be called only in the remote Alertmanager. - _, remote, forked := genTestAlertmanagers(tt, modeRemotePrimary) - remote.EXPECT().TestReceivers(mock.Anything, mock.Anything).Return(nil, nil).Once() + // TODO: change to remote AM once it's implemented there. + internal, _, forked := genTestAlertmanagers(tt, modeRemotePrimary) + internal.EXPECT().TestReceivers(mock.Anything, mock.Anything).Return(nil, nil).Once() _, err := forked.TestReceivers(ctx, apimodels.TestReceiversConfigBodyParams{}) require.NoError(tt, err) // If there's an error in the remote Alertmanager, it should be returned. - _, remote, forked = genTestAlertmanagers(tt, modeRemotePrimary) - remote.EXPECT().TestReceivers(mock.Anything, mock.Anything).Return(nil, expErr).Once() + internal, _, forked = genTestAlertmanagers(tt, modeRemotePrimary) + internal.EXPECT().TestReceivers(mock.Anything, mock.Anything).Return(nil, expErr).Once() _, err = forked.TestReceivers(ctx, apimodels.TestReceiversConfigBodyParams{}) require.ErrorIs(tt, expErr, err) }) t.Run("TestTemplate", func(tt *testing.T) { - // TestTemplate should be called only in the remote Alertmanager. - _, remote, forked := genTestAlertmanagers(tt, modeRemotePrimary) - remote.EXPECT().TestTemplate(mock.Anything, mock.Anything).Return(nil, nil).Once() + // TestTemplate should be called only in the internal Alertmanager. + // TODO: change to remote AM once it's implemented there. + internal, _, forked := genTestAlertmanagers(tt, modeRemotePrimary) + internal.EXPECT().TestTemplate(mock.Anything, mock.Anything).Return(nil, nil).Once() _, err := forked.TestTemplate(ctx, apimodels.TestTemplatesConfigBodyParams{}) require.NoError(tt, err) - // If there's an error in the remote Alertmanager, it should be returned. - _, remote, forked = genTestAlertmanagers(tt, modeRemotePrimary) - remote.EXPECT().TestTemplate(mock.Anything, mock.Anything).Return(nil, expErr).Once() + // If there's an error in the internal Alertmanager, it should be returned. + internal, _, forked = genTestAlertmanagers(tt, modeRemotePrimary) + internal.EXPECT().TestTemplate(mock.Anything, mock.Anything).Return(nil, expErr).Once() _, err = forked.TestTemplate(ctx, apimodels.TestTemplatesConfigBodyParams{}) require.ErrorIs(tt, expErr, err) }) diff --git a/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go b/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go index 8c4ef3b2400..1f8f349fc98 100644 --- a/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go +++ b/pkg/services/ngalert/remote/remote_primary_forked_alertmanager.go @@ -119,11 +119,13 @@ func (fam *RemotePrimaryForkedAlertmanager) GetReceivers(ctx context.Context) ([ } func (fam *RemotePrimaryForkedAlertmanager) TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*notifier.TestReceiversResult, error) { - return fam.remote.TestReceivers(ctx, c) + // TODO: change to remote AM once it's implemented there. + return fam.internal.TestReceivers(ctx, c) } func (fam *RemotePrimaryForkedAlertmanager) TestTemplate(ctx context.Context, c apimodels.TestTemplatesConfigBodyParams) (*notifier.TestTemplatesResults, error) { - return fam.remote.TestTemplate(ctx, c) + // TODO: change to remote AM once it's implemented there. + return fam.internal.TestTemplate(ctx, c) } func (fam *RemotePrimaryForkedAlertmanager) SilenceState(ctx context.Context) (alertingNotify.SilenceState, error) {