prysm-pulse/beacon-chain/rpc/prysm/v1alpha1/debug/block_test.go
Radosław Kapka 2b6e86ec1b
Some test improvements (#10928)
* extract DeterministicGenesisStateWithGenesisBlock

(cherry picked from commit a5e3a9c9bbbacb23a644f5c68c92839a315f66a1)

# Conflicts:
#	testing/util/state.go

* part 1

* part 2

* part 3

* fix errors

* db interface public visibility

Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
2022-06-24 17:22:39 +00:00

87 lines
2.8 KiB
Go

package debug
import (
"context"
"testing"
"time"
"github.com/prysmaticlabs/go-bitfield"
mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing"
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
dbTest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
fieldparams "github.com/prysmaticlabs/prysm/config/fieldparams"
"github.com/prysmaticlabs/prysm/config/params"
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/testing/assert"
"github.com/prysmaticlabs/prysm/testing/require"
"github.com/prysmaticlabs/prysm/testing/util"
)
func TestServer_GetBlock(t *testing.T) {
db := dbTest.SetupDB(t)
ctx := context.Background()
b := util.NewBeaconBlock()
b.Block.Slot = 100
util.SaveBlock(t, ctx, db, b)
blockRoot, err := b.Block.HashTreeRoot()
require.NoError(t, err)
bs := &Server{
BeaconDB: db,
}
res, err := bs.GetBlock(ctx, &ethpb.BlockRequestByRoot{
BlockRoot: blockRoot[:],
})
require.NoError(t, err)
wanted, err := b.MarshalSSZ()
require.NoError(t, err)
assert.DeepEqual(t, wanted, res.Encoded)
// Checking for nil block.
blockRoot = [32]byte{}
res, err = bs.GetBlock(ctx, &ethpb.BlockRequestByRoot{
BlockRoot: blockRoot[:],
})
require.NoError(t, err)
assert.DeepEqual(t, []byte{}, res.Encoded)
}
func TestServer_GetAttestationInclusionSlot(t *testing.T) {
db := dbTest.SetupDB(t)
ctx := context.Background()
offset := int64(2 * params.BeaconConfig().SlotsPerEpoch.Mul(params.BeaconConfig().SecondsPerSlot))
bs := &Server{
BeaconDB: db,
StateGen: stategen.New(db),
GenesisTimeFetcher: &mock.ChainService{Genesis: time.Now().Add(time.Duration(-1*offset) * time.Second)},
}
s, _ := util.DeterministicGenesisState(t, 2048)
tr := [32]byte{'a'}
require.NoError(t, bs.StateGen.SaveState(ctx, tr, s))
c, err := helpers.BeaconCommitteeFromState(context.Background(), s, 1, 0)
require.NoError(t, err)
a := &ethpb.Attestation{
Data: &ethpb.AttestationData{
Target: &ethpb.Checkpoint{Root: tr[:]},
Source: &ethpb.Checkpoint{Root: make([]byte, 32)},
BeaconBlockRoot: make([]byte, 32),
Slot: 1,
},
AggregationBits: bitfield.Bitlist{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
Signature: make([]byte, fieldparams.BLSSignatureLength),
}
b := util.NewBeaconBlock()
b.Block.Slot = 2
b.Block.Body.Attestations = []*ethpb.Attestation{a}
util.SaveBlock(t, ctx, bs.BeaconDB, b)
res, err := bs.GetInclusionSlot(ctx, &ethpb.InclusionSlotRequest{Slot: 1, Id: uint64(c[0])})
require.NoError(t, err)
require.Equal(t, b.Block.Slot, res.Slot)
res, err = bs.GetInclusionSlot(ctx, &ethpb.InclusionSlotRequest{Slot: 1, Id: 9999999})
require.NoError(t, err)
require.Equal(t, params.BeaconConfig().FarFutureSlot, res.Slot)
}