mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Add methods for receivers to the forked Alertmanager (#77574)
* 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 * make linter happy * separate into both forked AMs * fix tests * rename testErr -> expErr
This commit is contained in:
parent
f7361a2755
commit
ba51c371ec
@ -163,6 +163,36 @@ func TestForkedAlertmanager_ModeRemoteSecondary(t *testing.T) {
|
|||||||
internal.EXPECT().PutAlerts(mock.Anything, mock.Anything).Return(expErr).Once()
|
internal.EXPECT().PutAlerts(mock.Anything, mock.Anything).Return(expErr).Once()
|
||||||
require.ErrorIs(tt, expErr, forked.PutAlerts(ctx, apimodels.PostableAlerts{}))
|
require.ErrorIs(tt, expErr, forked.PutAlerts(ctx, apimodels.PostableAlerts{}))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("GetReceivers", func(tt *testing.T) {
|
||||||
|
// We should retrieve the receivers from the internal Alertmanager.
|
||||||
|
internal, _, forked := genTestAlertmanagers(tt, modeRemoteSecondary)
|
||||||
|
expReceivers := []apimodels.Receiver{}
|
||||||
|
internal.EXPECT().GetReceivers(mock.Anything).Return(expReceivers, nil).Once()
|
||||||
|
receivers, err := forked.GetReceivers(ctx)
|
||||||
|
require.NoError(tt, err)
|
||||||
|
require.Equal(tt, expReceivers, receivers)
|
||||||
|
|
||||||
|
// If there's an error in the internal Alertmanager, it should be returned.
|
||||||
|
internal, _, forked = genTestAlertmanagers(tt, modeRemoteSecondary)
|
||||||
|
internal.EXPECT().GetReceivers(mock.Anything).Return([]apimodels.Receiver{}, expErr).Once()
|
||||||
|
_, err = forked.GetReceivers(ctx)
|
||||||
|
require.ErrorIs(tt, expErr, err)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("TestReceivers", func(tt *testing.T) {
|
||||||
|
// TestReceivers should be called only in the internal Alertmanager.
|
||||||
|
internal, _, forked := genTestAlertmanagers(tt, modeRemoteSecondary)
|
||||||
|
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 internal Alertmanager, it should be returned.
|
||||||
|
internal, _, forked = genTestAlertmanagers(tt, modeRemoteSecondary)
|
||||||
|
internal.EXPECT().TestReceivers(mock.Anything, mock.Anything).Return(nil, expErr).Once()
|
||||||
|
_, err = forked.TestReceivers(ctx, apimodels.TestReceiversConfigBodyParams{})
|
||||||
|
require.ErrorIs(tt, expErr, err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) {
|
func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) {
|
||||||
@ -308,6 +338,36 @@ func TestForkedAlertmanager_ModeRemotePrimary(t *testing.T) {
|
|||||||
remote.EXPECT().PutAlerts(mock.Anything, mock.Anything).Return(expErr).Once()
|
remote.EXPECT().PutAlerts(mock.Anything, mock.Anything).Return(expErr).Once()
|
||||||
require.ErrorIs(tt, expErr, forked.PutAlerts(ctx, apimodels.PostableAlerts{}))
|
require.ErrorIs(tt, expErr, forked.PutAlerts(ctx, apimodels.PostableAlerts{}))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("GetReceivers", func(tt *testing.T) {
|
||||||
|
// We should retrieve the receivers from the remote Alertmanager.
|
||||||
|
_, remote, forked := genTestAlertmanagers(tt, modeRemotePrimary)
|
||||||
|
expReceivers := []apimodels.Receiver{}
|
||||||
|
remote.EXPECT().GetReceivers(mock.Anything).Return(expReceivers, nil).Once()
|
||||||
|
receivers, err := forked.GetReceivers(ctx)
|
||||||
|
require.NoError(tt, err)
|
||||||
|
require.Equal(tt, expReceivers, receivers)
|
||||||
|
|
||||||
|
// If there's an error in the remote Alertmanager, it should be returned.
|
||||||
|
_, remote, forked = genTestAlertmanagers(tt, modeRemotePrimary)
|
||||||
|
remote.EXPECT().GetReceivers(mock.Anything).Return([]apimodels.Receiver{}, expErr).Once()
|
||||||
|
_, err = forked.GetReceivers(ctx)
|
||||||
|
require.ErrorIs(tt, expErr, err)
|
||||||
|
})
|
||||||
|
|
||||||
|
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()
|
||||||
|
_, 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()
|
||||||
|
_, err = forked.TestReceivers(ctx, apimodels.TestReceiversConfigBodyParams{})
|
||||||
|
require.ErrorIs(tt, expErr, err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
func genTestAlertmanagers(t *testing.T, mode int) (*alertmanager_mock.AlertmanagerMock, *alertmanager_mock.AlertmanagerMock, notifier.Alertmanager) {
|
func genTestAlertmanagers(t *testing.T, mode int) (*alertmanager_mock.AlertmanagerMock, *alertmanager_mock.AlertmanagerMock, notifier.Alertmanager) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
@ -65,11 +65,11 @@ func (fam *RemotePrimaryForkedAlertmanager) PutAlerts(ctx context.Context, alert
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (fam *RemotePrimaryForkedAlertmanager) GetReceivers(ctx context.Context) ([]apimodels.Receiver, error) {
|
func (fam *RemotePrimaryForkedAlertmanager) GetReceivers(ctx context.Context) ([]apimodels.Receiver, error) {
|
||||||
return []apimodels.Receiver{}, nil
|
return fam.remote.GetReceivers(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fam *RemotePrimaryForkedAlertmanager) TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*notifier.TestReceiversResult, error) {
|
func (fam *RemotePrimaryForkedAlertmanager) TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*notifier.TestReceiversResult, error) {
|
||||||
return ¬ifier.TestReceiversResult{}, nil
|
return fam.remote.TestReceivers(ctx, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fam *RemotePrimaryForkedAlertmanager) TestTemplate(ctx context.Context, c apimodels.TestTemplatesConfigBodyParams) (*notifier.TestTemplatesResults, error) {
|
func (fam *RemotePrimaryForkedAlertmanager) TestTemplate(ctx context.Context, c apimodels.TestTemplatesConfigBodyParams) (*notifier.TestTemplatesResults, error) {
|
||||||
|
@ -65,11 +65,11 @@ func (fam *RemoteSecondaryForkedAlertmanager) PutAlerts(ctx context.Context, ale
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (fam *RemoteSecondaryForkedAlertmanager) GetReceivers(ctx context.Context) ([]apimodels.Receiver, error) {
|
func (fam *RemoteSecondaryForkedAlertmanager) GetReceivers(ctx context.Context) ([]apimodels.Receiver, error) {
|
||||||
return []apimodels.Receiver{}, nil
|
return fam.internal.GetReceivers(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fam *RemoteSecondaryForkedAlertmanager) TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*notifier.TestReceiversResult, error) {
|
func (fam *RemoteSecondaryForkedAlertmanager) TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*notifier.TestReceiversResult, error) {
|
||||||
return ¬ifier.TestReceiversResult{}, nil
|
return fam.internal.TestReceivers(ctx, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fam *RemoteSecondaryForkedAlertmanager) TestTemplate(ctx context.Context, c apimodels.TestTemplatesConfigBodyParams) (*notifier.TestTemplatesResults, error) {
|
func (fam *RemoteSecondaryForkedAlertmanager) TestTemplate(ctx context.Context, c apimodels.TestTemplatesConfigBodyParams) (*notifier.TestTemplatesResults, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user