package monitor import ( "testing" "github.com/prysmaticlabs/prysm/v4/consensus-types/blocks" "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/v4/testing/require" logTest "github.com/sirupsen/logrus/hooks/test" ) func TestProcessExitsFromBlockTrackedIndices(t *testing.T) { hook := logTest.NewGlobal() s := &Service{ TrackedValidators: map[primitives.ValidatorIndex]bool{ 1: true, 2: true, }, } exits := []*ethpb.SignedVoluntaryExit{ { Exit: ðpb.VoluntaryExit{ ValidatorIndex: 3, Epoch: 1, }, }, { Exit: ðpb.VoluntaryExit{ ValidatorIndex: 2, Epoch: 0, }, }, } block := ðpb.BeaconBlock{ Body: ðpb.BeaconBlockBody{ VoluntaryExits: exits, }, } wb, err := blocks.NewBeaconBlock(block) require.NoError(t, err) s.processExitsFromBlock(wb) require.LogsContain(t, hook, "\"Voluntary exit was included\" Slot=0 ValidatorIndex=2") } func TestProcessExitsFromBlockUntrackedIndices(t *testing.T) { hook := logTest.NewGlobal() s := &Service{ TrackedValidators: map[primitives.ValidatorIndex]bool{ 1: true, 2: true, }, } exits := []*ethpb.SignedVoluntaryExit{ { Exit: ðpb.VoluntaryExit{ ValidatorIndex: 3, Epoch: 1, }, }, { Exit: ðpb.VoluntaryExit{ ValidatorIndex: 4, Epoch: 0, }, }, } block := ðpb.BeaconBlock{ Body: ðpb.BeaconBlockBody{ VoluntaryExits: exits, }, } wb, err := blocks.NewBeaconBlock(block) require.NoError(t, err) s.processExitsFromBlock(wb) require.LogsDoNotContain(t, hook, "\"Voluntary exit was included\"") } func TestProcessExitP2PTrackedIndices(t *testing.T) { hook := logTest.NewGlobal() s := &Service{ TrackedValidators: map[primitives.ValidatorIndex]bool{ 1: true, 2: true, }, } exit := ðpb.SignedVoluntaryExit{ Exit: ðpb.VoluntaryExit{ ValidatorIndex: 1, Epoch: 1, }, Signature: make([]byte, 96), } s.processExit(exit) require.LogsContain(t, hook, "\"Voluntary exit was processed\" ValidatorIndex=1") } func TestProcessExitP2PUntrackedIndices(t *testing.T) { hook := logTest.NewGlobal() s := &Service{ TrackedValidators: map[primitives.ValidatorIndex]bool{ 1: true, 2: true, }, } exit := ðpb.SignedVoluntaryExit{ Exit: ðpb.VoluntaryExit{ ValidatorIndex: 3, Epoch: 1, }, } s.processExit(exit) require.LogsDoNotContain(t, hook, "\"Voluntary exit was processed\"") }