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(&eth.AttestationData{})}))
    40  	err = reportEpochMetrics(context.Background(), h, h)
    41  	require.ErrorContains(t, "slot 0 out of bounds", err)
    42  }