github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/blockchain/metrics_test.go (about) 1 package blockchain 2 3 import ( 4 "context" 5 "testing" 6 7 pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" 8 eth "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1" 9 "github.com/prysmaticlabs/prysm/shared/testutil" 10 "github.com/prysmaticlabs/prysm/shared/testutil/require" 11 ) 12 13 func TestReportEpochMetrics_BadHeadState(t *testing.T) { 14 s, err := testutil.NewBeaconState() 15 require.NoError(t, err) 16 h, err := testutil.NewBeaconState() 17 require.NoError(t, err) 18 require.NoError(t, h.SetValidators(nil)) 19 err = reportEpochMetrics(context.Background(), s, h) 20 require.ErrorContains(t, "failed to initialize precompute: nil validators in state", err) 21 } 22 23 func TestReportEpochMetrics_BadAttestation(t *testing.T) { 24 s, err := testutil.NewBeaconState() 25 require.NoError(t, err) 26 h, err := testutil.NewBeaconState() 27 require.NoError(t, err) 28 require.NoError(t, h.AppendCurrentEpochAttestations(&pb.PendingAttestation{InclusionDelay: 0})) 29 err = reportEpochMetrics(context.Background(), s, h) 30 require.ErrorContains(t, "attestation with inclusion delay of 0", err) 31 } 32 33 func TestReportEpochMetrics_SlashedValidatorOutOfBound(t *testing.T) { 34 h, _ := testutil.DeterministicGenesisState(t, 1) 35 v, err := h.ValidatorAtIndex(0) 36 require.NoError(t, err) 37 v.Slashed = true 38 require.NoError(t, h.UpdateValidatorAtIndex(0, v)) 39 require.NoError(t, h.AppendCurrentEpochAttestations(&pb.PendingAttestation{InclusionDelay: 1, Data: testutil.HydrateAttestationData(ð.AttestationData{})})) 40 err = reportEpochMetrics(context.Background(), h, h) 41 require.ErrorContains(t, "slot 0 out of bounds", err) 42 }