alerting: Add a test
This commit is contained in:
parent
88df721dcc
commit
667836fbe5
61
journal/alerting/alerts_test.go
Normal file
61
journal/alerting/alerts_test.go
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
package alerting
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/golang/mock/gomock"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/lotus/journal"
|
||||||
|
"github.com/filecoin-project/lotus/journal/mockjournal"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAlerting(t *testing.T) {
|
||||||
|
mockCtrl := gomock.NewController(t)
|
||||||
|
defer mockCtrl.Finish()
|
||||||
|
j := mockjournal.NewMockJournal(mockCtrl)
|
||||||
|
|
||||||
|
a := NewAlertingSystem(j)
|
||||||
|
|
||||||
|
j.EXPECT().RegisterEventType("s1", "b1").Return(journal.EventType{System: "s1", Event: "b1"})
|
||||||
|
al1 := a.AddAlertType("s1", "b1")
|
||||||
|
|
||||||
|
j.EXPECT().RegisterEventType("s2", "b2").Return(journal.EventType{System: "s2", Event: "b2"})
|
||||||
|
al2 := a.AddAlertType("s2", "b2")
|
||||||
|
|
||||||
|
l := a.GetAlerts()
|
||||||
|
require.Len(t, l, 2)
|
||||||
|
require.Equal(t, al1, l[0].Type)
|
||||||
|
require.Equal(t, al2, l[1].Type)
|
||||||
|
|
||||||
|
for _, alert := range l {
|
||||||
|
require.False(t, alert.Active)
|
||||||
|
require.Nil(t, alert.LastActive)
|
||||||
|
require.Nil(t, alert.LastResolved)
|
||||||
|
}
|
||||||
|
|
||||||
|
j.EXPECT().RecordEvent(a.alerts[al1].journalType, gomock.Any())
|
||||||
|
a.Raise(al1, "test")
|
||||||
|
|
||||||
|
for _, alert := range l { // check for no magic mutations
|
||||||
|
require.False(t, alert.Active)
|
||||||
|
require.Nil(t, alert.LastActive)
|
||||||
|
require.Nil(t, alert.LastResolved)
|
||||||
|
}
|
||||||
|
|
||||||
|
l = a.GetAlerts()
|
||||||
|
require.Len(t, l, 2)
|
||||||
|
require.Equal(t, al1, l[0].Type)
|
||||||
|
require.Equal(t, al2, l[1].Type)
|
||||||
|
|
||||||
|
require.True(t, l[0].Active)
|
||||||
|
require.NotNil(t, l[0].LastActive)
|
||||||
|
require.Equal(t, "raised", l[0].LastActive.Type)
|
||||||
|
require.Equal(t, json.RawMessage(`"test"`), l[0].LastActive.Message)
|
||||||
|
require.Nil(t, l[0].LastResolved)
|
||||||
|
|
||||||
|
require.False(t, l[1].Active)
|
||||||
|
require.Nil(t, l[1].LastActive)
|
||||||
|
require.Nil(t, l[1].LastResolved)
|
||||||
|
}
|
75
journal/mockjournal/journal.go
Normal file
75
journal/mockjournal/journal.go
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
// Code generated by MockGen. DO NOT EDIT.
|
||||||
|
// Source: github.com/filecoin-project/lotus/journal (interfaces: Journal)
|
||||||
|
|
||||||
|
// Package mockjournal is a generated GoMock package.
|
||||||
|
package mockjournal
|
||||||
|
|
||||||
|
import (
|
||||||
|
reflect "reflect"
|
||||||
|
|
||||||
|
journal "github.com/filecoin-project/lotus/journal"
|
||||||
|
gomock "github.com/golang/mock/gomock"
|
||||||
|
)
|
||||||
|
|
||||||
|
// MockJournal is a mock of Journal interface.
|
||||||
|
type MockJournal struct {
|
||||||
|
ctrl *gomock.Controller
|
||||||
|
recorder *MockJournalMockRecorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// MockJournalMockRecorder is the mock recorder for MockJournal.
|
||||||
|
type MockJournalMockRecorder struct {
|
||||||
|
mock *MockJournal
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewMockJournal creates a new mock instance.
|
||||||
|
func NewMockJournal(ctrl *gomock.Controller) *MockJournal {
|
||||||
|
mock := &MockJournal{ctrl: ctrl}
|
||||||
|
mock.recorder = &MockJournalMockRecorder{mock}
|
||||||
|
return mock
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||||
|
func (m *MockJournal) EXPECT() *MockJournalMockRecorder {
|
||||||
|
return m.recorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close mocks base method.
|
||||||
|
func (m *MockJournal) Close() error {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "Close")
|
||||||
|
ret0, _ := ret[0].(error)
|
||||||
|
return ret0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close indicates an expected call of Close.
|
||||||
|
func (mr *MockJournalMockRecorder) Close() *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockJournal)(nil).Close))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RecordEvent mocks base method.
|
||||||
|
func (m *MockJournal) RecordEvent(arg0 journal.EventType, arg1 func() interface{}) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
m.ctrl.Call(m, "RecordEvent", arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RecordEvent indicates an expected call of RecordEvent.
|
||||||
|
func (mr *MockJournalMockRecorder) RecordEvent(arg0, arg1 interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecordEvent", reflect.TypeOf((*MockJournal)(nil).RecordEvent), arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterEventType mocks base method.
|
||||||
|
func (m *MockJournal) RegisterEventType(arg0, arg1 string) journal.EventType {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "RegisterEventType", arg0, arg1)
|
||||||
|
ret0, _ := ret[0].(journal.EventType)
|
||||||
|
return ret0
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterEventType indicates an expected call of RegisterEventType.
|
||||||
|
func (mr *MockJournalMockRecorder) RegisterEventType(arg0, arg1 interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterEventType", reflect.TypeOf((*MockJournal)(nil).RegisterEventType), arg0, arg1)
|
||||||
|
}
|
@ -65,6 +65,8 @@ func (et EventType) Enabled() bool {
|
|||||||
return et.safe && et.enabled
|
return et.safe && et.enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//go:generate go run github.com/golang/mock/mockgen -destination=mockjournal/journal.go -package=mockjournal . Journal
|
||||||
|
|
||||||
// Journal represents an audit trail of system actions.
|
// Journal represents an audit trail of system actions.
|
||||||
//
|
//
|
||||||
// Every entry is tagged with a timestamp, a system name, and an event name.
|
// Every entry is tagged with a timestamp, a system name, and an event name.
|
||||||
|
Loading…
Reference in New Issue
Block a user