mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Add TestTemplate method to the forked Alertmanager (#77577)
* Alerting: Add an empty Forked Alertmanager * Alerting: Add methods for silences to the forked Alertmanager * check for errors in tests * make linter happy * Alerting: Add methods for alerts to the forked Alertmanager * Alerting: Add methods for receivers to the forked Alertmanager * Alerting: Add TestTemplate method to the forked Alertmanager * make linter happy * separate into both forked AMs * fix tests
This commit is contained in:
@@ -193,6 +193,20 @@ func TestForkedAlertmanager_ModeRemoteSecondary(t *testing.T) {
|
||||
_, 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 internal Alertmanager.
|
||||
internal, _, forked := genTestAlertmanagers(tt, modeRemoteSecondary)
|
||||
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 internal Alertmanager, it should be returned.
|
||||
internal, _, forked = genTestAlertmanagers(tt, modeRemoteSecondary)
|
||||
internal.EXPECT().TestTemplate(mock.Anything, mock.Anything).Return(nil, expErr).Once()
|
||||
_, err = forked.TestTemplate(ctx, apimodels.TestTemplatesConfigBodyParams{})
|
||||
require.ErrorIs(tt, expErr, err)
|
||||
})
|
||||
}
|
||||
|
||||
func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) {
|
||||
@@ -368,6 +382,20 @@ func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) {
|
||||
_, 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()
|
||||
_, 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()
|
||||
_, err = forked.TestTemplate(ctx, apimodels.TestTemplatesConfigBodyParams{})
|
||||
require.ErrorIs(tt, expErr, err)
|
||||
})
|
||||
}
|
||||
func genTestAlertmanagers(t *testing.T, mode int) (*alertmanager_mock.AlertmanagerMock, *alertmanager_mock.AlertmanagerMock, notifier.Alertmanager) {
|
||||
t.Helper()
|
||||
|
||||
Reference in New Issue
Block a user